root/tags/2.0.4/wp-content/themes/default/functions.php

Revision 3997, 15.1 kB (checked in by ryan, 2 years ago)

Validation fixes from leftjustified. fixes #2909

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