diff --git a/admin.php b/admin.php index 809eecc78..9051d3893 100644 --- a/admin.php +++ b/admin.php @@ -183,6 +183,7 @@ $template->assign( 'U_CATEGORIES'=> $link_start.'cat_list', 'U_CAT_MOVE'=> $link_start.'cat_move', 'U_CAT_OPTIONS'=> $link_start.'cat_options', + 'U_CAT_SEARCH'=> $link_start.'cat_search', 'U_CAT_UPDATE'=> $link_start.'site_update&site=1', 'U_RATING'=> $link_start.'rating', 'U_RECENT_SET'=> $link_start.'batch_manager&filter=prefilter-last_import', diff --git a/admin/cat_search.php b/admin/cat_search.php new file mode 100644 index 000000000..665181647 --- /dev/null +++ b/admin/cat_search.php @@ -0,0 +1,61 @@ +set_filename('cat_search', 'cat_search.tpl'); +$template->assign('data_cat', $categories); + +// +-----------------------------------------------------------------------+ +// | sending html code | +// +-----------------------------------------------------------------------+ +$template->assign_var_from_handle('ADMIN_CONTENT', 'cat_search'); +?> diff --git a/admin/include/add_core_tabs.inc.php b/admin/include/add_core_tabs.inc.php index e4a686056..7acc498fe 100644 --- a/admin/include/add_core_tabs.inc.php +++ b/admin/include/add_core_tabs.inc.php @@ -33,6 +33,7 @@ function add_core_tabs($sheets, $tab_id) global $my_base_url; $sheets['list'] = array('caption' => ''.l10n('List'), 'url' => $my_base_url.'cat_list'); $sheets['permalinks'] = array('caption' => ''.l10n('Permalinks'), 'url' => $my_base_url.'permalinks'); + $sheets['search'] = array('caption' => ''.l10n('Search'), 'url' => $my_base_url.'cat_search'); break; case 'batch_manager': diff --git a/admin/include/functions.php b/admin/include/functions.php index d81ae8942..cbe761b5b 100644 --- a/admin/include/functions.php +++ b/admin/include/functions.php @@ -2577,6 +2577,7 @@ function get_active_menu($menu_page) case 'cat_list': case 'cat_move': case 'cat_options': + case 'cat_search': case 'permalinks': return 1; diff --git a/admin/themes/default/template/cat_search.tpl b/admin/themes/default/template/cat_search.tpl new file mode 100644 index 000000000..0e9e312fe --- /dev/null +++ b/admin/themes/default/template/cat_search.tpl @@ -0,0 +1,133 @@ +{combine_script id='common' load='footer' path='admin/themes/default/js/common.js'} + +{footer_script} +var data = {json_encode($data_cat)}; +var categories = Object.values(data) +{literal} +var editLink = "admin.php?page=album-"; +var colors = ["icon-red", "icon-blue", "icon-yellow", "icon-purple", "icon-green"]; + +$('.search-input').on('input', () => { + updateSearch(); +}) + +function updateSearch () { + string = $('.search-input').val(); + $('.search-album-result').html(""); + $('.search-album-noresult').hide(); + if (string == '') { + $('.search-album-ghost').fadeIn(); + } else { + $('.search-album-ghost').hide(); + + nbResult = 0; + categories.forEach((c) => { + if (c[0].toString().toLowerCase().search(string.toLowerCase()) != -1) { + addAlbumResult(c); + nbResult++; + } + }) + + if (nbResult != 0) { + resultAppear($('.search-album-result .search-album-elem').first()); + } else { + $('.search-album-noresult').show(); + } + } +} + +function addAlbumResult (cat) { + id = cat[1][cat[1].length - 1]; + template = $('.search-album-elem-template').html(); + newCatNode = $(template); + + hasChildren = false; + categories.forEach((c) => { + for (let i = 0; i < c[1].length - 1; i++) { + if (c[1][i] == id) { + hasChildren = true; + } + } + }) + + if (hasChildren) { + newCatNode.find('.search-album-icon').addClass('icon-sitemap'); + } else { + newCatNode.find('.search-album-icon').addClass('icon-folder-open'); + } + + colorId = id%5; + newCatNode.find('.search-album-icon').addClass(colors[colorId]); + + newCatNode.find('.search-album-name').html(getHtmlPath(cat)); + + href = "admin.php?page=album-" + id; + newCatNode.find('.search-album-edit').attr('href', href); + + $('.search-album-result').append(newCatNode); +} + +function getHtmlPath (cat) { + html = ''; + for (let i = 0; i < cat[1].length - 1; i++) { + id = cat[1][i]; + c = data[id]; + html += '' + c[0] + ' / ' + } + html += '' + cat[0] + ''; + + return html +} + +function resultAppear(result) { + result.fadeIn(); + if (result.next().length != 0) { + setTimeout(() => {resultAppear(result.next().first())}, 50); + } +} + +updateSearch(); +{/literal} +{/footer_script} + +