PageRenderTime 22ms CodeModel.GetById 14ms RepoModel.GetById 1ms app.codeStats 0ms

/extensions/SemanticForms/libs/SF_submit.js

https://github.com/ChuguluGames/mediawiki-svn
JavaScript | 150 lines | 92 code | 50 blank | 8 comment | 24 complexity | bc14ba50d826cbda1004929d51070a3d MD5 | raw file
  1. /**
  2. * Javascript handler for the save-and-continue button
  3. */
  4. jQuery(function($){
  5. var sacButtons;
  6. var form;
  7. if ( wgAction == "formedit" || wgCanonicalSpecialPageName == "FormEdit" ) {
  8. form = $('#sfForm');
  9. sacButtons = $('.sf-save_and_continue', form);
  10. sacButtons.click( handleSaveAndContinue);
  11. $('input,select,textarea', form)
  12. .live( "keyup", function ( event ) {
  13. if ( event.which < 32 ) return true;
  14. return setChanged( event );
  15. })
  16. .live( "change", setChanged );
  17. $('.multipleTemplateAdder,.remover,.rearrangerImage', form)
  18. .live( "click", setChanged );
  19. $('.rearrangerImage', form)
  20. .live( "mousedown", setChanged );
  21. }
  22. function setChanged( event ) {
  23. sacButtons.removeAttr("disabled");
  24. sacButtons
  25. .addClass("sf-save_and_continue-changed");
  26. return true;
  27. }
  28. function handleSaveAndContinue( event ) {
  29. event.stopImmediatePropagation();
  30. // remove old error messages
  31. var el = document.getElementById("form_error_header");
  32. if (el) el.parentNode.removeChild(el);
  33. if (validateAll()) {
  34. // disable save and continue button
  35. sacButtons.attr("disabled", "disabled");
  36. sacButtons
  37. .addClass("sf-save_and_continue-wait")
  38. .removeClass("sf-save_and_continue-changed");
  39. sajax_request_type = 'POST';
  40. var form = $('#sfForm');
  41. sajax_do_call( 'SFAutoeditAPI::handleAutoEdit', new Array(collectData( form ), false), function( ajaxHeader ){
  42. if ( ajaxHeader.status == 200 ) {
  43. // Store the target name
  44. var target = form.find('input[name="target"]');
  45. if ( target.length == 0 ) {
  46. target = jQuery('<input type="hidden" name="target">');
  47. form.append (target);
  48. }
  49. target.attr( 'value', ajaxHeader.getResponseHeader("X-Target") );
  50. // Store the form name
  51. var target = form.find('input[name="form"]');
  52. if ( target.length == 0 ) {
  53. target = jQuery('<input type="hidden" name="form">');
  54. form.append (target);
  55. }
  56. target.attr( 'value', ajaxHeader.getResponseHeader("X-Form") );
  57. sacButtons
  58. .addClass("sf-save_and_continue-ok")
  59. .removeClass("sf-save_and_continue-wait")
  60. .removeClass("sf-save_and_continue-error");
  61. } else {
  62. sacButtons
  63. .addClass("sf-save_and_continue-error")
  64. .removeClass("sf-save_and_continue-wait");
  65. // Remove all old error messages and set new one
  66. jQuery(".errorMessage").remove();
  67. jQuery("#contentSub").append('<div id="form_error_header" class="warningMessage" style="font-size: medium">' + ajaxHeader.responseText + '</div>');
  68. scroll(0, 0);
  69. }
  70. } );
  71. }
  72. return false;
  73. }
  74. function collectData( form ) {
  75. var params = form.serialize();
  76. if (wgAction == "formedit") {
  77. params += "&target=" + encodeURIComponent( wgPageName );
  78. } else if ( wgCanonicalSpecialPageName == "FormEdit") {
  79. var url = String(window.location);
  80. var stop = url.indexOf("?");
  81. if ( stop > 0 ) url = url.substring(0, stop);
  82. var start = url.indexOf( wgPageName ); // find start of page name
  83. start = url.indexOf("/", start) + 1; // find start of subpage
  84. if ( start >= 0 ) {
  85. stop = url.indexOf("/", start); // find end of first subpage
  86. } else {
  87. stop = -1;
  88. }
  89. if (stop >= 0) {
  90. params += "&form=" + encodeURIComponent( url.substring(start, stop) );
  91. start = stop + 1;
  92. params += "&target=" + encodeURIComponent( url.substr(start) );
  93. } else {
  94. params += "&form=" + encodeURIComponent( url.substr(start) );
  95. }
  96. }
  97. params += "&wpMinoredit=1";
  98. return params;
  99. }
  100. })