Файл: static/plugins/base/js/attachments.js
Строк: 364
<?php
var PEEPFileAttachment = function(params) {
$.extend(this, params);
this.$context = $('#' + this.uid);
this.$previewCont = $('.peep_file_attachment_preview', this.$context);
this.inputCont = this.selector ? $(this.selector) : $('a.attach', this.$context);
var self = this;
var items = {};
var itemId = 1;
var refreshClasses = function() {
var itemIndex = 1;
$.each(items,
function(index, data) {
data['html'].removeClass('peep_file_attachment_block1').removeClass('peep_file_attachment_block2').addClass('peep_file_attachment_block' + itemIndex);
itemIndex = itemIndex == 1 ? 2 : 1;
}
);
};
this.addItem = function(data, loader, customDeleteUrl, customConfirmation) {
data['html'] = $('<div><div class="peep_file_attachment_info">' +
'<div class="peep_file_attachment_name">' + data.name + ' <span class="peep_file_attachment_size" style="display: inline-block;">(' + data.size + 'KB)</span></div>' +
'<div class="peep_file_attachment_preload" style="display:' + (loader ? 'block' : 'none') + ';"></div>' +
'<a href="javascript://" class="peep_file_attachment_close"></a>' +
'</div></div>');
if (typeof customDeleteUrl != "undefined")
{
data['customDeleteUrl'] = customDeleteUrl;
}
self.$previewCont.append(data['html']);
PEEP.trigger('base.attachment_rendered', {'data' : data}, this);
$('.peep_file_attachment_close', data['html']).bind('click', function() {
var confirmed = true;
if (typeof customConfirmation != "undefined") {
confirmed = confirm(customConfirmation);
}
if (confirmed) {
self.deleteItem(data['id'], customDeleteUrl);
}
});
};
/**
* Render uploaded items
*
* @param object uploadedItems
* @param string customDeleteUrl
* @param string customConfirmation
*/
this.renderUploaded = function(uploadedItems, customDeleteUrl, customConfirmation) {
$.each(uploadedItems, function(index, data) {
self.addItem(data, true, customDeleteUrl, customConfirmation);
itemId++;
});
$.extend(items, uploadedItems);
refreshClasses();
}
this.initInput = function() {
var $input = $('<input class="mlt_file_input" type="file"' + (this.multiple ? ' multiple=""' : '') + ' name="peep_file_attachment[]" />');
this.inputCont.append($input);
$input.change(
function(e) {
var inItems = {};
// check if files array is available
if (this.files != undefined) {
var elData;
for (var i = 0; i < this.files.length; i++) {
elData = this.files[i];
inItems[itemId] = {id: itemId++, name: elData.name, size: (Math.round(elData.size / 1024))};
}
}
else {
}
if (self.showPreview) {
$.each(inItems,
function(index, data) {
self.addItem(data, true);
}
);
}
PEEP.trigger('base.add_attachment_to_queue', {'pluginKey': self.pluginKey, 'uid': self.uid, 'items': items});
$.extend(items, inItems);
if (self.showPreview) {
refreshClasses();
}
self.submitFiles(inItems);
}
);
};
this.submitFiles = function(data) {
var idList = [], idListIndex = 0;
$.each(data, function() {
idList[idListIndex++] = this.id;
}
);
var index = idList.join('_');
var nameObj = {};
$.each(items, function(index, item) {
nameObj[item.name] = item.id;
});
$form = $('<form method="post" action="' + self.submitUrl + '?flUid=' + self.uid + '" enctype="multipart/form-data" target="form_' + index + '"><input type="hidden" name="flData" value="' +
encodeURIComponent(JSON.stringify(nameObj)) + '" /><input type="hidden" name="flUid" value="' + self.uid + '"><input type="hidden" name="pluginKey" value="' + self.pluginKey + '">' +
'</form>')
.append($('input[type=file]', self.inputCont));
// $form.appendTo($('body'));
$('<div style="display:none" id="hd_' + index + '"><div>').appendTo($('body'))
.append($('<iframe name="form_' + index + '"></iframe>'))
.append($form);
$form.submit();
self.initInput();
};
this.updateItems = function(data) {
if (!data.result && data.noData) {
PEEP.error(data.message);
return;
}
var indexList = [];
if (data.items) {
$.each(data.items, function(index, item) {
indexList.push(index);
if (item.result) {
items[index]['dbId'] = item['dbId'];
if( items[index]['cancelled'] ){
self.deleteItem(index);
return;
}
if (self.showPreview) {
$('.peep_file_attachment_preload', items[index]['html']).hide();
}
} else {
self.deleteItem(index);
if (self.showPreview) {
PEEP.error(item.message);
}
}
});
PEEP.trigger('base.update_attachment', {'pluginKey': self.pluginKey, 'uid': self.uid, 'items': data.items});
}
$('#hd_' + indexList.join('_')).remove();
};
this.deleteItem = function(id, customDeleteUrl) {
PEEP.trigger('base.attachment_deleted', {'id' : id}, this);
if (self.showPreview) {
items[id]['html'].remove();
}
if( !items[id]['dbId'] ){
items[id]['cancelled'] = true;
return;
}
$.ajax({
url: (typeof customDeleteUrl == "undefined" ? self.deleteUrl : customDeleteUrl),
data: {id: items[id]['dbId']},
method: "POST"
});
delete items[id];
if (self.showPreview) {
refreshClasses();
}
};
this.reset = function(id, callback) {
self.uid = id;
if (typeof callback != "undefined") {
callback.call({}, items);
}
if (self.showPreview) {
$.each(items,
function(index, data) {
data['html'].remove();
}
);
refreshClasses();
}
items = {};
itemId = 1;
};
$.each(self.lItems, function(index, lItem) {
items[itemId] = {id: itemId++, name: lItem.name, size: lItem.size, dbId: lItem.dbId};
});
if (self.showPreview) {
$.each(items,
function(index, data) {
self.addItem(data, false);
}
);
refreshClasses();
}
this.initInput();
};
PEEP.bind('base.file_attachment', function(data) {
if (peepFileAttachments[data.uid]) {
peepFileAttachments[data.newUid] = peepFileAttachments[data.uid];
delete peepFileAttachments[data.uid];
peepFileAttachments[data.newUid].reset(data.newUid);
}
});
window.peepFileAttachments = {};
var PEEPPhotoAttachment = function(params) {
$.extend(this, params);
var self = this, $previewCont = $('#' + this.previewId),
$buttonCont = $('#' + this.buttonId),
$form,
$iframe = null,
$item = $('.peep_photo_attachment_pic', $previewCont),
canceled = false;
this.eventParams = {uid: self.uid, pluginKey: self.pluginKey};
this.initInput = function() {
var $input = $('<input class="mlt_file_input" type="file" name="attachment" />'), self = this;
$buttonCont.empty().append($input).show();
PEEP.trigger('base.attachment_show_button_cont', self.eventParams);
$item.css({backgroundImage: ''}).unbind('click').addClass('loading');
canceled = false;
$previewCont.hide();
$('div', $item).unbind('click').click(function() {
canceled = true;
$previewCont.hide();
self.initInput();
PEEP.trigger('base.attachment_deleted', self.eventParams);
});
if ($iframe != null) {
$iframe.remove();
}
if ($form != null) {
$form.remove();
}
$input.change(
function(e) {
$buttonCont.hide();
PEEP.trigger('base.attachment_hide_button_cont', self.eventParams);
$previewCont.show();
$form = $('<form method="post" action="' + self.addPhotoUrl + '?flUid=' + self.uid + '" enctype="multipart/form-data" target="form_' + self.uid + '">' +
'<input type="hidden" name="flUid" value="' + self.uid + '"><input type="hidden" name="pluginKey" value="' + self.pluginKey + '"></form>')
.append($('input[type=file]', $buttonCont));
$iframe = $('<div style="display:none" id="hd_' + self.uid + '"><div>').appendTo($('body'))
.append($('<iframe name="form_' + self.uid + '"></iframe>'))
.append($form);
$form.submit();
PEEP.trigger('base.add_photo_attachment_submit', self.eventParams);
}
);
};
this.updateItem = function(data) {
if (canceled) {
canceled = false;
return;
}
var self = this, eventParams = {uid: self.uid, pluginKey: self.pluginKey, url: data.url};
if (data.result) {
var previewImg = new Image();
previewImg.onload = function() {
$item.removeClass('loading').css({backgroundImage: 'url(' + data.url + ')'}).click(function() {
PEEP.showImageInFloatBox(data.url)
});
$('div', $item).unbind('click').click(function(e) {
e.stopPropagation();
self.initInput();
PEEP.trigger('base.attachment_deleted', eventParams);
});
PEEP.trigger('base.attachment_added', eventParams);
};
previewImg.src = data.url;
}
else {
if (data.message) {
PEEP.error(data.message);
}
self.initInput();
}
};
this.resetUid = function(data) {
this.uid = data;
this.eventParams.uid = this.uid;
self.initInput();
};
PEEP.bind('base.photo_attachment_reset', function(data) {
if (data.uid == self.uid && data.pluginKey == self.pluginKey)
self.initInput();
});
this.initInput();
};
window.peepPhotoAttachment = {};
PEEP.bind('base.photo_attachment_uid_update', function(data) {
if (peepPhotoAttachment[data.uid]) {
peepPhotoAttachment[data.newUid] = peepPhotoAttachment[data.uid];
delete peepPhotoAttachment[data.uid];
peepPhotoAttachment[data.newUid].resetUid(data.newUid);
}
});
?>