Joywork/js/custom-uploader-new.js

224 lines
9.5 KiB
JavaScript
Raw Normal View History

2026-05-22 20:21:54 +02:00
$(document).ready(function() {
// editor save function
var saveEditedImage = function(item) {
// if still uploading
// pend and exit
if (item.upload && item.upload.status == 'loading')
return item.editor.isUploadPending = true;
// if not appended or not uploaded
if (!item.appended && !item.uploaded)
return;
// if no editor
if (!item.editor || !item.reader.width)
return;
// if uploaded
// resend upload
if (item.upload && item.upload.resend) {
item.editor._namee = item.name;
item.upload.resend();
}
};
// Enable fileuploader plugin
// Global settings for fileuploader plugin
var fileuploaderSettings = {
extensions: ['jpg', 'jpeg', 'png', 'gif', 'bmp'],
changeInput: ' ',
theme: 'thumbnails',
enableApi: true,
addMore: true,
fileMaxSize: 15,
thumbnails: {
box: '<div class="fileuploader-items">' +
'<ul class="fileuploader-items-list">' +
'<li class="fileuploader-thumbnails-input"><div class="fileuploader-thumbnails-input-inner"><i class="jw-action-icon-plus"></i></div></li>' +
'</ul>' +
'</div>',
item: '<li class="fileuploader-item">' +
'<div class="fileuploader-item-inner">' +
'<div class="thumbnail-holder">${image}</div>' +
'<div class="actions-holder">' +
'<a class="fileuploader-action fileuploader-action-sort" title="Изменить порядок"><i class="jw-action-icon-move"></i></a>' +
'<a class="fileuploader-action fileuploader-action-remove" title="Удалить"><i class="jw-action-icon-delete"></i></a>' +
'<a class="fileuploader-action fileuploader-action-popup" title="Настроить"><i class="jw-action-icon-settings"></i></a>' +
'</div>' +
'<div class="progress-holder">${progressBar}</div>' +
'</div>' +
'</li>',
item2: '<li class="fileuploader-item">' +
'<div class="fileuploader-item-inner">' +
'<div class="thumbnail-holder">${image}</div>' +
'<div class="actions-holder">' +
'<a class="fileuploader-action fileuploader-action-sort" title="Изменить порядок"><i class="jw-action-icon-move"></i></a>' +
'<a class="fileuploader-action fileuploader-action-remove" title="Удалить"><i class="jw-action-icon-delete"></i></a>' +
'</div>' +
'</div>' +
'</li>',
startImageRenderer: true,
canvasImage: false,
_selectors: {
list: '.fileuploader-items-list',
item: '.fileuploader-item',
start: '.fileuploader-action-start',
retry: '.fileuploader-action-retry',
remove: '.fileuploader-action-remove',
sorter: '.fileuploader-action-sort'
},
onItemShow: function(item, listEl) {
var plusInput = listEl.find('.fileuploader-thumbnails-input');
plusInput.insertAfter(item.html);
if(item.format == 'image') {
item.html.find('.fileuploader-item-icon').hide();
}
}
},
afterRender: function(listEl, parentEl, newInputEl, inputEl) {
var plusInput = listEl.find('.fileuploader-thumbnails-input'),
api = $.fileuploader.getInstance(inputEl.get(0));
plusInput.on('click', function() {
api.open();
});
},
upload : {
// upload URL {String}
url: '/ajax/uploader-object-new.php',
data: null,
type: 'POST',
enctype: 'multipart/form-data',
start: true,
synchron: true,
chunk: false,
onSuccess: function(data, item, listEl, parentEl, newInputEl, inputEl, textStatus, jqXHR) {
//todo
setTimeout(function() {
item.html.find('.progress-holder').remove();
}, 400);
},
onComplete: function(listEl, parentEl, newInputEl, inputEl, jqXHR, textStatus) {
// callback will go here
}
},
dragDrop: {
container: '.main-photo'
},
onRemove: function(item, listEl, p, o, s) {
var id = $('#id_obj').val();
if (id) {
$.ajax({
url: '/ajax/markPhotoToDeleteFromSelectel.php',
method: "post",
data: {
"path": item.name,
"objId": id
},
success: function (data) {
}
});
}
},
editor: {
cropper: {
showGrid: true
},
onSave: function(dataURL, item) {
saveEditedImage(item);
}
},
captions: {
feedback: 'Drag and drop files here',
feedback2: 'Drag and drop files here',
drop: 'Drag and drop files here',
removeConfirmation: "Удалить выбранный файл?",
errors: {
filesLimit: 'Только ${limit} файлов можно загрузить.',
filesType: 'Только ${extensions} файлы можно загрузить.',
fileSize: 'Превышение допустимого размера файла. Выберите файл размером не более ${fileMaxSize}MB.',
fileName: 'Файл с именем ${name} уже выбран.'
}
},
sorter: {
selectorExclude: null,
placeholder: '<li class="fileuploader-item fileuploader-sorter-placeholder"><div class="fileuploader-item-inner"></div></li>',
scrollContainer: window,
onSort: function(list, listEl, parentEl, newInputEl, inputEl) {
var api = $.fileuploader.getInstance(inputEl.get(0)),
fileList = api.getFileList(),
_list = [];
$.each(fileList, function(i, item) {
_list.push({
name: item.name,
index: item.index
});
});
}
}
}
var photoSettings = {
thumbnails: {
box: '<div class="fileuploader-items">' +
'<ul class="fileuploader-items-list">' +
'<li class="fileuploader-thumbnails-input"><div class="fileuploader-thumbnails-input-inner"><i class="jw-action-icon-plus"></i></div></li>' +
'</ul>' +
'</div>',
item: '<li class="fileuploader-item">' +
'<div class="fileuploader-item-inner">' +
'<div class="thumbnail-holder"><div style="position: absolute; top: 5px; left: 5px; z-index: 1"><input style="margin: 0 !important" type="checkbox" /></div>${image}</div>' +
'<div class="actions-holder">' +
'<a class="fileuploader-action fileuploader-action-sort" title="Изменить порядок"><i class="jw-action-icon-move"></i></a>' +
'<a class="fileuploader-action fileuploader-action-remove" title="Удалить"><i class="jw-action-icon-delete"></i></a>' +
'<a class="fileuploader-action fileuploader-action-popup" title="Настроить"><i class="jw-action-icon-settings"></i></a>' +
'</div>' +
'<div class="progress-holder">${progressBar}</div>' +
'</div>' +
'</li>',
item2: '<li class="fileuploader-item">' +
'<div class="fileuploader-item-inner">' +
'<div class="thumbnail-holder"><div style="position: absolute; top: 5px; left: 5px; z-index: 1"><input style="margin: 0 !important" type="checkbox" /></div>${image}</div>' +
'<div class="actions-holder">' +
'<a class="fileuploader-action fileuploader-action-sort" title="test порядок"><i class="jw-action-icon-move"></i></a>' +
'<a class="fileuploader-action fileuploader-action-remove" title="Удалить"><i class="jw-action-icon-delete"></i></a>' +
'</div>' +
'</div>' +
'</li>',
startImageRenderer: true,
canvasImage: false,
_selectors: {
list: '.fileuploader-items-list',
item: '.fileuploader-item',
start: '.fileuploader-action-start',
retry: '.fileuploader-action-retry',
remove: '.fileuploader-action-remove',
sorter: '.fileuploader-action-sort'
},
onItemShow: function(item, listEl) {
var plusInput = listEl.find('.fileuploader-thumbnails-input');
plusInput.insertAfter(item.html);
if(item.format == 'image') {
item.html.find('.fileuploader-item-icon').hide();
}
}
},
}
$('input#upload-object-edit').fileuploader(fileuploaderSettings);
$('input#upload-object-view').fileuploader({...fileuploaderSettings, ...photoSettings});
// Unique settings for plan uploader
var planSettings = {
dragDrop:{
container:'.plan-photo'
}
};
$('input[name="img_plan"]').fileuploader({...fileuploaderSettings, ...planSettings});
});