fixes #2339 prevent backend validation errors...

...by adding frontend checks for albums and tags
This commit is contained in:
Linty 2025-03-05 17:22:40 +01:00
parent c4e23c642f
commit 4efcd98036
2 changed files with 52 additions and 0 deletions

View file

@ -35,10 +35,24 @@ function filter_disable(filter) {
function select_album_filter({ album, newSelectedAlbum, getSelectedAlbum }) {
$('#selectedAlbumNameFilter').html(album.name);
newSelectedAlbum();
hide_filters_error(str_select_album);
$('#filterCategoryValue').val(+getSelectedAlbum()[0]);
$('#selectAlbumFilter').hide();
$('#selectedAlbumFilterArea').fadeIn();
}
// Tags and Albums validation
function show_filters_error(message) {
errorFilters = message;
$('#errorFilter').html(`<p>${message}</p>`).fadeIn();
}
function hide_filters_error(message) {
if (message === errorFilters) {
$('#errorFilter').hide();
}
}
$(document).ready(function () {
const ab_filter = new AlbumSelector({
selectedCategoriesIds: selected_filter_cat_ids,
@ -83,5 +97,37 @@ $(document).ready(function () {
$('.addFilter-dropdown').slideUp();
}
});
// Filter JS Validation
$('.filterBlock select[data-selectize="tags"]').on('change', function() {
if ($(this).val()) {
hide_filters_error(str_select_tag);
}
})
$('#applyFilter').on('click', function(e) {
if ($('#filter_tags').is(':visible')) {
const tags = $('.filterBlock select[data-selectize="tags"]');
if (!tags.val()) {
e.preventDefault();
show_filters_error(str_select_tag);
$('#filter_tags .removeFilter').off('click.apply').on('click.apply', function() {
hide_filters_error(str_select_tag);
});
}
}
if ($('#filter_category').is(':visible')) {
const albums = ab_filter.get_selected_albums();
if (albums.length === 0) {
e.preventDefault();
show_filters_error(str_select_album);
$('#filter_category .removeFilter').off('click.apply').on('click.apply', function() {
hide_filters_error(str_select_album);
});
}
}
});
})

View file

@ -49,6 +49,10 @@ const selected_filter_cat_ids = ["{$filter_category_selected|@json_encode|escape
{else}
const selected_filter_cat_ids = [];
{/if}
const str_select_album = "{'Select at least one album'|@translate|escape:javascript}";
const str_select_tag = "{'Select at least one tag'|@translate|escape:javascript}";
let errorFilters = '';
{/footer_script}
{combine_script id='batchManagerFilter' load='footer' path='admin/themes/default/js/batchManagerFilter.js'}
@ -256,6 +260,8 @@ const selected_filter_cat_ids = [];
<button id="applyFilter" name="submitFilter" type="submit">
<i class="icon-arrows-cw"></i> {'Refresh photo set'|@translate}
</button>
<div id="errorFilter" class="icon-red-error" style="display: none; margin-left: 10px;"></div>
</div>
</div>
</fieldset>