WordPress.org

Make WordPress Core

Ticket #4060: 4060.diff

File 4060.diff, 16.9 KB (added by Sewar, 7 years ago)
  • functions.php

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