WordPress.org

Make WordPress Core

Ticket #7552: 7552.datetime_presets.patch

File 7552.datetime_presets.patch, 6.1 KB (added by Viper007Bond, 6 years ago)

Add presets to Settings for picking date/time formats

  • wp-admin/options-general.php

     
    1212$title = __('General Settings'); 
    1313$parent_file = 'options-general.php'; 
    1414 
     15/** 
     16 * Display JavaScript on the page. 
     17 * 
     18 * @package WordPress 
     19 * @subpackage Permalink_Settings_Panel 
     20 */ 
     21function add_js() { 
     22?> 
     23<script type="text/javascript"> 
     24//<![CDATA[ 
     25        jQuery(document).ready(function($){ 
     26                $("input[name='date_format']").change(function(){ 
     27                        if ( "date_format_custom_radio" != $(this).attr("id") ) 
     28                                $("input[name='date_format_custom']").val( $(this).val() ); 
     29                }); 
     30                $("input[name='date_format_custom']").focus(function(){ 
     31                        $("#date_format_custom_radio").attr("checked", "checked"); 
     32                }); 
     33 
     34                $("input[name='time_format']").change(function(){ 
     35                        if ( "time_format_custom_radio" != $(this).attr("id") ) 
     36                                $("input[name='time_format_custom']").val( $(this).val() ); 
     37                }); 
     38                $("input[name='time_format_custom']").focus(function(){ 
     39                        $("#time_format_custom_radio").attr("checked", "checked"); 
     40                }); 
     41        }); 
     42//]]> 
     43</script> 
     44<?php 
     45} 
     46add_filter('admin_head', 'add_js'); 
     47 
    1548include('./admin-header.php'); 
    1649?> 
    1750 
     
    96129</tr> 
    97130<tr> 
    98131<th scope="row"><label for="date_format"><?php _e('Date Format') ?></label></th> 
    99 <td><input name="date_format" type="text" id="date_format" size="30" value="<?php form_option('date_format'); ?>" /><br /> 
    100 <?php _e('Output:') ?> <strong><?php echo mysql2date(get_option('date_format'), current_time('mysql')); ?></strong></td> 
     132<td> 
     133        <fieldset><legend class="hidden"><?php _e('Date Format') ?></legend> 
     134<?php 
     135 
     136        $date_formats = apply_filters( 'date_formats', array( 
     137                __('F j, Y'), 
     138                'Y/m/d', 
     139                'Y/d/m', 
     140                'd/m/Y', 
     141        ) ); 
     142 
     143        $custom = TRUE; 
     144 
     145        foreach ( $date_formats as $format ) { 
     146                echo "\t<label title='" . attribute_escape($format) . "'><input type='radio' name='date_format' value='" . attribute_escape($format) . "'"; 
     147                if ( get_option('date_format') === $format ) { // checked() uses "==" rather than "===" 
     148                        echo " checked='checked'"; 
     149                        $custom = FALSE; 
     150                } 
     151                echo ' /> ' . gmdate( $format, current_time('timestamp') ) . "</label><br />\n"; 
     152        } 
     153 
     154        echo '  <label><input type="radio" name="date_format" id="date_format_custom_radio" value="\c\u\s\t\o\m"'; 
     155        checked( $custom, TRUE ); 
     156        echo '/> ' . __('Custom') . ': </label><input type="text" name="date_format_custom" value="' . attribute_escape( get_option('date_format') ) . '" size="30" /> ' . gmdate( get_option('date_format'), current_time('timestamp') ) . "</label>\n"; 
     157 
     158        echo "\t<p>" . __('<a href="http://codex.wordpress.org/Formatting_Date_and_Time">Documentation on date formatting</a>. Click "Save Changes" to update sample output.') . "</p>\n"; 
     159?> 
     160        </fieldset> 
     161</td> 
    101162</tr> 
    102163<tr> 
    103164<th scope="row"><label for="time_format"><?php _e('Time Format') ?></label></th> 
    104 <td><input name="time_format" type="text" id="time_format" size="30" value="<?php form_option('time_format'); ?>" /><br /> 
    105 <?php _e('Output:') ?> <strong><?php echo gmdate(get_option('time_format'), current_time('timestamp')); ?></strong><br /> 
    106 <?php _e('<a href="http://codex.wordpress.org/Formatting_Date_and_Time">Documentation on date formatting</a>. Click "Save Changes" to update sample output.') ?></td> 
     165<td> 
     166        <fieldset><legend class="hidden"><?php _e('Time Format') ?></legend> 
     167<?php 
     168 
     169        $time_formats = apply_filters( 'time_formats', array( 
     170                __('g:i a'), 
     171                'g:i A', 
     172                'H:i', 
     173        ) ); 
     174 
     175        $custom = TRUE; 
     176 
     177        foreach ( $time_formats as $format ) { 
     178                echo "\t<label title='" . attribute_escape($format) . "'><input type='radio' name='time_format' value='" . attribute_escape($format) . "'"; 
     179                if ( get_option('time_format') === $format ) { // checked() uses "==" rather than "===" 
     180                        echo " checked='checked'"; 
     181                        $custom = FALSE; 
     182                } 
     183                echo ' /> ' . gmdate( $format, current_time('timestamp') ) . "</label><br />\n"; 
     184        } 
     185 
     186        echo '  <label><input type="radio" name="time_format" id="time_format_custom_radio" value="\c\u\s\t\o\m"'; 
     187        checked( $custom, TRUE ); 
     188        echo '/> ' . __('Custom') . ': </label><input type="text" name="time_format_custom" value="' . attribute_escape( get_option('time_format') ) . '" size="30" /> ' . gmdate( get_option('time_format'), current_time('timestamp') ) . "</label>\n"; 
     189?> 
     190        </fieldset> 
     191</td> 
    107192</tr> 
    108193<tr> 
    109194<th scope="row"><label for="start_of_week"><?php _e('Week Starts On') ?></label></th> 
  • wp-admin/options.php

     
    4141switch($action) { 
    4242 
    4343case 'update': 
    44         $any_changed = 0; 
    45  
    4644        $option_page = $_POST[ 'option_page' ]; 
    4745        check_admin_referer( $option_page . '-options' ); 
    4846 
    4947        if ( !isset( $whitelist_options[ $option_page ] ) ) 
    5048                wp_die( __( 'Error! Options page not found.' ) ); 
    5149 
    52         if ( $option_page == 'options' ) { 
     50        if ( 'options' == $option_page ) { 
    5351                $options = explode(',', stripslashes( $_POST[ 'page_options' ] )); 
    5452        } else { 
    5553                $options = $whitelist_options[ $option_page ]; 
    5654        } 
    5755 
    58         if ($options) { 
    59                 foreach ($options as $option) { 
     56        // Handle custom date/time formats 
     57        if ( 'general' == $option_page ) { 
     58                if ( !empty($_POST['date_format']) && !empty($_POST['date_format_custom']) && '\c\u\s\t\o\m' == stripslashes( $_POST['date_format'] ) ) 
     59                        $_POST['date_format'] = $_POST['date_format_custom']; 
     60                if ( !empty($_POST['time_format']) && !empty($_POST['time_format_custom']) && '\c\u\s\t\o\m' == stripslashes( $_POST['time_format'] ) ) 
     61                        $_POST['time_format'] = $_POST['time_format_custom']; 
     62        } 
     63 
     64        if ( $options ) { 
     65                foreach ( $options as $option ) { 
    6066                        $option = trim($option); 
    6167                        $value = $_POST[$option]; 
    62                         if(!is_array($value))   $value = trim($value); 
     68                        if ( !is_array($value) ) $value = trim($value); 
    6369                        $value = stripslashes_deep($value); 
    6470                        update_option($option, $value); 
    6571                } 
    6672        } 
    6773 
    68         $goback = add_query_arg('updated', 'true', wp_get_referer()); 
    69         wp_redirect($goback); 
    70     break; 
     74        $goback = add_query_arg( 'updated', 'true', wp_get_referer() ); 
     75        wp_redirect( $goback ); 
     76        break; 
    7177 
    7278default: 
    7379        include('admin-header.php'); ?>