From 5a05350bd0613d942da6d9bc500feff4e8372adc Mon Sep 17 00:00:00 2001 From: marsooooo Date: Mon, 1 Jul 2024 10:29:18 +0200 Subject: [PATCH] Update Interface + Translation --- admin/themes/default/js/batchManagerUnit.js | 270 +++++++++++------- .../default/template/batch_manager_unit.tpl | 15 +- language/en_UK/admin.lang.php | 1 + language/fr_FR/admin.lang.php | 3 +- 4 files changed, 179 insertions(+), 110 deletions(-) diff --git a/admin/themes/default/js/batchManagerUnit.js b/admin/themes/default/js/batchManagerUnit.js index 0f103dff7..f9fcf0d5d 100644 --- a/admin/themes/default/js/batchManagerUnit.js +++ b/admin/themes/default/js/batchManagerUnit.js @@ -1,5 +1,6 @@ $(document).ready(function () { - + //Pagination + // Detect unsaved changes on any inputs var user_interacted = false; @@ -22,6 +23,92 @@ $(document).ready(function () { }); + //METADATA SYNC + $('.action-sync-metadata').on('click', function(event){ + var pictureId = $(this).parents("fieldset").data("image_id"); + $.confirm({ + title: str_meta_warning, + draggable: false, + titleClass: "metadataSyncConfirm", + theme: "modern", + content: "", + animation: "zoom", + boxWidth: '30%', + useBootstrap: false, + type: 'red', + animateFromElement: false, + backgroundDismiss: true, + typeAnimated: false, + buttons: { + confirm: { + text: str_meta_yes, + btnClass: 'btn-red', + action: function () { + disableLocalButton(pictureId); + $.ajax({ + type: 'POST', + url: 'ws.php?format=json', + data: { + method: "pwg.images.syncMetadata", + pwg_token: jQuery("input[name=pwg_token]").val(), + image_id: pictureId + }, + dataType: 'json', + success: function(data) { + var isOk = data.stat && data.stat === "ok"; + if (isOk) { + $.ajax({ + url: 'ws.php?format=json', + type: 'GET', + dataType: 'json', + data: { + method: 'pwg.images.getInfo', + image_id: pictureId, // corrected variable name + format: 'json' + }, + success: function(response) { + if (response.stat === 'ok') { + $("#picture-" + pictureId + " #name-" + pictureId).val(response.result.name); + $("#picture-" + pictureId + " #author-" + pictureId).val(response.result.author); + $("#picture-" + pictureId + " #date_creation-" + pictureId).val(response.result.date_creation); + $("#picture-" + pictureId + " #description-" + pictureId).val(response.result.comment); + $("#picture-" + pictureId + " #level-" + pictureId).val(response.result.level); + $("#picture-" + pictureId + " #filename-" + pictureId).text(response.result.file); + $("#picture-" + pictureId + " #filesize-" + pictureId).text(response.result.filesize); + $("#picture-" + pictureId + " #dimensions-" + pictureId).text(response.result.width + "x" + response.result.height); + showMetasyncSuccesBadge(pictureId); + enableLocalButton(pictureId) + } else { + console.error("Error:", response.message); + showErrorLocalBadge(pictureId); + enableLocalButton(pictureId) + } + }, + error: function(xhr, status, error) { + console.error("Error:", status, error); + showErrorLocalBadge(pictureId); + enableLocalButton(pictureId) + } + }); + } else { + showErrorLocalBadge(pictureId); + enableLocalButton(pictureId) + } + }, + error: function(data) { + console.error("Error occurred"); + enableLocalButton(pictureId) + } + }); + } + }, + cancel: { + text: str_meta_no + } + } + }); +}); + // DELETE $('.action-delete-picture').on('click', function(event) { @@ -61,7 +148,6 @@ $(document).ready(function () { success: function(data) { var isOk = data.stat && data.stat === "ok"; if (isOk) { - console.log("Success"); $fieldset.remove(); $('.pagination-container').css({ 'pointer-events': 'none', @@ -70,7 +156,7 @@ $(document).ready(function () { $('.button-reload').css('display', 'block'); $('div[data-image_id="' + pictureId + '"]').css('display', 'flex'); } else { - console.log("Image was not deleted successfully"); + showErrorLocalBadge(pictureId); } }, error: function(data) { @@ -146,10 +232,6 @@ $(document).ready(function () { remove_related_category($(this).attr("id"),pictureId); }) - $('.action-sync-metadata').on('click', function() { - var pictureId = $(this).parents("fieldset").data("image_id"); - syncMetadata(pictureId); - }); }) function fill_results(cats, pictureId) { @@ -273,7 +355,7 @@ function hideErrorLocalBadge(pictureId) { //Succes badge function updateSuccessGlobalBadge() { - var visibleLocalSuccesCount = $(".local-succes-badge").filter(function() { + var visibleLocalSuccesCount = $(".local-success-badge").filter(function() { return $(this).css('display') === 'block'; }).length; @@ -285,7 +367,7 @@ function updateSuccessGlobalBadge() { } function showSuccessLocalBadge(pictureId) { - var badge = $("#picture-" + pictureId + " .local-succes-badge"); + var badge = $("#picture-" + pictureId + " .local-success-badge"); badge.css({ 'display': 'block', 'opacity': 1 @@ -299,7 +381,7 @@ function showSuccessLocalBadge(pictureId) { } function hideSuccesLocalBadge(pictureId) { - $("#picture-" + pictureId + " .local-succes-badge").css('display', 'none'); + $("#picture-" + pictureId + " .local-success-badge").css('display', 'none'); } function showSuccesGlobalBadge() { @@ -320,6 +402,20 @@ function hideSuccesGlobalBadge() { $("global-succes-badge").css('display', 'none'); } +function showMetasyncSuccesBadge(pictureId) { + var badge = $("#picture-" + pictureId + " .metasync-success"); + badge.css({ + 'display': 'block', + 'opacity': 1 + }); + + setTimeout(() => { + badge.fadeOut(1000, function() { + badge.css('display', 'none'); + }); + }, 3000); +} + function disableLocalButton(pictureId) { $("#picture-" + pictureId + " .action-save-picture").addClass("disabled"); @@ -347,8 +443,7 @@ function enableGlobalButton() { function saveChanges(pictureId) { if ($("#picture-" + pictureId + " .local-unsaved-badge").css('display') === 'block') { - disableLocalButton(pictureId) - console.log("Saving changes for " + pictureId); + disableLocalButton(pictureId); // Retrieve Infos var name = $("#name-" + pictureId).val(); @@ -395,7 +490,7 @@ function saveChanges(pictureId) { hideUnsavedLocalBadge(pictureId); showSuccessLocalBadge(pictureId); updateSuccessGlobalBadge(); - plugginSaveOption(); + pluginSaveLoop(activePlugins); //call for plugin save }, error: function(xhr, status, error) { enableLocalButton(pictureId); @@ -407,101 +502,74 @@ function saveChanges(pictureId) { } }); } else { - console.log("No changes to save for " + pictureId); } } - function saveAllChanges() { - $("fieldset").each(function() { - var pictureId = $(this).data("image_id"); - saveChanges(pictureId); - }); +function saveAllChanges() { + $("fieldset").each(function() { + var pictureId = $(this).data("image_id"); + saveChanges(pictureId); + }); } - function syncMetadata(pictureId){ - $.confirm({ - title: str_meta_warning, - draggable: false, - titleClass: "groupDeleteConfirm", - theme: "modern", - content: "", - animation: "zoom", - boxWidth: '30%', - useBootstrap: false, - type: 'red', - animateFromElement: false, - backgroundDismiss: true, - typeAnimated: false, - buttons: { - confirm: { - text: str_meta_yes, - btnClass: 'btn-red', - action: function () { - (function(ids) { - console.log("metadata sync"); - $.ajax({ - type: 'POST', - url: 'ws.php?format=json', - data: { - method: "pwg.images.syncMetadata", - pwg_token: jQuery("input[name=pwg_token]").val(), - image_id: pictureId - }, - dataType: 'json', - success: function(data) { - console.log("metadata sync done, starting update"); - var isOk = data.stat && data.stat === "ok"; - if (isOk) { - console.log("Success, now updating current block"); - $.ajax({ - url: 'ws.php?format=json', - type: 'GET', - dataType: 'json', - data: { - method: 'pwg.images.getInfo', - image_id: image_Id, - format: 'json' - }, - success: function(response) { - var isOk = data.stat && data.stat === "ok"; - if (response.stat === 'ok') { - console.log("success"); - $("#picture-" + pictureId + " #name-" + pictureId).val(response.result.name); - $("#picture-" + pictureId + " #author-" + pictureId).val(response.result.author); - $("#picture-" + pictureId + " #date_creation-" + pictureId).val(response.result.date_creation); - $("#picture-" + pictureId + " #description-" + pictureId).val(response.result.comment); - $("#picture-" + pictureId + " #level-" + pictureId).val(response.result.level); - $("#picture-" + pictureId + " #filename-" + pictureId).text(response.result.file); - $("#picture-" + pictureId + " #filesize-" + pictureId).text(response.result.filesize); - $("#picture-" + pictureId + " #dimensions-" + pictureId).text(response.result.width + "x" + response.result.height); +//PLUGINS SAVE METHOD +var activePlugins = []; - } else { - console.error("Error:", response.message); - } - }, - error: function(xhr, status, error) { - console.error("Error:", status, error); - } - }); - } else { - console.log("Error"); - } - }, - error: function(data) { - console.error("Error occurred"); - } - }); - }) - } - }, - cancel: { - text: str_meta_no - } +$.ajax({ + url: 'ws.php?format=json', + method: 'GET', + data: { + method: 'pwg.plugins.getList', + }, + success: function(response) { + console.log("AJAX call succeeded. Raw response: ", response); + console.log("Type of response: ", typeof response); + + if (typeof response === 'string') { + try { + response = JSON.parse(response); + console.log("Parsed response: ", response); + } catch (e) { + console.error("Failed to parse response as JSON: ", e); } - }); - } + } -function plugginSaveOption() { - //call your pluggin save functions here + console.log("Response stat: ", response.stat); + console.log("Response result: ", response.result); + console.log("Is result an array? ", Array.isArray(response.result)); + + if (response.stat === "ok" && Array.isArray(response.result)) { + activePlugins = response.result.filter(function(plugin) { + return plugin.state === "active"; + }).map(function(plugin) { + return plugin.id; + }); + + console.log("Active plugins: ", activePlugins); + + } else { + console.error("Unexpected response format or status."); + } + }, + error: function(xhr, status, error) { + console.error("An error occurred: " + error); + } +}); + +function pluginSaveLoop(plugins) { + if (plugins.length === 0) { + console.log("No plugins to process in pluginSaveLoop."); + return; + } + plugins.forEach(function(pluginId) { + var functionName = pluginId + '_batchManagerSave'; + + if (typeof window[functionName] === 'function') { + window[functionName](); + console.log('Executed function: ' + functionName); + } else { + console.log('Function not found: ' + functionName); + } + }); } // $(function () { diff --git a/admin/themes/default/template/batch_manager_unit.tpl b/admin/themes/default/template/batch_manager_unit.tpl index e51bb3f02..0f59855b8 100644 --- a/admin/themes/default/template/batch_manager_unit.tpl +++ b/admin/themes/default/template/batch_manager_unit.tpl @@ -238,8 +238,9 @@ const strs_privacy = {
{'Submit'|@translate}
- + + @@ -247,11 +248,11 @@ const strs_privacy = { {/foreach}
-
- {'photos per page'|@translate} : - 5 - 10 - 50 +
+{'Display'|@translate} +5 +10 +50
@@ -335,6 +336,4 @@ const strs_privacy = { .album-listed{ background-color: #FFFFFF !important; } - - diff --git a/language/en_UK/admin.lang.php b/language/en_UK/admin.lang.php index 5519b2381..a54ab540f 100644 --- a/language/en_UK/admin.lang.php +++ b/language/en_UK/admin.lang.php @@ -1365,4 +1365,5 @@ $lang['Changes saved'] = 'Changes saved'; $lang['An error has occured'] = 'An error has occured'; $lang['image(s) contains unsaved changes'] = 'image(s) contains unsaved changes'; $lang['Pagination has changed and needs to be reloaded !'] = 'Pagination has changed and needs to be reloaded !'; +$lang['Metadata sync complete'] = 'Metadata sync complete'; // Leave this line empty diff --git a/language/fr_FR/admin.lang.php b/language/fr_FR/admin.lang.php index a8efcc1a3..a06b0a166 100644 --- a/language/fr_FR/admin.lang.php +++ b/language/fr_FR/admin.lang.php @@ -1360,9 +1360,10 @@ $lang['Image'] = "L'image"; $lang['was succesfully deleted'] = 'a été supprimée avec succès'; $lang['Who can see ?'] = 'Qui peut voir ?'; $lang['level of confidentiality'] = 'niveau de confidentialité'; -$lang['You have unsaved changes'] = 'Des changements ne sont pas sauvegardés'; +$lang['You have unsaved changes'] = 'Changements non sauvegardés'; $lang['Changes saved'] = 'Changements enregistrés'; $lang['An error has occured'] = 'Une erreur est survenue'; $lang['image(s) contains unsaved changes'] = 'image(s) ne sont pas sauvegardées'; $lang['Pagination has changed and needs to be reloaded !'] = "La pagination a changée et nécessite d'être rechargée !"; +$lang['Metadata sync complete'] = 'Méta-données synchronisées'; // Leave this line empty