WordPress.org

Make WordPress Core

Ticket #16379: 16379.3.diff

File 16379.3.diff, 21.9 KB (added by nacin, 19 months ago)

Moves post_name outside of edit-slug-box.

  • wp-includes/script-loader.php

     
    369369 
    370370                $scripts->add( 'postbox', "/wp-admin/js/postbox$suffix.js", array('jquery-ui-sortable'), false, 1 ); 
    371371 
    372                 $scripts->add( 'post', "/wp-admin/js/post$suffix.js", array('suggest', 'wp-lists', 'postbox'), false, 1 ); 
    373                 did_action( 'init' ) && $scripts->localize( 'post', 'postL10n', array( 
     372                $scripts->add( 'sample-permalink', "/wp-admin/js/sample-permalink.js", array(), false, 1 ); 
     373                did_action( 'init' ) && $scripts->localize( 'sample-permalink', 'samplePermalinkL10n', array( 
    374374                        'ok' => __('OK'), 
    375375                        'cancel' => __('Cancel'), 
     376                ) ); 
     377 
     378                $scripts->add( 'post', "/wp-admin/js/post$suffix.js", array('suggest', 'wp-lists', 'postbox', 'sample-permalink' ), false, 1 ); 
     379                did_action( 'init' ) && $scripts->localize( 'post', 'postL10n', array( 
    376380                        'publishOn' => __('Publish on:'), 
    377381                        'publishOnFuture' =>  __('Schedule for:'), 
    378382                        'publishOnPast' => __('Published on:'), 
  • wp-admin/includes/post.php

     
    10621062        global $wpdb; 
    10631063        $post = get_post($id); 
    10641064 
     1065        $context = isset( $_POST['context'] ) ? $_POST['context'] : get_current_screen()->id; 
    10651066        list($permalink, $post_name) = get_sample_permalink($post->ID, $new_title, $new_slug); 
    10661067 
    10671068        if ( 'publish' == get_post_status( $post ) ) { 
     
    10731074        } 
    10741075 
    10751076        if ( false === strpos($permalink, '%postname%') && false === strpos($permalink, '%pagename%') ) { 
     1077                if ( 'options-reading' == $context ) 
     1078                        return ''; 
    10761079                $return = '<strong>' . __('Permalink:') . "</strong>\n" . '<span id="sample-permalink" tabindex="-1">' . $permalink . "</span>\n"; 
    10771080                if ( '' == get_option( 'permalink_structure' ) && current_user_can( 'manage_options' ) && !( 'page' == get_option('show_on_front') && $id == get_option('page_on_front') ) ) 
    10781081                        $return .= '<span id="change-permalinks"><a href="options-permalink.php" class="button button-small" target="_blank">' . __('Change Permalinks') . "</a></span>\n"; 
     
    11011104        $post_name_html = '<span id="editable-post-name" title="' . $title . '">' . $post_name_abridged . '</span>'; 
    11021105        $display_link = str_replace(array('%pagename%','%postname%'), $post_name_html, $permalink); 
    11031106        $view_link = str_replace(array('%pagename%','%postname%'), $post_name, $permalink); 
    1104         $return =  '<strong>' . __('Permalink:') . "</strong>\n"; 
     1107        $return  = ( 'options-reading' == $context ) ? __( 'Located at' ) . "\n" : '<strong>' . __( 'Permalink:' ) . "</strong>\n"; 
    11051108        $return .= '<span id="sample-permalink" tabindex="-1">' . $display_link . "</span>\n"; 
    11061109        $return .= '&lrm;'; // Fix bi-directional text display defect in RTL languages. 
    11071110        $return .= '<span id="edit-slug-buttons"><a href="#post_name" class="edit-slug button button-small hide-if-no-js" onclick="editPermalink(' . $id . '); return false;">' . __('Edit') . "</a></span>\n"; 
    11081111        $return .= '<span id="editable-post-name-full">' . $post_name . "</span>\n"; 
    1109         if ( isset($view_post) ) 
     1112        if ( isset( $view_post ) && 'options-reading' != $context ) 
    11101113                $return .= "<span id='view-post-btn'><a href='$view_link' class='button button-small'>$view_post</a></span>\n"; 
    11111114 
    11121115        $return = apply_filters('get_sample_permalink_html', $return, $id, $new_title, $new_slug); 
     
    13221325 
    13231326        return $url; 
    13241327} 
     1328 
     1329/** 
     1330 * Creates new pages to be set as a front page or a page for posts in Reading Settings. 
     1331 * 
     1332 * @todo Make sure we are doing adequate sanitization on success, and cleanup/reset on failure. 
     1333 * 
     1334 * @since 3.5.0 
     1335 * @access private 
     1336 */ 
     1337function _create_pages_for_reading_settings() { 
     1338        // If we're saving the Reading Settings screen, intercept. 
     1339        if ( ! isset( $_POST['show_on_front'] ) ) 
     1340                return; 
     1341 
     1342        // If a new front page was meant to be created, go forth and create it. 
     1343        if ( isset( $_POST['page_on_front'] ) && 'new' == $_POST['page_on_front'] ) { 
     1344                if ( ! current_user_can( 'create_posts', 'page' ) ) { 
     1345                        $_POST['page_on_front'] = 0; 
     1346                        $_POST['show_on_front'] = 'posts'; 
     1347                        add_settings_error( 'page_on_front', __( 'You are not allowed to create pages on this site.' ) ); 
     1348                } 
     1349 
     1350                $existing_page = get_page_by_title( stripslashes( $_POST['page_on_front_title'] ) ); 
     1351 
     1352                // If page already exists and it's public, there's no need to create a new page 
     1353                if ( $existing_page && 'publish' == $existing_page->post_status ) { 
     1354                        $page_id = $existing_page->ID; 
     1355                } else { 
     1356                        $page_id = wp_insert_post( array( 
     1357                                'post_title' => $_POST['page_on_front_title'], 
     1358                                'post_type' => 'page', 
     1359                                'post_status' => 'publish', 
     1360                                'comment_status' => 'closed', 
     1361                                'ping_status' => 'closed', 
     1362                                // @todo Create some sort of a 'context' in postmeta so we know we created a page through these means. 
     1363                                //       Consider then showing that context in the list table as a good-first-step. 
     1364                        ), true ); 
     1365                } 
     1366 
     1367                // Make sure page_on_front is properly saved by options.php. 
     1368                if ( is_wp_error( $page_id ) ) 
     1369                        $_POST['page_on_front'] = 0; 
     1370                else 
     1371                        $_POST['page_on_front'] = $page_id; 
     1372        } 
     1373 
     1374        // If a page for posts was meant to be specified, update/create it. 
     1375        if ( ! isset( $_POST['page_for_posts'] ) ) 
     1376                return; 
     1377 
     1378        $page_for_posts = (int) $_POST['page_for_posts']; 
     1379        if ( ! $page_for_posts || ! $page = get_post( $page_for_posts, ARRAY_A ) ) { 
     1380                $_POST['page_for_posts'] = 0; 
     1381                return; 
     1382        } 
     1383 
     1384        // @todo The UI (see @todo's in options-reading) should cover the next 3 conditionals, 
     1385        //       which means we shouldn't need to bother with setting a settings error here. 
     1386        //       However, we may wish to restore settings before bailing, beyond setting 
     1387        //       page_for_posts to 0 (which we then expect to get cleaned up by options.php). 
     1388        if ( 'page' != $page['post_type'] || ! current_user_can( 'edit_post', $page_for_posts ) ) { 
     1389                $_POST['page_for_posts'] = 0; 
     1390                return; 
     1391        } 
     1392 
     1393        if ( 'publish' != $page['post_status'] && ! current_user_can( 'publish_post', $page_for_posts ) ) { 
     1394                $_POST['page_for_posts'] = 0; 
     1395                return; 
     1396        } 
     1397 
     1398        $args = add_magic_quotes( $page ); 
     1399        $args['post_title']  = $_POST['page_for_posts_title']; 
     1400        $args['post_name']   = $_POST['post_name']; 
     1401        $args['post_status'] = 'publish'; 
     1402        if ( 'auto-draft' == $page->post_status ) { 
     1403                $args['comment_status'] = 'closed'; 
     1404                $args['ping_status'] = 'closed'; 
     1405        } 
     1406 
     1407        $page_id = wp_insert_post( $args, true ); 
     1408        if ( is_wp_error( $page_id ) ) 
     1409                $_POST['page_for_posts'] = 0; 
     1410} 
     1411add_filter( 'admin_init', '_create_pages_for_reading_settings' ); 
  • wp-admin/js/sample-permalink.js

     
     1var editPermalink, makeSlugeditClickable; 
     2 
     3(function($){ 
     4        if ( ! $('#edit-slug-box').length ) 
     5                return; 
     6        editPermalink = function(post_id) { 
     7                var i, c = 0, 
     8                        e = $('#editable-post-name'), 
     9                        revert_e = e.html(), 
     10                        real_slug = $('#post_name'), 
     11                        revert_slug = real_slug.val(), 
     12                        b = $('#edit-slug-buttons'), 
     13                        revert_b = b.html(), 
     14                        full = $('#editable-post-name-full').html(); 
     15 
     16                $('#view-post-btn').hide(); 
     17                b.html('<a href="#" class="save button button-small">'+samplePermalinkL10n.ok+'</a> <a class="cancel" href="#">'+samplePermalinkL10n.cancel+'</a>'); 
     18                b.children('.save').click(function() { 
     19                        var new_slug = e.children('input').val(); 
     20                        if ( new_slug == $('#editable-post-name-full').text() ) { 
     21                                return $('.cancel', '#edit-slug-buttons').click(); 
     22                        } 
     23                        $.post(ajaxurl, { 
     24                                action: 'sample-permalink', 
     25                                post_id: post_id, 
     26                                new_slug: new_slug, 
     27                                new_title: $('#title').val(), 
     28                                context: pagenow, 
     29                                samplepermalinknonce: $('#samplepermalinknonce').val() 
     30                        }, function(data) { 
     31                                $('#edit-slug-box').html(data); 
     32                                b.html(revert_b); 
     33                                real_slug.val(new_slug); 
     34                                makeSlugeditClickable(); 
     35                                $('#view-post-btn').show(); 
     36                        }); 
     37                        return false; 
     38                }); 
     39 
     40                $('.cancel', '#edit-slug-buttons').click(function() { 
     41                        $('#view-post-btn').show(); 
     42                        e.html(revert_e); 
     43                        b.html(revert_b); 
     44                        real_slug.val(revert_slug); 
     45                        return false; 
     46                }); 
     47 
     48                for ( i = 0; i < full.length; ++i ) { 
     49                        if ( '%' == full.charAt(i) ) 
     50                                c++; 
     51                } 
     52 
     53                slug_value = ( c > full.length / 4 ) ? '' : full; 
     54                e.html('<input type="text" id="new-post-slug" value="'+slug_value+'" />').children('input').keypress(function(e){ 
     55                        var key = e.keyCode || 0; 
     56                        // on enter, just save the new slug, don't save the post 
     57                        if ( 13 == key ) { 
     58                                b.children('.save').click(); 
     59                                return false; 
     60                        } 
     61                        if ( 27 == key ) { 
     62                                b.children('.cancel').click(); 
     63                                return false; 
     64                        } 
     65                        real_slug.val(this.value); 
     66                }).focus(); 
     67        } 
     68 
     69        makeSlugeditClickable = function() { 
     70                $('#editable-post-name').click(function() { 
     71                        $('#edit-slug-buttons').children('.edit-slug').click(); 
     72                }); 
     73        } 
     74        makeSlugeditClickable(); 
     75})(jQuery); 
     76 No newline at end of file 
  • wp-admin/js/post.js

     
    559559                }); 
    560560        } // end submitdiv 
    561561 
    562         // permalink 
    563         if ( $('#edit-slug-box').length ) { 
    564                 editPermalink = function(post_id) { 
    565                         var i, c = 0, e = $('#editable-post-name'), revert_e = e.html(), real_slug = $('#post_name'), revert_slug = real_slug.val(), b = $('#edit-slug-buttons'), revert_b = b.html(), full = $('#editable-post-name-full').html(); 
    566  
    567                         $('#view-post-btn').hide(); 
    568                         b.html('<a href="#" class="save button button-small">'+postL10n.ok+'</a> <a class="cancel" href="#">'+postL10n.cancel+'</a>'); 
    569                         b.children('.save').click(function() { 
    570                                 var new_slug = e.children('input').val(); 
    571                                 if ( new_slug == $('#editable-post-name-full').text() ) { 
    572                                         return $('.cancel', '#edit-slug-buttons').click(); 
    573                                 } 
    574                                 $.post(ajaxurl, { 
    575                                         action: 'sample-permalink', 
    576                                         post_id: post_id, 
    577                                         new_slug: new_slug, 
    578                                         new_title: $('#title').val(), 
    579                                         samplepermalinknonce: $('#samplepermalinknonce').val() 
    580                                 }, function(data) { 
    581                                         $('#edit-slug-box').html(data); 
    582                                         b.html(revert_b); 
    583                                         real_slug.val(new_slug); 
    584                                         makeSlugeditClickable(); 
    585                                         $('#view-post-btn').show(); 
    586                                 }); 
    587                                 return false; 
    588                         }); 
    589  
    590                         $('.cancel', '#edit-slug-buttons').click(function() { 
    591                                 $('#view-post-btn').show(); 
    592                                 e.html(revert_e); 
    593                                 b.html(revert_b); 
    594                                 real_slug.val(revert_slug); 
    595                                 return false; 
    596                         }); 
    597  
    598                         for ( i = 0; i < full.length; ++i ) { 
    599                                 if ( '%' == full.charAt(i) ) 
    600                                         c++; 
    601                         } 
    602  
    603                         slug_value = ( c > full.length / 4 ) ? '' : full; 
    604                         e.html('<input type="text" id="new-post-slug" value="'+slug_value+'" />').children('input').keypress(function(e){ 
    605                                 var key = e.keyCode || 0; 
    606                                 // on enter, just save the new slug, don't save the post 
    607                                 if ( 13 == key ) { 
    608                                         b.children('.save').click(); 
    609                                         return false; 
    610                                 } 
    611                                 if ( 27 == key ) { 
    612                                         b.children('.cancel').click(); 
    613                                         return false; 
    614                                 } 
    615                                 real_slug.val(this.value); 
    616                         }).focus(); 
    617                 } 
    618  
    619                 makeSlugeditClickable = function() { 
    620                         $('#editable-post-name').click(function() { 
    621                                 $('#edit-slug-buttons').children('.edit-slug').click(); 
    622                         }); 
    623                 } 
    624                 makeSlugeditClickable(); 
    625         } 
    626  
    627562        // word count 
    628563        if ( typeof(wpWordCount) != 'undefined' ) { 
    629564                $(document).triggerHandler('wpcountwords', [ co.val() ]); 
  • wp-admin/css/wp-admin-rtl.css

     
    915915        border-bottom-right-radius: 3px; 
    916916} 
    917917 
    918 #front-page-warning, 
    919 #front-static-pages ul, 
     918#front-static-pages .sub-option, 
    920919ul.export-filters, 
    921920.inline-editor ul.cat-checklist ul, 
    922921.categorydiv ul.categorychecklist ul, 
  • wp-admin/css/wp-admin.css

     
    29292929        font-size: 11px; 
    29302930} 
    29312931 
     2932#front-static-pages #edit-slug-box { 
     2933        padding: 0; 
     2934} 
     2935 
    29322936#editable-post-name-full { 
    29332937        display: none; 
    29342938} 
     
    34143418        margin: 0; 
    34153419} 
    34163420 
    3417 #front-page-warning, 
    3418 #front-static-pages ul, 
     3421#front-static-pages .sub-option, 
    34193422ul.export-filters, 
    34203423.inline-editor ul.cat-checklist ul, 
    34213424.categorydiv ul.categorychecklist ul, 
     
    49884991        margin: -3px 3px; 
    49894992} 
    49904993 
     4994.js.options-reading-php .if-page-on-front, 
     4995.js.options-reading-php .if-page-for-posts, 
     4996.options-reading-php .if-new-front-page { 
     4997        display: none; 
     4998} 
     4999.options-reading-php .page-on-front .if-page-on-front, 
     5000.options-reading-php .page-for-posts .if-page-for-posts { 
     5001        display: block; 
     5002} 
     5003.options-reading-php .new-front-page .if-new-front-page { 
     5004        display: inline; 
     5005} 
     5006 
    49915007/*------------------------------------------------------------------------------ 
    49925008  21.0 - Admin Footer 
    49935009------------------------------------------------------------------------------*/ 
  • wp-admin/options-reading.php

     
    1515$title = __( 'Reading Settings' ); 
    1616$parent_file = 'options-general.php'; 
    1717 
     18wp_enqueue_script( 'sample-permalink' ); 
     19 
    1820/** 
    1921 * Display JavaScript on the page. 
    2022 * 
     
    2224 */ 
    2325function options_reading_add_js() { 
    2426?> 
    25 <script type="text/javascript"> 
    26 //<![CDATA[ 
    27         jQuery(document).ready(function($){ 
    28                 var section = $('#front-static-pages'), 
    29                         staticPage = section.find('input:radio[value="page"]'), 
    30                         selects = section.find('select'), 
    31                         check_disabled = function(){ 
    32                                 selects.prop( 'disabled', ! staticPage.prop('checked') ); 
    33                         }; 
    34                 check_disabled(); 
    35                 section.find('input:radio').change(check_disabled); 
     27<script> 
     28jQuery(document).ready( function($) { 
     29        var section = $('#front-static-pages'); 
     30        $('#show_on_front').change( function() { 
     31                var checked = $(this).prop('checked'); 
     32                section.toggleClass('page-on-front', checked); 
     33                if ( checked ) 
     34                        $('#page_for_posts').prop('checked', true).change(); 
    3635        }); 
    37 //]]> 
     36        $('#page_for_posts').change( function() { 
     37                section.toggleClass('page-for-posts', $(this).prop('checked')); 
     38        }); 
     39        $('#page_on_front').change( function() { 
     40                section.toggleClass('new-front-page', 'new' === $(this).val()); 
     41        }); 
     42}); 
    3843</script> 
    3944<?php 
    4045} 
    41 add_action('admin_head', 'options_reading_add_js'); 
     46add_action( 'admin_head', 'options_reading_add_js' ); 
    4247 
    4348/** 
    4449 * Render the blog charset setting. 
     
    8287<form method="post" action="options.php"> 
    8388<?php 
    8489settings_fields( 'reading' ); 
    85  
     90wp_nonce_field( 'samplepermalink', 'samplepermalinknonce', false ); 
     91?> 
     92<table class="form-table"> 
     93<?php 
    8694if ( ! in_array( get_option( 'blog_charset' ), array( 'utf8', 'utf-8', 'UTF8', 'UTF-8' ) ) ) 
    8795        add_settings_field( 'blog_charset', __( 'Encoding for pages and feeds' ), 'options_reading_blog_charset', 'reading', 'default', array( 'label_for' => 'blog_charset' ) ); 
    88 ?> 
    8996 
    90 <?php if ( ! get_pages() ) : ?> 
    91 <input name="show_on_front" type="hidden" value="posts" /> 
    92 <table class="form-table"> 
    93 <?php 
    94         if ( 'posts' != get_option( 'show_on_front' ) ) : 
     97$classes = ''; 
     98if ( 'page' == get_option( 'show_on_front' ) ) { 
     99        if ( ! get_pages() || ! get_option( 'page_on_front' ) && ! get_option( 'page_for_posts' ) ) { 
    95100                update_option( 'show_on_front', 'posts' ); 
    96         endif; 
     101        } else { 
     102                $classes = 'page-on-front'; 
     103                if ( get_option( 'page_for_posts' ) ) 
     104                        $classes .= ' page-for-posts'; 
     105        } 
     106} 
    97107 
    98 else : 
    99         if ( 'page' == get_option( 'show_on_front' ) && ! get_option( 'page_on_front' ) && ! get_option( 'page_for_posts' ) ) 
    100                 update_option( 'show_on_front', 'posts' ); 
    101 ?> 
    102 <table class="form-table"> 
     108$all_pages = get_pages(); 
     109$new_front_page_only = ! get_option( 'page_on_front' ) && ( ! $all_pages || ( 1 == count( $all_pages ) && __( 'sample-page' ) == $all_pages[0]->post_name ) ); 
     110 
     111if ( current_user_can( 'create_posts', 'page' ) && ! ( get_option( 'page_for_posts' ) && $page_for_posts = get_post( get_option( 'page_for_posts' ) ) ) ) { 
     112        $title = _x( 'Blog', 'default page for posts title' ); 
     113        // @todo What if the found page is post_type = attachment or post_status != publish? 
     114        //       We could go ahead and create a new one, but we would not be able to take over 
     115        //       the slug from another page. (We could for an attachment.) 
     116        //       We must also check that the user can edit this page and publish a page. 
     117        //       Otherwise, we must assume they cannot create pages (throughout), and thus 
     118        //       should fall back to the dropdown. 
     119        if ( ! $page_for_posts = get_page_by_path( sanitize_title( $title ) ) ) { 
     120                $page_for_posts = get_default_post_to_edit( 'page', true ); 
     121                $page_for_posts->post_title = $title; 
     122                $page_for_posts->post_name = sanitize_title( $title ); 
     123        } 
     124} 
     125 
     126if ( ! $new_front_page_only || current_user_can( 'create_posts', 'page' ) ) : ?> 
    103127<tr valign="top"> 
    104 <th scope="row"><?php _e( 'Front page displays' ); ?></th> 
    105 <td id="front-static-pages"><fieldset><legend class="screen-reader-text"><span><?php _e( 'Front page displays' ); ?></span></legend> 
    106         <p><label> 
    107                 <input name="show_on_front" type="radio" value="posts" class="tog" <?php checked( 'posts', get_option( 'show_on_front' ) ); ?> /> 
    108                 <?php _e( 'Your latest posts' ); ?> 
    109         </label> 
     128<th scope="row"><?php _e( 'Enable a static front page' ); ?></th> 
     129<td id="front-static-pages" class="<?php echo $classes; ?>"> 
     130        <fieldset><legend class="screen-reader-text"><span><?php _e( 'Enable a static front page' ); ?></span></legend> 
     131        <p><label for="show_on_front"> 
     132                <input id="show_on_front" name="show_on_front" type="checkbox" value="page" <?php checked( 'page', get_option( 'show_on_front' ) ); ?> /> 
     133                <?php printf( __( 'Show a <a href="%s">page</a> instead of your latest posts' ), 'edit.php?post_type=page' ); ?> 
     134        </label></p> 
     135        <p class="if-page-on-front sub-option"> 
     136        <?php if ( $new_front_page_only ) : // If no pages, or only sample page, only allow a new page to be added ?> 
     137                <label for="page_on_front_title"><?php _e( 'Add new page titled:' ); ?> 
     138        <?php else : ?> 
     139                <label for="page_on_front"> 
     140                        <select name="page_on_front" id="page_on_front"> 
     141                                <option value="0"><?php _e( '&mdash; Select &mdash;' ); ?></option> 
     142                                <?php if ( current_user_can( 'create_posts', 'page' ) ) : ?> 
     143                                <option value="new" id="new-page"><?php _e( '&mdash; Add new page &mdash;' ); ?></option> 
     144                                <?php endif; ?> 
     145                                <?php echo walk_page_dropdown_tree( $all_pages, 0, array( 'selected' => get_option( 'page_on_front' ) ) ); ?> 
     146                        </select> 
     147                </label> 
     148                <?php if ( current_user_can( 'create_posts', 'page' ) ) : ?> 
     149                <label for="page_on_front_title" class="if-new-front-page"><?php _e( 'titled:' ); ?> 
     150                <?php endif; ?> 
     151        <?php endif; ?> 
     152        <?php if ( current_user_can( 'create_posts', 'page' ) ) : ?> 
     153                        <input name="page_on_front_title" type="text" id="page_on_front_title" value="<?php echo esc_attr_x( 'Home', 'default page on front title' ); ?>" /> 
     154                </label> 
     155        <?php endif; ?> 
    110156        </p> 
    111         <p><label> 
    112                 <input name="show_on_front" type="radio" value="page" class="tog" <?php checked( 'page', get_option( 'show_on_front' ) ); ?> /> 
    113                 <?php printf( __( 'A <a href="%s">static page</a> (select below)' ), 'edit.php?post_type=page' ); ?> 
    114         </label> 
     157        <p class="if-page-on-front"><label for="page_for_posts"> 
     158                <input id="page_for_posts" name="page_for_posts" type="checkbox" value="<?php echo $page_for_posts->ID; ?>" <?php checked( (bool) get_option( 'page_for_posts' ) ); ?> /> 
     159                <?php _e( 'Show latest posts on a separate page' ); ?> 
     160        </label></p> 
     161        <?php if ( current_user_can( 'create_posts', 'page' ) ) : ?> 
     162        <p class="if-page-for-posts sub-option"><label for="page_for_posts_title"><?php _e( 'Page title:' ); ?> 
     163                <input name="page_for_posts_title" type="text" id="page_for_posts_title" value="<?php echo esc_attr( htmlspecialchars( $page_for_posts->post_title ) ); ?>" /> 
     164        </label></p> 
     165        <p class="if-page-for-posts sub-option" id="edit-slug-box"> 
     166                <?php echo get_sample_permalink_html( $page_for_posts->ID, $page_for_posts->post_title, $page_for_posts->post_name ); ?> 
    115167        </p> 
    116 <ul> 
    117         <li><label for="page_on_front"><?php printf( __( 'Front page: %s' ), wp_dropdown_pages( array( 'name' => 'page_on_front', 'echo' => 0, 'show_option_none' => __( '&mdash; Select &mdash;' ), 'option_none_value' => '0', 'selected' => get_option( 'page_on_front' ) ) ) ); ?></label></li> 
    118         <li><label for="page_for_posts"><?php printf( __( 'Posts page: %s' ), wp_dropdown_pages( array( 'name' => 'page_for_posts', 'echo' => 0, 'show_option_none' => __( '&mdash; Select &mdash;' ), 'option_none_value' => '0', 'selected' => get_option( 'page_for_posts' ) ) ) ); ?></label></li> 
    119 </ul> 
    120 <?php if ( 'page' == get_option( 'show_on_front' ) && get_option( 'page_for_posts' ) == get_option( 'page_on_front' ) ) : ?> 
    121 <div id="front-page-warning" class="error inline"><p><?php _e( '<strong>Warning:</strong> these pages should not be the same!' ); ?></p></div> 
    122 <?php endif; ?> 
    123 </fieldset></td> 
     168        <input name="post_name" type="hidden" id="post_name" value="<?php echo esc_attr( apply_filters( 'editable_slug', $page_for_posts->post_name ) ); ?>" /> 
     169        <?php if ( 'page' == get_option( 'show_on_front' ) && get_option( 'page_for_posts' ) == get_option( 'page_on_front' ) ) : ?> 
     170        <div class="error inline"><p><strong><?php _e( 'ERROR:' ); ?></strong> <?php _e( 'These pages should not be the same!' ); ?></p></div> 
     171        <?php endif; ?> 
     172        </fieldset> 
     173        <?php else : // cannot create pages, so fall back to a selector of existing pages ?> 
     174        <p class="if-page-for-posts sub-option"><label for="page_for_posts"> 
     175                <?php wp_dropdown_pages( array( 
     176                        'name' => 'page_for_posts', 'show_option_none' => __( '&mdash; Select &mdash;' ), 
     177                        'option_none_value' => '0', 'selected' => get_option( 'page_for_posts' ) 
     178                ) ); ?> 
     179        <?php endif; // create pages ?> 
     180</td> 
    124181</tr> 
    125 <?php endif; ?> 
     182<?php endif; // if no pages to choose from and can't create pages ?> 
     183 
    126184<tr valign="top"> 
    127185<th scope="row"><label for="posts_per_page"><?php _e( 'Blog pages show at most' ); ?></label></th> 
    128186<td>