Advertisement
Guest User

Custom Submit blocking in Firefox 2

a guest
Sep 9th, 2012
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ==UserScript==
  2. // @name           _SO Block submit on custom FF2 page.
  3. // @namespace      PC
  4. // @include        file:///D:/temp/foo%20SO/task*
  5. // @include        file:///D:/temp/foo%20SO/fixture*
  6. // @include        file:///D:/temp/foo%20SO/pallet*
  7. // ==/UserScript==
  8.  
  9. GM_log ("Script start.");
  10.  
  11. unsafeWindow._oldSubmit  = unsafeWindow.document.forms[0].submit;
  12. unsafeWindow.document.forms[0].submit = function () {
  13.     GM_log ("Submit function fired.");
  14.  
  15.     var destInput   = document.getElementsByName ("dest");
  16.     if ( ! destInput  ||  destInput.length == 0) {
  17.         //unsafeWindow._oldSubmit ();
  18.     }
  19.  
  20.     var destValue   = destInput[0].value;
  21.     if (    /^\s*$/.test (destValue)
  22.             ||  excludedDestinations.indexOf (destValue) > -1
  23.     ) {
  24.         GM_log ("Submit should be blocked! (1)");
  25.     }
  26.     else {
  27.         //unsafeWindow._oldSubmit ();
  28.     }
  29. };
  30.  
  31.  
  32. //--- Make sure this list of names is all uppercase.
  33. var usersWhoCanSetPriority  = ['JOHN', 'LUKE', 'JEFF', 'MAX', 'ANDY'];
  34. var excludedDestinations    = ['12', '22'];
  35.  
  36. var bDisablePrio    = true;
  37. var tdNodes         = document.getElementsByTagName ("TD");
  38. for (var J = tdNodes.length - 1;  J >= 0;  --J) {
  39.     var tdNode      = tdNodes[J];
  40.     if (tdNode.className == "user") {
  41.         var userName        = tdNode.textContent.replace (
  42.             /^(?:.|\n|\r)+\(User:\s+([^)]+)\)(?:.|\n|\r)+$/i, "$1"
  43.         ).toUpperCase ();
  44.         if (usersWhoCanSetPriority.indexOf (userName) > -1) {
  45.             bDisablePrio = false;
  46.         }
  47.     }
  48. }
  49.  
  50. if (bDisablePrio) {
  51.     var oldInput    = document.getElementsByName ("prio");
  52.     if (oldInput  &&  oldInput.length) {
  53.         oldInput[0].setAttribute ("disabled", "disabled");
  54.     }
  55.  
  56.     var destInput   = document.getElementsByName ("dest");
  57.     if (destInput  &&  destInput.length) {
  58.         destInput[0].addEventListener (
  59.             "change",
  60.             function (zEvent) {
  61.                 bCheckdestinationValue (destInput[0]);
  62.                 GM_log ("Change handler fired.");
  63.             },
  64.             false
  65.         );
  66.  
  67.         destInput[0].form.addEventListener (
  68.             "submit",
  69.             function (zEvent) {
  70.                 GM_log ("Submit handler fired.");
  71.                 var destValue   = destInput[0].value;
  72.                 if (    /^\s*$/.test (destValue)
  73.                         ||  excludedDestinations.indexOf (destValue) > -1
  74.                 ) {
  75.                     //--- Stop the submit
  76.                     zEvent.preventDefault ();
  77.                     //zEvent.stopPropagation ();
  78.                     GM_log ("Submit should be blocked! (2)");
  79.                     return false;
  80.                 }
  81.             },
  82.             true
  83.         );
  84.     }
  85. }
  86.  
  87. function bCheckdestinationValue (destInputNd) {
  88.     //--- Returns true if value is bad.
  89.     if (excludedDestinations.indexOf (destInputNd.value) > -1) {
  90.         destInputNd.value = ''; // Blank input
  91.  
  92.         //--- Add or show Error message.
  93.         var destErrNode = document.getElementById ("gmDestErrorDisp");
  94.         if (destErrNode) {
  95.             destErrNode.style.display = "inline";
  96.         }
  97.         else {
  98.             destErrNode             = document.createElement ('b');
  99.             destErrNode.id          = "gmDestErrorDisp";
  100.             destErrNode.style.color = "red";
  101.             destErrNode.textContent = "12 and 22 are forbidden";
  102.             destInputNd.parentNode.appendChild (destErrNode);
  103.         }
  104.         return true;
  105.     }
  106.     else {
  107.         var destErrNode = document.getElementById ("gmDestErrorDisp");
  108.         if (destErrNode) {
  109.             destErrNode.style.display = "none";
  110.         }
  111.     }
  112.     return false;
  113. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement