From 3ab9e576e534cfa6f8ade7888db4db13a92f8eb0 Mon Sep 17 00:00:00 2001
From: Kyle M Hall <kyle@bywatersolutions.com>
Date: Tue, 14 Feb 2012 10:53:19 -0500
Subject: [PATCH] Bug 4054 - Double-clicking the 'place hold' button can result in duplicate holds

This commit adds a new jquery function to staff-global.js, preventDoubleFormSubmit().
When used thusly: $('#form-id').preventDoubleFormSubmit();
It will prevent a submitted form from being submitted a second time.
It is currently only added to the Place Hold form in reserve/request.pl

http://bugs.koha-community.org/show_bug.cgi?id=4045
---
 koha-tmpl/intranet-tmpl/prog/en/js/staff-global.js |   11 ++++++++++-
 .../prog/en/modules/reserve/request.tt             |    4 +++-
 2 files changed, 13 insertions(+), 2 deletions(-)

diff --git a/koha-tmpl/intranet-tmpl/prog/en/js/staff-global.js b/koha-tmpl/intranet-tmpl/prog/en/js/staff-global.js
index f491773..24b785d 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/js/staff-global.js
+++ b/koha-tmpl/intranet-tmpl/prog/en/js/staff-global.js
@@ -92,4 +92,13 @@ function checkEnter(e){ //e is event object passed from function invocation
 
 function clearHoldFor(){
 	$.cookie("holdfor",null, { path: "/", expires: 0 });
-}
\ No newline at end of file
+}
+
+jQuery.fn.preventDoubleFormSubmit = function() {
+    jQuery(this).submit(function() {
+        if (this.beenSubmitted)
+            return false;
+        else
+            this.beenSubmitted = true;
+    });
+};
\ No newline at end of file
diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt
index 1719af4..fa45e26 100644
--- a/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt
+++ b/koha-tmpl/intranet-tmpl/prog/en/modules/reserve/request.tt
@@ -127,6 +127,8 @@ function checkMultiHold() {
 			$("#requestany").attr("checked","checked");
 		}
 	});
+
+    $('#hold-request-form').preventDoubleFormSubmit();
  });
 
 // ]]>
@@ -238,7 +240,7 @@ function checkMultiHold() {
   <fieldset class="rows left">
     <legend>Hold details</legend>
         [% UNLESS ( multi_hold ) %]
-            <form action="placerequest.pl" method="post" onsubmit="return check();" name="form">
+            <form action="placerequest.pl" method="post" onsubmit="return check();" name="form" id="hold-request-form">
         [% ELSE %]
             <form action="placerequest.pl" method="post" onsubmit="return checkMultiHold();" name="form">
         [% END %]
-- 
1.7.2.5