2 var autosavePeriodical;
4 function autosave_start_timer() {
6 autosaveLast = form.post_title.value+form.content.value;
7 // Keep autosave_interval in sync with edit_post().
8 autosavePeriodical = new PeriodicalExecuter(autosave, autosaveL10n.autosaveInterval);
9 //Disable autosave after the form has been submitted
10 if(form.addEventListener) {
11 form.addEventListener("submit", function () { autosavePeriodical.currentlyExecuting = true; }, false);
13 if(form.attachEvent) {
14 form.save ? form.save.attachEvent("onclick", function () { autosavePeriodical.currentlyExecuting = true; }) : null;
15 form.submit ? form.submit.attachEvent("onclick", function () { autosavePeriodical.currentlyExecuting = true; }) : null;
16 form.publish ? form.publish.attachEvent("onclick", function () { autosavePeriodical.currentlyExecuting = true; }) : null;
17 form.deletepost ? form.deletepost.attachEvent("onclick", function () { autosavePeriodical.currentlyExecuting = true; }) : null;
20 addLoadEvent(autosave_start_timer)
22 function autosave_cur_time() {
24 return "" + ((now.getHours() >12) ? now.getHours() -12 : now.getHours()) +
25 ((now.getMinutes() < 10) ? ":0" : ":") + now.getMinutes() +
26 ((now.getSeconds() < 10) ? ":0" : ":") + now.getSeconds();
29 function autosave_update_nonce() {
30 var response = nonceAjax.response;
31 document.getElementsByName('_wpnonce')[0].value = response;
34 function autosave_update_post_ID() {
35 var response = autosaveAjax.response;
36 var res = parseInt(response);
40 message = autosaveL10n.errorText.replace(/%response%/g, response);
42 message = autosaveL10n.saveText.replace(/%time%/g, autosave_cur_time());
43 $('post_ID').name = "post_ID";
44 $('post_ID').value = res;
46 nonceAjax = new sack();
47 nonceAjax.element = null;
48 nonceAjax.setVar("action", "autosave-generate-nonces");
49 nonceAjax.setVar("post_ID", res);
50 nonceAjax.setVar("cookie", document.cookie);
51 nonceAjax.setVar("post_type", $('post_type').value);
52 nonceAjax.requestFile = autosaveL10n.requestFile;
53 nonceAjax.onCompletion = autosave_update_nonce;
54 nonceAjax.method = "POST";
56 $('hiddenaction').value = 'editpost';
58 $('autosave').innerHTML = message;
59 autosave_enable_buttons();
62 function autosave_loading() {
63 $('autosave').innerHTML = autosaveL10n.savingText;
66 function autosave_saved() {
67 var response = autosaveAjax.response;
68 var res = parseInt(response);
72 message = autosaveL10n.errorText.replace(/%response%/g, response);
74 message = autosaveL10n.saveText.replace(/%time%/g, autosave_cur_time());
76 $('autosave').innerHTML = message;
77 autosave_enable_buttons();
80 function autosave_disable_buttons() {
82 form.save ? form.save.disabled = 'disabled' : null;
83 form.submit ? form.submit.disabled = 'disabled' : null;
84 form.publish ? form.publish.disabled = 'disabled' : null;
85 form.deletepost ? form.deletepost.disabled = 'disabled' : null;
86 setTimeout('autosave_enable_buttons();', 1000); // Re-enable 1 sec later. Just gives autosave a head start to avoid collisions.
89 function autosave_enable_buttons() {
91 form.save ? form.save.disabled = '' : null;
92 form.submit ? form.submit.disabled = '' : null;
93 form.publish ? form.publish.disabled = '' : null;
94 form.deletepost ? form.deletepost.disabled = '' : null;
99 var rich = ((typeof tinyMCE != "undefined") && tinyMCE.getInstanceById('content')) ? true : false;
101 autosaveAjax = new sack();
103 /* Gotta do this up here so we can check the length when tinyMCE is in use */
104 if ( typeof tinyMCE == "undefined" || tinyMCE.configs.length < 1 || rich == false ) {
105 autosaveAjax.setVar("content", form.content.value);
107 // Don't run while the TinyMCE spellcheck is on.
108 if(tinyMCE.selectedInstance.spellcheckerOn) return;
109 tinyMCE.wpTriggerSave();
110 autosaveAjax.setVar("content", form.content.value);
113 if(form.post_title.value.length==0 || form.content.value.length==0 || form.post_title.value+form.content.value == autosaveLast)
116 autosave_disable_buttons();
118 autosaveLast = form.post_title.value+form.content.value;
120 cats = document.getElementsByName("post_category[]");
122 for(i=0;i<cats.length;i++) {
124 goodcats.push(cats[i].value);
126 catslist = goodcats.join(",");
128 autosaveAjax.setVar("action", "autosave");
129 autosaveAjax.setVar("cookie", document.cookie);
130 autosaveAjax.setVar("catslist", catslist);
131 autosaveAjax.setVar("post_ID", $("post_ID").value);
132 autosaveAjax.setVar("post_title", form.post_title.value);
133 autosaveAjax.setVar("post_type", form.post_type.value);
134 if ( form.comment_status.checked )
135 autosaveAjax.setVar("comment_status", 'open');
136 if ( form.ping_status.checked )
137 autosaveAjax.setVar("ping_status", 'open');
139 autosaveAjax.setVar("excerpt", form.excerpt.value);
141 if ( typeof tinyMCE == "undefined" || tinyMCE.configs.length < 1 || rich == false ) {
142 autosaveAjax.setVar("content", form.content.value);
144 tinyMCE.wpTriggerSave();
145 autosaveAjax.setVar("content", form.content.value);
148 autosaveAjax.requestFile = autosaveL10n.requestFile;
149 autosaveAjax.method = "POST";
150 autosaveAjax.element = null;
151 autosaveAjax.onLoading = autosave_loading;
152 autosaveAjax.onInteractive = autosave_loading;
153 if(parseInt($("post_ID").value) < 1)
154 autosaveAjax.onCompletion = autosave_update_post_ID;
156 autosaveAjax.onCompletion = autosave_saved;
157 autosaveAjax.runAJAX();