Revision 27467fa2
Von Sven Schöling vor mehr als 5 Jahren hinzugefügt
SL/ClientJS.pm | ||
---|---|---|
|
||
# ## other stuff ##
|
||
redirect_to => 1, # window.location.href = <TARGET>
|
||
save_file => 4, # kivi.save_file(<TARGET>, <ARGS>)
|
||
|
||
flash => 2, # kivi.display_flash(<TARGET>, <ARGS>)
|
||
flash_detail => 2, # kivi.display_flash_detail(<TARGET>, <ARGS>)
|
js/client_js.js | ||
---|---|---|
|
||
// ## other stuff ##
|
||
else if (action[0] == 'redirect_to') window.location.href = action[1];
|
||
else if (action[0] == 'save_file') kivi.save_file(action[1], action[2], action[3], action[4]);
|
||
else if (action[0] == 'flash') kivi.display_flash(action[1], action[2]);
|
||
else if (action[0] == 'flash_detail') kivi.display_flash_detail(action[1], action[2]);
|
||
else if (action[0] == 'clear_flash') kivi.clear_flash(action[1], action[2]);
|
js/kivi.js | ||
---|---|---|
return undefined;
|
||
};
|
||
|
||
ns.save_file = function(base64_data, content_type, size, attachment_name) {
|
||
// atob returns a unicode string with one codepoint per octet. revert this
|
||
const b64toBlob = (b64Data, contentType='', sliceSize=512) => {
|
||
const byteCharacters = atob(b64Data);
|
||
const byteArrays = [];
|
||
|
||
for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {
|
||
const slice = byteCharacters.slice(offset, offset + sliceSize);
|
||
|
||
const byteNumbers = new Array(slice.length);
|
||
for (let i = 0; i < slice.length; i++) {
|
||
byteNumbers[i] = slice.charCodeAt(i);
|
||
}
|
||
|
||
const byteArray = new Uint8Array(byteNumbers);
|
||
byteArrays.push(byteArray);
|
||
}
|
||
|
||
const blob = new Blob(byteArrays, {type: contentType});
|
||
return blob;
|
||
}
|
||
|
||
var blob = b64toBlob(base64_data, content_type);
|
||
var a = $("<a style='display: none;'/>");
|
||
var url = window.URL.createObjectURL(blob);
|
||
a.attr("href", url);
|
||
a.attr("download", attachment_name);
|
||
$("body").append(a);
|
||
a[0].click();
|
||
window.URL.revokeObjectURL(url);
|
||
a.remove();
|
||
}
|
||
|
||
ns.detect_duplicate_ids_in_dom = function() {
|
||
var ids = {},
|
||
found = false;
|
Auch abrufbar als: Unified diff
kivi.js: kivi.save_file und client_js binding
(cherry picked from commit f68ea953a6a563172f12991d2ca3f9f17ad89dd2)