web/wp-includes/js/autosave.dev.js
author ymh
Fri, 12 Mar 2010 13:29:04 +0000
changeset 1 0d28b7c10758
permissions -rw-r--r--
First commit
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
0d28b7c10758 First commit
ymh
parents:
diff changeset
     1
var autosave, autosaveLast = '', autosavePeriodical, autosaveOldMessage = '', autosaveDelayPreview = false, notSaved = true, blockSave = false, interimLogin = false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
     2
0d28b7c10758 First commit
ymh
parents:
diff changeset
     3
jQuery(document).ready( function($) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
     4
	var dotabkey = true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
     5
	
0d28b7c10758 First commit
ymh
parents:
diff changeset
     6
	autosaveLast = $('#post #title').val() + $('#post #content').val();
0d28b7c10758 First commit
ymh
parents:
diff changeset
     7
	autosavePeriodical = $.schedule({time: autosaveL10n.autosaveInterval * 1000, func: function() { autosave(); }, repeat: true, protect: true});
0d28b7c10758 First commit
ymh
parents:
diff changeset
     8
0d28b7c10758 First commit
ymh
parents:
diff changeset
     9
	//Disable autosave after the form has been submitted
0d28b7c10758 First commit
ymh
parents:
diff changeset
    10
	$("#post").submit(function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    11
		$.cancel(autosavePeriodical);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    12
	});
0d28b7c10758 First commit
ymh
parents:
diff changeset
    13
0d28b7c10758 First commit
ymh
parents:
diff changeset
    14
	$('input[type="submit"], a.submitdelete', '#submitpost').click(function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
    15
		blockSave = true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    16
		window.onbeforeunload = null;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    17
		$(':button, :submit', '#submitpost').each(function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
    18
			var t = $(this);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    19
			if ( t.hasClass('button-primary') )
0d28b7c10758 First commit
ymh
parents:
diff changeset
    20
				t.addClass('button-primary-disabled');
0d28b7c10758 First commit
ymh
parents:
diff changeset
    21
			else
0d28b7c10758 First commit
ymh
parents:
diff changeset
    22
				t.addClass('button-disabled');
0d28b7c10758 First commit
ymh
parents:
diff changeset
    23
		});
0d28b7c10758 First commit
ymh
parents:
diff changeset
    24
		$('#ajax-loading').css('visibility', 'visible');
0d28b7c10758 First commit
ymh
parents:
diff changeset
    25
	});
0d28b7c10758 First commit
ymh
parents:
diff changeset
    26
0d28b7c10758 First commit
ymh
parents:
diff changeset
    27
	window.onbeforeunload = function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
    28
		var mce = typeof(tinyMCE) != 'undefined' ? tinyMCE.activeEditor : false, title, content;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    29
0d28b7c10758 First commit
ymh
parents:
diff changeset
    30
		if ( mce && !mce.isHidden() ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    31
			if ( mce.isDirty() )
0d28b7c10758 First commit
ymh
parents:
diff changeset
    32
				return autosaveL10n.saveAlert;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    33
		} else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    34
			title = $('#post #title').val(), content = $('#post #content').val();
0d28b7c10758 First commit
ymh
parents:
diff changeset
    35
			if ( ( title || content ) && title + content != autosaveLast )
0d28b7c10758 First commit
ymh
parents:
diff changeset
    36
				return autosaveL10n.saveAlert;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    37
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    38
	};
0d28b7c10758 First commit
ymh
parents:
diff changeset
    39
0d28b7c10758 First commit
ymh
parents:
diff changeset
    40
	// preview
0d28b7c10758 First commit
ymh
parents:
diff changeset
    41
	$('#post-preview').click(function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
    42
		if ( 1 > $('#post_ID').val() && notSaved ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    43
			autosaveDelayPreview = true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    44
			autosave();
0d28b7c10758 First commit
ymh
parents:
diff changeset
    45
			return false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    46
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    47
		doPreview();
0d28b7c10758 First commit
ymh
parents:
diff changeset
    48
		return false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    49
	});
0d28b7c10758 First commit
ymh
parents:
diff changeset
    50
0d28b7c10758 First commit
ymh
parents:
diff changeset
    51
	doPreview = function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    52
		$('input#wp-preview').val('dopreview');
0d28b7c10758 First commit
ymh
parents:
diff changeset
    53
		$('form#post').attr('target', 'wp-preview').submit().attr('target', '');
0d28b7c10758 First commit
ymh
parents:
diff changeset
    54
		$('input#wp-preview').val('');
0d28b7c10758 First commit
ymh
parents:
diff changeset
    55
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    56
0d28b7c10758 First commit
ymh
parents:
diff changeset
    57
	//  This code is meant to allow tabbing from Title to Post if tinyMCE is defined.
0d28b7c10758 First commit
ymh
parents:
diff changeset
    58
	if ( typeof tinyMCE != 'undefined' ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    59
		$('#title')[$.browser.opera ? 'keypress' : 'keydown'](function (e) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    60
			if ( e.which == 9 && !e.shiftKey && !e.controlKey && !e.altKey ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    61
				if ( ($("#post_ID").val() < 1) && ($("#title").val().length > 0) ) { autosave(); }
0d28b7c10758 First commit
ymh
parents:
diff changeset
    62
				if ( tinyMCE.activeEditor && ! tinyMCE.activeEditor.isHidden() && dotabkey ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    63
					e.preventDefault();
0d28b7c10758 First commit
ymh
parents:
diff changeset
    64
					dotabkey = false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    65
					tinyMCE.activeEditor.focus();
0d28b7c10758 First commit
ymh
parents:
diff changeset
    66
					return false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    67
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    68
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    69
		});
0d28b7c10758 First commit
ymh
parents:
diff changeset
    70
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    71
0d28b7c10758 First commit
ymh
parents:
diff changeset
    72
	// autosave new posts after a title is typed but not if Publish or Save Draft is clicked
0d28b7c10758 First commit
ymh
parents:
diff changeset
    73
	if ( 0 > $('#post_ID').val() ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    74
		$('#title').blur( function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    75
			if ( !this.value || 0 < $('#post_ID').val() )
0d28b7c10758 First commit
ymh
parents:
diff changeset
    76
				return;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    77
0d28b7c10758 First commit
ymh
parents:
diff changeset
    78
			delayed_autosave();
0d28b7c10758 First commit
ymh
parents:
diff changeset
    79
		});
0d28b7c10758 First commit
ymh
parents:
diff changeset
    80
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    81
});
0d28b7c10758 First commit
ymh
parents:
diff changeset
    82
0d28b7c10758 First commit
ymh
parents:
diff changeset
    83
function autosave_parse_response(response) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    84
	var res = wpAjax.parseAjaxResponse(response, 'autosave'), message = '', postID, sup, url;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    85
0d28b7c10758 First commit
ymh
parents:
diff changeset
    86
	if ( res && res.responses && res.responses.length ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    87
		message = res.responses[0].data; // The saved message or error.
0d28b7c10758 First commit
ymh
parents:
diff changeset
    88
		// someone else is editing: disable autosave, set errors
0d28b7c10758 First commit
ymh
parents:
diff changeset
    89
		if ( res.responses[0].supplemental ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    90
			sup = res.responses[0].supplemental;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    91
			if ( 'disable' == sup['disable_autosave'] ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    92
				autosave = function() {};
0d28b7c10758 First commit
ymh
parents:
diff changeset
    93
				res = { errors: true };
0d28b7c10758 First commit
ymh
parents:
diff changeset
    94
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
    95
			if ( sup['session_expired'] && (url = sup['session_expired']) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    96
				if ( !interimLogin || interimLogin.closed ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    97
					interimLogin = window.open(url, 'login', 'width=600,height=450,resizable=yes,scrollbars=yes,status=yes');
0d28b7c10758 First commit
ymh
parents:
diff changeset
    98
					interimLogin.focus();
0d28b7c10758 First commit
ymh
parents:
diff changeset
    99
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   100
				delete sup['session_expired'];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   101
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   102
			jQuery.each(sup, function(selector, value) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   103
				if ( selector.match(/^replace-/) ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   104
					jQuery('#'+selector.replace('replace-', '')).val(value);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   105
				}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   106
			});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   107
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   108
0d28b7c10758 First commit
ymh
parents:
diff changeset
   109
		// if no errors: add slug UI
0d28b7c10758 First commit
ymh
parents:
diff changeset
   110
		if ( !res.errors ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   111
			postID = parseInt( res.responses[0].id, 10 );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   112
			if ( !isNaN(postID) && postID > 0 ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   113
				autosave_update_slug(postID);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   114
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   115
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   116
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   117
	if ( message ) { jQuery('#autosave').html(message); } // update autosave message
0d28b7c10758 First commit
ymh
parents:
diff changeset
   118
	else if ( autosaveOldMessage && res ) { jQuery('#autosave').html( autosaveOldMessage ); }
0d28b7c10758 First commit
ymh
parents:
diff changeset
   119
	return res;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   120
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   121
0d28b7c10758 First commit
ymh
parents:
diff changeset
   122
// called when autosaving pre-existing post
0d28b7c10758 First commit
ymh
parents:
diff changeset
   123
function autosave_saved(response) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   124
	autosave_parse_response(response); // parse the ajax response
0d28b7c10758 First commit
ymh
parents:
diff changeset
   125
	autosave_enable_buttons(); // re-enable disabled form buttons
0d28b7c10758 First commit
ymh
parents:
diff changeset
   126
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   127
0d28b7c10758 First commit
ymh
parents:
diff changeset
   128
// called when autosaving new post
0d28b7c10758 First commit
ymh
parents:
diff changeset
   129
function autosave_saved_new(response) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   130
	var res = autosave_parse_response(response), tempID, postID;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   131
	// if no errors: update post_ID from the temporary value, grab new save-nonce for that new ID
0d28b7c10758 First commit
ymh
parents:
diff changeset
   132
	if ( res && res.responses.length && !res.errors ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   133
		tempID = jQuery('#post_ID').val();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   134
		postID = parseInt( res.responses[0].id, 10 );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   135
		autosave_update_post_ID( postID ); // disabled form buttons are re-enabled here
0d28b7c10758 First commit
ymh
parents:
diff changeset
   136
		if ( tempID < 0 && postID > 0 ) { // update media buttons
0d28b7c10758 First commit
ymh
parents:
diff changeset
   137
			notSaved = false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   138
			jQuery('#media-buttons a').each(function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   139
				this.href = this.href.replace(tempID, postID);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   140
			});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   141
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   142
		if ( autosaveDelayPreview ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   143
			autosaveDelayPreview = false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   144
			doPreview();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   145
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   146
	} else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   147
		autosave_enable_buttons(); // re-enable disabled form buttons
0d28b7c10758 First commit
ymh
parents:
diff changeset
   148
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   149
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   150
0d28b7c10758 First commit
ymh
parents:
diff changeset
   151
function autosave_update_post_ID( postID ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   152
	if ( !isNaN(postID) && postID > 0 ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   153
		if ( postID == parseInt(jQuery('#post_ID').val(), 10) ) { return; } // no need to do this more than once
0d28b7c10758 First commit
ymh
parents:
diff changeset
   154
		jQuery('#post_ID').attr({name: "post_ID"});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   155
		jQuery('#post_ID').val(postID);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   156
		// We need new nonces
0d28b7c10758 First commit
ymh
parents:
diff changeset
   157
		jQuery.post(autosaveL10n.requestFile, {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   158
			action: "autosave-generate-nonces",
0d28b7c10758 First commit
ymh
parents:
diff changeset
   159
			post_ID: postID,
0d28b7c10758 First commit
ymh
parents:
diff changeset
   160
			autosavenonce: jQuery('#autosavenonce').val(),
0d28b7c10758 First commit
ymh
parents:
diff changeset
   161
			post_type: jQuery('#post_type').val()
0d28b7c10758 First commit
ymh
parents:
diff changeset
   162
		}, function(html) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   163
			jQuery('#_wpnonce').val(html.updateNonce);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   164
			jQuery('#delete-action a.submitdelete').attr('href', html.deleteURL);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   165
			autosave_enable_buttons(); // re-enable disabled form buttons
0d28b7c10758 First commit
ymh
parents:
diff changeset
   166
			jQuery('#delete-action a.submitdelete').fadeIn();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   167
		},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   168
		'json');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   169
		jQuery('#hiddenaction').val('editpost');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   170
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   171
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   172
0d28b7c10758 First commit
ymh
parents:
diff changeset
   173
function autosave_update_slug(post_id) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   174
	// create slug area only if not already there
0d28b7c10758 First commit
ymh
parents:
diff changeset
   175
	if ( 'undefined' != makeSlugeditClickable && jQuery.isFunction(makeSlugeditClickable) && !jQuery('#edit-slug-box > *').size() ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   176
		jQuery.post(
0d28b7c10758 First commit
ymh
parents:
diff changeset
   177
			ajaxurl,
0d28b7c10758 First commit
ymh
parents:
diff changeset
   178
			{
0d28b7c10758 First commit
ymh
parents:
diff changeset
   179
				action: 'sample-permalink',
0d28b7c10758 First commit
ymh
parents:
diff changeset
   180
				post_id: post_id,
0d28b7c10758 First commit
ymh
parents:
diff changeset
   181
				new_title: jQuery('#title').val(),
0d28b7c10758 First commit
ymh
parents:
diff changeset
   182
				samplepermalinknonce: jQuery('#samplepermalinknonce').val()
0d28b7c10758 First commit
ymh
parents:
diff changeset
   183
			},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   184
			function(data) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   185
				jQuery('#edit-slug-box').html(data);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   186
				makeSlugeditClickable();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   187
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   188
		);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   189
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   190
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   191
0d28b7c10758 First commit
ymh
parents:
diff changeset
   192
function autosave_loading() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   193
	jQuery('#autosave').html(autosaveL10n.savingText);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   194
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   195
0d28b7c10758 First commit
ymh
parents:
diff changeset
   196
function autosave_enable_buttons() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   197
	// delay that a bit to avoid some rare collisions while the DOM is being updated.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   198
	setTimeout(function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   199
		jQuery(':button, :submit', '#submitpost').removeAttr('disabled');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   200
		jQuery('#ajax-loading').css('visibility', 'hidden');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   201
	}, 500);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   202
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   203
0d28b7c10758 First commit
ymh
parents:
diff changeset
   204
function autosave_disable_buttons() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   205
	jQuery(':button, :submit', '#submitpost').attr('disabled', 'disabled');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   206
	// Re-enable 5 sec later.  Just gives autosave a head start to avoid collisions.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   207
	setTimeout(autosave_enable_buttons, 5000);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   208
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   209
0d28b7c10758 First commit
ymh
parents:
diff changeset
   210
function delayed_autosave() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   211
	setTimeout(function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   212
		if ( blockSave )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   213
			return;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   214
		autosave();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   215
	}, 200);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   216
}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   217
0d28b7c10758 First commit
ymh
parents:
diff changeset
   218
autosave = function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   219
	// (bool) is rich editor enabled and active
0d28b7c10758 First commit
ymh
parents:
diff changeset
   220
	var rich = (typeof tinyMCE != "undefined") && tinyMCE.activeEditor && !tinyMCE.activeEditor.isHidden(), post_data, doAutoSave, ed, origStatus, successCallback;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   221
0d28b7c10758 First commit
ymh
parents:
diff changeset
   222
	autosave_disable_buttons();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   223
0d28b7c10758 First commit
ymh
parents:
diff changeset
   224
	post_data = {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   225
		action: "autosave",
0d28b7c10758 First commit
ymh
parents:
diff changeset
   226
		post_ID:  jQuery("#post_ID").val() || 0,
0d28b7c10758 First commit
ymh
parents:
diff changeset
   227
		post_title: jQuery("#title").val() || "",
0d28b7c10758 First commit
ymh
parents:
diff changeset
   228
		autosavenonce: jQuery('#autosavenonce').val(),
0d28b7c10758 First commit
ymh
parents:
diff changeset
   229
		post_type: jQuery('#post_type').val() || "",
0d28b7c10758 First commit
ymh
parents:
diff changeset
   230
		autosave: 1
0d28b7c10758 First commit
ymh
parents:
diff changeset
   231
	};
0d28b7c10758 First commit
ymh
parents:
diff changeset
   232
0d28b7c10758 First commit
ymh
parents:
diff changeset
   233
	jQuery('.tags-input').each( function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   234
		post_data[this.name] = this.value;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   235
	} );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   236
0d28b7c10758 First commit
ymh
parents:
diff changeset
   237
	// We always send the ajax request in order to keep the post lock fresh.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   238
	// This (bool) tells whether or not to write the post to the DB during the ajax request.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   239
	doAutoSave = true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   240
0d28b7c10758 First commit
ymh
parents:
diff changeset
   241
	// No autosave while thickbox is open (media buttons)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   242
	if ( jQuery("#TB_window").css('display') == 'block' )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   243
		doAutoSave = false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   244
0d28b7c10758 First commit
ymh
parents:
diff changeset
   245
	/* Gotta do this up here so we can check the length when tinyMCE is in use */
0d28b7c10758 First commit
ymh
parents:
diff changeset
   246
	if ( rich && doAutoSave ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   247
		ed = tinyMCE.activeEditor;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   248
		// Don't run while the TinyMCE spellcheck is on. It resets all found words.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   249
		if ( ed.plugins.spellchecker && ed.plugins.spellchecker.active ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   250
			doAutoSave = false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   251
		} else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   252
			if ( 'mce_fullscreen' == ed.id )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   253
				tinyMCE.get('content').setContent(ed.getContent({format : 'raw'}), {format : 'raw'});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   254
			tinyMCE.get('content').save();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   255
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   256
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   257
0d28b7c10758 First commit
ymh
parents:
diff changeset
   258
	post_data["content"] = jQuery("#content").val();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   259
	if ( jQuery('#post_name').val() )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   260
		post_data["post_name"] = jQuery('#post_name').val();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   261
0d28b7c10758 First commit
ymh
parents:
diff changeset
   262
	// Nothing to save or no change.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   263
	if ( ( post_data["post_title"].length == 0 && post_data["content"].length == 0 ) || post_data["post_title"] + post_data["content"] == autosaveLast ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   264
		doAutoSave = false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   265
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   266
0d28b7c10758 First commit
ymh
parents:
diff changeset
   267
	origStatus = jQuery('#original_post_status').val();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   268
0d28b7c10758 First commit
ymh
parents:
diff changeset
   269
	goodcats = ([]);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   270
	jQuery("[name='post_category[]']:checked").each( function(i) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   271
		goodcats.push(this.value);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   272
	} );
0d28b7c10758 First commit
ymh
parents:
diff changeset
   273
	post_data["catslist"] = goodcats.join(",");
0d28b7c10758 First commit
ymh
parents:
diff changeset
   274
0d28b7c10758 First commit
ymh
parents:
diff changeset
   275
	if ( jQuery("#comment_status").attr("checked") )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   276
		post_data["comment_status"] = 'open';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   277
	if ( jQuery("#ping_status").attr("checked") )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   278
		post_data["ping_status"] = 'open';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   279
	if ( jQuery("#excerpt").size() )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   280
		post_data["excerpt"] = jQuery("#excerpt").val();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   281
	if ( jQuery("#post_author").size() )
0d28b7c10758 First commit
ymh
parents:
diff changeset
   282
		post_data["post_author"] = jQuery("#post_author").val();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   283
	post_data["user_ID"] = jQuery("#user-id").val();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   284
0d28b7c10758 First commit
ymh
parents:
diff changeset
   285
	if ( doAutoSave ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   286
		autosaveLast = jQuery("#title").val()+jQuery("#content").val();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   287
	} else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   288
		post_data['autosave'] = 0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   289
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   290
0d28b7c10758 First commit
ymh
parents:
diff changeset
   291
	if ( parseInt(post_data["post_ID"], 10) < 1 ) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   292
		post_data["temp_ID"] = post_data["post_ID"];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   293
		successCallback = autosave_saved_new; // new post
0d28b7c10758 First commit
ymh
parents:
diff changeset
   294
	} else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   295
		successCallback = autosave_saved; // pre-existing post
0d28b7c10758 First commit
ymh
parents:
diff changeset
   296
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   297
0d28b7c10758 First commit
ymh
parents:
diff changeset
   298
	autosaveOldMessage = jQuery('#autosave').html();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   299
0d28b7c10758 First commit
ymh
parents:
diff changeset
   300
	jQuery.ajax({
0d28b7c10758 First commit
ymh
parents:
diff changeset
   301
		data: post_data,
0d28b7c10758 First commit
ymh
parents:
diff changeset
   302
		beforeSend: doAutoSave ? autosave_loading : null,
0d28b7c10758 First commit
ymh
parents:
diff changeset
   303
		type: "POST",
0d28b7c10758 First commit
ymh
parents:
diff changeset
   304
		url: autosaveL10n.requestFile,
0d28b7c10758 First commit
ymh
parents:
diff changeset
   305
		success: successCallback
0d28b7c10758 First commit
ymh
parents:
diff changeset
   306
	});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   307
}