]> scripts.mit.edu Git - autoinstalls/wordpress.git/blob - wp-content/themes/default/functions.php
Wordpress 2.6.2-scripts
[autoinstalls/wordpress.git] / wp-content / themes / default / functions.php
1 <?php
2 if ( function_exists('register_sidebar') )
3     register_sidebar(array(
4         'before_widget' => '<li id="%1$s" class="widget %2$s">',
5         'after_widget' => '</li>',
6         'before_title' => '<h2 class="widgettitle">',
7         'after_title' => '</h2>',
8     ));
9
10 function kubrick_head() {
11         $head = "<style type='text/css'>\n<!--";
12         $output = '';
13         if ( kubrick_header_image() ) {
14                 $url =  kubrick_header_image_url() ;
15                 $output .= "#header { background: url('$url') no-repeat bottom center; }\n";
16         }
17         if ( false !== ( $color = kubrick_header_color() ) ) {
18                 $output .= "#headerimg h1 a, #headerimg h1 a:visited, #headerimg .description { color: $color; }\n";
19         }
20         if ( false !== ( $display = kubrick_header_display() ) ) {
21                 $output .= "#headerimg { display: $display }\n";
22         }
23         $foot = "--></style>\n";
24         if ( '' != $output )
25                 echo $head . $output . $foot;
26 }
27
28 add_action('wp_head', 'kubrick_head');
29
30 function kubrick_header_image() {
31         return apply_filters('kubrick_header_image', get_option('kubrick_header_image'));
32 }
33
34 function kubrick_upper_color() {
35         if (strpos($url = kubrick_header_image_url(), 'header-img.php?') !== false) {
36                 parse_str(substr($url, strpos($url, '?') + 1), $q);
37                 return $q['upper'];
38         } else
39                 return '69aee7';
40 }
41
42 function kubrick_lower_color() {
43         if (strpos($url = kubrick_header_image_url(), 'header-img.php?') !== false) {
44                 parse_str(substr($url, strpos($url, '?') + 1), $q);
45                 return $q['lower'];
46         } else
47                 return '4180b6';
48 }
49
50 function kubrick_header_image_url() {
51         if ( $image = kubrick_header_image() )
52                 $url = get_template_directory_uri() . '/images/' . $image;
53         else
54                 $url = get_template_directory_uri() . '/images/kubrickheader.jpg';
55
56         return $url;
57 }
58
59 function kubrick_header_color() {
60         return apply_filters('kubrick_header_color', get_option('kubrick_header_color'));
61 }
62
63 function kubrick_header_color_string() {
64         $color = kubrick_header_color();
65         if ( false === $color )
66                 return 'white';
67
68         return $color;
69 }
70
71 function kubrick_header_display() {
72         return apply_filters('kubrick_header_display', get_option('kubrick_header_display'));
73 }
74
75 function kubrick_header_display_string() {
76         $display = kubrick_header_display();
77         return $display ? $display : 'inline';
78 }
79
80 add_action('admin_menu', 'kubrick_add_theme_page');
81
82 function kubrick_add_theme_page() {
83         if ( isset( $_GET['page'] ) && $_GET['page'] == basename(__FILE__) ) {
84                 if ( isset( $_REQUEST['action'] ) && 'save' == $_REQUEST['action'] ) {
85                         check_admin_referer('kubrick-header');
86                         if ( isset($_REQUEST['njform']) ) {
87                                 if ( isset($_REQUEST['defaults']) ) {
88                                         delete_option('kubrick_header_image');
89                                         delete_option('kubrick_header_color');
90                                         delete_option('kubrick_header_display');
91                                 } else {
92                                         if ( '' == $_REQUEST['njfontcolor'] )
93                                                 delete_option('kubrick_header_color');
94                                         else {
95                                                 $fontcolor = preg_replace('/^.*(#[0-9a-fA-F]{6})?.*$/', '$1', $_REQUEST['njfontcolor']);
96                                                 update_option('kubrick_header_color', $fontcolor);
97                                         }
98                                         if ( preg_match('/[0-9A-F]{6}|[0-9A-F]{3}/i', $_REQUEST['njuppercolor'], $uc) && preg_match('/[0-9A-F]{6}|[0-9A-F]{3}/i', $_REQUEST['njlowercolor'], $lc) ) {
99                                                 $uc = ( strlen($uc[0]) == 3 ) ? $uc[0]{0}.$uc[0]{0}.$uc[0]{1}.$uc[0]{1}.$uc[0]{2}.$uc[0]{2} : $uc[0];
100                                                 $lc = ( strlen($lc[0]) == 3 ) ? $lc[0]{0}.$lc[0]{0}.$lc[0]{1}.$lc[0]{1}.$lc[0]{2}.$lc[0]{2} : $lc[0];
101                                                 update_option('kubrick_header_image', "header-img.php?upper=$uc&lower=$lc");
102                                         }
103
104                                         if ( isset($_REQUEST['toggledisplay']) ) {
105                                                 if ( false === get_option('kubrick_header_display') )
106                                                         update_option('kubrick_header_display', 'none');
107                                                 else
108                                                         delete_option('kubrick_header_display');
109                                         }
110                                 }
111                         } else {
112
113                                 if ( isset($_REQUEST['headerimage']) ) {
114                                         check_admin_referer('kubrick-header');
115                                         if ( '' == $_REQUEST['headerimage'] )
116                                                 delete_option('kubrick_header_image');
117                                         else {
118                                                 $headerimage = preg_replace('/^.*?(header-img.php\?upper=[0-9a-fA-F]{6}&lower=[0-9a-fA-F]{6})?.*$/', '$1', $_REQUEST['headerimage']);
119                                                 update_option('kubrick_header_image', $headerimage);
120                                         }
121                                 }
122
123                                 if ( isset($_REQUEST['fontcolor']) ) {
124                                         check_admin_referer('kubrick-header');
125                                         if ( '' == $_REQUEST['fontcolor'] )
126                                                 delete_option('kubrick_header_color');
127                                         else {
128                                                 $fontcolor = preg_replace('/^.*?(#[0-9a-fA-F]{6})?.*$/', '$1', $_REQUEST['fontcolor']);
129                                                 update_option('kubrick_header_color', $fontcolor);
130                                         }
131                                 }
132
133                                 if ( isset($_REQUEST['fontdisplay']) ) {
134                                         check_admin_referer('kubrick-header');
135                                         if ( '' == $_REQUEST['fontdisplay'] || 'inline' == $_REQUEST['fontdisplay'] )
136                                                 delete_option('kubrick_header_display');
137                                         else
138                                                 update_option('kubrick_header_display', 'none');
139                                 }
140                         }
141                         //print_r($_REQUEST);
142                         wp_redirect("themes.php?page=functions.php&saved=true");
143                         die;
144                 }
145                 add_action('admin_head', 'kubrick_theme_page_head');
146         }
147         add_theme_page(__('Customize Header'), __('Header Image and Color'), 'edit_themes', basename(__FILE__), 'kubrick_theme_page');
148 }
149
150 function kubrick_theme_page_head() {
151 ?>
152 <script type="text/javascript" src="../wp-includes/js/colorpicker.js"></script>
153 <script type='text/javascript'>
154 // <![CDATA[
155         function pickColor(color) {
156                 ColorPicker_targetInput.value = color;
157                 kUpdate(ColorPicker_targetInput.id);
158         }
159         function PopupWindow_populate(contents) {
160                 contents += '<br /><p style="text-align:center;margin-top:0px;"><input type="button" class="button-secondary" value="<?php echo attribute_escape(__('Close Color Picker')); ?>" onclick="cp.hidePopup(\'prettyplease\')"></input></p>';
161                 this.contents = contents;
162                 this.populated = false;
163         }
164         function PopupWindow_hidePopup(magicword) {
165                 if ( magicword != 'prettyplease' )
166                         return false;
167                 if (this.divName != null) {
168                         if (this.use_gebi) {
169                                 document.getElementById(this.divName).style.visibility = "hidden";
170                         }
171                         else if (this.use_css) {
172                                 document.all[this.divName].style.visibility = "hidden";
173                         }
174                         else if (this.use_layers) {
175                                 document.layers[this.divName].visibility = "hidden";
176                         }
177                 }
178                 else {
179                         if (this.popupWindow && !this.popupWindow.closed) {
180                                 this.popupWindow.close();
181                                 this.popupWindow = null;
182                         }
183                 }
184                 return false;
185         }
186         function colorSelect(t,p) {
187                 if ( cp.p == p && document.getElementById(cp.divName).style.visibility != "hidden" )
188                         cp.hidePopup('prettyplease');
189                 else {
190                         cp.p = p;
191                         cp.select(t,p);
192                 }
193         }
194         function PopupWindow_setSize(width,height) {
195                 this.width = 162;
196                 this.height = 210;
197         }
198
199         var cp = new ColorPicker();
200         function advUpdate(val, obj) {
201                 document.getElementById(obj).value = val;
202                 kUpdate(obj);
203         }
204         function kUpdate(oid) {
205                 if ( 'uppercolor' == oid || 'lowercolor' == oid ) {
206                         uc = document.getElementById('uppercolor').value.replace('#', '');
207                         lc = document.getElementById('lowercolor').value.replace('#', '');
208                         hi = document.getElementById('headerimage');
209                         hi.value = 'header-img.php?upper='+uc+'&lower='+lc;
210                         document.getElementById('header').style.background = 'url("<?php echo get_template_directory_uri(); ?>/images/'+hi.value+'") center no-repeat';
211                         document.getElementById('advuppercolor').value = '#'+uc;
212                         document.getElementById('advlowercolor').value = '#'+lc;
213                 }
214                 if ( 'fontcolor' == oid ) {
215                         document.getElementById('header').style.color = document.getElementById('fontcolor').value;
216                         document.getElementById('advfontcolor').value = document.getElementById('fontcolor').value;
217                 }
218                 if ( 'fontdisplay' == oid ) {
219                         document.getElementById('headerimg').style.display = document.getElementById('fontdisplay').value;
220                 }
221         }
222         function toggleDisplay() {
223                 td = document.getElementById('fontdisplay');
224                 td.value = ( td.value == 'none' ) ? 'inline' : 'none';
225                 kUpdate('fontdisplay');
226         }
227         function toggleAdvanced() {
228                 a = document.getElementById('jsAdvanced');
229                 if ( a.style.display == 'none' )
230                         a.style.display = 'block';
231                 else
232                         a.style.display = 'none';
233         }
234         function kDefaults() {
235                 document.getElementById('headerimage').value = '';
236                 document.getElementById('advuppercolor').value = document.getElementById('uppercolor').value = '#69aee7';
237                 document.getElementById('advlowercolor').value = document.getElementById('lowercolor').value = '#4180b6';
238                 document.getElementById('header').style.background = 'url("<?php echo get_template_directory_uri(); ?>/images/kubrickheader.jpg") center no-repeat';
239                 document.getElementById('header').style.color = '#FFFFFF';
240                 document.getElementById('advfontcolor').value = document.getElementById('fontcolor').value = '';
241                 document.getElementById('fontdisplay').value = 'inline';
242                 document.getElementById('headerimg').style.display = document.getElementById('fontdisplay').value;
243         }
244         function kRevert() {
245                 document.getElementById('headerimage').value = '<?php echo js_escape(kubrick_header_image()); ?>';
246                 document.getElementById('advuppercolor').value = document.getElementById('uppercolor').value = '#<?php echo js_escape(kubrick_upper_color()); ?>';
247                 document.getElementById('advlowercolor').value = document.getElementById('lowercolor').value = '#<?php echo js_escape(kubrick_lower_color()); ?>';
248                 document.getElementById('header').style.background = 'url("<?php echo js_escape(kubrick_header_image_url()); ?>") center no-repeat';
249                 document.getElementById('header').style.color = '';
250                 document.getElementById('advfontcolor').value = document.getElementById('fontcolor').value = '<?php echo js_escape(kubrick_header_color_string()); ?>';
251                 document.getElementById('fontdisplay').value = '<?php echo js_escape(kubrick_header_display_string()); ?>';
252                 document.getElementById('headerimg').style.display = document.getElementById('fontdisplay').value;
253         }
254         function kInit() {
255                 document.getElementById('jsForm').style.display = 'block';
256                 document.getElementById('nonJsForm').style.display = 'none';
257         }
258         addLoadEvent(kInit);
259 // ]]>
260 </script>
261 <style type='text/css'>
262         #headwrap {
263                 text-align: center;
264         }
265         #kubrick-header {
266                 font-size: 80%;
267         }
268         #kubrick-header .hibrowser {
269                 width: 780px;
270                 height: 260px;
271                 overflow: scroll;
272         }
273         #kubrick-header #hitarget {
274                 display: none;
275         }
276         #kubrick-header #header h1 {
277                 font-family: 'Trebuchet MS', 'Lucida Grande', Verdana, Arial, Sans-Serif;
278                 font-weight: bold;
279                 font-size: 4em;
280                 text-align: center;
281                 padding-top: 70px;
282                 margin: 0;
283         }
284
285         #kubrick-header #header .description {
286                 font-family: 'Lucida Grande', Verdana, Arial, Sans-Serif;
287                 font-size: 1.2em;
288                 text-align: center;
289         }
290         #kubrick-header #header {
291                 text-decoration: none;
292                 color: <?php echo kubrick_header_color_string(); ?>;
293                 padding: 0;
294                 margin: 0;
295                 height: 200px;
296                 text-align: center;
297                 background: url('<?php echo kubrick_header_image_url(); ?>') center no-repeat;
298         }
299         #kubrick-header #headerimg {
300                 margin: 0;
301                 height: 200px;
302                 width: 100%;
303                 display: <?php echo kubrick_header_display_string(); ?>;
304         }
305         #jsForm {
306                 display: none;
307                 text-align: center;
308         }
309         #jsForm input.submit, #jsForm input.button, #jsAdvanced input.button {
310                 padding: 0px;
311                 margin: 0px;
312         }
313         #advanced {
314                 text-align: center;
315                 width: 620px;
316         }
317         html>body #advanced {
318                 text-align: center;
319                 position: relative;
320                 left: 50%;
321                 margin-left: -380px;
322         }
323         #jsAdvanced {
324                 text-align: right;
325         }
326         #nonJsForm {
327                 position: relative;
328                 text-align: left;
329                 margin-left: -370px;
330                 left: 50%;
331         }
332         #nonJsForm label {
333                 padding-top: 6px;
334                 padding-right: 5px;
335                 float: left;
336                 width: 100px;
337                 text-align: right;
338         }
339         .defbutton {
340                 font-weight: bold;
341         }
342         .zerosize {
343                 width: 0px;
344                 height: 0px;
345                 overflow: hidden;
346         }
347         #colorPickerDiv a, #colorPickerDiv a:hover {
348                 padding: 1px;
349                 text-decoration: none;
350                 border-bottom: 0px;
351         }
352 </style>
353 <?php
354 }
355
356 function kubrick_theme_page() {
357         if ( isset( $_REQUEST['saved'] ) ) echo '<div id="message" class="updated fade"><p><strong>'.__('Options saved.').'</strong></p></div>';
358 ?>
359 <div class='wrap'>
360         <div id="kubrick-header">
361         <h2><?php _e('Header Image and Color'); ?></h2>
362                 <div id="headwrap">
363                         <div id="header">
364                                 <div id="headerimg">
365                                         <h1><?php bloginfo('name'); ?></h1>
366                                         <div class="description"><?php bloginfo('description'); ?></div>
367                                 </div>
368                         </div>
369                 </div>
370                 <br />
371                 <div id="nonJsForm">
372                         <form method="post" action="">
373                                 <?php wp_nonce_field('kubrick-header'); ?>
374                                 <div class="zerosize"><input type="submit" name="defaultsubmit" value="<?php echo attribute_escape(__('Save')); ?>" /></div>
375                                         <label for="njfontcolor"><?php _e('Font Color:'); ?></label><input type="text" name="njfontcolor" id="njfontcolor" value="<?php echo attribute_escape(kubrick_header_color()); ?>" /> <?php printf(__('Any CSS color (%s or %s or %s)'), '<code>red</code>', '<code>#FF0000</code>', '<code>rgb(255, 0, 0)</code>'); ?><br />
376                                         <label for="njuppercolor"><?php _e('Upper Color:'); ?></label><input type="text" name="njuppercolor" id="njuppercolor" value="#<?php echo attribute_escape(kubrick_upper_color()); ?>" /> <?php printf(__('HEX only (%s or %s)'), '<code>#FF0000</code>', '<code>#F00</code>'); ?><br />
377                                 <label for="njlowercolor"><?php _e('Lower Color:'); ?></label><input type="text" name="njlowercolor" id="njlowercolor" value="#<?php echo attribute_escape(kubrick_lower_color()); ?>" /> <?php printf(__('HEX only (%s or %s)'), '<code>#FF0000</code>', '<code>#F00</code>'); ?><br />
378                                 <input type="hidden" name="hi" id="hi" value="<?php echo attribute_escape(kubrick_header_image()); ?>" />
379                                 <input type="submit" name="toggledisplay" id="toggledisplay" value="<?php echo attribute_escape(__('Toggle Text')); ?>" />
380                                 <input type="submit" name="defaults" value="<?php echo attribute_escape(__('Use Defaults')); ?>" />
381                                 <input type="submit" class="defbutton" name="submitform" value="&nbsp;&nbsp;<?php _e('Save'); ?>&nbsp;&nbsp;" />
382                                 <input type="hidden" name="action" value="save" />
383                                 <input type="hidden" name="njform" value="true" />
384                         </form>
385                 </div>
386                 <div id="jsForm">
387                         <form style="display:inline;" method="post" name="hicolor" id="hicolor" action="<?php echo attribute_escape($_SERVER['REQUEST_URI']); ?>">
388                                 <?php wp_nonce_field('kubrick-header'); ?>
389         <input type="button"  class="button-secondary" onclick="tgt=document.getElementById('fontcolor');colorSelect(tgt,'pick1');return false;" name="pick1" id="pick1" value="<?php echo attribute_escape(__('Font Color')); ?>"></input>
390                 <input type="button" class="button-secondary" onclick="tgt=document.getElementById('uppercolor');colorSelect(tgt,'pick2');return false;" name="pick2" id="pick2" value="<?php echo attribute_escape(__('Upper Color')); ?>"></input>
391                 <input type="button" class="button-secondary" onclick="tgt=document.getElementById('lowercolor');colorSelect(tgt,'pick3');return false;" name="pick3" id="pick3" value="<?php echo attribute_escape(__('Lower Color')); ?>"></input>
392                                 <input type="button" class="button-secondary" name="revert" value="<?php echo attribute_escape(__('Revert')); ?>" onclick="kRevert()" />
393                                 <input type="button" class="button-secondary" value="<?php echo attribute_escape(__('Advanced')); ?>" onclick="toggleAdvanced()" />
394                                 <input type="hidden" name="action" value="save" />
395                                 <input type="hidden" name="fontdisplay" id="fontdisplay" value="<?php echo attribute_escape(kubrick_header_display()); ?>" />
396                                 <input type="hidden" name="fontcolor" id="fontcolor" value="<?php echo attribute_escape(kubrick_header_color()); ?>" />
397                                 <input type="hidden" name="uppercolor" id="uppercolor" value="<?php echo attribute_escape(kubrick_upper_color()); ?>" />
398                                 <input type="hidden" name="lowercolor" id="lowercolor" value="<?php echo attribute_escape(kubrick_lower_color()); ?>" />
399                                 <input type="hidden" name="headerimage" id="headerimage" value="<?php echo attribute_escape(kubrick_header_image()); ?>" />
400                                 <p class="submit"><input type="submit" name="submitform" class="defbutton" value="<?php echo attribute_escape(__('Update Header')); ?>" onclick="cp.hidePopup('prettyplease')" /></p>
401                         </form>
402                         <div id="colorPickerDiv" style="z-index: 100;background:#eee;border:1px solid #ccc;position:absolute;visibility:hidden;"> </div>
403                         <div id="advanced">
404                                 <form id="jsAdvanced" style="display:none;" action="">
405                                         <?php wp_nonce_field('kubrick-header'); ?>
406                                         <label for="advfontcolor"><?php _e('Font Color (CSS):'); ?> </label><input type="text" id="advfontcolor" onchange="advUpdate(this.value, 'fontcolor')" value="<?php echo attribute_escape(kubrick_header_color()); ?>" /><br />
407                                         <label for="advuppercolor"><?php _e('Upper Color (HEX):');?> </label><input type="text" id="advuppercolor" onchange="advUpdate(this.value, 'uppercolor')" value="#<?php echo attribute_escape(kubrick_upper_color()); ?>" /><br />
408                                         <label for="advlowercolor"><?php _e('Lower Color (HEX):'); ?> </label><input type="text" id="advlowercolor" onchange="advUpdate(this.value, 'lowercolor')" value="#<?php echo attribute_escape(kubrick_lower_color()); ?>" /><br />
409                                         <input type="button" class="button-secondary" name="default" value="<?php echo attribute_escape(__('Select Default Colors')); ?>" onclick="kDefaults()" /><br />
410                                         <input type="button" class="button-secondary" onclick="toggleDisplay();return false;" name="pick" id="pick" value="<?php echo attribute_escape(__('Toggle Text Display')); ?>"></input><br />
411                                 </form>
412                         </div>
413                 </div>
414         </div>
415 </div>
416 <?php } ?>