WordPress.org

Make WordPress Core

source: tags/2.0.4/wp-content/themes/default/functions.php

Last change on this file was 3997, checked in by ryan, 15 years ago

Validation fixes from leftjustified. fixes #2909

File size: 15.1 KB
Line 
1<?php
2
3function 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
21add_action('wp_head', 'kubrick_head');
22
23function kubrick_header_image() {
24        return apply_filters('kubrick_header_image', get_settings('kubrick_header_image'));
25}
26
27function 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
35function 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
43function 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
52function kubrick_header_color() {
53        return apply_filters('kubrick_header_color', get_settings('kubrick_header_color'));
54}
55
56function kubrick_header_color_string() {
57        $color = kubrick_header_color();
58        if ( false === $color )
59                return 'white';
60
61        return $color;
62}
63
64function kubrick_header_display() {
65        return apply_filters('kubrick_header_display', get_settings('kubrick_header_display'));
66}
67
68function kubrick_header_display_string() {
69        $display = kubrick_header_display();
70        return $display ? $display : 'inline';
71}
72
73add_action('admin_menu', 'kubrick_add_theme_page');
74
75function 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
134function 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
340function 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 } ?>
Note: See TracBrowser for help on using the repository browser.