This commit is contained in:
Ross
2021-07-26 10:48:08 +01:00
parent 16d7875d0d
commit 3367328d94
659 changed files with 170339 additions and 1 deletions
+28
View File
@@ -0,0 +1,28 @@
'use strict';
/* global django, Cl */
/*
This functionality is used in folder/choose_copy_destination.html template
to disable submit if there is only one folder to copy
*/
// as of Django 2.x we need to check where jQuery is
var djQuery = window.$;
if (django.jQuery) {
djQuery = django.jQuery;
}
djQuery(function ($) {
var destinationOptions = $('#destination').find('option');
var destinationOptionLength = destinationOptions.length;
var submit = $('.js-submit-copy-move');
var tooltip = $('.js-disabled-btn-tooltip');
if (destinationOptionLength === 1 && destinationOptions.prop('disabled')) {
submit.hide();
tooltip.show().css('display', 'inline-block');
}
Cl.filerTooltip($);
});
+191
View File
@@ -0,0 +1,191 @@
/* ========================================================================
* Bootstrap: dropdown.js v3.3.6
* http://getbootstrap.com/javascript/#dropdowns
* ========================================================================
* Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
'use strict';
// as of Django 2.x we need to check where jQuery is
var djQuery = window.$;
if (django.jQuery) {
djQuery = django.jQuery;
}
/* global django */
(function ($) {
// DROPDOWN CLASS DEFINITION
// =========================
var backdrop = '.filer-dropdown-backdrop';
var toggle = '[data-toggle="filer-dropdown"]';
var Dropdown = function (element) {
$(element).on('click.bs.filer-dropdown', this.toggle);
};
var old = $.fn.dropdown;
function getParent($this) {
var selector = $this.attr('data-target');
var $parent = selector && $(selector);
if (!selector) {
selector = $this.attr('href');
selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, ''); // strip for ie7
}
return $parent && $parent.length ? $parent : $this.parent(); // jshint ignore:line
}
function clearMenus(e) {
if (e && e.which === 3) {
return;
}
$(backdrop).remove();
$(toggle).each(function () {
var $this = $(this);
var $parent = getParent($this);
var relatedTarget = { relatedTarget: this };
if (!$parent.hasClass('open')) {
return;
}
if (e && e.type === 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) { // jshint ignore:line
return;
}
$parent.trigger(e = $.Event('hide.bs.filer-dropdown', relatedTarget));
if (e.isDefaultPrevented()) {
return;
}
$this.attr('aria-expanded', 'false');
$parent.removeClass('open').trigger($.Event('hidden.bs.filer-dropdown', relatedTarget));
});
}
Dropdown.prototype.toggle = function (e) {
var $this = $(this);
var $parent = getParent($this);
var isActive = $parent.hasClass('open');
var relatedTarget = { relatedTarget: this };
if ($this.is('.disabled, :disabled')) {
return;
}
clearMenus();
if (!isActive) {
if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
// if mobile we use a backdrop because click events don't delegate
$(document.createElement('div')).addClass('filer-dropdown-backdrop')
.insertAfter($(this)).on('click', clearMenus);
}
$parent.trigger(e = $.Event('show.bs.filer-dropdown', relatedTarget));
if (e.isDefaultPrevented()) {
return;
}
$this.trigger('focus').attr('aria-expanded', 'true');
$parent.toggleClass('open').trigger($.Event('shown.bs.filer-dropdown', relatedTarget));
}
return false;
};
Dropdown.prototype.keydown = function (e) {
var $this = $(this);
var $parent = getParent($this);
var isActive = $parent.hasClass('open');
var desc = ' li:not(.disabled):visible a';
var $items = $parent.find('.dropdown-menu' + desc);
var index = $items.index(e.target);
if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) {
return;
}
e.preventDefault();
e.stopPropagation();
if ($this.is('.disabled, :disabled')) {
return;
}
if (!isActive && e.which !== 27 || isActive && e.which === 27) {
if (e.which === 27) {
$parent.find(toggle).trigger('focus');
}
return $this.trigger('click');
}
if (!$items.length) {
return;
}
if (e.which === 38 && index > 0) {
index--; // up
}
if (e.which === 40 && index < $items.length - 1) {
index++; // down
}
if (!~index) { // jshint ignore:line
index = 0;
}
$items.eq(index).trigger('focus');
};
// DROPDOWN PLUGIN DEFINITION
// ==========================
function Plugin(option) {
return this.each(function () {
var $this = $(this);
var data = $this.data('bs.filer-dropdown');
if (!data) {
$this.data('bs.filer-dropdown', (data = new Dropdown(this)));
}
if (typeof option === 'string') {
data[option].call($this);
}
});
}
$.fn.dropdown = Plugin;
$.fn.dropdown.Constructor = Dropdown;
// DROPDOWN NO CONFLICT
// ====================
$.fn.dropdown.noConflict = function () {
$.fn.dropdown = old;
return this;
};
// APPLY TO STANDARD DROPDOWN ELEMENTS
// ===================================
$(document)
.on('click.bs.filer-dropdown.data-api', clearMenus)
.on('click.bs.filer-dropdown.data-api', '.filer-dropdown form', function (e) {
e.stopPropagation();
})
.on('click.bs.filer-dropdown.data-api', toggle, Dropdown.prototype.toggle)
.on('keydown.bs.filer-dropdown.data-api', toggle, Dropdown.prototype.keydown)
.on('keydown.bs.filer-dropdown.data-api', '.filer-dropdown-menu', Dropdown.prototype.keydown);
})(djQuery);
+171
View File
@@ -0,0 +1,171 @@
// #DROPZONE#
// This script implements the dropzone settings
/* globals Dropzone, django */
'use strict';
// as of Django 2.x we need to check where jQuery is
var djQuery = window.$;
if (django.jQuery) {
djQuery = django.jQuery;
}
if (Dropzone) {
Dropzone.autoDiscover = false;
}
/* globals Dropzone, django */
djQuery(function ($) {
var dropzoneTemplateSelector = '.js-filer-dropzone-template';
var previewImageSelector = '.js-img-preview';
var dropzoneSelector = '.js-filer-dropzone';
var dropzones = $(dropzoneSelector);
var messageSelector = '.js-filer-dropzone-message';
var lookupButtonSelector = '.js-related-lookup';
var progressSelector = '.js-filer-dropzone-progress';
var previewImageWrapperSelector = '.js-img-wrapper';
var filerClearerSelector = '.filerClearer';
var fileChooseSelector = '.js-file-selector';
var fileIdInputSelector = '.vForeignKeyRawIdAdminField';
var dragHoverClass = 'dz-drag-hover';
var hiddenClass = 'hidden';
var mobileClass = 'filer-dropzone-mobile';
var objectAttachedClass = 'js-object-attached';
// var dataMaxFileSize = 'max-file-size';
var minWidth = 500;
var checkMinWidth = function (element) {
element.toggleClass(mobileClass, element.width() < minWidth);
};
var showError = function (message) {
try {
window.parent.CMS.API.Messages.open({
message: message
});
} catch (e) {
if (window.filerShowError) {
window.filerShowError(message);
} else {
alert(message);
}
}
};
var createDropzone = function () {
var dropzone = $(this);
var dropzoneUrl = dropzone.data('url');
var inputId = dropzone.find(fileIdInputSelector);
var isImage = inputId.is('[name="image"]');
var lookupButton = dropzone.find(lookupButtonSelector);
var message = dropzone.find(messageSelector);
var clearButton = dropzone.find(filerClearerSelector);
var fileChoose = dropzone.find(fileChooseSelector);
if (this.dropzone) {
return;
}
$(window).on('resize', function () {
checkMinWidth(dropzone);
});
new Dropzone(this, {
url: dropzoneUrl,
paramName: 'file',
maxFiles: 1,
// for now disabled as we don't have the correct file size limit
// maxFilesize: dropzone.data(dataMaxFileSize) || 20, // MB
previewTemplate: $(dropzoneTemplateSelector).html(),
clickable: false,
addRemoveLinks: false,
init: function () {
checkMinWidth(dropzone);
this.on('removedfile', function () {
fileChoose.show();
dropzone.removeClass(objectAttachedClass);
this.removeAllFiles();
clearButton.trigger('click');
});
$('img', this.element).on('dragstart', function (event) {
event.preventDefault();
});
clearButton.on('click', function () {
dropzone.removeClass(objectAttachedClass);
inputId.trigger('change');
});
},
maxfilesexceeded: function () {
this.removeAllFiles(true);
},
drop: function () {
this.removeAllFiles(true);
fileChoose.hide();
lookupButton.addClass('related-lookup-change');
message.addClass(hiddenClass);
dropzone.removeClass(dragHoverClass);
dropzone.addClass(objectAttachedClass);
},
success: function (file, response) {
$(progressSelector).addClass(hiddenClass);
if (file && file.status === 'success' && response) {
if (response.file_id) {
inputId.val(response.file_id);
inputId.trigger('change');
}
if (response.thumbnail_180) {
if (isImage) {
$(previewImageSelector).css({
'background-image': 'url(' + response.thumbnail_180 + ')'
});
$(previewImageWrapperSelector).removeClass(hiddenClass);
}
}
} else {
if (response && response.error) {
showError(file.name + ': ' + response.error);
}
this.removeAllFiles(true);
}
$('img', this.element).on('dragstart', function (event) {
event.preventDefault();
});
},
error: function (file, response) {
showError(file.name + ': ' + response.error);
this.removeAllFiles(true);
},
reset: function () {
if (isImage) {
$(previewImageWrapperSelector).addClass(hiddenClass);
$(previewImageSelector).css({'background-image': 'none'});
}
dropzone.removeClass(objectAttachedClass);
inputId.val('');
lookupButton.removeClass('related-lookup-change');
message.removeClass(hiddenClass);
inputId.trigger('change');
}
});
};
if (dropzones.length && Dropzone) {
if (!window.filerDropzoneInitialized) {
window.filerDropzoneInitialized = true;
Dropzone.autoDiscover = false;
}
dropzones.each(createDropzone);
// window.__admin_utc_offset__ is used as canary to detect Django 1.8
// There is no way to feature detect the new behavior implemented in Django 1.9
if (!window.__admin_utc_offset__) {
$(document).on('formset:added', function (ev, row) {
var dropzones = $(row).find(dropzoneSelector);
dropzones.each(createDropzone);
});
} else {
$('.add-row a').on('click', function () {
var dropzones = $(dropzoneSelector);
dropzones.each(createDropzone);
});
}
}
});
+143
View File
@@ -0,0 +1,143 @@
// #FOCAL POINT#
// This script implements the image focal point setting
'use strict';
var Cl = window.Cl || {};
/* globals Class, django */
// as of Django 2.x we need to check where jQuery is
var djQuery = window.$;
if (django.jQuery) {
djQuery = django.jQuery;
}
(function ($) {
Cl.FocalPoint = new Class({
options: {
containerSelector: '.js-focal-point',
imageSelector: '.js-focal-point-image',
circleSelector: '.js-focal-point-circle',
locationSelector: '.js-focal-point-location',
draggableClass: 'ui-draggable',
hiddenClass: 'hidden',
dataLocation: 'location-selector'
},
_init: function (container) {
var focalPointInstance = new Cl.FocalPointConstructor(container, this.options);
this.focalPointInstances.push(focalPointInstance);
},
initialize: function (options) {
var that = this;
this.options = $.extend({}, this.options, options);
this.focalPointInstances = [];
$(this.options.containerSelector).each(function () {
that._init(this);
});
Cl.mediator.subscribe('focal-point:init', this._init);
},
destroy: function () {
Cl.mediator.remove('focal-point:init', this._init);
this.focalPointInstances.forEach(function (focalPointInstance) {
focalPointInstance.destroy();
});
this.focalPointInstances = [];
}
});
Cl.FocalPointConstructor = new Class({
_updateLocationValue: function (x, y) {
var locationValue;
locationValue = Math.round(x * this.ratio) + ',' + Math.round(y * this.ratio);
this.location.val(locationValue);
},
_onImageLoaded: function () {
var that = this;
var x = null;
var y = null;
var locationValue = this.location.val();
var imageWidth = this.image.width();
var imageHeight = this.image.height();
if (this.image[0].naturalWidth === 0) {
return;
}
this.circle.removeClass(this.options.hiddenClass);
if (locationValue.length) {
x = Math.round(Number(locationValue.split(',')[0]) / this.ratio);
y = Math.round(Number(locationValue.split(',')[1]) / this.ratio);
} else {
y = imageHeight / 2;
x = imageWidth / 2;
}
if (isNaN(x) || isNaN(y)) {
return;
}
this.circle.css({
top: y,
left: x
});
this.circle.draggable({
containment: 'parent',
drag: function (event, ui) {
that._updateLocationValue(ui.position.left, ui.position.top);
}
});
this._updateLocationValue(x, y);
},
_getLocation: function () {
var newLocationSelector = this.container.data(this.options.dataLocation);
var newLocation = $(newLocationSelector);
if (newLocation.length) {
return newLocation;
} else {
return this.container.find(this.options.locationSelector);
}
},
initialize: function (container, options) {
this.options = $.extend({}, this.options, options);
this.container = $(container);
this.containerOffset = this.container.offset();
this.image = this.container.find(this.options.imageSelector);
this.circle = this.container.find(this.options.circleSelector);
this.ratio = parseFloat(this.image.data('ratio'));
this.location = this._getLocation();
this._onImageLoaded = $.proxy(this._onImageLoaded, this);
if (this.image.prop('complete')) {
this._onImageLoaded();
} else {
this.image.on('load', this._onImageLoaded);
}
},
destroy: function () {
if (this.circle.hasClass(this.options.draggableClass)) {
this.circle.draggable('disable');
}
this.options = null;
this.container = null;
this.containerOffset = null;
this.image = null;
this.circle = null;
this.location = null;
this.ratio = null;
}
});
})(djQuery);
+59
View File
@@ -0,0 +1,59 @@
'use strict';
/* global django */
// as of Django 2.x we need to check where jQuery is
var djQuery = window.$;
if (django.jQuery) {
djQuery = django.jQuery;
}
(function ($) {
function windowname_to_id(text) {
text = text.replace(/__dot__/g, '.');
text = text.replace(/__dash__/g, '-');
return text;
}
window.dismissPopupAndReload = function (win) {
document.location.reload();
win.close();
};
window.dismissRelatedImageLookupPopup = function (win, chosenId, chosenThumbnailUrl, chosenDescriptionTxt) {
var id = windowname_to_id(win.name);
var lookup = $('#' + id);
var container = lookup.closest('.filerFile');
var image = container.find('.thumbnail_img');
var descriptionText = container.find('.description_text');
var clearer = container.find('.filerClearer');
var dropzoneMessage = container.siblings('.dz-message');
var element = container.find(':input');
var oldId = element.value;
element.val(chosenId);
element.closest('.js-filer-dropzone').addClass('js-object-attached');
image.attr('src', chosenThumbnailUrl).removeClass('hidden');
descriptionText.text(chosenDescriptionTxt);
clearer.removeClass('hidden');
lookup.addClass('related-lookup-change');
dropzoneMessage.addClass('hidden');
if (oldId !== chosenId) {
element.trigger('change');
}
win.close();
};
window.dismissRelatedFolderLookupPopup = function (win, chosenId, chosenName) {
var id = windowname_to_id(win.name);
var clearButton = $('#id_' + id + '_clear');
var input = $('#id_' + id);
var folderName = $('#id_' + id + '_description_txt');
var addFolderButton = $('#' + id);
input.val(chosenId);
folderName.text(chosenName);
clearButton.removeClass('hidden');
addFolderButton.addClass('hidden');
win.close();
};
})(djQuery);
+223
View File
@@ -0,0 +1,223 @@
// #DROPZONE#
// This script implements the dropzone settings
'use strict';
// as of Django 2.x we need to check where jQuery is
var djQuery = window.$;
if (django.jQuery) {
djQuery = django.jQuery;
}
/* globals Dropzone, Cl, django */
(function ($) {
$(function () {
var submitNum = 0;
var maxSubmitNum = 0;
var dropzoneInstances = [];
var dropzoneBase = $('.js-filer-dropzone-base');
var dropzoneSelector = '.js-filer-dropzone';
var dropzones;
var infoMessageClass = 'js-filer-dropzone-info-message';
var infoMessage = $('.' + infoMessageClass);
var folderName = $('.js-filer-dropzone-folder-name');
var uploadInfoContainer = $('.js-filer-dropzone-upload-info-container');
var uploadInfo = $('.js-filer-dropzone-upload-info');
var uploadWelcome = $('.js-filer-dropzone-upload-welcome');
var uploadNumber = $('.js-filer-dropzone-upload-number');
var uploadCount = $('.js-filer-upload-count');
var uploadText = $('.js-filer-upload-text');
var uploadFileNameSelector = '.js-filer-dropzone-file-name';
var uploadProgressSelector = '.js-filer-dropzone-progress';
var uploadSuccess = $('.js-filer-dropzone-upload-success');
var uploadCanceled = $('.js-filer-dropzone-upload-canceled');
var cancelUpload = $('.js-filer-dropzone-cancel');
var dragHoverClass = 'dz-drag-hover';
var dataUploaderConnections = 'max-uploader-connections';
var dragHoverBorder = $('.drag-hover-border');
// var dataMaxFileSize = 'max-file-size';
var hiddenClass = 'hidden';
var hideMessageTimeout;
var hasErrors = false;
var baseUrl;
var baseFolderTitle;
var updateUploadNumber = function () {
uploadNumber.text(maxSubmitNum - submitNum + '/' + maxSubmitNum);
uploadText.removeClass('hidden');
uploadCount.removeClass('hidden');
};
var destroyDropzones = function () {
$.each(dropzoneInstances, function (index) {
dropzoneInstances[index].destroy();
});
};
var getElementByFile = function (file, url) {
return $(document.getElementById(
'file-' +
encodeURIComponent(file.name) +
file.size +
file.lastModified +
url
));
};
if (dropzoneBase && dropzoneBase.length) {
baseUrl = dropzoneBase.data('url');
baseFolderTitle = dropzoneBase.data('folder-name');
$('body').data('url', baseUrl).data('folder-name', baseFolderTitle).addClass('js-filer-dropzone');
}
Cl.mediator.subscribe('filer-upload-in-progress', destroyDropzones);
dropzones = $(dropzoneSelector);
if (dropzones.length && Dropzone) {
Dropzone.autoDiscover = false;
dropzones.each(function () {
var dropzone = $(this);
var dropzoneUrl = $(this).data('url');
var dropzoneInstance = new Dropzone(this, {
url: dropzoneUrl,
paramName: 'file',
maxFiles: 100,
// for now disabled as we don't have the correct file size limit
// maxFilesize: dropzone.data(dataMaxFileSize) || 20, // MB
previewTemplate: '<div></div>',
clickable: false,
addRemoveLinks: false,
parallelUploads: dropzone.data(dataUploaderConnections) || 3,
accept: function (file, done) {
var uploadInfoClone;
Cl.mediator.remove('filer-upload-in-progress', destroyDropzones);
Cl.mediator.publish('filer-upload-in-progress');
clearTimeout(hideMessageTimeout);
uploadWelcome.addClass(hiddenClass);
cancelUpload.removeClass(hiddenClass);
if (getElementByFile(file, dropzoneUrl).length) {
done('duplicate');
} else {
uploadInfoClone = uploadInfo.clone();
uploadInfoClone.find(uploadFileNameSelector).text(file.name);
uploadInfoClone.find(uploadProgressSelector).width(0);
uploadInfoClone
.attr(
'id',
'file-' +
encodeURIComponent(file.name) +
file.size +
file.lastModified +
dropzoneUrl
)
.appendTo(uploadInfoContainer);
submitNum++;
maxSubmitNum++;
updateUploadNumber();
done();
}
dropzones.removeClass('reset-hover');
infoMessage.removeClass(hiddenClass);
dropzones.removeClass(dragHoverClass);
},
dragover: function (dragEvent) {
var folderTitle = $(dragEvent.target).closest(dropzoneSelector).data('folder-name');
var dropzoneFolder = dropzone.hasClass('js-filer-dropzone-folder');
var dropzoneBoundingRect = dropzone[0].getBoundingClientRect();
var borderSize = $('.drag-hover-border').css('border-top-width');
var dropzonePosition = {
top: dropzoneBoundingRect.top,
bottom: dropzoneBoundingRect.bottom,
width: dropzoneBoundingRect.width,
height: dropzoneBoundingRect.height - (parseInt(borderSize, 10) * 2)
};
if (dropzoneFolder) {
dragHoverBorder.css(dropzonePosition);
}
$(dropzones).addClass('reset-hover');
uploadSuccess.addClass(hiddenClass);
infoMessage.removeClass(hiddenClass);
dropzone.addClass(dragHoverClass).removeClass('reset-hover');
folderName.text(folderTitle);
},
dragend: function () {
clearTimeout(hideMessageTimeout);
hideMessageTimeout = setTimeout(function () {
infoMessage.addClass(hiddenClass);
}, 1000);
infoMessage.removeClass(hiddenClass);
dropzones.removeClass(dragHoverClass);
dragHoverBorder.css({ top: 0, bottom: 0, width: 0, height: 0 });
},
dragleave: function () {
clearTimeout(hideMessageTimeout);
hideMessageTimeout = setTimeout(function () {
infoMessage.addClass(hiddenClass);
}, 1000);
infoMessage.removeClass(hiddenClass);
dropzones.removeClass(dragHoverClass);
dragHoverBorder.css({ top: 0, bottom: 0, width: 0, height: 0 });
},
sending: function (file) {
getElementByFile(file, dropzoneUrl).removeClass(hiddenClass);
},
uploadprogress: function (file, progress) {
getElementByFile(file, dropzoneUrl).find(uploadProgressSelector).width(progress + '%');
},
success: function (file) {
submitNum--;
updateUploadNumber();
getElementByFile(file, dropzoneUrl).remove();
},
queuecomplete: function () {
if (submitNum !== 0) {
return;
}
updateUploadNumber();
cancelUpload.addClass(hiddenClass);
uploadInfo.addClass(hiddenClass);
if (hasErrors) {
uploadNumber.addClass(hiddenClass);
setTimeout(function () {
window.location.reload();
}, 1000);
} else {
uploadSuccess.removeClass(hiddenClass);
window.location.reload();
}
},
error: function (file, errorText) {
updateUploadNumber();
if (errorText === 'duplicate') {
return;
}
hasErrors = true;
if (window.filerShowError) {
window.filerShowError(file.name + ': ' + errorText);
}
}
});
dropzoneInstances.push(dropzoneInstance);
cancelUpload.on('click', function (clickEvent) {
clickEvent.preventDefault();
cancelUpload.addClass(hiddenClass);
uploadCanceled.removeClass(hiddenClass);
dropzoneInstance.removeAllFiles(true);
});
});
}
});
})(djQuery);
+90
View File
@@ -0,0 +1,90 @@
// #TOGGLER#
// This script implements the simple element toggle
'use strict';
var Cl = window.Cl || {};
/* global Class, django */
// as of Django 2.x we need to check where jQuery is
var djQuery = window.$;
if (django.jQuery) {
djQuery = django.jQuery;
}
(function ($) {
Cl.Toggler = new Class({
options: {
linksSelector: '.js-toggler-link',
dataHeaderSelector: 'toggler-header-selector',
dataContentSelector: 'toggler-content-selector',
collapsedClass: 'js-collapsed',
expandedClass: 'js-expanded',
hiddenClass: 'hidden'
},
initialize: function (options) {
var that = this;
this.options = $.extend({}, this.options, options);
this.togglerInstances = [];
$(this.options.linksSelector).each(function () {
var togglerInstance = new Cl.TogglerConstructor(this, that.options);
that.togglerInstances.push(togglerInstance);
});
},
destroy: function () {
this.links = null;
this.togglerInstances.forEach(function (togglerInstance) {
togglerInstance.destroy();
});
this.togglerInstances = [];
}
});
Cl.TogglerConstructor = new Class({
_updateClasses: function () {
if (this.content.hasClass(this.options.hiddenClass)) {
this.header.removeClass(this.options.expandedClass);
this.header.addClass(this.options.collapsedClass);
} else {
this.header.addClass(this.options.expandedClass);
this.header.removeClass(this.options.collapsedClass);
}
},
_onTogglerClick: function (clickEvent) {
this.content.toggleClass(this.options.hiddenClass);
this._updateClasses();
clickEvent.preventDefault();
},
_initLink: function () {
this._updateClasses();
this._onTogglerClick = $.proxy(this._onTogglerClick, this);
this.link.on('click', this._onTogglerClick);
},
initialize: function (link, options) {
this.options = $.extend({}, this.options, options);
this.link = $(link);
this.headerSelector = this.link.data(this.options.dataHeaderSelector);
this.contentSelector = this.link.data(this.options.dataContentSelector);
this.header = $(this.headerSelector);
this.header = this.header.length ? this.header : this.link;
this.content = $(this.contentSelector);
if (this.content.length === 0) {
return;
}
this._initLink();
},
destroy: function () {
this.options = null;
this.link = null;
}
});
})(djQuery);
+20
View File
@@ -0,0 +1,20 @@
'use strict';
var Cl = window.Cl || {};
Cl.filerTooltip = function ($) {
var tooltipSelector = '.js-filer-tooltip';
$(tooltipSelector).on('mouseover', function () {
var that = $(this);
var title = that.attr('title');
that.data('filerTooltip', title).removeAttr('title');
$('<p class="filer-tooltip"></p>').text(title).appendTo(tooltipSelector);
}).on('mouseout', function () {
var that = $(this);
that.attr('title', that.data('filerTooltip'));
$('.filer-tooltip').remove();
});
};
+142
View File
@@ -0,0 +1,142 @@
// #UPLOAD BUTTON#
// This script implements the upload button logic
'use strict';
// as of Django 2.x we need to check where jQuery is
var djQuery = window.$;
if (django.jQuery) {
djQuery = django.jQuery;
}
/* globals qq, Cl, django */
(function ($) {
$(function () {
var submitNum = 0;
var maxSubmitNum = 1;
var uploadButton = $('.js-upload-button');
var uploadButtonDisabled = $('.js-upload-button-disabled');
var uploadUrl = uploadButton.data('url');
var uploadWelcome = $('.js-filer-dropzone-upload-welcome');
var uploadInfoContainer = $('.js-filer-dropzone-upload-info-container');
var uploadInfo = $('.js-filer-dropzone-upload-info');
var uploadNumber = $('.js-filer-dropzone-upload-number');
var uploadFileNameSelector = '.js-filer-dropzone-file-name';
var uploadProgressSelector = '.js-filer-dropzone-progress';
var uploadSuccess = $('.js-filer-dropzone-upload-success');
var uploadCanceled = $('.js-filer-dropzone-upload-canceled');
var uploadCancel = $('.js-filer-dropzone-cancel');
var infoMessage = $('.js-filer-dropzone-info-message');
var hiddenClass = 'hidden';
var maxUploaderConnections = uploadButton.data('max-uploader-connections') || 3;
var hasErrors = false;
var updateUploadNumber = function () {
uploadNumber.text(maxSubmitNum - submitNum + '/' + maxSubmitNum);
};
var removeButton = function () {
uploadButton.remove();
};
// utility
var updateQuery = function (uri, key, value) {
var re = new RegExp('([?&])' + key + '=.*?(&|$)', 'i');
var separator = uri.indexOf('?') !== -1 ? '&' : '?';
var hash = window.location.hash;
uri = uri.replace(/#.*$/, '');
if (uri.match(re)) {
return uri.replace(re, '$1' + key + '=' + value + '$2') + hash;
} else {
return uri + separator + key + '=' + value + hash;
}
};
var reloadOrdered = function () {
var uri = window.location.toString();
window.location.replace(updateQuery(uri, 'order_by', '-modified_at'));
};
Cl.mediator.subscribe('filer-upload-in-progress', removeButton);
new qq.FileUploaderBasic({
action: uploadUrl,
button: uploadButton[0],
maxConnections: maxUploaderConnections,
onSubmit: function (id) {
Cl.mediator.remove('filer-upload-in-progress', removeButton);
Cl.mediator.publish('filer-upload-in-progress');
submitNum++;
maxSubmitNum = id + 1;
infoMessage.removeClass(hiddenClass);
uploadWelcome.addClass(hiddenClass);
uploadSuccess.addClass(hiddenClass);
uploadInfoContainer.removeClass(hiddenClass);
uploadCancel.removeClass(hiddenClass);
uploadCanceled.addClass(hiddenClass);
updateUploadNumber();
},
onProgress: function (id, fileName, loaded, total) {
var percent = Math.round(loaded / total * 100);
var fileItem = $('#file-' + id);
var uploadInfoClone;
if (fileItem.length) {
fileItem.find(uploadProgressSelector).width(percent + '%');
} else {
uploadInfoClone = uploadInfo.clone();
uploadInfoClone.find(uploadFileNameSelector).text(fileName);
uploadInfoClone.find(uploadProgressSelector).width(percent);
uploadInfoClone.removeClass(hiddenClass)
.attr('id', 'file-' + id)
.appendTo(uploadInfoContainer);
}
},
onComplete: function (id, fileName, responseJSON) {
var file = responseJSON;
$('#file-' + id).remove();
if (file.error) {
hasErrors = true;
window.filerShowError(fileName + ': ' + file.error);
}
submitNum--;
updateUploadNumber();
if (submitNum === 0) {
maxSubmitNum = 1;
uploadWelcome.addClass(hiddenClass);
uploadNumber.addClass(hiddenClass);
uploadCanceled.addClass(hiddenClass);
uploadCancel.addClass(hiddenClass);
uploadSuccess.removeClass(hiddenClass);
if (hasErrors) {
setTimeout(reloadOrdered, 1000);
} else {
reloadOrdered();
}
}
}
});
uploadCancel.on('click', function (clickEvent) {
clickEvent.preventDefault();
uploadCancel.addClass(hiddenClass);
uploadNumber.addClass(hiddenClass);
uploadInfoContainer.addClass(hiddenClass);
uploadCanceled.removeClass(hiddenClass);
setTimeout(function () {
window.location.reload();
}, 1000);
});
if (uploadButtonDisabled.length) {
Cl.filerTooltip($);
}
});
})(djQuery);
+35
View File
@@ -0,0 +1,35 @@
'use strict';
/* global django */
// as of Django 2.x we need to check where jQuery is
var djQuery = window.$;
if (django.jQuery) {
djQuery = django.jQuery;
}
djQuery(function ($) {
var filer_clear = function () {
var clearer = $(this);
var container = clearer.closest('.filerFile');
var input = container.find(':input');
var thumbnail = container.find('.thumbnail_img');
var description = container.find('.description_text');
var addImageButton = container.find('.lookup');
var dropzoneMessage = container.siblings('.dz-message');
var hiddenClass = 'hidden';
clearer.addClass(hiddenClass);
input.val('');
thumbnail.addClass(hiddenClass);
thumbnail.parent('a').removeAttr('href');
addImageButton.removeClass('related-lookup-change');
dropzoneMessage.removeClass(hiddenClass);
description.empty();
};
$('.filerFile .vForeignKeyRawIdAdminField').attr('type', 'hidden');
//if this file is included multiple time, we ensure that filer_clear is attached only once.
$(document).off('click.filer', '.filerFile .filerClearer', filer_clear)
.on('click.filer', '.filerFile .filerClearer', filer_clear);
});
+210
View File
@@ -0,0 +1,210 @@
// #####################################################################################################################
// #BASE#
// Basic logic django filer
'use strict';
var Cl = window.Cl || {};
/* globals Mediator, django */
// as of Django 2.x we need to check where jQuery is
var djQuery = window.$;
if (django.jQuery) {
djQuery = django.jQuery;
}
// mediator init
Cl.mediator = new Mediator();
(function ($) {
$(function () {
var showErrorTimeout;
window.filerShowError = function (message) {
var messages = $('.messagelist');
var header = $('#header');
var filerErrorClass = 'js-filer-error';
var tpl = '<ul class="messagelist"><li class="error ' + filerErrorClass + '">{msg}</li></ul>';
var msg = tpl.replace('{msg}', message);
messages.length ? messages.replaceWith(msg) : header.after(msg);
if (showErrorTimeout) {
clearTimeout(showErrorTimeout);
}
showErrorTimeout = setTimeout(function () {
$('.' + filerErrorClass).remove();
}, 3000);
};
// Focal point logic init
if (Cl.FocalPoint) {
new Cl.FocalPoint();
}
// Toggler init
if (Cl.Toggler) {
new Cl.Toggler();
}
$('.js-filter-files').on('focus blur', function (event) {
var container = $(this).closest('.navigator-top-nav');
var dropdownTrigger = container.find('.dropdown-container a');
if (event.type === 'focus') {
container.addClass('search-is-focused');
} else {
if (!dropdownTrigger.is(event.relatedTarget)) {
container.removeClass('search-is-focused');
}
}
});
// Focus on the search field on page load
(function () {
var filter = $('.js-filter-files');
var containerSelector = '.navigator-top-nav';
var searchDropdown = $(containerSelector).find('.filter-search-wrapper').find('.filer-dropdown-container');
if (filter.length) {
filter.on('keydown', function () {
$(this).closest(containerSelector).addClass('search-is-focused');
});
searchDropdown.on('show.bs.filer-dropdown', function () {
$(containerSelector).addClass('search-is-focused');
}).on('hide.bs.filer-dropdown', function () {
$(containerSelector).removeClass('search-is-focused');
});
}
}());
// show counter if file is selected
(function () {
var navigatorTable = $('.navigator-table').find('tr');
var actionList = $('.actions-wrapper');
var actionSelect = $('.action-select, #action-toggle, .actions .clear a');
// timeout is needed to wait until table row has class selected.
setTimeout(function () {
if (navigatorTable.hasClass('selected')) {
actionList.addClass('action-selected');
}
}, 100);
actionSelect.on('change', function () {
// setTimeout makes sure that change event fires before click event which is reliable to admin
setTimeout(function () {
if (navigatorTable.hasClass('selected')) {
actionList.addClass('action-selected');
} else {
actionList.removeClass('action-selected');
}
}, 0);
});
}());
(function () {
var actionsMenu = $('.js-actions-menu');
var dropdown = actionsMenu.find('.filer-dropdown-menu');
var actionsSelect = $('.actions select[name="action"]');
var actionsSelectOptions = actionsSelect.find('option');
var actionsGo = $('.actions button[type="submit"]');
var html = '';
var actionDelete = $('.js-action-delete');
var actionCopy = $('.js-action-copy');
var actionMove = $('.js-action-move');
var valueDelete = 'delete_files_or_folders';
var valueCopy = 'copy_files_and_folders';
var valueMove = 'move_files_and_folders';
var navigatorTable = $('.navigator-table').find('tr');
// triggers delete copy and move actions on separate buttons
function actionsButton(optionValue, actionButton) {
actionsSelectOptions.each(function () {
if (this.value === optionValue) {
actionButton.show();
actionButton.on('click', function (e) {
e.preventDefault();
if (navigatorTable.hasClass('selected')) {
actionsSelect.val(optionValue).prop('selected', true);
actionsGo.trigger('click');
}
});
}
});
}
actionsButton(valueDelete, actionDelete);
actionsButton(valueCopy, actionCopy);
actionsButton(valueMove, actionMove);
// mocking the action buttons to work in frontend UI
actionsSelectOptions.each(function (index) {
var className = '';
if (index !== 0) {
if (this.value === valueDelete || this.value === valueCopy || this.value === valueMove) {
className = 'class="hidden"';
}
html += '<li><a href="#"' + className + '>' + $(this).text() + '</a></li>';
}
});
dropdown.append(html);
dropdown.on('click', 'a', function (clickEvent) {
var targetIndex = $(this).closest('li').index() + 1;
clickEvent.preventDefault();
actionsSelect.find('option').eq(targetIndex).prop('selected', true);
actionsGo.trigger('click');
});
actionsMenu.on('click', function (e) {
if (!navigatorTable.hasClass('selected')) {
e.preventDefault();
e.stopPropagation();
}
});
}());
// breaks header if breadcrumbs name reaches a width of 80px
(function () {
var minBreadcrumbWidth = 80;
var header = $('.navigator-top-nav');
var breadcrumbContainer = $('.breadcrumbs-container');
var breadcrumbFolderWidth = breadcrumbContainer.find('.navigator-breadcrumbs').outerWidth();
var breadcrumbDropdownWidth = breadcrumbContainer.find('.filer-dropdown-container').outerWidth();
var searchWidth = $('.filter-files-container').outerWidth();
var actionsWidth = $('.actions-wrapper').outerWidth();
var buttonsWidth = $('.navigator-button-wrapper').outerWidth();
var headerPadding = parseInt(header.css('padding-left'), 10) + parseInt(header.css('padding-right'), 10);
var headerWidth = header.outerWidth();
var fullHeaderWidth = minBreadcrumbWidth + breadcrumbFolderWidth +
breadcrumbDropdownWidth + searchWidth + actionsWidth + buttonsWidth + headerPadding;
var breadcrumbSizeHandlerClassName = 'breadcrumb-min-width';
var breadcrumbSizeHandler = function () {
if (headerWidth < fullHeaderWidth) {
header.addClass(breadcrumbSizeHandlerClassName);
} else {
header.removeClass(breadcrumbSizeHandlerClassName);
}
};
breadcrumbSizeHandler();
$(window).on('resize', function () {
headerWidth = header.outerWidth();
breadcrumbSizeHandler();
});
}());
});
})(djQuery);
+6
View File
@@ -0,0 +1,6 @@
/*!
* @author Angelo Dini
* @version 1.0
* @copyright Distributed under the BSD License.
*/
(function(){var d="1.0";var c=window.Class;var b=window.Class=function(n){n=n||{};var m=function(){return(this.initialize)?this.initialize.apply(this,arguments):j};if(n.implement){var j=window===this?g(m.prototype):this;var l=n.implement;a(n,"implement");n=f(n,e(l))}m.prototype=g(n);m.constructor=m;m._parent=g(n);for(var k=0,h=["extend","implement","getOptions","setOptions"];k<h.length;k++){m[h[k]]=b[h[k]]}return m};b.extend=function(j){var h=this;if(j.implement){this.prototype=f(this.prototype,e(j.implement));a(j,"implement")}for(var i in j){j[i]=typeof j[i]==="function"&&/parent/.test(j[i].toString())?(function(l,k){return function(){this.parent=h._parent[k];return l.apply(this,arguments)}})(j[i],i):j[i]}this._parent=f(this._parent,j,true);this.prototype=f(this.prototype,j);return this};b.implement=function(h){return this.prototype=f(this.prototype,e(h))};b.getOptions=function(){return this.prototype.options||{}};b.setOptions=function(h){return this.prototype.options=f(this.prototype.options,h)};b.noConflict=function(){window.Class=c;return b};b.version=d;function g(i){var h=function(){};h.prototype=i.prototype||i;return new h()}function a(l,i,k){if(k){var h={};for(var j in l){if(j!==i){h[j]=l[j]}}}else{delete l[i]}return h||l}function f(h,i,k){if(!h||!i){return h||i||{}}h=g(h);i=g(i);for(var j in i){if(Object.prototype.toString.call(i[j])==="[object Object]"){f(h[j],i[j])}else{h[j]=(k&&h[j])?h[j]:i[j]}}return h}function e(l){var k={};for(var h=0;h<l.length;h++){if(typeof(l[h])==="function"){l[h]=l[h].prototype}var j=a(l[h],"initialize",true);if(j.implement){k=e(j.implement)}else{k=f(k,j)}}return k}})();
+86
View File
@@ -0,0 +1,86 @@
/*
*
* More info at [www.dropzonejs.com](http://www.dropzonejs.com)
*
* Copyright (c) 2012, Matias Meno
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*
*/
(function(){var k,u,z,A,B,m,C,x=[].slice,D={}.hasOwnProperty,E=function(e,c){function l(){this.constructor=e}for(var h in c)D.call(c,h)&&(e[h]=c[h]);l.prototype=c.prototype;e.prototype=new l;e.__super__=c.prototype;return e};m=function(){};u=function(){function e(){}e.prototype.addEventListener=e.prototype.on;e.prototype.on=function(c,e){this._callbacks=this._callbacks||{};this._callbacks[c]||(this._callbacks[c]=[]);this._callbacks[c].push(e);return this};e.prototype.emit=function(){var c,e,h,a,b;
e=arguments[0];c=2<=arguments.length?x.call(arguments,1):[];this._callbacks=this._callbacks||{};if(h=this._callbacks[e])for(a=0,b=h.length;a<b;a++)e=h[a],e.apply(this,c);return this};e.prototype.removeListener=e.prototype.off;e.prototype.removeAllListeners=e.prototype.off;e.prototype.removeEventListener=e.prototype.off;e.prototype.off=function(c,e){var h,a,b,d,f;if(!this._callbacks||0===arguments.length)return this._callbacks={},this;a=this._callbacks[c];if(!a)return this;if(1===arguments.length)return delete this._callbacks[c],
this;b=d=0;for(f=a.length;d<f;b=++d)if(h=a[b],h===e){a.splice(b,1);break}return this};return e}();k=function(e){function c(a,b){var d,f,g;this.element=a;this.version=c.version;this.defaultOptions.previewTemplate=this.defaultOptions.previewTemplate.replace(/\n*/g,"");this.clickableElements=[];this.listeners=[];this.files=[];"string"===typeof this.element&&(this.element=document.querySelector(this.element));if(!this.element||null==this.element.nodeType)throw Error("Invalid dropzone element.");if(this.element.dropzone)throw Error("Dropzone already attached.");
c.instances.push(this);this.element.dropzone=this;d=null!=(g=c.optionsForElement(this.element))?g:{};this.options=l({},this.defaultOptions,d,null!=b?b:{});if(this.options.forceFallback||!c.isBrowserSupported())return this.options.fallback.call(this);null==this.options.url&&(this.options.url=this.element.getAttribute("action"));if(!this.options.url)throw Error("No URL provided.");if(this.options.acceptedFiles&&this.options.acceptedMimeTypes)throw Error("You can't provide both 'acceptedFiles' and 'acceptedMimeTypes'. 'acceptedMimeTypes' is deprecated.");
this.options.acceptedMimeTypes&&(this.options.acceptedFiles=this.options.acceptedMimeTypes,delete this.options.acceptedMimeTypes);this.options.method=this.options.method.toUpperCase();(f=this.getExistingFallback())&&f.parentNode&&f.parentNode.removeChild(f);!1!==this.options.previewsContainer&&(this.previewsContainer=this.options.previewsContainer?c.getElement(this.options.previewsContainer,"previewsContainer"):this.element);this.options.clickable&&(this.clickableElements=!0===this.options.clickable?
[this.element]:c.getElements(this.options.clickable,"clickable"));this.init()}var l,h;E(c,e);c.prototype.Emitter=u;c.prototype.events="drop dragstart dragend dragenter dragover dragleave addedfile addedfiles removedfile thumbnail error errormultiple processing processingmultiple uploadprogress totaluploadprogress sending sendingmultiple success successmultiple canceled canceledmultiple complete completemultiple reset maxfilesexceeded maxfilesreached queuecomplete".split(" ");c.prototype.defaultOptions=
{url:null,method:"post",withCredentials:!1,parallelUploads:2,uploadMultiple:!1,maxFilesize:256,paramName:"file",createImageThumbnails:!0,maxThumbnailFilesize:10,thumbnailWidth:120,thumbnailHeight:120,filesizeBase:1E3,maxFiles:null,params:{},clickable:!0,ignoreHiddenFiles:!0,acceptedFiles:null,acceptedMimeTypes:null,autoProcessQueue:!0,autoQueue:!0,addRemoveLinks:!1,previewsContainer:null,hiddenInputContainer:"body",capture:null,dictDefaultMessage:"Drop files here to upload",dictFallbackMessage:"Your browser does not support drag'n'drop file uploads.",
dictFallbackText:"Please use the fallback form below to upload your files like in the olden days.",dictFileTooBig:"File is too big ({{filesize}}MiB). Max filesize: {{maxFilesize}}MiB.",dictInvalidFileType:"You can't upload files of this type.",dictResponseError:"Server responded with {{statusCode}} code.",dictCancelUpload:"Cancel upload",dictCancelUploadConfirmation:"Are you sure you want to cancel this upload?",dictRemoveFile:"Remove file",dictRemoveFileConfirmation:null,dictMaxFilesExceeded:"You can not upload any more files.",
accept:function(a,b){return b()},init:function(){return m},forceFallback:!1,fallback:function(){var a,b,d,f,g;this.element.className=""+this.element.className+" dz-browser-not-supported";g=this.element.getElementsByTagName("div");d=0;for(f=g.length;d<f;d++)a=g[d],/(^| )dz-message($| )/.test(a.className)&&(b=a,a.className="dz-message");b||(b=c.createElement('<div class="dz-message"><span></span></div>'),this.element.appendChild(b));if(a=b.getElementsByTagName("span")[0])null!=a.textContent?a.textContent=
this.options.dictFallbackMessage:null!=a.innerText&&(a.innerText=this.options.dictFallbackMessage);return this.element.appendChild(this.getFallbackForm())},resize:function(a){var b,d,f;b={srcX:0,srcY:0,srcWidth:a.width,srcHeight:a.height};d=a.width/a.height;b.optWidth=this.options.thumbnailWidth;b.optHeight=this.options.thumbnailHeight;null==b.optWidth&&null==b.optHeight?(b.optWidth=b.srcWidth,b.optHeight=b.srcHeight):null==b.optWidth?b.optWidth=d*b.optHeight:null==b.optHeight&&(b.optHeight=1/d*b.optWidth);
f=b.optWidth/b.optHeight;a.height<b.optHeight||a.width<b.optWidth?(b.trgHeight=b.srcHeight,b.trgWidth=b.srcWidth):d>f?(b.srcHeight=a.height,b.srcWidth=b.srcHeight*f):(b.srcWidth=a.width,b.srcHeight=b.srcWidth/f);b.srcX=(a.width-b.srcWidth)/2;b.srcY=(a.height-b.srcHeight)/2;return b},drop:function(a){return this.element.classList.remove("dz-drag-hover")},dragstart:m,dragend:function(a){return this.element.classList.remove("dz-drag-hover")},dragenter:function(a){return this.element.classList.add("dz-drag-hover")},
dragover:function(a){return this.element.classList.add("dz-drag-hover")},dragleave:function(a){return this.element.classList.remove("dz-drag-hover")},paste:m,reset:function(){return this.element.classList.remove("dz-started")},addedfile:function(a){var b,d,f,g,n,r;this.element===this.previewsContainer&&this.element.classList.add("dz-started");if(this.previewsContainer){a.previewElement=c.createElement(this.options.previewTemplate.trim());a.previewTemplate=a.previewElement;this.previewsContainer.appendChild(a.previewElement);
g=a.previewElement.querySelectorAll("[data-dz-name]");d=0;for(f=g.length;d<f;d++)b=g[d],b.textContent=a.name;g=a.previewElement.querySelectorAll("[data-dz-size]");d=0;for(f=g.length;d<f;d++)b=g[d],b.innerHTML=this.filesize(a.size);this.options.addRemoveLinks&&(a._removeLink=c.createElement('<a class="dz-remove" href="javascript:undefined;" data-dz-remove>'+this.options.dictRemoveFile+"</a>"),a.previewElement.appendChild(a._removeLink));b=function(b){return function(d){d.preventDefault();d.stopPropagation();
return a.status===c.UPLOADING?c.confirm(b.options.dictCancelUploadConfirmation,function(){return b.removeFile(a)}):b.options.dictRemoveFileConfirmation?c.confirm(b.options.dictRemoveFileConfirmation,function(){return b.removeFile(a)}):b.removeFile(a)}}(this);n=a.previewElement.querySelectorAll("[data-dz-remove]");r=[];f=0;for(g=n.length;f<g;f++)d=n[f],r.push(d.addEventListener("click",b));return r}},removedfile:function(a){var b;a.previewElement&&null!=(b=a.previewElement)&&b.parentNode.removeChild(a.previewElement);
return this._updateMaxFilesReachedClass()},thumbnail:function(a,b){var d,f,c,n;if(a.previewElement){a.previewElement.classList.remove("dz-file-preview");n=a.previewElement.querySelectorAll("[data-dz-thumbnail]");f=0;for(c=n.length;f<c;f++)d=n[f],d.alt=a.name,d.src=b;return setTimeout(function(b){return function(){return a.previewElement.classList.add("dz-image-preview")}}(this),1)}},error:function(a,b){var d,f,c,n,r;if(a.previewElement){a.previewElement.classList.add("dz-error");"String"!==typeof b&&
b.error&&(b=b.error);n=a.previewElement.querySelectorAll("[data-dz-errormessage]");r=[];f=0;for(c=n.length;f<c;f++)d=n[f],r.push(d.textContent=b);return r}},errormultiple:m,processing:function(a){if(a.previewElement&&(a.previewElement.classList.add("dz-processing"),a._removeLink))return a._removeLink.textContent=this.options.dictCancelUpload},processingmultiple:m,uploadprogress:function(a,b,d){var c,g,n;if(a.previewElement){g=a.previewElement.querySelectorAll("[data-dz-uploadprogress]");n=[];d=0;
for(c=g.length;d<c;d++)a=g[d],"PROGRESS"===a.nodeName?n.push(a.value=b):n.push(a.style.width=""+b+"%");return n}},totaluploadprogress:m,sending:m,sendingmultiple:m,success:function(a){if(a.previewElement)return a.previewElement.classList.add("dz-success")},successmultiple:m,canceled:function(a){return this.emit("error",a,"Upload canceled.")},canceledmultiple:m,complete:function(a){a._removeLink&&(a._removeLink.textContent=this.options.dictRemoveFile);if(a.previewElement)return a.previewElement.classList.add("dz-complete")},
completemultiple:m,maxfilesexceeded:m,maxfilesreached:m,queuecomplete:m,addedfiles:m,previewTemplate:'<div class="dz-preview dz-file-preview">\n <div class="dz-image"><img data-dz-thumbnail /></div>\n <div class="dz-details">\n <div class="dz-size"><span data-dz-size></span></div>\n <div class="dz-filename"><span data-dz-name></span></div>\n </div>\n <div class="dz-progress"><span class="dz-upload" data-dz-uploadprogress></span></div>\n <div class="dz-error-message"><span data-dz-errormessage></span></div>\n <div class="dz-success-mark">\n <svg width="54px" height="54px" viewBox="0 0 54 54" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">\n <title>Check</title>\n <defs></defs>\n <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">\n <path d="M23.5,31.8431458 L17.5852419,25.9283877 C16.0248253,24.3679711 13.4910294,24.366835 11.9289322,25.9289322 C10.3700136,27.4878508 10.3665912,30.0234455 11.9283877,31.5852419 L20.4147581,40.0716123 C20.5133999,40.1702541 20.6159315,40.2626649 20.7218615,40.3488435 C22.2835669,41.8725651 24.794234,41.8626202 26.3461564,40.3106978 L43.3106978,23.3461564 C44.8771021,21.7797521 44.8758057,19.2483887 43.3137085,17.6862915 C41.7547899,16.1273729 39.2176035,16.1255422 37.6538436,17.6893022 L23.5,31.8431458 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z" id="Oval-2" stroke-opacity="0.198794158" stroke="#747474" fill-opacity="0.816519475" fill="#FFFFFF" sketch:type="MSShapeGroup"></path>\n </g>\n </svg>\n </div>\n <div class="dz-error-mark">\n <svg width="54px" height="54px" viewBox="0 0 54 54" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">\n <title>Error</title>\n <defs></defs>\n <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" sketch:type="MSPage">\n <g id="Check-+-Oval-2" sketch:type="MSLayerGroup" stroke="#747474" stroke-opacity="0.198794158" fill="#FFFFFF" fill-opacity="0.816519475">\n <path d="M32.6568542,29 L38.3106978,23.3461564 C39.8771021,21.7797521 39.8758057,19.2483887 38.3137085,17.6862915 C36.7547899,16.1273729 34.2176035,16.1255422 32.6538436,17.6893022 L27,23.3431458 L21.3461564,17.6893022 C19.7823965,16.1255422 17.2452101,16.1273729 15.6862915,17.6862915 C14.1241943,19.2483887 14.1228979,21.7797521 15.6893022,23.3461564 L21.3431458,29 L15.6893022,34.6538436 C14.1228979,36.2202479 14.1241943,38.7516113 15.6862915,40.3137085 C17.2452101,41.8726271 19.7823965,41.8744578 21.3461564,40.3106978 L27,34.6568542 L32.6538436,40.3106978 C34.2176035,41.8744578 36.7547899,41.8726271 38.3137085,40.3137085 C39.8758057,38.7516113 39.8771021,36.2202479 38.3106978,34.6538436 L32.6568542,29 Z M27,53 C41.3594035,53 53,41.3594035 53,27 C53,12.6405965 41.3594035,1 27,1 C12.6405965,1 1,12.6405965 1,27 C1,41.3594035 12.6405965,53 27,53 Z" id="Oval-2" sketch:type="MSShapeGroup"></path>\n </g>\n </g>\n </svg>\n </div>\n</div>'};
l=function(){var a,b,d,c,g,n,r;c=arguments[0];d=2<=arguments.length?x.call(arguments,1):[];n=0;for(r=d.length;n<r;n++)for(a in b=d[n],b)g=b[a],c[a]=g;return c};c.prototype.getAcceptedFiles=function(){var a,b,d,c,g;c=this.files;g=[];b=0;for(d=c.length;b<d;b++)a=c[b],a.accepted&&g.push(a);return g};c.prototype.getRejectedFiles=function(){var a,b,d,c,g;c=this.files;g=[];b=0;for(d=c.length;b<d;b++)a=c[b],a.accepted||g.push(a);return g};c.prototype.getFilesWithStatus=function(a){var b,d,c,g,n;g=this.files;
n=[];d=0;for(c=g.length;d<c;d++)b=g[d],b.status===a&&n.push(b);return n};c.prototype.getQueuedFiles=function(){return this.getFilesWithStatus(c.QUEUED)};c.prototype.getUploadingFiles=function(){return this.getFilesWithStatus(c.UPLOADING)};c.prototype.getAddedFiles=function(){return this.getFilesWithStatus(c.ADDED)};c.prototype.getActiveFiles=function(){var a,b,d,f,g;f=this.files;g=[];b=0;for(d=f.length;b<d;b++)a=f[b],a.status!==c.UPLOADING&&a.status!==c.QUEUED||g.push(a);return g};c.prototype.init=
function(){var a,b,d,f,g,n;"form"===this.element.tagName&&this.element.setAttribute("enctype","multipart/form-data");this.element.classList.contains("dropzone")&&!this.element.querySelector(".dz-message")&&this.element.appendChild(c.createElement('<div class="dz-default dz-message"><span>'+this.options.dictDefaultMessage+"</span></div>"));this.clickableElements.length&&(d=function(a){return function(){a.hiddenFileInput&&a.hiddenFileInput.parentNode.removeChild(a.hiddenFileInput);a.hiddenFileInput=
document.createElement("input");a.hiddenFileInput.setAttribute("type","file");(null==a.options.maxFiles||1<a.options.maxFiles)&&a.hiddenFileInput.setAttribute("multiple","multiple");a.hiddenFileInput.className="dz-hidden-input";null!=a.options.acceptedFiles&&a.hiddenFileInput.setAttribute("accept",a.options.acceptedFiles);null!=a.options.capture&&a.hiddenFileInput.setAttribute("capture",a.options.capture);a.hiddenFileInput.style.visibility="hidden";a.hiddenFileInput.style.position="absolute";a.hiddenFileInput.style.top=
"0";a.hiddenFileInput.style.left="0";a.hiddenFileInput.style.height="0";a.hiddenFileInput.style.width="0";document.querySelector(a.options.hiddenInputContainer).appendChild(a.hiddenFileInput);return a.hiddenFileInput.addEventListener("change",function(){var b,c,f,g;c=a.hiddenFileInput.files;if(c.length)for(f=0,g=c.length;f<g;f++)b=c[f],a.addFile(b);a.emit("addedfiles",c);return d()})}}(this),d());this.URL=null!=(a=window.URL)?a:window.webkitURL;n=this.events;f=0;for(g=n.length;f<g;f++)a=n[f],this.on(a,
this.options[a]);this.on("uploadprogress",function(a){return function(){return a.updateTotalUploadProgress()}}(this));this.on("removedfile",function(a){return function(){return a.updateTotalUploadProgress()}}(this));this.on("canceled",function(a){return function(b){return a.emit("complete",b)}}(this));this.on("complete",function(a){return function(b){if(0===a.getAddedFiles().length&&0===a.getUploadingFiles().length&&0===a.getQueuedFiles().length)return setTimeout(function(){return a.emit("queuecomplete")},
0)}}(this));b=function(a){a.stopPropagation();return a.preventDefault?a.preventDefault():a.returnValue=!1};this.listeners=[{element:this.element,events:{dragstart:function(a){return function(b){return a.emit("dragstart",b)}}(this),dragenter:function(a){return function(d){b(d);return a.emit("dragenter",d)}}(this),dragover:function(a){return function(d){var c;try{c=d.dataTransfer.effectAllowed}catch(f){}d.dataTransfer.dropEffect="move"===c||"linkMove"===c?"move":"copy";b(d);return a.emit("dragover",
d)}}(this),dragleave:function(a){return function(b){return a.emit("dragleave",b)}}(this),drop:function(a){return function(d){b(d);return a.drop(d)}}(this),dragend:function(a){return function(b){return a.emit("dragend",b)}}(this)}}];this.clickableElements.forEach(function(a){return function(b){return a.listeners.push({element:b,events:{click:function(d){(b!==a.element||d.target===a.element||c.elementInside(d.target,a.element.querySelector(".dz-message")))&&a.hiddenFileInput.click();return!0}}})}}(this));
this.enable();return this.options.init.call(this)};c.prototype.destroy=function(){var a;this.disable();this.removeAllFiles(!0);null!=(a=this.hiddenFileInput)&&a.parentNode&&(this.hiddenFileInput.parentNode.removeChild(this.hiddenFileInput),this.hiddenFileInput=null);delete this.element.dropzone;return c.instances.splice(c.instances.indexOf(this),1)};c.prototype.updateTotalUploadProgress=function(){var a,b,d,c,g,n;b=d=0;if(this.getActiveFiles().length){n=this.getActiveFiles();c=0;for(g=n.length;c<
g;c++)a=n[c],d+=a.upload.bytesSent,b+=a.upload.total;a=100*d/b}else a=100;return this.emit("totaluploadprogress",a,b,d)};c.prototype._getParamName=function(a){return"function"===typeof this.options.paramName?this.options.paramName(a):""+this.options.paramName+(this.options.uploadMultiple?"["+a+"]":"")};c.prototype.getFallbackForm=function(){var a,b;if(a=this.getExistingFallback())return a;a='<div class="dz-fallback">';this.options.dictFallbackText&&(a+="<p>"+this.options.dictFallbackText+"</p>");
a+='<input type="file" name="'+this._getParamName(0)+'" '+(this.options.uploadMultiple?'multiple="multiple"':void 0)+' /><input type="submit" value="Upload!"></div>';a=c.createElement(a);"FORM"!==this.element.tagName?(b=c.createElement('<form action="'+this.options.url+'" enctype="multipart/form-data" method="'+this.options.method+'"></form>'),b.appendChild(a)):(this.element.setAttribute("enctype","multipart/form-data"),this.element.setAttribute("method",this.options.method));return null!=b?b:a};
c.prototype.getExistingFallback=function(){var a,b,d,c,g;b=function(a){var b,d,c;d=0;for(c=a.length;d<c;d++)if(b=a[d],/(^| )fallback($| )/.test(b.className))return b};g=["div","form"];d=0;for(c=g.length;d<c;d++)if(a=g[d],a=b(this.element.getElementsByTagName(a)))return a};c.prototype.setupEventListeners=function(){var a,b,d,c,g,n,e;n=this.listeners;e=[];c=0;for(g=n.length;c<g;c++)a=n[c],e.push(function(){var c,f;c=a.events;f=[];for(b in c)d=c[b],f.push(a.element.addEventListener(b,d,!1));return f}());
return e};c.prototype.removeEventListeners=function(){var a,b,c,f,g,e,h;e=this.listeners;h=[];f=0;for(g=e.length;f<g;f++)a=e[f],h.push(function(){var f,g;f=a.events;g=[];for(b in f)c=f[b],g.push(a.element.removeEventListener(b,c,!1));return g}());return h};c.prototype.disable=function(){var a,b,c,f,g;this.clickableElements.forEach(function(a){return a.classList.remove("dz-clickable")});this.removeEventListeners();f=this.files;g=[];b=0;for(c=f.length;b<c;b++)a=f[b],g.push(this.cancelUpload(a));return g};
c.prototype.enable=function(){this.clickableElements.forEach(function(a){return a.classList.add("dz-clickable")});return this.setupEventListeners()};c.prototype.filesize=function(a){var b,c,f,g,e,h,l,q;f=0;g="b";if(0<a){h=["TB","GB","MB","KB","b"];c=l=0;for(q=h.length;l<q;c=++l)if(e=h[c],b=Math.pow(this.options.filesizeBase,4-c)/10,a>=b){f=a/Math.pow(this.options.filesizeBase,4-c);g=e;break}f=Math.round(10*f)/10}return"<strong>"+f+"</strong> "+g};c.prototype._updateMaxFilesReachedClass=function(){return null!=
this.options.maxFiles&&this.getAcceptedFiles().length>=this.options.maxFiles?(this.getAcceptedFiles().length===this.options.maxFiles&&this.emit("maxfilesreached",this.files),this.element.classList.add("dz-max-files-reached")):this.element.classList.remove("dz-max-files-reached")};c.prototype.drop=function(a){var b;a.dataTransfer&&(this.emit("drop",a),b=a.dataTransfer.files,this.emit("addedfiles",b),b.length&&((a=a.dataTransfer.items)&&a.length&&null!=a[0].webkitGetAsEntry?this._addFilesFromItems(a):
this.handleFiles(b)))};c.prototype.paste=function(a){var b;if(null!=(null!=a?null!=(b=a.clipboardData)?b.items:void 0:void 0)&&(this.emit("paste",a),a=a.clipboardData.items,a.length))return this._addFilesFromItems(a)};c.prototype.handleFiles=function(a){var b,c,f,g;g=[];c=0;for(f=a.length;c<f;c++)b=a[c],g.push(this.addFile(b));return g};c.prototype._addFilesFromItems=function(a){var b,c,f,g,e;e=[];f=0;for(g=a.length;f<g;f++)c=a[f],null!=c.webkitGetAsEntry&&(b=c.webkitGetAsEntry())?b.isFile?e.push(this.addFile(c.getAsFile())):
b.isDirectory?e.push(this._addFilesFromDirectory(b,b.name)):e.push(void 0):null!=c.getAsFile?null==c.kind||"file"===c.kind?e.push(this.addFile(c.getAsFile())):e.push(void 0):e.push(void 0);return e};c.prototype._addFilesFromDirectory=function(a,b){var c,f;c=a.createReader();f=function(a){return function(c){var d,f,e;f=0;for(e=c.length;f<e;f++)d=c[f],d.isFile?d.file(function(c){if(!a.options.ignoreHiddenFiles||"."!==c.name.substring(0,1))return c.fullPath=""+b+"/"+c.name,a.addFile(c)}):d.isDirectory&&
a._addFilesFromDirectory(d,""+b+"/"+d.name)}}(this);return c.readEntries(f,function(a){return"undefined"!==typeof console&&null!==console?"function"===typeof console.log?console.log(a):void 0:void 0})};c.prototype.accept=function(a,b){return a.size>1048576*this.options.maxFilesize?b(this.options.dictFileTooBig.replace("{{filesize}}",Math.round(a.size/1024/10.24)/100).replace("{{maxFilesize}}",this.options.maxFilesize)):c.isValidFile(a,this.options.acceptedFiles)?null!=this.options.maxFiles&&this.getAcceptedFiles().length>=
this.options.maxFiles?(b(this.options.dictMaxFilesExceeded.replace("{{maxFiles}}",this.options.maxFiles)),this.emit("maxfilesexceeded",a)):this.options.accept.call(this,a,b):b(this.options.dictInvalidFileType)};c.prototype.addFile=function(a){a.upload={progress:0,total:a.size,bytesSent:0};this.files.push(a);a.status=c.ADDED;this.emit("addedfile",a);this._enqueueThumbnail(a);return this.accept(a,function(b){return function(c){c?(a.accepted=!1,b._errorProcessing([a],c)):(a.accepted=!0,b.options.autoQueue&&
b.enqueueFile(a));return b._updateMaxFilesReachedClass()}}(this))};c.prototype.enqueueFiles=function(a){var b,c,f;c=0;for(f=a.length;c<f;c++)b=a[c],this.enqueueFile(b);return null};c.prototype.enqueueFile=function(a){if(a.status===c.ADDED&&!0===a.accepted){if(a.status=c.QUEUED,this.options.autoProcessQueue)return setTimeout(function(a){return function(){return a.processQueue()}}(this),0)}else throw Error("This file can't be queued because it has already been processed or was rejected.");};c.prototype._thumbnailQueue=
[];c.prototype._processingThumbnail=!1;c.prototype._enqueueThumbnail=function(a){if(this.options.createImageThumbnails&&a.type.match(/image.*/)&&a.size<=1048576*this.options.maxThumbnailFilesize)return this._thumbnailQueue.push(a),setTimeout(function(a){return function(){return a._processThumbnailQueue()}}(this),0)};c.prototype._processThumbnailQueue=function(){if(!this._processingThumbnail&&0!==this._thumbnailQueue.length)return this._processingThumbnail=!0,this.createThumbnail(this._thumbnailQueue.shift(),
function(a){return function(){a._processingThumbnail=!1;return a._processThumbnailQueue()}}(this))};c.prototype.removeFile=function(a){a.status===c.UPLOADING&&this.cancelUpload(a);this.files=C(this.files,a);this.emit("removedfile",a);if(0===this.files.length)return this.emit("reset")};c.prototype.removeAllFiles=function(a){var b,d,f,g;null==a&&(a=!1);g=this.files.slice();d=0;for(f=g.length;d<f;d++)b=g[d],(b.status!==c.UPLOADING||a)&&this.removeFile(b);return null};c.prototype.createThumbnail=function(a,
b){var c;c=new FileReader;c.onload=function(f){return function(){if("image/svg+xml"===a.type)f.emit("thumbnail",a,c.result),null!=b&&b();else return f.createThumbnailFromUrl(a,c.result,b)}}(this);return c.readAsDataURL(a)};c.prototype.createThumbnailFromUrl=function(a,b,c,f){var g;g=document.createElement("img");f&&(g.crossOrigin=f);g.onload=function(b){return function(){var f,e,h,l,k,m,t;a.width=g.width;a.height=g.height;h=b.options.resize.call(b,a);null==h.trgWidth&&(h.trgWidth=h.optWidth);null==
h.trgHeight&&(h.trgHeight=h.optHeight);f=document.createElement("canvas");e=f.getContext("2d");f.width=h.trgWidth;f.height=h.trgHeight;B(e,g,null!=(l=h.srcX)?l:0,null!=(k=h.srcY)?k:0,h.srcWidth,h.srcHeight,null!=(m=h.trgX)?m:0,null!=(t=h.trgY)?t:0,h.trgWidth,h.trgHeight);f=f.toDataURL("image/png");b.emit("thumbnail",a,f);if(null!=c)return c()}}(this);null!=c&&(g.onerror=c);return g.src=b};c.prototype.processQueue=function(){var a,b,c,f;b=this.options.parallelUploads;a=c=this.getUploadingFiles().length;
if(!(c>=b)&&(f=this.getQueuedFiles(),0<f.length)){if(this.options.uploadMultiple)return this.processFiles(f.slice(0,b-c));for(;a<b&&f.length;)this.processFile(f.shift()),a++}};c.prototype.processFile=function(a){return this.processFiles([a])};c.prototype.processFiles=function(a){var b,d,f;d=0;for(f=a.length;d<f;d++)b=a[d],b.processing=!0,b.status=c.UPLOADING,this.emit("processing",b);this.options.uploadMultiple&&this.emit("processingmultiple",a);return this.uploadFiles(a)};c.prototype._getFilesWithXhr=
function(a){var b,c,f,g,e;g=this.files;e=[];c=0;for(f=g.length;c<f;c++)b=g[c],b.xhr===a&&e.push(b);return e};c.prototype.cancelUpload=function(a){var b,d,f,g;if(a.status===c.UPLOADING){d=this._getFilesWithXhr(a.xhr);f=0;for(g=d.length;f<g;f++)b=d[f],b.status=c.CANCELED;a.xhr.abort();a=0;for(f=d.length;a<f;a++)b=d[a],this.emit("canceled",b);this.options.uploadMultiple&&this.emit("canceledmultiple",d)}else if((b=a.status)===c.ADDED||b===c.QUEUED)a.status=c.CANCELED,this.emit("canceled",a),this.options.uploadMultiple&&
this.emit("canceledmultiple",[a]);if(this.options.autoProcessQueue)return this.processQueue()};h=function(){var a,b;b=arguments[0];a=2<=arguments.length?x.call(arguments,1):[];return"function"===typeof b?b.apply(this,a):b};c.prototype.uploadFile=function(a){return this.uploadFiles([a])};c.prototype.uploadFiles=function(a){var b,d,f,g,e,k,m,q,v,w,u,t,p,x,y;p=new XMLHttpRequest;e=0;for(t=a.length;e<t;e++)b=a[e],b.xhr=p;e=h(this.options.method,a);t=h(this.options.url,a);p.open(e,t,!0);p.withCredentials=
!!this.options.withCredentials;w=null;f=function(c){return function(){var d,f,e;e=[];d=0;for(f=a.length;d<f;d++)b=a[d],e.push(c._errorProcessing(a,w||c.options.dictResponseError.replace("{{statusCode}}",p.status),p));return e}}(this);u=function(c){return function(d){var f,e,g;if(null!=d)for(f=100*d.loaded/d.total,e=0,g=a.length;e<g;e++)b=a[e],b.upload={progress:f,total:d.total,bytesSent:d.loaded};else{d=!0;f=100;e=0;for(g=a.length;e<g;e++){b=a[e];if(100!==b.upload.progress||b.upload.bytesSent!==b.upload.total)d=
!1;b.upload.progress=f;b.upload.bytesSent=b.upload.total}if(d)return}g=[];d=0;for(e=a.length;d<e;d++)b=a[d],g.push(c.emit("uploadprogress",b,f,b.upload.bytesSent));return g}}(this);p.onload=function(b){return function(d){var e;if(a[0].status!==c.CANCELED&&4===p.readyState){w=p.responseText;if(p.getResponseHeader("content-type")&&~p.getResponseHeader("content-type").indexOf("application/json"))try{w=JSON.parse(w)}catch(g){d=g,w="Invalid JSON response from server."}u();return 200<=(e=p.status)&&300>
e?b._finished(a,w,d):f()}}}(this);p.onerror=function(b){return function(){if(a[0].status!==c.CANCELED)return f()}}(this);(null!=(g=p.upload)?g:p).onprogress=u;e={Accept:"application/json","Cache-Control":"no-cache","X-Requested-With":"XMLHttpRequest"};this.options.headers&&l(e,this.options.headers);for(d in e)(g=e[d])&&p.setRequestHeader(d,g);d=new FormData;if(this.options.params)for(q in e=this.options.params,e)g=e[q],d.append(q,g);q=0;for(g=a.length;q<g;q++)b=a[q],this.emit("sending",b,p,d);this.options.uploadMultiple&&
this.emit("sendingmultiple",a,p,d);if("FORM"===this.element.tagName)for(t=this.element.querySelectorAll("input, textarea, select, button"),g=0,e=t.length;g<e;g++)if(m=t[g],q=m.getAttribute("name"),v=m.getAttribute("type"),"SELECT"===m.tagName&&m.hasAttribute("multiple"))for(y=m.options,v=0,x=y.length;v<x;v++)m=y[v],m.selected&&d.append(q,m.value);else(!v||"checkbox"!==(k=v.toLowerCase())&&"radio"!==k||m.checked)&&d.append(q,m.value);k=q=0;for(g=a.length-1;0<=g?q<=g:q>=g;k=0<=g?++q:--q)d.append(this._getParamName(k),
a[k],a[k].name);return this.submitRequest(p,d,a)};c.prototype.submitRequest=function(a,b,c){return a.send(b)};c.prototype._finished=function(a,b,d){var f,e,h;e=0;for(h=a.length;e<h;e++)f=a[e],f.status=c.SUCCESS,this.emit("success",f,b,d),this.emit("complete",f);this.options.uploadMultiple&&(this.emit("successmultiple",a,b,d),this.emit("completemultiple",a));if(this.options.autoProcessQueue)return this.processQueue()};c.prototype._errorProcessing=function(a,b,d){var e,g,h;g=0;for(h=a.length;g<h;g++)e=
a[g],e.status=c.ERROR,this.emit("error",e,b,d),this.emit("complete",e);this.options.uploadMultiple&&(this.emit("errormultiple",a,b,d),this.emit("completemultiple",a));if(this.options.autoProcessQueue)return this.processQueue()};return c}(u);k.version="4.2.0";k.options={};k.optionsForElement=function(e){if(e.getAttribute("id"))return k.options[z(e.getAttribute("id"))]};k.instances=[];k.forElement=function(e){"string"===typeof e&&(e=document.querySelector(e));if(null==(null!=e?e.dropzone:void 0))throw Error("No Dropzone found for given element. This is probably because you're trying to access it before Dropzone had the time to initialize. Use the `init` option to setup any additional observers on your Dropzone.");
return e.dropzone};k.autoDiscover=!0;k.discover=function(){var e,c,l,h,a;document.querySelectorAll?c=document.querySelectorAll(".dropzone"):(c=[],e=function(a){var d,e,g,h;h=[];e=0;for(g=a.length;e<g;e++)d=a[e],/(^| )dropzone($| )/.test(d.className)?h.push(c.push(d)):h.push(void 0);return h},e(document.getElementsByTagName("div")),e(document.getElementsByTagName("form")));a=[];l=0;for(h=c.length;l<h;l++)e=c[l],!1!==k.optionsForElement(e)?a.push(new k(e)):a.push(void 0);return a};k.blacklistedBrowsers=
[/opera.*Macintosh.*version\/12/i];k.isBrowserSupported=function(){var e,c,l,h,a;e=!0;if(window.File&&window.FileReader&&window.FileList&&window.Blob&&window.FormData&&document.querySelector)if("classList"in document.createElement("a"))for(a=k.blacklistedBrowsers,l=0,h=a.length;l<h;l++)c=a[l],c.test(navigator.userAgent)&&(e=!1);else e=!1;else e=!1;return e};C=function(e,c){var l,h,a,b;b=[];h=0;for(a=e.length;h<a;h++)l=e[h],l!==c&&b.push(l);return b};z=function(e){return e.replace(/[\-_](\w)/g,function(c){return c.charAt(1).toUpperCase()})};
k.createElement=function(e){var c;c=document.createElement("div");c.innerHTML=e;return c.childNodes[0]};k.elementInside=function(e,c){if(e===c)return!0;for(;e=e.parentNode;)if(e===c)return!0;return!1};k.getElement=function(e,c){var l;"string"===typeof e?l=document.querySelector(e):null!=e.nodeType&&(l=e);if(null==l)throw Error("Invalid `"+c+"` option provided. Please provide a CSS selector or a plain HTML element.");return l};k.getElements=function(e,c){var l,h,a,b,d;if(e instanceof Array){h=[];try{for(a=
0,b=e.length;a<b;a++)l=e[a],h.push(this.getElement(l,c))}catch(f){h=null}}else if("string"===typeof e)for(h=[],d=document.querySelectorAll(e),a=0,b=d.length;a<b;a++)l=d[a],h.push(l);else null!=e.nodeType&&(h=[e]);if(null==h||!h.length)throw Error("Invalid `"+c+"` option provided. Please provide a CSS selector, a plain HTML element or a list of those.");return h};k.confirm=function(e,c,l){if(window.confirm(e))return c();if(null!=l)return l()};k.isValidFile=function(e,c){var l,h,a,b,d;if(!c)return!0;
c=c.split(",");h=e.type;l=h.replace(/\/.*$/,"");b=0;for(d=c.length;b<d;b++)if(a=c[b],a=a.trim(),"."===a.charAt(0)){if(-1!==e.name.toLowerCase().indexOf(a.toLowerCase(),e.name.length-a.length))return!0}else if(/\/\*$/.test(a)){if(l===a.replace(/\/.*$/,""))return!0}else if(h===a)return!0;return!1};"undefined"!==typeof jQuery&&null!==jQuery&&(jQuery.fn.dropzone=function(e){return this.each(function(){return new k(this,e)})});"undefined"!==typeof module&&null!==module?module.exports=k:window.Dropzone=
k;k.ADDED="added";k.QUEUED="queued";k.ACCEPTED=k.QUEUED;k.UPLOADING="uploading";k.PROCESSING=k.UPLOADING;k.CANCELED="canceled";k.ERROR="error";k.SUCCESS="success";A=function(e){var c,l,h,a,b;h=e.naturalHeight;c=document.createElement("canvas");c.width=1;c.height=h;c=c.getContext("2d");c.drawImage(e,0,0);c=c.getImageData(0,0,1,h).data;b=0;for(a=l=h;a>b;)e=c[4*(a-1)+3],0===e?l=a:b=a,a=l+b>>1;h=a/h;return 0===h?1:h};B=function(e,c,l,h,a,b,d,f,g,k){var m;m=A(c);return e.drawImage(c,l,h,a,b,d,f,g,k/m)};
k._autoDiscoverFunction=function(){if(k.autoDiscover)return k.discover()};(function(e,c){var l,h,a,b,d,f,g,k,m;a=!1;m=!0;h=e.document;k=h.documentElement;l=h.addEventListener?"addEventListener":"attachEvent";g=h.addEventListener?"removeEventListener":"detachEvent";f=h.addEventListener?"":"on";b=function(d){if("readystatechange"!==d.type||"complete"===h.readyState)if(("load"===d.type?e:h)[g](f+d.type,b,!1),!a&&(a=!0))return c.call(e,d.type||d)};d=function(){try{k.doScroll("left")}catch(a){setTimeout(d,
50);return}return b("poll")};if("complete"!==h.readyState){if(h.createEventObject&&k.doScroll){try{m=!e.frameElement}catch(u){}m&&d()}h[l](f+"DOMContentLoaded",b,!1);h[l](f+"readystatechange",b,!1);return e[l](f+"load",b,!1)}})(window,k._autoDiscoverFunction)}).call(this);
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+42
View File
@@ -0,0 +1,42 @@
/**
* Cookie plugin
*
* Copyright (c) 2006 Klaus Hartl (stilbuero.de)
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*
*/
/**
* Create a cookie with the given name and value and other optional parameters.
*
* @example $.cookie('the_cookie', 'the_value');
* @desc Set the value of a cookie.
* @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true });
* @desc Create a cookie with all available options.
* @example $.cookie('the_cookie', 'the_value');
* @desc Create a session cookie.
* @example $.cookie('the_cookie', null);
* @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain
* used when the cookie was set.
*
* @param String name The name of the cookie.
* @param String value The value of the cookie.
* @param Object options An object literal containing key/value pairs to provide optional cookie attributes.
* @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.
* If a negative value is specified (e.g. a date in the past), the cookie will be deleted.
* If set to null or omitted, the cookie will be a session cookie and will not be retained
* when the the browser exits.
* @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).
* @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).
* @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will
* require a secure protocol (like HTTPS).
* @type undefined
*
* @name $.cookie
* @cat Plugins/Cookie
* @author Klaus Hartl/klaus.hartl@stilbuero.de
*/
!function(e){e.cookie=function(n,o,i){if("undefined"==typeof o){var t=null;if(document.cookie&&""!=document.cookie)for(var r=document.cookie.split(";"),p=0;p<r.length;p++){var u=e.trim(r[p]);if(u.substring(0,n.length+1)==n+"="){t=decodeURIComponent(u.substring(n.length+1));break}}return t}i=i||{},null===o&&(o="",i=$.extend({},i),i.expires=-1);var s="";if(i.expires&&("number"==typeof i.expires||i.expires.toUTCString)){var a;"number"==typeof i.expires?(a=new Date,a.setTime(a.getTime()+24*i.expires*60*60*1e3)):a=i.expires,s="; expires="+a.toUTCString()}var c=i.path?"; path="+i.path:"",d=i.domain?"; domain="+i.domain:"",m=i.secure?"; secure":"";document.cookie=[n,"=",encodeURIComponent(o),s,c,d,m].join("")}}(jQuery);
File diff suppressed because one or more lines are too long
+1
View File
@@ -0,0 +1 @@
!function(a,b){"use strict";"function"==typeof define&&define.amd?define("mediator-js",[],function(){return a.Mediator=b(),a.Mediator}):"undefined"!=typeof exports?exports.Mediator=b():a.Mediator=b()}(this,function(){"use strict";function a(){var a=function(){return(0|65536*(1+Math.random())).toString(16).substring(1)};return a()+a()+"-"+a()+"-"+a()+"-"+a()+"-"+a()+a()+a()}function b(c,d,e){return this instanceof b?(this.id=a(),this.fn=c,this.options=d,this.context=e,this.channel=null,void 0):new b(c,d,e)}function c(a,b){return this instanceof c?(this.namespace=a||"",this._subscribers=[],this._channels={},this._parent=b,this.stopped=!1,void 0):new c(a)}function d(){return this instanceof d?(this._channels=new c(""),void 0):new d}return b.prototype={update:function(a){a&&(this.fn=a.fn||this.fn,this.context=a.context||this.context,this.options=a.options||this.options,this.channel&&this.options&&void 0!==this.options.priority&&this.channel.setPriority(this.id,this.options.priority))}},c.prototype={addSubscriber:function(a,c,d){var e=new b(a,c,d);return c&&void 0!==c.priority?(c.priority=c.priority>>0,c.priority<0&&(c.priority=0),c.priority>=this._subscribers.length&&(c.priority=this._subscribers.length-1),this._subscribers.splice(c.priority,0,e)):this._subscribers.push(e),e.channel=this,e},stopPropagation:function(){this.stopped=!0},getSubscriber:function(a){var b=0,c=this._subscribers.length;for(c;c>b;b++)if(this._subscribers[b].id===a||this._subscribers[b].fn===a)return this._subscribers[b]},setPriority:function(a,b){var e,f,g,h,c=0,d=0;for(d=0,h=this._subscribers.length;h>d&&this._subscribers[d].id!==a&&this._subscribers[d].fn!==a;d++)c++;e=this._subscribers[c],f=this._subscribers.slice(0,c),g=this._subscribers.slice(c+1),this._subscribers=f.concat(g),this._subscribers.splice(b,0,e)},addChannel:function(a){this._channels[a]=new c((this.namespace?this.namespace+":":"")+a,this)},hasChannel:function(a){return this._channels.hasOwnProperty(a)},returnChannel:function(a){return this._channels[a]},removeSubscriber:function(a){var b=this._subscribers.length-1;if(!a)return this._subscribers=[],void 0;for(b;b>=0;b--)(this._subscribers[b].fn===a||this._subscribers[b].id===a)&&(this._subscribers[b].channel=null,this._subscribers.splice(b,1))},publish:function(a){var e,g,h,b=0,c=this._subscribers.length,d=!1;for(c;c>b;b++)d=!1,e=this._subscribers[b],this.stopped||(g=this._subscribers.length,void 0!==e.options&&"function"==typeof e.options.predicate?e.options.predicate.apply(e.context,a)&&(d=!0):d=!0),d&&(e.options&&void 0!==e.options.calls&&(e.options.calls--,e.options.calls<1&&this.removeSubscriber(e.id)),e.fn.apply(e.context,a),h=this._subscribers.length,c=h,h===g-1&&b--);this._parent&&this._parent.publish(a),this.stopped=!1}},d.prototype={getChannel:function(a,b){var c=this._channels,d=a.split(":"),e=0,f=d.length;if(""===a)return c;if(d.length>0)for(f;f>e;e++){if(!c.hasChannel(d[e])){if(b)break;c.addChannel(d[e])}c=c.returnChannel(d[e])}return c},subscribe:function(a,b,c,d){var e=this.getChannel(a||"",!1);return c=c||{},d=d||{},e.addSubscriber(b,c,d)},once:function(a,b,c,d){return c=c||{},c.calls=1,this.subscribe(a,b,c,d)},getSubscriber:function(a,b){var c=this.getChannel(b||"",!0);return c.namespace!==b?null:c.getSubscriber(a)},remove:function(a,b){var c=this.getChannel(a||"",!0);return c.namespace!==a?!1:(c.removeSubscriber(b),void 0)},publish:function(a){var b=this.getChannel(a||"",!0);if(b.namespace!==a)return null;var c=Array.prototype.slice.call(arguments,1);c.push(b),b.publish(c)}},d.prototype.on=d.prototype.subscribe,d.prototype.bind=d.prototype.subscribe,d.prototype.emit=d.prototype.publish,d.prototype.trigger=d.prototype.publish,d.prototype.off=d.prototype.remove,d.Channel=c,d.Subscriber=b,d.version="0.9.8",d});
+3
View File
@@ -0,0 +1,3 @@
// retina.js, a high-resolution image swapper (http://retinajs.com), v0.0.2
(function(){function t(e){this.path=e;var t=this.path.split("."),n=t.slice(0,t.length-1).join("."),r=t[t.length-1];this.at_2x_path=n+"@2x."+r}function n(e){this.el=e,this.path=new t(this.el.getAttribute("src"));var n=this;this.path.check_2x_variant(function(e){e&&n.swap()})}var e=typeof exports=="undefined"?window:exports;e.RetinaImagePath=t,t.confirmed_paths=[],t.prototype.is_external=function(){return!!this.path.match(/^https?\:/i)&&!this.path.match("//"+document.domain)},t.prototype.check_2x_variant=function(e){var n,r=this;if(this.is_external())return e(!1);if(this.at_2x_path in t.confirmed_paths)return e(!0);n=new XMLHttpRequest,n.open("HEAD",this.at_2x_path),n.onreadystatechange=function(){return n.readyState!=4?e(!1):n.status>=200&&n.status<=399?(t.confirmed_paths.push(r.at_2x_path),e(!0)):e(!1)},n.send()},e.RetinaImage=n,n.prototype.swap=function(e){function n(){t.el.complete?(t.el.setAttribute("width",t.el.offsetWidth),t.el.setAttribute("height",t.el.offsetHeight),t.el.setAttribute("src",e)):setTimeout(n,5)}typeof e=="undefined"&&(e=this.path.at_2x_path);var t=this;n()},e.devicePixelRatio>1&&(window.onload=function(){var e=document.getElementsByTagName("img"),t=[],r,i;for(r=0;r<e.length;r++)i=e[r],t.push(new n(i))})})();