Files
2024-07-16 13:57:46 +00:00

173 lines
8.4 KiB
JavaScript

var wpmfDuplicateModule;
(function ($) {
if (typeof ajaxurl === "undefined") {
ajaxurl = wpmf.vars.ajaxurl;
}
wpmfDuplicateModule = {
/**
* init event
*/
doEvent: function () {
/* Click duplicate file button */
$('.wpmf_btn_duplicate').off('click').on('click', function () {
var attachmentID = $('.wpmf_attachment_id').val();
wpmfDuplicateModule.doDuplicate(attachmentID);
});
},
/**
* Duplicate attachment
* @param id
*/
doDuplicate: function (id) {
if (typeof id !== 'undefined') {
$.ajax({
method: 'post',
url: ajaxurl,
dataType: 'json',
data: {
action: 'wpmf_duplicate_file',
id: id,
wpmf_nonce: wpmf.vars.wpmf_nonce
},
beforeSend: function () {
$('.wpmf_spinner').show();
$('.wpmf_message_duplicate').html(null);
},
success: function (res) {
$('.wpmf_spinner').hide();
if (res.status) {
wpmfFoldersModule.trigger('duplicateFile', wpmfFoldersModule.last_selected_folder);
$('.wpmf_message_duplicate').html('<div class="updated">' + res.message + '</div>');
} else {
$('.wpmf_message_duplicate').html('<div class="error">' + res.message + '</div>');
}
/* reset iframe after duplicate */
if (!$('body.upload-php table.media').length && wpmf.vars.wpmf_pagenow !== 'upload.php') {
setTimeout(function () {
wp.Uploader.queue.reset();
}, 1000);
}
wpmfFoldersModule.reloadAttachments();
wpmfFoldersModule.renderFolders();
}
});
}
}
};
$(document).ready(function () {
if (typeof wpmfFoldersModule === "undefined" || typeof wp === "undefined") {
return;
}
if ((wpmf.vars.wpmf_pagenow === 'upload.php' && !wpmfFoldersModule.page_type) || typeof wp.media === "undefined") {
return;
}
if (wpmfFoldersModule.page_type !== 'upload-list') {
/* base on /wp-includes/js/media-views.js */
var myduplicateForm = wp.media.view.AttachmentsBrowser;
var form_uplicate = '<button type="button" class="button wpmf_btn_duplicate">' + wpmf.l18n.duplicate_text + '<span class="wpmf_spinner"></span></button><p class="wpmf_message_duplicate"></p>';
if (typeof myduplicateForm !== "undefined") {
wp.media.view.AttachmentsBrowser = wp.media.view.AttachmentsBrowser.extend({
createSingle: function () {
/* Create duplicate button setting */
myduplicateForm.prototype.createSingle.apply(this, arguments);
var sidebar = this.sidebar;
if (wpmf.vars.wpmf_pagenow !== 'upload.php') {
if (typeof wpmf.vars.duplicate !== 'undefined' && parseInt(wpmf.vars.duplicate) === 1) {
$('.wpmf_btn_duplicate, .wpmf_spinner, .wpmf_message_duplicate').remove();
$(sidebar.$el).find('.attachment-info .details').append(form_uplicate);
wpmfDuplicateModule.doEvent();
}
}
}
});
}
/* Create duplicate button when wp smush plugin active*/
if (wpmf.vars.get_plugin_active.indexOf('wp-smush.php') !== -1) {
if( 'undefined' !== typeof wp.media.view &&
'undefined' !== typeof wp.media.view.Attachment.Details.TwoColumn ) {
// Local instance of the Attachment Details TwoColumn used in the edit attachment modal view
var wpmfAssignMediaTwoColumn = wp.media.view.Attachment.Details.TwoColumn;
/**
* Add Smush details to attachment.
*/
if (typeof wpmfAssignMediaTwoColumn !== "undefined") {
wp.media.view.Attachment.Details.TwoColumn = wp.media.view.Attachment.Details.TwoColumn.extend({
render: function () {
// Get Smush status for the image
wpmfAssignMediaTwoColumn.prototype.render.apply(this);
$( document ).ajaxComplete(function( event, xhr, settings ) {
var data = settings.data;
if (typeof data === 'string') {
if (data.indexOf('smush_get_attachment_details') !== -1) {
$('.wpmf_btn_duplicate, .wpmf_spinner, .wpmf_message_duplicate').remove();
$('.details').append(form_uplicate);
wpmfDuplicateModule.doEvent();
}
}
});
}
});
}
}
}
/* base on /wp-includes/js/media-views.js */
var myDuplicate = wp.media.view.Modal;
if (typeof myDuplicate !== "undefined") {
wp.media.view.Modal = wp.media.view.Modal.extend({
open: function () {
/* Create duplicate button setting */
myDuplicate.prototype.open.apply(this, arguments);
if (wpmf.vars.wpmf_pagenow === 'upload.php') {
if (typeof wpmf.vars.duplicate !== 'undefined' && parseInt(wpmf.vars.duplicate) === 1) {
setTimeout(function(){
$('.wpmf_btn_duplicate, .wpmf_spinner, .wpmf_message_duplicate').remove();
$('.attachment-details .details').append(form_uplicate);
wpmfDuplicateModule.doEvent();
},150);
}
}
}
});
}
if (wpmf.vars.wpmf_pagenow === 'upload.php') {
// create duplicate button when next and prev media items
var myEditAttachments = wp.media.view.MediaFrame.EditAttachments;
if (typeof myEditAttachments !== "undefined") {
wp.media.view.MediaFrame.EditAttachments = wp.media.view.MediaFrame.EditAttachments.extend({
previousMediaItem: function () {
/* Create duplicate button setting */
myEditAttachments.prototype.previousMediaItem.apply(this, arguments);
if (typeof wpmf.vars.duplicate !== 'undefined' && parseInt(wpmf.vars.duplicate) === 1) {
$('.wpmf_btn_duplicate, .wpmf_spinner, .wpmf_message_duplicate').remove();
$('.attachment-details .details').append(form_uplicate);
wpmfDuplicateModule.doEvent();
}
},
nextMediaItem: function () {
/* Create duplicate button setting */
myEditAttachments.prototype.nextMediaItem.apply(this, arguments);
if (typeof wpmf.vars.duplicate !== 'undefined' && parseInt(wpmf.vars.duplicate) === 1) {
$('.wpmf_btn_duplicate, .wpmf_spinner, .wpmf_message_duplicate').remove();
$('.attachment-details .details').append(form_uplicate);
wpmfDuplicateModule.doEvent();
}
}
});
}
}
}
});
}(jQuery));