mediatheque
This commit is contained in:
@@ -0,0 +1,113 @@
|
||||
/**
|
||||
* some of the code is based on the Admin Addon Media Rename by Dávid Szabó
|
||||
* see https://github.com/david-szabo97/grav-plugin-admin-addon-media-rename
|
||||
*/
|
||||
$(function() {
|
||||
|
||||
adminAddonMediaMetadata.metadata = {};
|
||||
|
||||
var clickedElement;
|
||||
var fileName;
|
||||
var $elementName;
|
||||
var modal;
|
||||
var $modal;
|
||||
var isPageMedia = false;
|
||||
|
||||
// Append modal
|
||||
$('body').append(adminAddonMediaMetadata.MODAL);
|
||||
|
||||
$(document).off('click', '[data-dz-name], .dz-metadata-edit');
|
||||
$(document).on('click', '[data-dz-name], .dz-metadata-edit', function(e) {
|
||||
clickedElement = $(this);
|
||||
modal = $.remodal.lookup[$('[data-remodal-id=modal-admin-addon-media-metadata]').data('remodal')];
|
||||
$modal = modal.$modal;
|
||||
modal.open();
|
||||
|
||||
// Populate fields
|
||||
elementName = clickedElement.closest('.dz-preview').find('[data-dz-name]')
|
||||
fileName = elementName.text();
|
||||
$('[name=filename]', $modal).val(fileName);
|
||||
if (mediaListOnLoad[fileName] !== undefined) {
|
||||
for (var i = 0; i < metadataFormFields.length; i++) {
|
||||
$('[name=' + metadataFormFields[i] + ']', $modal).val(mediaListOnLoad[fileName][metadataFormFields[i]]);
|
||||
}
|
||||
} else {
|
||||
for (var i = 0; i < metadataFormFields.length; i++) {
|
||||
$('[name=' + metadataFormFields[i] + ']', $modal).val('');
|
||||
}
|
||||
}
|
||||
$modal.find('form span.filename').text(fileName);
|
||||
|
||||
// Reset loading state
|
||||
$('.loading', $modal).addClass('hidden');
|
||||
// $('.button', $modal).removeClass('hidden').css('visibility', 'hidden');
|
||||
$('.button', $modal).removeClass('hidden');
|
||||
|
||||
isPageMedia = !clickedElement.closest('.dz-preview').hasClass('dz-no-editor');
|
||||
$modal.find('.block-toggle').toggleClass('hidden', !isPageMedia);
|
||||
$modal.find('.page-media-info').toggleClass('hidden', !isPageMedia);
|
||||
$modal.find('.non-page-media-info').toggleClass('hidden', isPageMedia);
|
||||
});
|
||||
|
||||
/**
|
||||
* add the new data dynamically to mediaListOnLoad JSON object
|
||||
* for newly uploaded media files as well as for “older” files, overwriting the data already in that JSON object
|
||||
* and save it in the YAML file
|
||||
* Variables from above ($(document).on), like fileName and $modal are still available
|
||||
*/
|
||||
$(document).on('click', '[data-remodal-id=modal-admin-addon-media-metadata] .button', function(e) {
|
||||
// hiding the button and showing the loading icon
|
||||
$('.loading', $modal).removeClass('hidden');
|
||||
$('.button', $modal).addClass('hidden');
|
||||
|
||||
// create the file object for newly uploaded files
|
||||
if (mediaListOnLoad[fileName] === undefined) {
|
||||
mediaListOnLoad[fileName] = new Object();
|
||||
mediaListOnLoad[fileName]['filename'] = fileName;
|
||||
}
|
||||
|
||||
// Do request with JS Fetch API: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch
|
||||
var data = new FormData();
|
||||
data.append('filename', fileName);
|
||||
data.append('admin-nonce', GravAdmin.config.admin_nonce);
|
||||
|
||||
// add the new values to mediaListOnLoad (for later updates before page reload)
|
||||
// append the new values to the FormData (data.append)
|
||||
for (var i = 0; i < metadataFormFields.length; i++) {
|
||||
var newVal = $('[name=' + metadataFormFields[i] + ']', $modal).val();
|
||||
mediaListOnLoad[fileName][metadataFormFields[i]] = newVal;
|
||||
data.append(metadataFormFields[i], newVal);
|
||||
}
|
||||
|
||||
fetch(adminAddonMediaMetadata.PATH, { method: 'POST', body: data, credentials: 'same-origin' })
|
||||
//.then(res => res.json())
|
||||
.then(result => {
|
||||
if (result.error) {
|
||||
var alertModal = $.remodal.lookup[$('[data-remodal-id=modal-admin-addon-media-metadata-alert]').data('remodal')];
|
||||
alertModal.open();
|
||||
$('p', alertModal.$modal).html(result.error.msg);
|
||||
return;
|
||||
}
|
||||
|
||||
modal.close();
|
||||
});
|
||||
});
|
||||
|
||||
// adding the “edit metadata” button next to all media files
|
||||
setInterval(function addMetadataButton() {
|
||||
$('.dz-preview').each(function(i, dz) {
|
||||
if ($(this).find('.dz-metadata-edit').length == 0) {
|
||||
var editButton = document.createElement('a');
|
||||
//editButton.href = 'javascript:undefined;';
|
||||
editButton.title = adminAddonMediaMetadataButton;
|
||||
editButton.className = 'dz-metadata-edit';
|
||||
editButton.innerText = adminAddonMediaMetadataButton;
|
||||
var fileName = $(this).find('[data-dz-name]').text();
|
||||
editButton.setAttribute('data-filename', fileName);
|
||||
$(this).append(editButton);
|
||||
}
|
||||
$(this).find('.dz-metadata').remove();
|
||||
});
|
||||
}, 1000);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user