1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- jQuery(function ($) {
- "use strict";
- /**
- * Reset the message.
- */
- function resetMessage () {
- $("#result")
- .removeClass()
- .text("");
- }
- /**
- * show a successful message.
- * @param {String} text the text to show.
- */
- function showMessage(text) {
- resetMessage();
- $("#result")
- .addClass("alert alert-success")
- .text(text);
- }
- /**
- * show an error message.
- * @param {String} text the text to show.
- */
- function showError(text) {
- resetMessage();
- $("#result")
- .addClass("alert alert-danger")
- .text(text);
- }
- /**
- * Fetch the content, add it to the JSZip object
- * and use a jQuery deferred to hold the result.
- * @param {String} url the url of the content to fetch.
- * @param {String} filename the filename to use in the JSZip object.
- * @param {JSZip} zip the JSZip instance.
- * @return {jQuery.Deferred} the deferred containing the data.
- */
- function deferredAddZip(url, filename, zip) {
- var deferred = $.Deferred();
- JSZipUtils.getBinaryContent(url, function (err, data) {
- if(err) {
- deferred.reject(err);
- } else {
- zip.file(filename, data, {binary:true});
- deferred.resolve(data);
- }
- });
- return deferred;
- }
- if(!JSZip.support.blob) {
- showError("This demo works only with a recent browser !");
- return;
- }
- var $form = $("#download_form").on("submit", function () {
- resetMessage();
- var zip = new JSZip();
- var deferreds = [];
- // find every checked item
- $(this).find(":checked").each(function () {
- var $this = $(this);
- var url = $this.data("url");
- var filename = url.replace(/.*\//g, "");
- deferreds.push(deferredAddZip(url, filename, zip));
- });
- // when everything has been downloaded, we can trigger the dl
- $.when.apply($, deferreds).done(function () {
- var blob = zip.generate({type:"blob"});
- // see FileSaver.js
- saveAs(blob, "example.zip");
- showMessage("done !");
- }).fail(function (err) {
- showError(err);
- });
- return false;
- });
- });
- // vim: set shiftwidth=4 softtabstop=4:
|