123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- /**
- * @output wp-admin/js/link.js
- */
- /* global postboxes, deleteUserSetting, setUserSetting, getUserSetting */
- jQuery( function($) {
- var newCat, noSyncChecks = false, syncChecks, catAddAfter;
- $('#link_name').trigger( 'focus' );
- // Postboxes.
- postboxes.add_postbox_toggles('link');
- /**
- * Adds event that opens a particular category tab.
- *
- * @ignore
- *
- * @return {boolean} Always returns false to prevent the default behavior.
- */
- $('#category-tabs a').on( 'click', function(){
- var t = $(this).attr('href');
- $(this).parent().addClass('tabs').siblings('li').removeClass('tabs');
- $('.tabs-panel').hide();
- $(t).show();
- if ( '#categories-all' == t )
- deleteUserSetting('cats');
- else
- setUserSetting('cats','pop');
- return false;
- });
- if ( getUserSetting('cats') )
- $('#category-tabs a[href="#categories-pop"]').trigger( 'click' );
- // Ajax Cat.
- newCat = $('#newcat').one( 'focus', function() { $(this).val( '' ).removeClass( 'form-input-tip' ); } );
- /**
- * After adding a new category, focus on the category add input field.
- *
- * @return {void}
- */
- $('#link-category-add-submit').on( 'click', function() { newCat.focus(); } );
- /**
- * Synchronize category checkboxes.
- *
- * This function makes sure that the checkboxes are synced between the all
- * categories tab and the most used categories tab.
- *
- * @since 2.5.0
- *
- * @return {void}
- */
- syncChecks = function() {
- if ( noSyncChecks )
- return;
- noSyncChecks = true;
- var th = $(this), c = th.is(':checked'), id = th.val().toString();
- $('#in-link-category-' + id + ', #in-popular-link_category-' + id).prop( 'checked', c );
- noSyncChecks = false;
- };
- /**
- * Adds event listeners to an added category.
- *
- * This is run on the addAfter event to make sure the correct event listeners
- * are bound to the DOM elements.
- *
- * @since 2.5.0
- *
- * @param {string} r Raw XML response returned from the server after adding a
- * category.
- * @param {Object} s List manager configuration object; settings for the Ajax
- * request.
- *
- * @return {void}
- */
- catAddAfter = function( r, s ) {
- $(s.what + ' response_data', r).each( function() {
- var t = $($(this).text());
- t.find( 'label' ).each( function() {
- var th = $(this),
- val = th.find('input').val(),
- id = th.find('input')[0].id,
- name = th.text().trim(),
- o;
- $('#' + id).on( 'change', syncChecks );
- o = $( '<option value="' + parseInt( val, 10 ) + '"></option>' ).text( name );
- } );
- } );
- };
- /*
- * Instantiates the list manager.
- *
- * @see js/_enqueues/lib/lists.js
- */
- $('#categorychecklist').wpList( {
- // CSS class name for alternate styling.
- alt: '',
- // The type of list.
- what: 'link-category',
- // ID of the element the parsed Ajax response will be stored in.
- response: 'category-ajax-response',
- // Callback that's run after an item got added to the list.
- addAfter: catAddAfter
- } );
- // All categories is the default tab, so we delete the user setting.
- $('a[href="#categories-all"]').on( 'click', function(){deleteUserSetting('cats');});
- // Set a preference for the popular categories to cookies.
- $('a[href="#categories-pop"]').on( 'click', function(){setUserSetting('cats','pop');});
- if ( 'pop' == getUserSetting('cats') )
- $('a[href="#categories-pop"]').trigger( 'click' );
- /**
- * Adds event handler that shows the interface controls to add a new category.
- *
- * @ignore
- *
- * @param {Event} event The event object.
- * @return {boolean} Always returns false to prevent regular link
- * functionality.
- */
- $('#category-add-toggle').on( 'click', function() {
- $(this).parents('div:first').toggleClass( 'wp-hidden-children' );
- $('#category-tabs a[href="#categories-all"]').trigger( 'click' );
- $('#newcategory').trigger( 'focus' );
- return false;
- } );
- $('.categorychecklist :checkbox').on( 'change', syncChecks ).filter( ':checked' ).trigger( 'change' );
- });
|