Files
wordpress-preseed/wp-content/plugins/media-library-assistant/js/mla-edit-media-scripts.js
2019-10-24 00:12:05 +02:00

252 lines
9.7 KiB
JavaScript

var jQuery,
mla_edit_media_vars,
mla = {
// Properties
// mla.settings.uploadLabel
// mla.settings.modifyLabel
settings: {},
// Utility functions
utility: {
},
// Components
setParent: null,
mlaEditAttachment: null
};
( function( $ ) {
// Localized settings and strings
mla.settings = typeof mla_edit_media_vars === 'undefined' ? {} : mla_edit_media_vars;
mla_edit_media_vars = void 0; // delete won't work on Globals
// The mlaEditAttachment functions are adapted from wp-admin/js/post.js
mla.mlaEditAttachment = {
$uploaddiv : null,
uploadtimestamp : '',
$modifydiv : null,
modifytimestamp : '',
init : function(){
$( '#mla_set_parent' ).on( 'click', function(){
return mla.mlaEditAttachment.setParentOpen();
});
$('.categorydiv').each( function(){
var this_id = $(this).attr('id'), taxonomyParts, taxonomy;
taxonomyParts = this_id.split('-');
taxonomyParts.shift(); // taxonomy-
taxonomy = taxonomyParts.join('-');
$.extend( $.expr[":"], {
"matchTerms": function( elem, i, match, array ) {
return ( elem.textContent || elem.innerText || "" ).toLowerCase().indexOf( ( match[3] || "" ).toLowerCase() ) >= 0;
}
});
$( '#search-' + taxonomy ).keypress( function( event ){
if( 13 === event.keyCode ) {
event.preventDefault();
$( '#search-' + taxonomy ).val( '' );
$( '#' + taxonomy + '-searcher' ).addClass( 'wp-hidden-children' );
$( '#' + taxonomy + 'checklist li' ).show();
$( '#' + taxonomy + 'checklist-pop li' ).show();
return;
}
} );
$( '#search-' + taxonomy ).keyup( function( event ){
var searchValue, termList, termListPopular, matchingTerms, matchingTermsPopular;
if( 13 === event.keyCode ) {
event.preventDefault();
$( '#' + taxonomy + '-search-toggle' ).focus();
return;
}
searchValue = $( '#search-' + taxonomy ).val();
termList = $( '#' + taxonomy + 'checklist li' );
termListPopular = $( '#' + taxonomy + 'checklist-pop li' );
if ( 0 < searchValue.length ) {
termList.hide();
termListPopular.hide();
} else {
termList.show();
termListPopular.show();
}
matchingTerms = $( '#' + taxonomy + "checklist label:matchTerms('" + searchValue + "')");
matchingTerms.closest( 'li' ).find( 'li' ).andSelf().show();
matchingTerms.parents( '#' + taxonomy + 'checklist li' ).show();
matchingTermsPopular = $( '#' + taxonomy + "checklist-pop label:matchTerms('" + searchValue + "')");
matchingTermsPopular.closest( 'li' ).find( 'li' ).andSelf().show();
matchingTermsPopular.parents( '#' + taxonomy + 'checklist li' ).show();
} );
$( '#' + taxonomy + '-search-toggle' ).click( function() {
$( '#' + taxonomy + '-adder ').addClass( 'wp-hidden-children' );
$( '#' + taxonomy + '-searcher' ).toggleClass( 'wp-hidden-children' );
$( 'a[href="#' + taxonomy + '-all"]', '#' + taxonomy + '-tabs' ).click();
$( '#' + taxonomy + 'checklist li' ).show();
$( '#' + taxonomy + 'checklist-pop li' ).show();
if ( false === $( '#' + taxonomy + '-searcher' ).hasClass( 'wp-hidden-children' ) ) {
$( '#search-' + taxonomy ).val( '' ).removeClass( 'form-input-tip' );
$( '#search-' + taxonomy ).focus();
}
return false;
});
// Supplement the click logic in wp-admin/js/post.js
$( '#' + taxonomy + '-add-toggle' ).click( function() {
$( '#' + taxonomy + '-searcher' ).addClass( 'wp-hidden-children' );
return false;
});
}); // .categorydiv.each,
// Save Post box (#submitdiv), for Uploaded on and Last modified dates
if ( $('#submitdiv').length ) {
mla.mlaEditAttachment.uploadtimestamp = $('#upload-timestamp').html();
mla.mlaEditAttachment.$uploaddiv = $('#timestampdiv');
//mla.mlaEditAttachment.modifytimestamp = $('#modify-timestamp').html();
//mla.mlaEditAttachment.$modifydiv = $('#modifytimestampdiv');
// Edit Uploaded on click.
mla.mlaEditAttachment.$uploaddiv.siblings('a.edit-timestamp').click( function( event ) {
if ( mla.mlaEditAttachment.$uploaddiv.is( ':hidden' ) ) {
mla.mlaEditAttachment.$uploaddiv.slideDown( 'fast', function() {
$( 'input, select', mla.mlaEditAttachment.$uploaddiv.find( '.timestamp-wrap' ) ).first().focus();
} );
$(this).hide();
}
event.preventDefault();
});
// Cancel editing the Uploaded on time and hide the settings.
mla.mlaEditAttachment.$uploaddiv.find('.cancel-timestamp').click( function( event ) {
mla.mlaEditAttachment.$uploaddiv.slideUp('fast').siblings('a.edit-timestamp').show().focus();
$( '#mm', mla.mlaEditAttachment.$uploaddiv ).val($( '#hidden_mm', mla.mlaEditAttachment.$uploaddiv ).val());
$( '#jj', mla.mlaEditAttachment.$uploaddiv ).val($( '#hidden_jj', mla.mlaEditAttachment.$uploaddiv ).val());
$( '#aa', mla.mlaEditAttachment.$uploaddiv ).val($( '#hidden_aa', mla.mlaEditAttachment.$uploaddiv ).val());
$( '#hh', mla.mlaEditAttachment.$uploaddiv ).val($( '#hidden_hh', mla.mlaEditAttachment.$uploaddiv ).val());
$( '#mn', mla.mlaEditAttachment.$uploaddiv ).val($( '#hidden_mn', mla.mlaEditAttachment.$uploaddiv ).val());
mla.mlaEditAttachment.updateText( mla.mlaEditAttachment.$uploaddiv, mla.mlaEditAttachment.uploadtimestamp, '#upload-timestamp' );
event.preventDefault();
});
// Save the changed Uploaded on timestamp.
mla.mlaEditAttachment.$uploaddiv.find('.save-timestamp').click( function( event ) { // crazyhorse - multiple ok cancels
if ( mla.mlaEditAttachment.updateText( mla.mlaEditAttachment.$uploaddiv, mla.mlaEditAttachment.uploadtimestamp, '#upload-timestamp' ) ) {
mla.mlaEditAttachment.$uploaddiv.slideUp('fast');
mla.mlaEditAttachment.$uploaddiv.siblings('a.edit-timestamp').show().focus();
}
event.preventDefault();
});
// Cancel submit when an invalid Uploaded on timestamp has been selected.
$('#post').on( 'submit', function( event ) {
if ( ! mla.mlaEditAttachment.updateText( mla.mlaEditAttachment.$uploaddiv, mla.mlaEditAttachment.uploadtimestamp, '#upload-timestamp' ) ) {
event.preventDefault();
mla.mlaEditAttachment.$uploaddiv.show();
if ( wp.autosave ) {
wp.autosave.enableButtons();
}
$( '#publishing-action .spinner' ).removeClass( 'is-active' );
}
});
} // $('#submitdiv').length
}, // function init
setParentOpen : function() {
var parentId, postId, postTitle;
parentId = $( '#mla_post_parent' ).val() || '';
postId = $( '#post_ID' ).val() || '';
postTitle = $( '#title' ).val() || '';
mla.setParent.open( parentId, postId, postTitle );
// Grab the "Update" button
$( '#mla-set-parent-submit' ).on( 'click', function( event ){
event.preventDefault();
mla.mlaEditAttachment.setParentSave();
return false;
});
},
setParentSave : function() {
var foundRow = $( '#mla-set-parent-response-div input:checked' ).closest( 'tr' ),
parentId, parentTitle, newParent, newTitle;
if ( foundRow.length ) {
parentId = $( ':radio', foundRow ).val() || '';
parentTitle = $( 'label', foundRow ).html() || '';
newParent = $( '#mla_post_parent' ).clone( true ).val( parentId );
newTitle = $( '#mla_parent_info' ).clone( true ).val( parentTitle );
$( '#mla_post_parent' ).replaceWith( newParent );
$( '#mla_parent_info' ).replaceWith( newTitle );
mla.setParent.close();
}
$( '#mla-set-parent-submit' ).off( 'click' );
},
/*
* Make sure all Uploaded on or Last Modified labels represent the current settings.
*
* @returns {boolean} False when an invalid timestamp has been selected, otherwise True.
*/
updateText : function( $div, stamp, stampdiv ) {
if ( ! $div.length )
return true;
var attemptedDate, originalDate, currentDate,
aa = $( '#aa', $div ).val(), mm = $( '#mm', $div ).val(), jj = $( '#jj', $div ).val(),
hh = $( '#hh', $div ).val(), mn = $( '#mn', $div ).val();
attemptedDate = new Date( aa, mm - 1, jj, hh, mn );
originalDate = new Date( $( '#hidden_aa', $div ).val(), $( '#hidden_mm', $div ).val() -1, $( '#hidden_jj', $div ).val(), $( '#hidden_hh', $div ).val(), $( '#hidden_mn', $div ).val() );
currentDate = new Date( $( '#cur_aa', $div ).val(), $( '#cur_mm', $div ).val() -1, $( '#cur_jj', $div ).val(), $( '#cur_hh', $div ).val(), $( '#cur_mn', $div ).val() );
// Catch unexpected date problems.
if ( attemptedDate.getFullYear() != aa || (1 + attemptedDate.getMonth()) != mm || attemptedDate.getDate() != jj || attemptedDate.getMinutes() != mn ) {
$div.find('.timestamp-wrap').addClass('form-invalid');
return false;
} else {
$div.find('.timestamp-wrap').removeClass('form-invalid');
}
// If the date is the same, set it to trigger update events.
if ( originalDate.toUTCString() == attemptedDate.toUTCString() ) {
// Re-set to the current value.
$( stampdiv ).html( stamp );
} else {
label = '#upload-timestamp' == stampdiv ? mla.settings.uploadLabel : mla.settings.modifyLabel;
$( stampdiv ).html(
label + '<b>' +
postL10n.dateFormat
.replace( '%1$s', $( 'option[value="' + mm + '"]', '#mm' ).attr( 'data-text' ) )
.replace( '%2$s', parseInt( jj, 10 ) )
.replace( '%3$s', aa )
.replace( '%4$s', ( '00' + hh ).slice( -2 ) )
.replace( '%5$s', ( '00' + mn ).slice( -2 ) ) +
'</b> '
);
}
return true;
}
}; // mla.mlaEditAttachment
$( document ).ready( function(){ mla.mlaEditAttachment.init(); } );
})( jQuery );