PHP Cross Reference of WordPress Subversion HEAD

[ Index ]     [ Classes ]     [ Functions ]     [ Variables ]     [ Constants ]

title

Body

[close]

/wp-includes/js/ -> autosave.js (source)

   1  var autosaveLast = '';
   2  var autosavePeriodical;
   3  
   4  function autosave_start_timer() {
   5      var form = $('post');
   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);
  12      }
  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;
  18      }
  19  }
  20  addLoadEvent(autosave_start_timer)
  21  
  22  function autosave_cur_time() {
  23      var now = new Date();
  24      return "" + ((now.getHours() >12) ? now.getHours() -12 : now.getHours()) + 
  25      ((now.getMinutes() < 10) ? ":0" : ":") + now.getMinutes() +
  26      ((now.getSeconds() < 10) ? ":0" : ":") + now.getSeconds();
  27  }
  28  
  29  function autosave_update_nonce() {
  30      var response = nonceAjax.response;
  31      document.getElementsByName('_wpnonce')[0].value = response;
  32  }
  33  
  34  function autosave_update_post_ID() {
  35      var response = autosaveAjax.response;
  36      var res = parseInt(response);
  37      var message;
  38  
  39      if(isNaN(res)) {
  40          message = autosaveL10n.errorText.replace(/%response%/g, response);
  41      } else {
  42          message = autosaveL10n.saveText.replace(/%time%/g, autosave_cur_time());
  43          $('post_ID').name = "post_ID";
  44          $('post_ID').value = res;
  45          // We need new nonces
  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";
  55          nonceAjax.runAJAX();
  56          $('hiddenaction').value = 'editpost';
  57      }
  58      $('autosave').innerHTML = message;
  59      autosave_enable_buttons();
  60  }
  61  
  62  function autosave_loading() {
  63      $('autosave').innerHTML = autosaveL10n.savingText;
  64  }
  65  
  66  function autosave_saved() {
  67      var response = autosaveAjax.response;
  68      var res = parseInt(response);
  69      var message;
  70  
  71      if(isNaN(res)) {
  72          message = autosaveL10n.errorText.replace(/%response%/g, response);
  73      } else {
  74          message = autosaveL10n.saveText.replace(/%time%/g, autosave_cur_time());
  75      }
  76      $('autosave').innerHTML = message;
  77      autosave_enable_buttons();
  78  }
  79  
  80  function autosave_disable_buttons() {
  81      var form = $('post');
  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.
  87  }
  88  
  89  function autosave_enable_buttons() {
  90      var form = $('post');
  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;
  95  }
  96  
  97  function autosave() {
  98      var form = $('post');
  99      var rich = ((typeof tinyMCE != "undefined") && tinyMCE.getInstanceById('content')) ? true : false;
 100  
 101      autosaveAjax = new sack();
 102  
 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);
 106      } else {
 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);
 111      }
 112  
 113      if(form.post_title.value.length==0 || form.content.value.length==0 || form.post_title.value+form.content.value == autosaveLast)
 114          return;
 115  
 116      autosave_disable_buttons();
 117  
 118      autosaveLast = form.post_title.value+form.content.value;
 119  
 120      cats = document.getElementsByName("post_category[]");
 121      goodcats = ([]);
 122      for(i=0;i<cats.length;i++) {
 123          if(cats[i].checked)
 124              goodcats.push(cats[i].value);
 125      }
 126      catslist = goodcats.join(",");
 127  
 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');
 138      if(form.excerpt)
 139          autosaveAjax.setVar("excerpt", form.excerpt.value);
 140  
 141      if ( typeof tinyMCE == "undefined" || tinyMCE.configs.length < 1 || rich == false ) {
 142          autosaveAjax.setVar("content", form.content.value);
 143      } else {
 144          tinyMCE.wpTriggerSave();
 145          autosaveAjax.setVar("content", form.content.value);
 146      }
 147  
 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;
 155      else
 156          autosaveAjax.onCompletion = autosave_saved;
 157      autosaveAjax.runAJAX();
 158  }


Generated Thu Dec 6 06:47:08 2007 for RedAlt XRefs Cross-referenced by PHPXref 0.6 and RedAlt