From ed099928633e0e5cd0a29986076ffc0d07035547 Mon Sep 17 00:00:00 2001 From: ryan Date: Thu, 21 Feb 2008 20:19:34 +0000 Subject: [PATCH] Slug edit for pages. Hide advanced slug field if JS enabled. Trigger first autosave after 15 chars. Set autosave interval to 60s. Props filosofo. see #5749 git-svn-id: http://svn.automattic.com/wordpress/trunk@6955 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-admin/edit-form-advanced.php | 2 +- wp-admin/edit-page-form.php | 7 +++++++ wp-admin/includes/post.php | 4 ++-- wp-admin/js/page.js | 3 +++ wp-admin/js/post.js | 3 +++ wp-includes/js/autosave.js | 8 ++++++++ wp-includes/link-template.php | 10 +++++----- wp-includes/script-loader.php | 4 ++-- 8 files changed, 31 insertions(+), 10 deletions(-) diff --git a/wp-admin/edit-form-advanced.php b/wp-admin/edit-form-advanced.php index 292b20449c..3621bd72da 100644 --- a/wp-admin/edit-form-advanced.php +++ b/wp-admin/edit-form-advanced.php @@ -85,8 +85,8 @@ endif; ?> post_content); ?> - + diff --git a/wp-admin/edit-page-form.php b/wp-admin/edit-page-form.php index f5748aeaa7..4e111400a7 100644 --- a/wp-admin/edit-page-form.php +++ b/wp-admin/edit-page-form.php @@ -51,6 +51,12 @@ addLoadEvent(focusit);

+ID); ?> +
+ID) && ! empty($sample_permalink_html) ) : + echo $sample_permalink_html; +endif; ?> +
@@ -60,6 +66,7 @@ addLoadEvent(focusit); +
diff --git a/wp-admin/includes/post.php b/wp-admin/includes/post.php index 338844c183..a5b1c3380e 100644 --- a/wp-admin/includes/post.php +++ b/wp-admin/includes/post.php @@ -593,7 +593,7 @@ function get_sample_permalink($id, $name = null) { function get_sample_permalink_html($id, $new_slug=null) { $post = &get_post($id); list($permalink, $post_name) = get_sample_permalink($post->ID, $new_slug); - if (false === strpos($permalink, '%postname%')) { + if (false === strpos($permalink, '%postname%') && false === strpos($permalink, '%pagename%')) { return ''; } $title = __('Click to edit this part of the permalink'); @@ -603,7 +603,7 @@ function get_sample_permalink_html($id, $new_slug=null) { $post_name_abridged = $post_name; } $post_name_html = ''.$post_name_abridged.''.$post_name.''; - $display_link = str_replace('%postname%', $post_name_html, $permalink); + $display_link = str_replace(array('%pagename%','%postname%'), $post_name_html, $permalink); $return = '' . __('Permalink:') . "\n" . '' . $display_link . "\n"; $return .= '' . __('Edit') . "\n"; return $return; diff --git a/wp-admin/js/page.js b/wp-admin/js/page.js index bebd6eb179..8bfc45e45e 100644 --- a/wp-admin/js/page.js +++ b/wp-admin/js/page.js @@ -2,6 +2,9 @@ addLoadEvent( function() { add_postbox_toggles('page'); make_slugedit_clickable(); + // hide advanced slug field + jQuery('#pageslugdiv').hide(); + jQuery('#timestamp').css('display', 'none'); jQuery('.edit-timestamp').click(function () { if (jQuery('#timestamp').is(":hidden")) { diff --git a/wp-admin/js/post.js b/wp-admin/js/post.js index e2b0dba1e7..84114989a2 100644 --- a/wp-admin/js/post.js +++ b/wp-admin/js/post.js @@ -68,6 +68,9 @@ addLoadEvent( function() { // Editable slugs make_slugedit_clickable(); + + // hide advanced slug field + jQuery('#slugdiv').hide(); jQuery('#tags-input').hide(); tag_update_quickclicks(); diff --git a/wp-includes/js/autosave.js b/wp-includes/js/autosave.js index cd695a86f1..dd29bde341 100644 --- a/wp-includes/js/autosave.js +++ b/wp-includes/js/autosave.js @@ -12,6 +12,12 @@ function autosave_start_timer() { jQuery("#post #submit").click(function() { jQuery.cancel(autosavePeriodical); }); jQuery("#post #publish").click(function() { jQuery.cancel(autosavePeriodical); }); jQuery("#post #deletepost").click(function() { jQuery.cancel(autosavePeriodical); }); + + // Autosave early on for a new post + jQuery("#content").keypress(function() { + if ( 1 === ( jQuery(this).val().length % 15 ) && 1 > parseInt(jQuery("#post_ID").val(),10) ) + setTimeout(autosave, 5000); + }); } addLoadEvent(autosave_start_timer) @@ -132,6 +138,8 @@ function autosave() { } post_data["content"] = jQuery("#content").val(); + if ( jQuery('#post_name').val() ) + post_data["post_name"] = jQuery('#post_name').val(); if(post_data["post_title"].length==0 || post_data["content"].length==0 || post_data["post_title"] + post_data["content"] == autosaveLast) { return; diff --git a/wp-includes/link-template.php b/wp-includes/link-template.php index ee3608d283..65f8cc1f72 100644 --- a/wp-includes/link-template.php +++ b/wp-includes/link-template.php @@ -63,7 +63,7 @@ function get_permalink($id = 0, $leavename=false) { if ( empty($post->ID) ) return FALSE; if ( $post->post_type == 'page' ) - return get_page_link($post->ID); + return get_page_link($post->ID, $leavename); elseif ($post->post_type == 'attachment') return get_attachment_link($post->ID); @@ -118,7 +118,7 @@ function post_permalink($post_id = 0, $deprecated = '') { } // Respects page_on_front. Use this one. -function get_page_link($id = false) { +function get_page_link($id = false, $leavename = false) { global $post; $id = (int) $id; @@ -128,13 +128,13 @@ function get_page_link($id = false) { if ( 'page' == get_option('show_on_front') && $id == get_option('page_on_front') ) $link = get_option('home'); else - $link = _get_page_link( $id ); + $link = _get_page_link( $id , $leavename ); return apply_filters('page_link', $link, $id); } // Ignores page_on_front. Internal use only. -function _get_page_link( $id = false ) { +function _get_page_link( $id = false, $leavename = false ) { global $post, $wp_rewrite; if ( !$id ) @@ -146,7 +146,7 @@ function _get_page_link( $id = false ) { if ( '' != $pagestruct && isset($post->post_status) && 'draft' != $post->post_status ) { $link = get_page_uri($id); - $link = str_replace('%pagename%', $link, $pagestruct); + $link = ( $leavename ) ? $pagestruct : str_replace('%pagename%', $link, $pagestruct); $link = get_option('home') . "/$link"; $link = user_trailingslashit($link, 'page'); } else { diff --git a/wp-includes/script-loader.php b/wp-includes/script-loader.php index b049db9855..d0bc0dee35 100644 --- a/wp-includes/script-loader.php +++ b/wp-includes/script-loader.php @@ -44,7 +44,7 @@ class WP_Scripts { $this->add( 'autosave', '/wp-includes/js/autosave.js', array('jquery', 'schedule'), '20080221'); $this->localize( 'autosave', 'autosaveL10n', array( - 'autosaveInterval' => apply_filters('autosave_interval', '120'), + 'autosaveInterval' => apply_filters('autosave_interval', '60'), 'errorText' => __('Error: %response%'), 'failText' => __('Error: Autosave Failed.'), 'previewPageText' => __('Preview this Page'), @@ -148,7 +148,7 @@ class WP_Scripts { 'save' => __('Save'), 'cancel' => __('Cancel'), ) ); - $this->add( 'post', '/wp-admin/js/post.js', array('suggest', 'jquery-ui-tabs', 'wp-lists', 'postbox', 'slug'), '20080128' ); + $this->add( 'post', '/wp-admin/js/post.js', array('suggest', 'jquery-ui-tabs', 'wp-lists', 'postbox', 'slug'), '20080221' ); $this->localize( 'post', 'postL10n', array( 'tagsUsed' => __('Tags used on this post:'), 'add' => attribute_escape(__('Add')),