diff --git a/wp-admin/css/wp-admin-rtl.css b/wp-admin/css/wp-admin-rtl.css index acd667384d..e9fc7b0a4a 100644 --- a/wp-admin/css/wp-admin-rtl.css +++ b/wp-admin/css/wp-admin-rtl.css @@ -971,7 +971,8 @@ table.diff td, table.diff th { border-bottom-right-radius: 3px; } -#front-static-pages .sub-option, +#front-page-warning, +#front-static-pages ul, ul.export-filters, .inline-editor ul.cat-checklist ul, .categorydiv ul.categorychecklist ul, diff --git a/wp-admin/css/wp-admin.css b/wp-admin/css/wp-admin.css index c2d14e8e7e..873a60a0a6 100644 --- a/wp-admin/css/wp-admin.css +++ b/wp-admin/css/wp-admin.css @@ -716,6 +716,10 @@ select { color: #000; } +select[disabled] { + color: #7f7f7f; +} + select:focus { border-color: #aaa; } @@ -3020,10 +3024,6 @@ input#link_url { font-size: 11px; } -#front-static-pages #edit-slug-box { - padding: 0; -} - #editable-post-name-full { display: none; } @@ -3510,7 +3510,8 @@ div.tabs-panel-inactive { margin: 0; } -#front-static-pages .sub-option, +#front-page-warning, +#front-static-pages ul, ul.export-filters, .inline-editor ul.cat-checklist ul, .categorydiv ul.categorychecklist ul, @@ -5066,19 +5067,6 @@ h2 .nav-tab { margin: -3px 3px; } -.js.options-reading-php .if-page-on-front, -.js.options-reading-php .if-page-for-posts, -.options-reading-php .if-new-front-page { - display: none; -} -.options-reading-php .page-on-front .if-page-on-front, -.options-reading-php .page-for-posts .if-page-for-posts { - display: block; -} -.options-reading-php .new-front-page .if-new-front-page { - display: inline; -} - /*------------------------------------------------------------------------------ 21.0 - Admin Footer ------------------------------------------------------------------------------*/ diff --git a/wp-admin/includes/ajax-actions.php b/wp-admin/includes/ajax-actions.php index 6b03d8b956..4f67a1863c 100644 --- a/wp-admin/includes/ajax-actions.php +++ b/wp-admin/includes/ajax-actions.php @@ -1298,8 +1298,7 @@ function wp_ajax_sample_permalink() { $post_id = isset($_POST['post_id'])? intval($_POST['post_id']) : 0; $title = isset($_POST['new_title'])? $_POST['new_title'] : ''; $slug = isset($_POST['new_slug'])? $_POST['new_slug'] : null; - $screen = isset( $_POST['screen'] ) ? $_POST['screen'] : 'post'; - wp_die( get_sample_permalink_html( $post_id, $title, $slug, $screen ) ); + wp_die( get_sample_permalink_html( $post_id, $title, $slug ) ); } function wp_ajax_inline_save() { diff --git a/wp-admin/includes/post.php b/wp-admin/includes/post.php index 410deca9ff..9684b1b773 100644 --- a/wp-admin/includes/post.php +++ b/wp-admin/includes/post.php @@ -1055,20 +1055,14 @@ function get_sample_permalink($id, $title = null, $name = null) { * @param int|object $id Post ID or post object. * @param string $new_title Optional. New title. * @param string $new_slug Optional. New slug. - * @param string|WP_Screen $screen Optional. Screen where the editor is being shown. * @return string The HTML of the sample permalink slug editor. */ -function get_sample_permalink_html( $id, $new_title = null, $new_slug = null, $screen = null ) { +function get_sample_permalink_html( $id, $new_title = null, $new_slug = null ) { global $wpdb; $post = get_post($id); list($permalink, $post_name) = get_sample_permalink($post->ID, $new_title, $new_slug); - if ( isset( $screen ) ) - $screen = convert_to_screen( $screen ); - else - $screen = get_current_screen(); - if ( 'publish' == get_post_status( $post ) ) { $ptype = get_post_type_object($post->post_type); $view_post = $ptype->labels->view_item; @@ -1078,12 +1072,10 @@ function get_sample_permalink_html( $id, $new_title = null, $new_slug = null, $s } if ( false === strpos($permalink, '%postname%') && false === strpos($permalink, '%pagename%') ) { - if ( 'options-reading' == $screen->id ) - return ''; $return = '' . __('Permalink:') . "\n" . '' . $permalink . "\n"; if ( '' == get_option( 'permalink_structure' ) && current_user_can( 'manage_options' ) && !( 'page' == get_option('show_on_front') && $id == get_option('page_on_front') ) ) $return .= '' . __('Change Permalinks') . "\n"; - if ( isset($view_post) ) + if ( isset( $view_post ) ) $return .= "$view_post\n"; $return = apply_filters('get_sample_permalink_html', $return, $id, $new_title, $new_slug); @@ -1108,12 +1100,12 @@ function get_sample_permalink_html( $id, $new_title = null, $new_slug = null, $s $post_name_html = '' . $post_name_abridged . ''; $display_link = str_replace(array('%pagename%','%postname%'), $post_name_html, $permalink); $view_link = str_replace(array('%pagename%','%postname%'), $post_name, $permalink); - $return = ( 'options-reading' == $screen->id ) ? __( 'Located at' ) . "\n" : '' . __( 'Permalink:' ) . "\n"; + $return = '' . __('Permalink:') . "\n"; $return .= '' . $display_link . "\n"; $return .= '‎'; // Fix bi-directional text display defect in RTL languages. $return .= '' . __('Edit') . "\n"; $return .= '' . $post_name . "\n"; - if ( isset( $view_post ) && 'options-reading' != $screen->id ) + if ( isset($view_post) ) $return .= "$view_post\n"; $return = apply_filters('get_sample_permalink_html', $return, $id, $new_title, $new_slug); @@ -1329,118 +1321,3 @@ function post_preview() { return $url; } - -/** - * Creates new pages to be set as a front page or a page for posts in Reading Settings. - * - * @todo Make sure we are doing adequate sanitization on success, and cleanup/reset on failure. - * - * @since 3.5.0 - * @access private - */ -function _show_on_front_reading_settings( $show_on_front_value ) { - // If we're not saving the Reading Settings screen, don't intercept. - if ( ! $_POST || ! strpos( wp_get_referer(), 'options-reading.php' ) ) - return $show_on_front_value; - - if ( 'posts' == $show_on_front_value ) { - update_option( 'page_on_front', 0 ); - update_option( 'page_for_posts', 0 ); - return $show_on_front_value; - } - - // If a new front page was meant to be created, go forth and create it. - if ( 'new' == $_POST['page_on_front'] ) { - - // If the user can't create pages, revert. - if ( ! current_user_can( 'create_posts', 'page' ) ) { - // If an existing page is set, keep things as is, rather than reverting to showing posts. - if ( get_option( 'page_on_front' ) ) { - $show_on_front_value = 'page'; - } else { - $show_on_front_value = 'posts'; - update_option( 'page_on_front', 0 ); - update_option( 'page_for_posts', 0 ); - } - add_settings_error( 'page_on_front', 'create_pages', __( 'You are not allowed to create pages on this site.' ) ); - return $show_on_front_value; - } - - $existing_page = get_page_by_title( stripslashes( $_POST['page_on_front_title'] ) ); - - // If page already exists and it's public, there's no need to create a new page. - if ( $existing_page && 'publish' == $existing_page->post_status ) { - $page_id = $existing_page->ID; - } else { - $page_id = wp_insert_post( array( - 'post_title' => $_POST['page_on_front_title'], - 'post_type' => 'page', - 'post_status' => 'publish', - 'comment_status' => 'closed', - 'ping_status' => 'closed', - // @todo Create some sort of a 'context' in postmeta so we know we created a page through these means. - // Consider then showing that context in the list table as a good-first-step. - ) ); - } - - if ( $page_id ) { - update_option( 'page_on_front', $page_id ); - // If we can't save it, revert. - } elseif ( get_option( 'page_on_front' ) ) { - // If an existing page is set, keep things as is, rather than reverting to showing posts. - $show_on_front_value = 'page'; - } else { - $show_on_front_value = 'posts'; - update_option( 'page_on_front', 0 ); - update_option( 'page_for_posts', 0 ); - return $show_on_front_value; - } - } elseif ( $_POST['page_on_front'] ) { - update_option( 'page_on_front', $_POST['page_on_front'] ); - } else { - // They didn't select a page at all. Sad face. - $show_on_front_value = 'posts'; - update_option( 'page_on_front', 0 ); - update_option( 'page_for_posts', 0 ); - add_settings_error( 'page_on_front', 'no_page_selected', __( 'You must select a page to set a static front page.' ) ); - return $show_on_front_value; - } - - // If a page for posts was meant to be specified, update/create it. - if ( ! isset( $_POST['page_for_posts'] ) ) { - update_option( 'page_for_posts', 0 ); - return $show_on_front_value; - } - - $page_for_posts = (int) $_POST['page_for_posts']; - - if ( ! $page_for_posts || ! $page = get_post( $page_for_posts, ARRAY_A ) ) { - update_option( 'page_for_posts', 0 ); - return $show_on_front_value; - } - - if ( 'page' != $page['post_type'] || ! current_user_can( 'edit_post', $page_for_posts ) ) { - update_option( 'page_for_posts', 0 ); - return $show_on_front_value; - } - - if ( 'publish' != $page['post_status'] && ! current_user_can( 'publish_post', $page_for_posts ) ) { - update_option( 'page_for_posts', 0 ); - return $show_on_front_value; - } - - $args = add_magic_quotes( $page ); - $args['post_title'] = $_POST['page_for_posts_title']; - $args['post_name'] = $_POST['post_name']; - $args['post_status'] = 'publish'; - if ( 'auto-draft' == $page['post_status'] ) { - $args['comment_status'] = 'closed'; - $args['ping_status'] = 'closed'; - } - - $page_id = wp_insert_post( $args ); - update_option( 'page_for_posts', $page_id ); - - return $show_on_front_value; -} -add_filter( 'sanitize_option_show_on_front', '_show_on_front_reading_settings' ); diff --git a/wp-admin/js/post.js b/wp-admin/js/post.js index 2edab195dc..f7adb55d2d 100644 --- a/wp-admin/js/post.js +++ b/wp-admin/js/post.js @@ -572,6 +572,71 @@ jQuery(document).ready( function($) { }); } // end submitdiv + // permalink + if ( $('#edit-slug-box').length ) { + editPermalink = function(post_id) { + 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(); + + $('#view-post-btn').hide(); + b.html(''+postL10n.ok+' '+postL10n.cancel+''); + b.children('.save').click(function() { + var new_slug = e.children('input').val(); + if ( new_slug == $('#editable-post-name-full').text() ) { + return $('.cancel', '#edit-slug-buttons').click(); + } + $.post(ajaxurl, { + action: 'sample-permalink', + post_id: post_id, + new_slug: new_slug, + new_title: $('#title').val(), + samplepermalinknonce: $('#samplepermalinknonce').val() + }, function(data) { + $('#edit-slug-box').html(data); + b.html(revert_b); + real_slug.val(new_slug); + makeSlugeditClickable(); + $('#view-post-btn').show(); + }); + return false; + }); + + $('.cancel', '#edit-slug-buttons').click(function() { + $('#view-post-btn').show(); + e.html(revert_e); + b.html(revert_b); + real_slug.val(revert_slug); + return false; + }); + + for ( i = 0; i < full.length; ++i ) { + if ( '%' == full.charAt(i) ) + c++; + } + + slug_value = ( c > full.length / 4 ) ? '' : full; + e.html('').children('input').keypress(function(e){ + var key = e.keyCode || 0; + // on enter, just save the new slug, don't save the post + if ( 13 == key ) { + b.children('.save').click(); + return false; + } + if ( 27 == key ) { + b.children('.cancel').click(); + return false; + } + real_slug.val(this.value); + }).focus(); + } + + makeSlugeditClickable = function() { + $('#editable-post-name').click(function() { + $('#edit-slug-buttons').children('.edit-slug').click(); + }); + } + makeSlugeditClickable(); + } + // word count if ( typeof(wpWordCount) != 'undefined' ) { $(document).triggerHandler('wpcountwords', [ co.val() ]); diff --git a/wp-admin/js/sample-permalink.js b/wp-admin/js/sample-permalink.js deleted file mode 100644 index 7ba60e71ca..0000000000 --- a/wp-admin/js/sample-permalink.js +++ /dev/null @@ -1,75 +0,0 @@ -var editPermalink, makeSlugeditClickable; - -(function($){ - if ( ! $('#edit-slug-box').length ) - return; - editPermalink = function(post_id) { - 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(); - - $('#view-post-btn').hide(); - b.html(''+samplePermalinkL10n.ok+' '+samplePermalinkL10n.cancel+''); - b.children('.save').click(function() { - var new_slug = e.children('input').val(); - if ( new_slug == $('#editable-post-name-full').text() ) { - return $('.cancel', '#edit-slug-buttons').click(); - } - $.post(ajaxurl, { - action: 'sample-permalink', - post_id: post_id, - new_slug: new_slug, - new_title: $('#title').val(), - screen: pagenow, - samplepermalinknonce: $('#samplepermalinknonce').val() - }, function(data) { - $('#edit-slug-box').html(data); - b.html(revert_b); - real_slug.val(new_slug); - makeSlugeditClickable(); - $('#view-post-btn').show(); - }); - return false; - }); - - $('.cancel', '#edit-slug-buttons').click(function() { - $('#view-post-btn').show(); - e.html(revert_e); - b.html(revert_b); - real_slug.val(revert_slug); - return false; - }); - - for ( i = 0; i < full.length; ++i ) { - if ( '%' == full.charAt(i) ) - c++; - } - - slug_value = ( c > full.length / 4 ) ? '' : full; - e.html('').children('input').keypress(function(e){ - var key = e.keyCode || 0; - // on enter, just save the new slug, don't save the post - if ( 13 == key ) { - b.children('.save').click(); - return false; - } - if ( 27 == key ) { - b.children('.cancel').click(); - return false; - } - real_slug.val(this.value); - }).focus(); - } - - makeSlugeditClickable = function() { - $('#editable-post-name').click(function() { - $('#edit-slug-buttons').children('.edit-slug').click(); - }); - } - makeSlugeditClickable(); -})(jQuery); \ No newline at end of file diff --git a/wp-admin/js/sample-permalink.min.js b/wp-admin/js/sample-permalink.min.js deleted file mode 100644 index 758182f7af..0000000000 --- a/wp-admin/js/sample-permalink.min.js +++ /dev/null @@ -1 +0,0 @@ -var editPermalink,makeSlugeditClickable;(function(a){if(!a("#edit-slug-box").length){return}editPermalink=function(d){var f,j=0,h=a("#editable-post-name"),k=h.html(),n=a("#post_name"),o=n.val(),l=a("#edit-slug-buttons"),m=l.html(),g=a("#editable-post-name-full").html();a("#view-post-btn").hide();l.html(''+samplePermalinkL10n.ok+' '+samplePermalinkL10n.cancel+"");l.children(".save").click(function(){var b=h.children("input").val();if(b==a("#editable-post-name-full").text()){return a(".cancel","#edit-slug-buttons").click()}a.post(ajaxurl,{action:"sample-permalink",post_id:d,new_slug:b,new_title:a("#title").val(),screen:pagenow,samplepermalinknonce:a("#samplepermalinknonce").val()},function(c){a("#edit-slug-box").html(c);l.html(m);n.val(b);makeSlugeditClickable();a("#view-post-btn").show()});return false});a(".cancel","#edit-slug-buttons").click(function(){a("#view-post-btn").show();h.html(k);l.html(m);n.val(o);return false});for(f=0;fg.length/4)?"":g;h.html('').children("input").keypress(function(c){var b=c.keyCode||0;if(13==b){l.children(".save").click();return false}if(27==b){l.children(".cancel").click();return false}n.val(this.value)}).focus()};makeSlugeditClickable=function(){a("#editable-post-name").click(function(){a("#edit-slug-buttons").children(".edit-slug").click()})};makeSlugeditClickable()})(jQuery); \ No newline at end of file diff --git a/wp-admin/options-reading.php b/wp-admin/options-reading.php index ae726f4315..3ca10df9bb 100644 --- a/wp-admin/options-reading.php +++ b/wp-admin/options-reading.php @@ -15,8 +15,6 @@ if ( ! current_user_can( 'manage_options' ) ) $title = __( 'Reading Settings' ); $parent_file = 'options-general.php'; -wp_enqueue_script( 'sample-permalink' ); - /** * Display JavaScript on the page. * @@ -24,28 +22,23 @@ wp_enqueue_script( 'sample-permalink' ); */ function options_reading_add_js() { ?> - - - 'blog_charset' ) ); +?> -$classes = ''; -if ( 'page' == get_option( 'show_on_front' ) ) { - if ( ! get_pages() || ! get_option( 'page_on_front' ) && ! get_option( 'page_for_posts' ) ) { + + +
+post_name ) ); - -if ( current_user_can( 'create_posts', 'page' ) && ! ( get_option( 'page_for_posts' ) && $page_for_posts = get_post( get_option( 'page_for_posts' ) ) ) ) { - $title = _x( 'Blog', 'default page for posts title' ); - // @todo What if the found page is post_type = attachment or post_status != publish? - // We could go ahead and create a new one, but we would not be able to take over - // the slug from another page. (We could for an attachment.) - // We must also check that the user can edit this page and publish a page. - // Otherwise, we must assume they cannot create pages (throughout), and thus - // should fall back to the dropdown. - $page_for_posts = get_page_by_path( sanitize_title( $title ) ); - if ( ! $page_for_posts || $page_for_posts->ID == get_option( 'page_on_front' ) ) { - $page_for_posts = get_default_post_to_edit( 'page', true ); - $page_for_posts->post_title = $title; - $page_for_posts->post_name = sanitize_title( $title ); - } -} - -if ( ! $new_front_page_only || current_user_can( 'create_posts', 'page' ) ) : ?> +else : + if ( 'page' == get_option( 'show_on_front' ) && ! get_option( 'page_on_front' ) && ! get_option( 'page_for_posts' ) ) + update_option( 'show_on_front', 'posts' ); +?> +
- - + + + +

Warning: these pages should not be the same!' ); ?>

+ + - - +
-
-

-

- -

+

-

- -

-

- ID, $page_for_posts->post_title, $page_for_posts->post_name ); ?> +

- - -

- -
- -

diff --git a/wp-admin/options.php b/wp-admin/options.php index 9071d6c906..92ae917bf7 100644 --- a/wp-admin/options.php +++ b/wp-admin/options.php @@ -62,7 +62,7 @@ $whitelist_options = array( 'general' => array( 'blogname', 'blogdescription', 'gmt_offset', 'date_format', 'time_format', 'start_of_week', 'timezone_string' ), 'discussion' => array( 'default_pingback_flag', 'default_ping_status', 'default_comment_status', 'comments_notify', 'moderation_notify', 'comment_moderation', 'require_name_email', 'comment_whitelist', 'comment_max_links', 'moderation_keys', 'blacklist_keys', 'show_avatars', 'avatar_rating', 'avatar_default', 'close_comments_for_old_posts', 'close_comments_days_old', 'thread_comments', 'thread_comments_depth', 'page_comments', 'comments_per_page', 'default_comments_page', 'comment_order', 'comment_registration' ), 'media' => array( 'thumbnail_size_w', 'thumbnail_size_h', 'thumbnail_crop', 'medium_size_w', 'medium_size_h', 'large_size_w', 'large_size_h', 'image_default_size', 'image_default_align', 'image_default_link_type' ), - 'reading' => array( 'posts_per_page', 'posts_per_rss', 'rss_use_excerpt', 'show_on_front', 'blog_public' ), + 'reading' => array( 'posts_per_page', 'posts_per_rss', 'rss_use_excerpt', 'show_on_front', 'page_on_front', 'page_for_posts', 'blog_public' ), 'writing' => array( 'use_smilies', 'default_category', 'default_email_category', 'use_balanceTags', 'default_link_category', 'default_post_format' ) ); $whitelist_options['misc'] = $whitelist_options['options'] = $whitelist_options['privacy'] = array(); diff --git a/wp-includes/formatting.php b/wp-includes/formatting.php index 0276e7e6b9..05d7227595 100644 --- a/wp-includes/formatting.php +++ b/wp-includes/formatting.php @@ -2786,11 +2786,6 @@ function sanitize_option($option, $value) { $value = absint( $value ); break; - case 'show_on_front' : - if ( ! $value ) - $value = 'posts'; - break; - case 'posts_per_page': case 'posts_per_rss': $value = (int) $value; diff --git a/wp-includes/script-loader.php b/wp-includes/script-loader.php index 6dcd7d60d5..6b9666a90c 100644 --- a/wp-includes/script-loader.php +++ b/wp-includes/script-loader.php @@ -357,14 +357,10 @@ function wp_default_scripts( &$scripts ) { $scripts->add( 'postbox', "/wp-admin/js/postbox$suffix.js", array('jquery-ui-sortable'), false, 1 ); - $scripts->add( 'sample-permalink', "/wp-admin/js/sample-permalink$suffix.js", array(), false, 1 ); - did_action( 'init' ) && $scripts->localize( 'sample-permalink', 'samplePermalinkL10n', array( + $scripts->add( 'post', "/wp-admin/js/post$suffix.js", array('suggest', 'wp-lists', 'postbox'), false, 1 ); + did_action( 'init' ) && $scripts->localize( 'post', 'postL10n', array( 'ok' => __('OK'), 'cancel' => __('Cancel'), - ) ); - - $scripts->add( 'post', "/wp-admin/js/post$suffix.js", array('suggest', 'wp-lists', 'postbox', 'sample-permalink' ), false, 1 ); - did_action( 'init' ) && $scripts->localize( 'post', 'postL10n', array( 'publishOn' => __('Publish on:'), 'publishOnFuture' => __('Schedule for:'), 'publishOnPast' => __('Published on:'),