diff --git a/src/wp-admin/js/post.js b/src/wp-admin/js/post.js
index 7a1b363550..0b621464e5 100644
--- a/src/wp-admin/js/post.js
+++ b/src/wp-admin/js/post.js
@@ -1,10 +1,12 @@
-/* global postL10n, ajaxurl, wpAjax, setPostThumbnailL10n, postboxes, pagenow, tinymce, alert, deleteUserSetting, getUserSetting, setUserSetting */
-/* global theList:true, theExtraList:true, autosave:true */
+/* global postL10n, ajaxurl, wpAjax, setPostThumbnailL10n, postboxes, pagenow, tinymce, alert, deleteUserSetting */
+/* global theList:true, theExtraList:true, getUserSetting, setUserSetting */
-var tagBox, commentsBox, WPSetThumbnailHTML, WPSetThumbnailID, WPRemoveThumbnail, wptitlehint;
+var tagBox, commentsBox, WPSetThumbnailHTML, WPSetThumbnailID, WPRemoveThumbnail, wptitlehint, makeSlugeditClickable, editPermalink;
// Back-compat: prevent fatal errors
makeSlugeditClickable = editPermalink = function(){};
+window.wp = window.wp || {};
+
// return an array with any duplicate, whitespace or values removed
function array_unique_noempty(a) {
var out = [];
@@ -283,10 +285,10 @@ $(document).on( 'heartbeat-send.refresh-lock', function( e, data ) {
wrap = $('#post-lock-dialog');
if ( wrap.length && ! wrap.is(':visible') ) {
- if ( typeof wp != 'undefined' && wp.autosave ) {
+ if ( wp.autosave ) {
// Save the latest changes and disable
$(document).one( 'heartbeat-tick', function() {
- wp.autosave.server.disable();
+ wp.autosave.server.suspend();
wrap.removeClass('saving').addClass('saved');
$(window).off( 'beforeunload.edit-post' );
});
@@ -313,7 +315,7 @@ $(document).on( 'heartbeat-send.refresh-lock', function( e, data ) {
$.post( ajaxurl, {
action: 'sample-permalink',
post_id: $('#post_ID').val(),
- new_title: typeof fullscreen != 'undefined' && fullscreen.settings.visible ? $('#wp-fullscreen-title').val() : $('#title').val(),
+ new_title: $('#title').val(),
samplepermalinknonce: $('#samplepermalinknonce').val()
},
function( data ) {
@@ -368,7 +370,7 @@ $(document).on( 'heartbeat-send.refresh-lock', function( e, data ) {
}(jQuery));
jQuery(document).ready( function($) {
- var stamp, visibility, $submitButtons,
+ var stamp, visibility, $submitButtons, updateVisibility, updateText,
sticky = '',
last = 0,
co = $('#content'),
@@ -399,7 +401,7 @@ jQuery(document).ready( function($) {
}).filter(':visible').find('.wp-tab-first').focus();
// Set the heartbeat interval to 15 sec. if post lock dialogs are enabled
- if ( typeof wp !== 'undefined' && wp.heartbeat && $('#post-lock-dialog').length ) {
+ if ( wp.heartbeat && $('#post-lock-dialog').length ) {
wp.heartbeat.interval( 15 );
}
@@ -407,7 +409,7 @@ jQuery(document).ready( function($) {
$submitButtons = $submitpost.find( ':button, :submit, a.submitdelete, #post-preview' ).on( 'click.edit-post', function( event ) {
var $button = $(this);
- if ( $button.hasClass('button-disabled') ) {
+ if ( $button.hasClass('disabled') ) {
event.preventDefault();
return;
}
@@ -423,14 +425,15 @@ jQuery(document).ready( function($) {
return;
}
- if ( typeof wp != 'undefined' && wp.autosave ) {
- wp.autosave.server.disable();
+ // Stop autosave
+ if ( wp.autosave ) {
+ wp.autosave.server.suspend();
}
releaseLock = false;
$(window).off( 'beforeunload.edit-post' );
- $submitButtons.addClass( 'button-disabled' );
+ $submitButtons.addClass( 'disabled' );
if ( $button.attr('id') === 'publish' ) {
$submitpost.find('#major-publishing-actions .spinner').show();
@@ -447,14 +450,14 @@ jQuery(document).ready( function($) {
$previewField = $('input#wp-preview'),
target = $this.attr('target') || 'wp-preview',
ua = navigator.userAgent.toLowerCase();
-
+
event.preventDefault();
- if ( $this.prop('disabled') ) {
+ if ( $this.hasClass('disabled') ) {
return;
}
- if ( typeof wp != 'undefined' && wp.autosave ) {
+ if ( wp.autosave ) {
wp.autosave.server.tempBlockSave();
}
@@ -496,27 +499,31 @@ jQuery(document).ready( function($) {
return;
}
- if ( typeof wp != 'undefined' && wp.autosave ) {
+ if ( wp.autosave ) {
wp.autosave.server.triggerSave();
}
});
}
$(document).on( 'autosave-disable-buttons.edit-post', function() {
- $submitButtons.addClass( 'button-disabled' );
+ $submitButtons.addClass( 'disabled' );
}).on( 'autosave-enable-buttons.edit-post', function() {
- if ( ! window.wp || ! window.wp.heartbeat || ! window.wp.heartbeat.hasConnectionError() ) {
- $submitButtons.removeClass( 'button-disabled' );
+ if ( ! wp.heartbeat || ! wp.heartbeat.hasConnectionError() ) {
+ $submitButtons.removeClass( 'disabled' );
}
+ }).on( 'before-autosave.edit-post', function() {
+ $( '.autosave-message' ).text( postL10n.savingText );
+ }).on( 'after-autosave.edit-post', function( event, data ) {
+ $( '.autosave-message' ).text( data.message );
});
$(window).on( 'beforeunload.edit-post', function() {
var editor = typeof tinymce !== 'undefined' && tinymce.get('content');
- if ( ( editor && ! editor.isHidden() && editor.isDirty() ) ||
- ( typeof wp !== 'undefined' && wp.autosave && wp.autosave.server.postChanged() ) ) {
+ if ( ( editor && ! editor.isHidden() && editor.isDirty() ) ||
+ ( wp.autosave && wp.autosave.server.postChanged() ) ) {
- return autosaveL10n.saveAlert;
+ return postL10n.saveAlert;
}
}).on( 'unload.edit-post', function( event ) {
if ( ! releaseLock ) {
@@ -817,7 +824,7 @@ jQuery(document).ready( function($) {
event.preventDefault();
$timestampdiv.show();
- if ( typeof wp !== 'undefined' && wp.autosave ) {
+ if ( wp.autosave ) {
wp.autosave.enableButtons();
}
@@ -848,70 +855,76 @@ jQuery(document).ready( function($) {
} // end submitdiv
// permalink
- if ( $editSlugWrap.length ) {
- function editPermalink() {
- 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();
+ function editPermalink() {
+ var i, slug_value,
+ 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 $('#edit-slug-buttons .cancel').click();
- }
- $.post(ajaxurl, {
- action: 'sample-permalink',
- post_id: postId,
- new_slug: new_slug,
- new_title: $('#title').val(),
- samplepermalinknonce: $('#samplepermalinknonce').val()
- }, function(data) {
- var box = $('#edit-slug-box');
- box.html(data);
- if (box.hasClass('hidden')) {
- box.fadeIn('fast', function () {
- box.removeClass('hidden');
- });
- }
- b.html(revert_b);
- real_slug.val(new_slug);
- $('#view-post-btn').show();
- });
- return false;
- });
-
- $('#edit-slug-buttons .cancel').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++;
+ $('#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 $('#edit-slug-buttons .cancel').click();
}
-
- 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;
+ $.post(ajaxurl, {
+ action: 'sample-permalink',
+ post_id: postId,
+ new_slug: new_slug,
+ new_title: $('#title').val(),
+ samplepermalinknonce: $('#samplepermalinknonce').val()
+ }, function(data) {
+ var box = $('#edit-slug-box');
+ box.html(data);
+ if (box.hasClass('hidden')) {
+ box.fadeIn('fast', function () {
+ box.removeClass('hidden');
+ });
}
- if ( 27 == key ) {
- b.children('.cancel').click();
- return false;
- }
- } ).keyup( function() {
- real_slug.val(this.value);
- }).focus();
- };
+ b.html(revert_b);
+ real_slug.val(new_slug);
+ $('#view-post-btn').show();
+ });
+ return false;
+ });
+ $('#edit-slug-buttons .cancel').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;
+ }
+ } ).keyup( function() {
+ real_slug.val(this.value);
+ }).focus();
+ }
+
+ if ( $editSlugWrap.length ) {
$editSlugWrap.on( 'click', function( event ) {
var $target = $( event.target );
@@ -971,7 +984,7 @@ jQuery(document).ready( function($) {
$document = $( document ),
$textarea = $('textarea#content'),
$handle = $('#post-status-info');
-
+
// No point for touch devices
if ( ! $textarea.length || 'ontouchstart' in window ) {
return;
diff --git a/src/wp-includes/css/buttons.css b/src/wp-includes/css/buttons.css
index c941133d53..3bde649288 100644
--- a/src/wp-includes/css/buttons.css
+++ b/src/wp-includes/css/buttons.css
@@ -165,8 +165,10 @@ TABLE OF CONTENTS:
.wp-core-ui .button[disabled],
.wp-core-ui .button:disabled,
+.wp-core-ui .button.disabled,
.wp-core-ui .button-secondary[disabled],
.wp-core-ui .button-secondary:disabled,
+.wp-core-ui .button-secondary.disabled,
.wp-core-ui .button-disabled {
color: #aaa !important;
border-color: #ddd !important;
@@ -221,7 +223,8 @@ TABLE OF CONTENTS:
.wp-core-ui .button-primary[disabled],
.wp-core-ui .button-primary:disabled,
-.wp-core-ui .button-primary-disabled {
+.wp-core-ui .button-primary-disabled,
+.wp-core-ui .button-primary.disabled {
color: #94cde7 !important;
background: #298cba !important;
border-color: #1b607f !important;
diff --git a/src/wp-includes/js/autosave.js b/src/wp-includes/js/autosave.js
index ab6952b08f..11251e19b0 100644
--- a/src/wp-includes/js/autosave.js
+++ b/src/wp-includes/js/autosave.js
@@ -6,7 +6,6 @@ window.autosave = function(){};
function autosave() {
var initialCompareString,
lastTriggerSave = 0,
- isSuspended = false,
$document = $(document);
/**
@@ -87,18 +86,11 @@ window.autosave = function(){};
$document.trigger( 'autosave-enable-buttons' );
}
- function suspend() {
- isSuspended = true;
- }
-
- function resume() {
- isSuspended = false;
- }
-
// Autosave in localStorage
function autosaveLocal() {
var restorePostData, undoPostData, blog_id, post_id, hasStorage, intervalTimer,
- lastCompareString;
+ lastCompareString,
+ isSuspended = false;
// Check if the browser supports sessionStorage and it's not disabled
function checkStorage() {
@@ -196,6 +188,14 @@ window.autosave = function(){};
return setStorage( stored );
}
+ function suspend() {
+ isSuspended = true;
+ }
+
+ function resume() {
+ isSuspended = false;
+ }
+
/**
* Save post data for the current post
*
@@ -415,14 +415,17 @@ window.autosave = function(){};
return {
hasStorage: hasStorage,
getSavedPostData: getSavedPostData,
- save: save
+ save: save,
+ suspend: suspend,
+ resume: resume
};
}
// Autosave on the server
function autosaveServer() {
- var _disabled, _blockSave, _blockSaveTimer, previousCompareString, lastCompareString,
- nextRun = 0;
+ var _blockSave, _blockSaveTimer, previousCompareString, lastCompareString,
+ nextRun = 0,
+ isSuspended = false;
// Block saving for the next 10 sec.
function tempBlockSave() {
@@ -434,6 +437,14 @@ window.autosave = function(){};
}, 10000 );
}
+ function suspend() {
+ isSuspended = true;
+ }
+
+ function resume() {
+ isSuspended = false;
+ }
+
// Runs on heartbeat-response
function response( data ) {
_schedule();
@@ -442,7 +453,6 @@ window.autosave = function(){};
previousCompareString = '';
$document.trigger( 'after-autosave', [data] );
- $( '.autosave-message' ).text( data.message );
enableButtons();
if ( data.success ) {
@@ -451,15 +461,6 @@ window.autosave = function(){};
}
}
- /**
- * Disable autosave
- *
- * Intended to run on form.submit
- */
- function disable() {
- _disabled = true;
- }
-
/**
* Save immediately
*
@@ -488,7 +489,7 @@ window.autosave = function(){};
function save() {
var postData, compareString;
- if ( isSuspended || _disabled || _blockSave ) {
+ if ( isSuspended || _blockSave ) {
return false;
}
@@ -516,7 +517,6 @@ window.autosave = function(){};
$document.trigger( 'wpcountwords', [ postData.content ] )
.trigger( 'before-autosave', [ postData ] );
- $( '.autosave-message' ).text( autosaveL10n.savingText );
postData._wpnonce = $( '#_wpnonce' ).val() || '';
return postData;
@@ -556,10 +556,11 @@ window.autosave = function(){};
});
return {
- disable: disable,
tempBlockSave: tempBlockSave,
triggerSave: triggerSave,
- postChanged: postChanged
+ postChanged: postChanged,
+ suspend: suspend,
+ resume: resume
};
}
@@ -584,8 +585,6 @@ window.autosave = function(){};
getCompareString: getCompareString,
disableButtons: disableButtons,
enableButtons: enableButtons,
- suspend: suspend,
- resume: resume,
local: autosaveLocal(),
server: autosaveServer()
};
diff --git a/src/wp-includes/script-loader.php b/src/wp-includes/script-loader.php
index 61ad4bd913..426eb97368 100644
--- a/src/wp-includes/script-loader.php
+++ b/src/wp-includes/script-loader.php
@@ -430,6 +430,8 @@ function wp_default_scripts( &$scripts ) {
'privatelyPublished' => __('Privately Published'),
'published' => __('Published'),
'comma' => _x( ',', 'tag delimiter' ),
+ 'saveAlert' => __('The changes you made will be lost if you navigate away from this page.'),
+ 'savingText' => __('Saving Draft…'),
) );
$scripts->add( 'link', "/wp-admin/js/link$suffix.js", array( 'wp-lists', 'postbox' ), false, 1 );
@@ -653,8 +655,6 @@ function wp_just_in_time_script_localization() {
wp_localize_script( 'autosave', 'autosaveL10n', array(
'autosaveInterval' => AUTOSAVE_INTERVAL,
- 'savingText' => __('Saving Draft…'),
- 'saveAlert' => __('The changes you made will be lost if you navigate away from this page.'),
'blog_id' => get_current_blog_id(),
) );