XPressME Integration Kit

Trac

source: trunk/wp-content/themes/xpress_default/functions.php @ 118

Last change on this file since 118 was 64, checked in by toemon, 16 years ago

言語ファイルのドメイン名をkubilicからxpressに変更、及びpoを取り直して整理

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