Bug 14321: Integrate Upload.pm into Koha
[koha.git] / koha-tmpl / intranet-tmpl / prog / en / includes / file-upload.inc
index 206b7c7..d8e9e00 100644 (file)
@@ -1,20 +1,32 @@
 <!-- AJAX file upload stuff -->
-<script type="text/javascript" src="<!-- TMPL_VAR name="themelang" -->/lib/jquery/plugins/ajaxfileupload.js"></script>
+<script type="text/javascript" src="[% interface %]/lib/jquery/plugins/ajaxfileupload.js"></script>
 <script type="text/javascript">
-    //<![CDATA
+    //<![CDATA[
+    var fileUploadProgressTimer = 0;
+    var inFileUploadProgressTimer = false;
+    var fileUploadProgressTimerCanceled = false;
     function updateProgress() {
+        if (inFileUploadProgressTimer) {
+            // since $.getJSON is asynchronous, wait
+            // until the last one is finished
+            return;
+        }
+        inFileUploadProgressTimer = true;
         $.getJSON("/cgi-bin/koha/tools/upload-file-progress.pl", function(json) {
-            $("#fileuploadprogress").text(json.progress + '%');
-            if (json.progress < 100) {
-                setTimeout("updateProgress()",200);
+            if (!fileUploadProgressTimerCanceled) {
+                               var bgproperty = (parseInt(json.progress)*2-300)+"px 0px";
+                $("#fileuploadprogress").css("background-position",bgproperty);
+                               $("#fileuploadpercent").text(json.progress);
             }
+            inFileUploadProgressTimer = false;
         });
     }
     function ajaxFileUpload()
     {
-
+        fileUploadProgressTimerCanceled = false;
+               $("#uploadpanel").show();
         $("#fileuploadstatus").show();
-        setTimeout("updateProgress()",2000);
+        fileUploadProgressTimer = setInterval("updateProgress()",500);
         $.ajaxFileUpload (
             {
                 url:'/cgi-bin/koha/tools/upload-file.pl',
                         $("#fileuploadfailed").text("Upload failed -- database in maintenance state");
                     } else {
                          $("#uploadedfileid").val(data.fileid);
+                         $("#fileuploadprogress").css("background-position","0px 0px");
+                                                $("#processfile").show();
+                        $("#fileuploadpercent").text("100");
                     }
+                    fileUploadProgressTimerCanceled = true;
+                    clearInterval(fileUploadProgressTimer);
                 },
                 error: function (data, status, e) {
+                    fileUploadProgressTimerCanceled = true;
                     alert(e);
+                    clearInterval(fileUploadProgressTimer);
                 }
             }
         )
-        updateProgress();
         return false;
 
     }