web/wp-content/plugins/acf-extended/assets/js/acfe-ui.js (244 lines of code) (raw):
(function($) {
if (typeof acf === 'undefined' || typeof acfe === 'undefined') {
return;
}
acfe.enhancedEditUI = function(props) {
return new enhancedEditUI(props);
};
var enhancedEditUI = acf.Model.extend({
data: {
screen: false,
submit: '> p.submit',
pageTitle: false
},
title: false,
$form: false,
$main: false,
$sidebar: false,
setup: function(props) {
// Extend data
$.extend(this.data, props);
// $el
this.$el = $('.wrap');
this.$el.attr('id', 'poststuff');
// Init
this.$('> form').wrapInner('<div class="acf-columns-2"><div class="acf-column-1"></div></div>');
$('#side-sortables').appendTo('.acf-columns-2').wrapAll('<div class="acf-column-2"></div>');
// Vars
this.title = this.$('> h1').text();
this.$form = this.$('> form');
this.$main = this.$('.acf-column-1');
this.$sidebar = this.$('.acf-column-2');
// Fake Page Title
if (this.get('pageTitle')) {
this.$main.find('> table:first').before('<h2>' + this.title + '</h2>');
}
// Sidebar Title
$('#submitdiv > .postbox-header > h2.hndle').text(this.title);
// Submit: Move to Sidebar
this.$main.find(this.get('submit')).contents().appendTo('#publishing-action');
this.$main.find(this.get('submit')).remove();
// Submit: Button
$('#submitdiv #publishing-action .button').addClass('button-large').after('<span class="spinner"></span>');
},
events: {
'submit form': 'onSubmit'
},
initialize: function() {
this.addActions({
'acfe/ui/user-edit': 'userEdit',
'acfe/ui/user-new': 'userNew',
'acfe/ui/term-edit': 'termEdit',
'acfe/ui/settings': 'settings',
});
acf.doAction('acfe/ui/' + this.get('screen'), this);
},
onSubmit: function(e, $el) {
acf.lockForm($el);
},
userEdit: function() {
// Vars
var $main = this.$main;
// Metabox: After Title
$main.prepend($('#acf_after_title-sortables'));
// Yoast Settings
var $yoastSettings = this.$('> form .yoast.yoast-settings');
if ($yoastSettings.length) {
$yoastSettings.addClass('postbox');
$yoastSettings.find('> h2').wrapAll('<div class="postbox-header"></div>');
$yoastSettings.find('> .postbox-header ~ *').wrapAll('<div class="acf-fields -left"></div>');
$yoastSettings.find('.acf-fields > label:nth-of-type(1), .acf-fields > input:nth-of-type(1)').wrapAll('<div class="acf-field"></div>');
$yoastSettings.find('.acf-fields > label:nth-of-type(1), .acf-fields > label:nth-of-type(1) ~ *').wrapAll('<div class="acf-field"></div>');
$yoastSettings.find('.acf-fields > br').remove();
$yoastSettings.find('.acf-field').each(function() {
var $this = $(this);
$this.find('label:nth-of-type(1)').wrapAll('<div class="acf-label"></div>');
$this.find('.acf-label ~ *').wrapAll('<div class="acf-input"></div>');
});
}
// User Role Editor
var $userRoleEditor = this.$('#ure_select_other_roles');
if ($userRoleEditor.length) {
$userRoleEditor.closest('table').find('tr:eq(1) > td > br').remove();
}
// Application Passwords
var $applicationPasswords = $('#application-passwords-section');
if ($applicationPasswords.length) {
var title = $applicationPasswords.find('> h2').text();
$applicationPasswords.addClass('postbox');
$applicationPasswords.wrapInner('<div class="acf-fields -left"><div class="acf-field"><div class="acf-input"></div></div></div>');
$applicationPasswords.find('.acf-input > h2').insertBefore($applicationPasswords.find('.acf-fields')).wrapAll('<div class="postbox-header"></div>');
$applicationPasswords.find('.acf-input').before('<div class="acf-label"><label>' + title + '</label></div>');
$applicationPasswords.find('.acf-input > p:first').css('margin-top', 15).insertBefore($applicationPasswords.find('p.submit'));
$applicationPasswords.find('.acf-input > .create-application-password > .form-field').removeClass('form-field');
$applicationPasswords.find('.acf-input > .create-application-password > div > label').remove();
}
// Nickname Field
var $userNickname = $('input#nickname');
if ($userNickname.length) {
$userNickname.wrapAll('<div id="titlediv"><div id="titlewrap"></div></div>');
$('#titlediv').append($('#edit-slug-box')).prependTo($main);
$main.find('tr.user-nickname-wrap').remove();
}
// Reorder Name to first metabox
$main.find('> h2:eq(1), > h2:eq(1) + table').insertBefore($main.find('> h2:first'));
},
userNew: function() {
// Vars
var $main = this.$main;
this.$('> p:first').insertAfter($main.find('>h2:first'));
$main.prepend($('#acf_after_title-sortables'));
},
termEdit: function() {
// Vars
var $main = this.$main;
// Term Name Field
var $termName = $('input#name');
if ($termName.length) {
$termName.wrapAll('<div id="titlediv"><div id="titlewrap"></div></div>');
$('#titlediv').append($('.permalink')).prependTo($main);
$main.find('tr.term-name-wrap').remove();
}
// WPML Widget
var $wpml = $('#icl_tax_menu');
if ($wpml.length) {
var widgetTitle = $wpml.find('h3.hndle').text();
$wpml.find('.inside').addClass('icl-tax-postbox-content').attr('style', '').insertAfter('#submitdiv');
this.$sidebar.find('.icl-tax-postbox-content').wrapAll('<div id="icl-tax-postbox" class="postbox"></div>').parent().prepend('<div class="postbox-header"><h2 class="hdnle">' + widgetTitle + '</h2></div>');
}
// Yoast
var $yoast = $('.wpseo-taxonomy-metabox-postbox');
if ($yoast.length) {
var metaboxTitle = $yoast.find('> h2').text();
$yoast.find('> .inside').removeClass('inside').wrapAll('<div class="acf-fields -left"><div class="acf-field"><div class="acf-input"></div></div></div>');
$('<div class="acf-label"><label>' + metaboxTitle + '</label></div>').insertBefore($yoast.find('.acf-input'));
}
// Add Class to submitdiv to let rankmath save changes
$('#submitdiv #publishing-action').addClass('edit-tag-actions');
},
settings: function() {
// Fix potential empty locale causing error
if (!acf.get('locale'))
acf.set('locale', 'en_US');
// Form Data
$('#acf-form-data').prependTo(this.$form);
// Metabox: After title
$('#acf_after_title-sortables').prependTo(this.$main);
// Metabox: Normal
$('#normal-sortables').appendTo(this.$main);
// Writing: Ping
var $pingSites = this.$('#ping_sites');
if ($pingSites.length) {
$pingSites.wrap('<table class="form-table"><tbody><td class="td-full"></td></tbody></table>');
$pingSites.css('width', '100%');
}
// Permlalinks
var $permalinks = this.$('.permalink-structure');
if ($permalinks.length) {
$permalinks.prev().prev('p').insertBefore($permalinks);
}
},
});
acfe.enhancedListUI = function(props) {
return new enhancedListUI(props);
};
var enhancedListUI = acf.Model.extend({
data: {
taxonomy: false,
},
setup: function(props) {
// Extend data
$.extend(this.data, props);
},
initialize: function() {
// Add button
$('.wrap .wp-heading-inline').after($('#tmpl-button-add-term').html());
// Move form
$('#ajax-response').after($('#col-container #col-left').addClass('acfe-bt'));
// Hide form
$('.acfe-bt').hide();
// Create wrapper
$('.acfe-bt .form-wrap').append('<div id="poststuff"></div>');
// Append form inside wrapper
var $newForm = $('.acfe-bt .form-wrap form');
$('.acfe-bt #poststuff').append($newForm);
$newForm.wrapInner('<div class="postbox" id="acfe-bt-form"><div class="inside"></div></div>');
// Append new title
var $nativeTitle = $('.acfe-bt .form-wrap > h2');
$('.acfe-bt .postbox').prepend('<h2 class="hndle">' + $nativeTitle.text() + '</h2>');
$nativeTitle.remove();
// ACF class
$('.acfe-bt .inside .form-field').addClass('acf-field');
$('.acfe-bt .inside .submit').addClass('form-field');
$('.acfe-bt .inside .form-field').each(function() {
var $this = $(this);
// Polylang Exception
if ($this.is('#term-translations'))
return;
$this.append('<div class="acf-input"></div>');
$this.find('.acf-input').append($this.find('> :not("label")'));
// Add spacing when a meta field has no label
var $label = $this.find('> label');
if ($label.length) {
$label.wrap('<div class="acf-label"></div>');
} else {
$this.addClass('acfe-bt-no-label');
}
});
// Remove ACF Fields id
$('#acf-term-fields').contents().unwrap();
// Button
var $newButton = $('.acfe-bt-admin-button-add');
$newButton.click(function(e) {
e.preventDefault();
var $wrap = $('.acfe-bt');
if ($wrap.is(':visible')) {
$wrap.hide();
} else {
$wrap.show();
}
});
// Label to left
if (typeof acf !== 'undefined') {
acf.postbox.render({
'id': 'acfe-bt-form',
'label': 'left'
});
}
$('#acfe-bt-form .acf-tab-wrap.-left').removeClass('-left').addClass('-top');
// WPML Widget
var $wpml = $('#icl_tax_menu');
if ($wpml.length) {
var $wpmlWidget = $wpml.find('.postbox').removeClass('postbox');
$wpmlWidget.find('.inside').removeClass('inside').css('padding', 0);
$wpmlWidget.insertBefore('.acfe-bt .inside .submit');
var wpmlTitle = $wpmlWidget.find('h3.hndle').text();
$wpmlWidget.find('.hndle').remove();
$wpmlWidget.wrapAll('<div class="form-field acf-field"><div class="acf-input"></div></div>').parent().parent().prepend('<div class="acf-label"><label>' + wpmlTitle + '</label></div>');
}
this.addAction('ready', 'ready');
},
ready: function() {
// LearnDash taxonomies buttons
$('.global-new-entity-button').click(function(e) {
e.preventDefault();
var $wrap = $('.acfe-bt');
if ($wrap.is(':visible')) {
$wrap.hide();
} else {
$wrap.show();
}
});
}
});
acfe.enhancedAttachmentUI = function(props) {
return new enhancedAttachmentUI(props);
};
var enhancedAttachmentUI = acf.Model.extend({
data: {
title: 'Edit Media'
},
setup: function(props) {
// extend data
$.extend(this.data, props);
// set element
this.$el = $('.wrap');
},
initialize: function() {
// postbox
this.$('.wp_attachment_details').addClass('postbox acf-postbox');
this.$('.wp_attachment_details').wrapInner('<div class="inside acf-fields -left" />');
this.$('.wp_attachment_details').prepend('<div class="postbox-header"><h2 class="hndle">' + this.get('title') + '</h2></div>');
// acf fields
this.$('.wp_attachment_details').find('.attachment-alt-text-description ~ p').wrapAll('<div class="acf-field acfe-caption" />');
this.$('.wp_attachment_details').find('.attachment-alt-text, .attachment-alt-text-description').wrapAll('<div class="acf-field acfe-alt-text" />');
this.$('.wp_attachment_details').find('label.attachment-content-description, #wp-attachment_content-wrap').wrapAll('<div class="acf-field acfe-description" />');
// alt text
this.$('.acf-field.acfe-alt-text').find('label').wrapAll('<div class="acf-label" />');
this.$('.acf-field.acfe-alt-text').find('.acf-label').prependTo('.acf-field.acfe-alt-text');
this.$('.acf-field.acfe-alt-text').find('input, textarea, p.attachment-alt-text-description').wrapAll('<div class="acf-input" />');
this.$('.acf-field.acfe-alt-text').find('.acf-input').appendTo('.acf-field.acfe-alt-text');
this.$('.acf-field.acfe-alt-text').find('.attachment-alt-text').remove();
// caption
this.$('.acf-field.acfe-caption').find('label').wrapAll('<div class="acf-label" />');
this.$('.acf-field.acfe-caption').find('.acf-label').prependTo('.acf-field.acfe-caption');
this.$('.acf-field.acfe-caption').find('textarea').wrapAll('<div class="acf-input" />');
this.$('.acf-field.acfe-caption').find('.acf-input').appendTo('.acf-field.acfe-caption');
this.$('.acf-field.acfe-caption').find('> p').remove();
// description
this.$('.acf-field.acfe-description').find('label').wrapAll('<div class="acf-label" />');
this.$('.acf-field.acfe-description').find('#wp-attachment_content-wrap').wrapAll('<div class="acf-input" />');
},
});
})(jQuery);