server/php/basic/public_html/static/lib/FileSaver/FileSaver.js
author rougeronj
Tue, 22 Sep 2015 15:14:10 +0200
changeset 543 5f7bebdcfc0d
parent 495 444b80998255
child 598 eb4f4eceada0
permissions -rw-r--r--
Improve the way we init the view. The data loader send a "loaded" event, hooked by the scene.py and initializing the backbone.history and the view. We don't use redraw_active in save-once and full-json, because it was making the view initialization dependent of these file which are externals. Small fix to hide the "set saved view" button when there is only one view.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
442
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
/* FileSaver.js
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
 * A saveAs() FileSaver implementation.
495
444b80998255 update client version + small correction in dojoConfig to load ckeditor jquery adapter
ymh <ymh.work@gmail.com>
parents: 489
diff changeset
     3
 * 1.1.20150716
442
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
 *
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
 * By Eli Grey, http://eligrey.com
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
 * License: X11/MIT
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
 *   See https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
 */
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
/*global self */
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
/*jslint bitwise: true, indent: 4, laxbreak: true, laxcomma: true, smarttabs: true, plusplus: true */
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
489
7f25a4453865 update renkan server deploiement
ymh <ymh.work@gmail.com>
parents: 488
diff changeset
    15
var saveAs = saveAs || (function(view) {
442
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
	"use strict";
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
	// IE <10 is explicitly unsupported
489
7f25a4453865 update renkan server deploiement
ymh <ymh.work@gmail.com>
parents: 488
diff changeset
    18
	if (typeof navigator !== "undefined" && /MSIE [1-9]\./.test(navigator.userAgent)) {
442
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
		return;
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
	}
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
	var
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
		  doc = view.document
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
		  // only get URL when necessary in case Blob.js hasn't overridden it yet
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
		, get_URL = function() {
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
			return view.URL || view.webkitURL || view;
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
		}
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
		, save_link = doc.createElementNS("http://www.w3.org/1999/xhtml", "a")
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
		, can_use_save_link = "download" in save_link
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
		, click = function(node) {
495
444b80998255 update client version + small correction in dojoConfig to load ckeditor jquery adapter
ymh <ymh.work@gmail.com>
parents: 489
diff changeset
    30
			var event = new MouseEvent("click");
442
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
			node.dispatchEvent(event);
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
		}
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
		, webkit_req_fs = view.webkitRequestFileSystem
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
		, req_fs = view.requestFileSystem || webkit_req_fs || view.mozRequestFileSystem
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
		, throw_outside = function(ex) {
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
			(view.setImmediate || view.setTimeout)(function() {
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
				throw ex;
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
			}, 0);
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
		}
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
		, force_saveable_type = "application/octet-stream"
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
		, fs_min_size = 0
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
		// See https://code.google.com/p/chromium/issues/detail?id=375297#c7 and
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
		// https://github.com/eligrey/FileSaver.js/commit/485930a#commitcomment-8768047
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
		// for the reasoning behind the timeout and revocation flow
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
		, arbitrary_revoke_timeout = 500 // in ms
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
		, revoke = function(file) {
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
			var revoker = function() {
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
				if (typeof file === "string") { // file is an object URL
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
					get_URL().revokeObjectURL(file);
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
				} else { // file is a File
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
					file.remove();
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
				}
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
			};
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
			if (view.chrome) {
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
				revoker();
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
			} else {
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
				setTimeout(revoker, arbitrary_revoke_timeout);
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
			}
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
		}
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
		, dispatch = function(filesaver, event_types, event) {
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
			event_types = [].concat(event_types);
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
			var i = event_types.length;
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
			while (i--) {
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
				var listener = filesaver["on" + event_types[i]];
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
				if (typeof listener === "function") {
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
					try {
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
						listener.call(filesaver, event || filesaver);
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
					} catch (ex) {
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
						throw_outside(ex);
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
					}
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
				}
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
			}
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
		}
489
7f25a4453865 update renkan server deploiement
ymh <ymh.work@gmail.com>
parents: 488
diff changeset
    74
		, auto_bom = function(blob) {
7f25a4453865 update renkan server deploiement
ymh <ymh.work@gmail.com>
parents: 488
diff changeset
    75
			// prepend BOM for UTF-8 XML and text/* types (including HTML)
7f25a4453865 update renkan server deploiement
ymh <ymh.work@gmail.com>
parents: 488
diff changeset
    76
			if (/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(blob.type)) {
7f25a4453865 update renkan server deploiement
ymh <ymh.work@gmail.com>
parents: 488
diff changeset
    77
				return new Blob(["\ufeff", blob], {type: blob.type});
7f25a4453865 update renkan server deploiement
ymh <ymh.work@gmail.com>
parents: 488
diff changeset
    78
			}
7f25a4453865 update renkan server deploiement
ymh <ymh.work@gmail.com>
parents: 488
diff changeset
    79
			return blob;
7f25a4453865 update renkan server deploiement
ymh <ymh.work@gmail.com>
parents: 488
diff changeset
    80
		}
495
444b80998255 update client version + small correction in dojoConfig to load ckeditor jquery adapter
ymh <ymh.work@gmail.com>
parents: 489
diff changeset
    81
		, FileSaver = function(blob, name, no_auto_bom) {
444b80998255 update client version + small correction in dojoConfig to load ckeditor jquery adapter
ymh <ymh.work@gmail.com>
parents: 489
diff changeset
    82
			if (!no_auto_bom) {
444b80998255 update client version + small correction in dojoConfig to load ckeditor jquery adapter
ymh <ymh.work@gmail.com>
parents: 489
diff changeset
    83
				blob = auto_bom(blob);
444b80998255 update client version + small correction in dojoConfig to load ckeditor jquery adapter
ymh <ymh.work@gmail.com>
parents: 489
diff changeset
    84
			}
442
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    85
			// First try a.download, then web filesystem, then object URLs
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    86
			var
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    87
				  filesaver = this
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    88
				, type = blob.type
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    89
				, blob_changed = false
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    90
				, object_url
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    91
				, target_view
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    92
				, dispatch_all = function() {
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    93
					dispatch(filesaver, "writestart progress write writeend".split(" "));
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    94
				}
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    95
				// on any filesys errors revert to saving with object URLs
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    96
				, fs_error = function() {
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    97
					// don't create more object URLs than needed
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    98
					if (blob_changed || !object_url) {
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
    99
						object_url = get_URL().createObjectURL(blob);
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   100
					}
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   101
					if (target_view) {
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   102
						target_view.location.href = object_url;
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   103
					} else {
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   104
						var new_tab = view.open(object_url, "_blank");
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   105
						if (new_tab == undefined && typeof safari !== "undefined") {
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   106
							//Apple do not allow window.open, see http://bit.ly/1kZffRI
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   107
							view.location.href = object_url
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   108
						}
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   109
					}
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   110
					filesaver.readyState = filesaver.DONE;
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   111
					dispatch_all();
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   112
					revoke(object_url);
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   113
				}
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   114
				, abortable = function(func) {
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   115
					return function() {
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   116
						if (filesaver.readyState !== filesaver.DONE) {
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   117
							return func.apply(this, arguments);
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   118
						}
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   119
					};
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   120
				}
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   121
				, create_if_not_found = {create: true, exclusive: false}
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   122
				, slice
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   123
			;
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   124
			filesaver.readyState = filesaver.INIT;
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   125
			if (!name) {
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   126
				name = "download";
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   127
			}
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   128
			if (can_use_save_link) {
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   129
				object_url = get_URL().createObjectURL(blob);
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   130
				save_link.href = object_url;
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   131
				save_link.download = name;
495
444b80998255 update client version + small correction in dojoConfig to load ckeditor jquery adapter
ymh <ymh.work@gmail.com>
parents: 489
diff changeset
   132
				setTimeout(function() {
444b80998255 update client version + small correction in dojoConfig to load ckeditor jquery adapter
ymh <ymh.work@gmail.com>
parents: 489
diff changeset
   133
					click(save_link);
444b80998255 update client version + small correction in dojoConfig to load ckeditor jquery adapter
ymh <ymh.work@gmail.com>
parents: 489
diff changeset
   134
					dispatch_all();
444b80998255 update client version + small correction in dojoConfig to load ckeditor jquery adapter
ymh <ymh.work@gmail.com>
parents: 489
diff changeset
   135
					revoke(object_url);
444b80998255 update client version + small correction in dojoConfig to load ckeditor jquery adapter
ymh <ymh.work@gmail.com>
parents: 489
diff changeset
   136
					filesaver.readyState = filesaver.DONE;
444b80998255 update client version + small correction in dojoConfig to load ckeditor jquery adapter
ymh <ymh.work@gmail.com>
parents: 489
diff changeset
   137
				});
442
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   138
				return;
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   139
			}
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   140
			// Object and web filesystem URLs have a problem saving in Google Chrome when
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   141
			// viewed in a tab, so I force save with application/octet-stream
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   142
			// http://code.google.com/p/chromium/issues/detail?id=91158
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   143
			// Update: Google errantly closed 91158, I submitted it again:
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   144
			// https://code.google.com/p/chromium/issues/detail?id=389642
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   145
			if (view.chrome && type && type !== force_saveable_type) {
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   146
				slice = blob.slice || blob.webkitSlice;
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   147
				blob = slice.call(blob, 0, blob.size, force_saveable_type);
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   148
				blob_changed = true;
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   149
			}
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   150
			// Since I can't be sure that the guessed media type will trigger a download
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   151
			// in WebKit, I append .download to the filename.
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   152
			// https://bugs.webkit.org/show_bug.cgi?id=65440
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   153
			if (webkit_req_fs && name !== "download") {
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   154
				name += ".download";
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   155
			}
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   156
			if (type === force_saveable_type || webkit_req_fs) {
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   157
				target_view = view;
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   158
			}
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   159
			if (!req_fs) {
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   160
				fs_error();
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   161
				return;
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   162
			}
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   163
			fs_min_size += blob.size;
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   164
			req_fs(view.TEMPORARY, fs_min_size, abortable(function(fs) {
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   165
				fs.root.getDirectory("saved", create_if_not_found, abortable(function(dir) {
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   166
					var save = function() {
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   167
						dir.getFile(name, create_if_not_found, abortable(function(file) {
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   168
							file.createWriter(abortable(function(writer) {
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   169
								writer.onwriteend = function(event) {
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   170
									target_view.location.href = file.toURL();
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   171
									filesaver.readyState = filesaver.DONE;
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   172
									dispatch(filesaver, "writeend", event);
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   173
									revoke(file);
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   174
								};
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   175
								writer.onerror = function() {
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   176
									var error = writer.error;
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   177
									if (error.code !== error.ABORT_ERR) {
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   178
										fs_error();
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   179
									}
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   180
								};
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   181
								"writestart progress write abort".split(" ").forEach(function(event) {
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   182
									writer["on" + event] = filesaver["on" + event];
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   183
								});
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   184
								writer.write(blob);
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   185
								filesaver.abort = function() {
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   186
									writer.abort();
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   187
									filesaver.readyState = filesaver.DONE;
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   188
								};
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   189
								filesaver.readyState = filesaver.WRITING;
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   190
							}), fs_error);
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   191
						}), fs_error);
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   192
					};
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   193
					dir.getFile(name, {create: false}, abortable(function(file) {
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   194
						// delete file if it already exists
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   195
						file.remove();
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   196
						save();
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   197
					}), abortable(function(ex) {
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   198
						if (ex.code === ex.NOT_FOUND_ERR) {
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   199
							save();
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   200
						} else {
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   201
							fs_error();
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   202
						}
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   203
					}));
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   204
				}), fs_error);
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   205
			}), fs_error);
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   206
		}
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   207
		, FS_proto = FileSaver.prototype
495
444b80998255 update client version + small correction in dojoConfig to load ckeditor jquery adapter
ymh <ymh.work@gmail.com>
parents: 489
diff changeset
   208
		, saveAs = function(blob, name, no_auto_bom) {
444b80998255 update client version + small correction in dojoConfig to load ckeditor jquery adapter
ymh <ymh.work@gmail.com>
parents: 489
diff changeset
   209
			return new FileSaver(blob, name, no_auto_bom);
442
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   210
		}
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   211
	;
489
7f25a4453865 update renkan server deploiement
ymh <ymh.work@gmail.com>
parents: 488
diff changeset
   212
	// IE 10+ (native saveAs)
7f25a4453865 update renkan server deploiement
ymh <ymh.work@gmail.com>
parents: 488
diff changeset
   213
	if (typeof navigator !== "undefined" && navigator.msSaveOrOpenBlob) {
495
444b80998255 update client version + small correction in dojoConfig to load ckeditor jquery adapter
ymh <ymh.work@gmail.com>
parents: 489
diff changeset
   214
		return function(blob, name, no_auto_bom) {
444b80998255 update client version + small correction in dojoConfig to load ckeditor jquery adapter
ymh <ymh.work@gmail.com>
parents: 489
diff changeset
   215
			if (!no_auto_bom) {
444b80998255 update client version + small correction in dojoConfig to load ckeditor jquery adapter
ymh <ymh.work@gmail.com>
parents: 489
diff changeset
   216
				blob = auto_bom(blob);
444b80998255 update client version + small correction in dojoConfig to load ckeditor jquery adapter
ymh <ymh.work@gmail.com>
parents: 489
diff changeset
   217
			}
444b80998255 update client version + small correction in dojoConfig to load ckeditor jquery adapter
ymh <ymh.work@gmail.com>
parents: 489
diff changeset
   218
			return navigator.msSaveOrOpenBlob(blob, name || "download");
489
7f25a4453865 update renkan server deploiement
ymh <ymh.work@gmail.com>
parents: 488
diff changeset
   219
		};
7f25a4453865 update renkan server deploiement
ymh <ymh.work@gmail.com>
parents: 488
diff changeset
   220
	}
7f25a4453865 update renkan server deploiement
ymh <ymh.work@gmail.com>
parents: 488
diff changeset
   221
442
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   222
	FS_proto.abort = function() {
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   223
		var filesaver = this;
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   224
		filesaver.readyState = filesaver.DONE;
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   225
		dispatch(filesaver, "abort");
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   226
	};
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   227
	FS_proto.readyState = FS_proto.INIT = 0;
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   228
	FS_proto.WRITING = 1;
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   229
	FS_proto.DONE = 2;
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   230
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   231
	FS_proto.error =
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   232
	FS_proto.onwritestart =
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   233
	FS_proto.onprogress =
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   234
	FS_proto.onwrite =
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   235
	FS_proto.onabort =
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   236
	FS_proto.onerror =
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   237
	FS_proto.onwriteend =
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   238
		null;
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   239
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   240
	return saveAs;
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   241
}(
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   242
	   typeof self !== "undefined" && self
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   243
	|| typeof window !== "undefined" && window
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   244
	|| this.content
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   245
));
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   246
// `self` is undefined in Firefox for Android content script context
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   247
// while `this` is nsIContentFrameMessageManager
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   248
// with an attribute `content` that corresponds to the window
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   249
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   250
if (typeof module !== "undefined" && module.exports) {
489
7f25a4453865 update renkan server deploiement
ymh <ymh.work@gmail.com>
parents: 488
diff changeset
   251
  module.exports.saveAs = saveAs;
442
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   252
} else if ((typeof define !== "undefined" && define !== null) && (define.amd != null)) {
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   253
  define([], function() {
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   254
    return saveAs;
adb907bba956 add server php example
ymh <ymh.work@gmail.com>
parents:
diff changeset
   255
  });
495
444b80998255 update client version + small correction in dojoConfig to load ckeditor jquery adapter
ymh <ymh.work@gmail.com>
parents: 489
diff changeset
   256
}