mirror of
https://github.com/Piwigo/Piwigo.git
synced 2026-08-08 09:43:01 +02:00
related to #1790 optimized back end and front end a bit, but front has to be improved
This commit is contained in:
+48
-43
@@ -183,6 +183,8 @@ foreach ($allAlbum as $album)
|
|||||||
$the_place['cat'] = $album;
|
$the_place['cat'] = $album;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$is_forbidden = array_fill_keys(@explode(',', $user['forbidden_categories']), 1);
|
||||||
|
|
||||||
//Make an ordered tree
|
//Make an ordered tree
|
||||||
function cmpCat($a, $b)
|
function cmpCat($a, $b)
|
||||||
{
|
{
|
||||||
@@ -195,50 +197,10 @@ function cmpCat($a, $b)
|
|||||||
|
|
||||||
function assocToOrderedTree($assocT)
|
function assocToOrderedTree($assocT)
|
||||||
{
|
{
|
||||||
|
global $nb_photos_in, $nb_sub_photos;
|
||||||
|
|
||||||
$orderedTree = array();
|
$orderedTree = array();
|
||||||
|
|
||||||
$query = '
|
|
||||||
SELECT
|
|
||||||
category_id,
|
|
||||||
COUNT(*) AS nb_photos
|
|
||||||
FROM '.IMAGE_CATEGORY_TABLE.'
|
|
||||||
GROUP BY category_id
|
|
||||||
;';
|
|
||||||
|
|
||||||
$nb_photos_in = query2array($query, 'category_id', 'nb_photos');
|
|
||||||
|
|
||||||
$query = '
|
|
||||||
SELECT
|
|
||||||
id,
|
|
||||||
uppercats
|
|
||||||
FROM '.CATEGORIES_TABLE.'
|
|
||||||
;';
|
|
||||||
$all_categories = query2array($query, 'id', 'uppercats');
|
|
||||||
$subcats_of = array();
|
|
||||||
|
|
||||||
foreach ($all_categories as $id => $uppercats)
|
|
||||||
{
|
|
||||||
foreach (array_slice(explode(',', $uppercats), 0, -1) as $uppercat_id)
|
|
||||||
{
|
|
||||||
@$subcats_of[$uppercat_id][] = $id;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$nb_sub_photos = array();
|
|
||||||
foreach ($subcats_of as $cat_id => $subcat_ids)
|
|
||||||
{
|
|
||||||
$nb_photos = 0;
|
|
||||||
foreach ($subcat_ids as $id)
|
|
||||||
{
|
|
||||||
if (isset($nb_photos_in[$id]))
|
|
||||||
{
|
|
||||||
$nb_photos+= $nb_photos_in[$id];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$nb_sub_photos[$cat_id] = $nb_photos;
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach($assocT as $cat)
|
foreach($assocT as $cat)
|
||||||
{
|
{
|
||||||
$orderedCat = array();
|
$orderedCat = array();
|
||||||
@@ -248,7 +210,7 @@ SELECT
|
|||||||
$orderedCat['id'] = $cat['cat']['id'];
|
$orderedCat['id'] = $cat['cat']['id'];
|
||||||
$orderedCat['nb_images'] = isset($nb_photos_in[$cat['cat']['id']]) ? $nb_photos_in[$cat['cat']['id']] : 0;
|
$orderedCat['nb_images'] = isset($nb_photos_in[$cat['cat']['id']]) ? $nb_photos_in[$cat['cat']['id']] : 0;
|
||||||
$orderedCat['last_updates'] = $cat['cat']['lastmodified'];
|
$orderedCat['last_updates'] = $cat['cat']['lastmodified'];
|
||||||
$orderedCat['has_not_access'] = !cat_admin_access($cat['cat']['id']);
|
$orderedCat['has_not_access'] = isset($is_forbidden[$cat['cat']['id']]);
|
||||||
$orderedCat['nb_sub_photos'] = isset($nb_sub_photos[$cat['cat']['id']]) ? $nb_sub_photos[$cat['cat']['id']] : 0;
|
$orderedCat['nb_sub_photos'] = isset($nb_sub_photos[$cat['cat']['id']]) ? $nb_sub_photos[$cat['cat']['id']] : 0;
|
||||||
if (isset($cat['children']))
|
if (isset($cat['children']))
|
||||||
{
|
{
|
||||||
@@ -262,6 +224,49 @@ SELECT
|
|||||||
return $orderedTree;
|
return $orderedTree;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$query = '
|
||||||
|
SELECT
|
||||||
|
category_id,
|
||||||
|
COUNT(*) AS nb_photos
|
||||||
|
FROM '.IMAGE_CATEGORY_TABLE.'
|
||||||
|
GROUP BY category_id
|
||||||
|
;';
|
||||||
|
|
||||||
|
$nb_photos_in = query2array($query, 'category_id', 'nb_photos');
|
||||||
|
|
||||||
|
$query = '
|
||||||
|
SELECT
|
||||||
|
id,
|
||||||
|
uppercats
|
||||||
|
FROM '.CATEGORIES_TABLE.'
|
||||||
|
;';
|
||||||
|
$all_categories = query2array($query, 'id', 'uppercats');
|
||||||
|
|
||||||
|
$subcats_of = array();
|
||||||
|
|
||||||
|
foreach ($all_categories as $id => $uppercats)
|
||||||
|
{
|
||||||
|
foreach (array_slice(explode(',', $uppercats), 0, -1) as $uppercat_id)
|
||||||
|
{
|
||||||
|
@$subcats_of[$uppercat_id][] = $id;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$nb_sub_photos = array();
|
||||||
|
foreach ($subcats_of as $cat_id => $subcat_ids)
|
||||||
|
{
|
||||||
|
$nb_photos = 0;
|
||||||
|
foreach ($subcat_ids as $id)
|
||||||
|
{
|
||||||
|
if (isset($nb_photos_in[$id]))
|
||||||
|
{
|
||||||
|
$nb_photos+= $nb_photos_in[$id];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$nb_sub_photos[$cat_id] = $nb_photos;
|
||||||
|
}
|
||||||
|
|
||||||
$template->assign(
|
$template->assign(
|
||||||
array(
|
array(
|
||||||
'album_data' => assocToOrderedTree($associatedTree),
|
'album_data' => assocToOrderedTree($associatedTree),
|
||||||
|
|||||||
@@ -33,18 +33,6 @@ $(document).ready(() => {
|
|||||||
+'</div>';
|
+'</div>';
|
||||||
action_order = '<a data-id="'+node.id+'" class="move-cat-order icon-sort-name-up tiptip" title="'+ str_sort_order +'"></a>';
|
action_order = '<a data-id="'+node.id+'" class="move-cat-order icon-sort-name-up tiptip" title="'+ str_sort_order +'"></a>';
|
||||||
|
|
||||||
action_small =
|
|
||||||
"<div class='icon-ellipsis-vert move-cat-action-small toggle-cat-option'>"
|
|
||||||
+"<span id='catOptionsSmall' class='dropdown cat-option'>"
|
|
||||||
+"<a class='icon-plus-circled move-cat-add-small dropdown-option' data-aid='"+node.id+"'>"+ str_add_album +"</a>"
|
|
||||||
+"<a class='icon-pencil dropdown-option' href='admin.php?page=album-"+node.id+"'>"+ str_edit_album +"</a>"
|
|
||||||
+"<a class='icon-upload dropdown-option' href='admin.php?page=photos_add&album="+node.id+"'>"+ str_add_photo +"</a>"
|
|
||||||
+"<a class='icon-eye dropdown-option' href='index.php?/category/"+node.id+"'>"+ str_visit_gallery +"</a>"
|
|
||||||
+"<a class='icon-sort-name-up dropdown-option' data-id='"+node.id+"'>"+ str_sort_order +"</a>"
|
|
||||||
+"<a class='icon-trash move-cat-delete-small dropdown-option' data-id='"+node.id+"'>"+ str_delete_album +"</a>"
|
|
||||||
+"</span>"
|
|
||||||
+"</div>";
|
|
||||||
|
|
||||||
cont = li.find('.jqtree-element');
|
cont = li.find('.jqtree-element');
|
||||||
cont.addClass('move-cat-container');
|
cont.addClass('move-cat-container');
|
||||||
cont.attr('id', 'cat-'+node.id)
|
cont.attr('id', 'cat-'+node.id)
|
||||||
@@ -53,7 +41,6 @@ $(document).ready(() => {
|
|||||||
cont.append(actions);
|
cont.append(actions);
|
||||||
cont.find('.move-cat-action .move-cat-see').after(action_order);
|
cont.find('.move-cat-action .move-cat-see').after(action_order);
|
||||||
|
|
||||||
cont.find('.move-cat-action').before(action_small);
|
|
||||||
cont.find(".toggle-cat-option").on("click", function () {
|
cont.find(".toggle-cat-option").on("click", function () {
|
||||||
$(".cat-option").hide();
|
$(".cat-option").hide();
|
||||||
$(this).find(".cat-option").toggle();
|
$(this).find(".cat-option").toggle();
|
||||||
@@ -71,7 +58,6 @@ $(document).ready(() => {
|
|||||||
.replace(/%id%/g, node.id)));
|
.replace(/%id%/g, node.id)));
|
||||||
} else {
|
} else {
|
||||||
cont.find('.move-cat-order').addClass("notClickable");
|
cont.find('.move-cat-order').addClass("notClickable");
|
||||||
cont.find('#catOptionsSmall .icon-sort-name-up').hide();
|
|
||||||
|
|
||||||
cont.append($(toggler_cont
|
cont.append($(toggler_cont
|
||||||
.replace(/%content%/g, toggler_close)
|
.replace(/%content%/g, toggler_close)
|
||||||
@@ -131,25 +117,9 @@ $(document).ready(() => {
|
|||||||
|
|
||||||
if (node.has_not_access) {
|
if (node.has_not_access) {
|
||||||
cont.find(".move-cat-see").addClass("notClickable");
|
cont.find(".move-cat-see").addClass("notClickable");
|
||||||
cont.find('#catOptionsSmall .icon-eye').hide();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Hide album options and on click on the screen */
|
|
||||||
|
|
||||||
$(document).mouseup(function (e) {
|
|
||||||
e.stopPropagation();
|
|
||||||
let option_is_clicked = false
|
|
||||||
$("#catOptionsSmall a").each(function () {
|
|
||||||
if (!($(this).has(e.target).length === 0)) {
|
|
||||||
option_is_clicked = true;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
if (!option_is_clicked) {
|
|
||||||
$(".jqtree-element").find("#catOptionsSmall").hide();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
var url_split = window.location.href.split("cat_move");
|
var url_split = window.location.href.split("cat_move");
|
||||||
var catToOpen = url_split[url_split.length-1].split("-")[1];
|
var catToOpen = url_split[url_split.length-1].split("-")[1];
|
||||||
|
|
||||||
@@ -313,10 +283,6 @@ $(document).ready(() => {
|
|||||||
openAddAlbumPopIn($(this).data("aid"));
|
openAddAlbumPopIn($(this).data("aid"));
|
||||||
$(".AddAlbumSubmit").data("a-parent", $(this).data("aid"));
|
$(".AddAlbumSubmit").data("a-parent", $(this).data("aid"));
|
||||||
})
|
})
|
||||||
$(".move-cat-add-small").on("click", function () {
|
|
||||||
openAddAlbumPopIn($(this).data("aid"));
|
|
||||||
$(".AddAlbumSubmit").data("a-parent", $(this).data("aid"));
|
|
||||||
})
|
|
||||||
$(".CloseAddAlbum").on("click", function () {
|
$(".CloseAddAlbum").on("click", function () {
|
||||||
closeAddAlbumPopIn();
|
closeAddAlbumPopIn();
|
||||||
});
|
});
|
||||||
@@ -392,16 +358,9 @@ $(document).ready(() => {
|
|||||||
openAddAlbumPopIn($(this).data("aid"));
|
openAddAlbumPopIn($(this).data("aid"));
|
||||||
$(".AddAlbumSubmit").data("a-parent", $(this).data("aid"));
|
$(".AddAlbumSubmit").data("a-parent", $(this).data("aid"));
|
||||||
});
|
});
|
||||||
$(".move-cat-add-small").unbind("click").on("click", function () {
|
|
||||||
openAddAlbumPopIn($(this).data("aid"));
|
|
||||||
$(".AddAlbumSubmit").data("a-parent", $(this).data("aid"));
|
|
||||||
});
|
|
||||||
$(".move-cat-delete").on("click", function () {
|
$(".move-cat-delete").on("click", function () {
|
||||||
triggerDeleteAlbum($(this).data("id"));
|
triggerDeleteAlbum($(this).data("id"));
|
||||||
});
|
});
|
||||||
$(".move-cat-delete-small").on("click", function () {
|
|
||||||
triggerDeleteAlbum($(this).data("id"));
|
|
||||||
});
|
|
||||||
$(".move-cat-title-container").unbind("click").on("click", function () {
|
$(".move-cat-title-container").unbind("click").on("click", function () {
|
||||||
openRenameAlbumPopIn($(this).find(".move-cat-title").attr("title"));
|
openRenameAlbumPopIn($(this).find(".move-cat-title").attr("title"));
|
||||||
$(".RenameAlbumSubmit").data("cat_id", $(this).attr('data-id'));
|
$(".RenameAlbumSubmit").data("cat_id", $(this).attr('data-id'));
|
||||||
@@ -437,9 +396,6 @@ $(document).ready(() => {
|
|||||||
$(".move-cat-delete").on("click", function () {
|
$(".move-cat-delete").on("click", function () {
|
||||||
triggerDeleteAlbum($(this).data("id"));
|
triggerDeleteAlbum($(this).data("id"));
|
||||||
});
|
});
|
||||||
$(".move-cat-delete-small").on("click", function () {
|
|
||||||
triggerDeleteAlbum($(this).data("id"));
|
|
||||||
});
|
|
||||||
|
|
||||||
/*----------------
|
/*----------------
|
||||||
Checkboxes
|
Checkboxes
|
||||||
@@ -577,16 +533,9 @@ function openDeleteAlbumPopIn(cat_to_delete) {
|
|||||||
openAddAlbumPopIn($(this).data("aid"));
|
openAddAlbumPopIn($(this).data("aid"));
|
||||||
$(".AddAlbumSubmit").data("a-parent", $(this).data("aid"));
|
$(".AddAlbumSubmit").data("a-parent", $(this).data("aid"));
|
||||||
});
|
});
|
||||||
$(".move-cat-add-small").on("click", function () {
|
|
||||||
openAddAlbumPopIn($(this).data("aid"));
|
|
||||||
$(".AddAlbumSubmit").data("a-parent", $(this).data("aid"));
|
|
||||||
});
|
|
||||||
$(".move-cat-delete").on("click", function () {
|
$(".move-cat-delete").on("click", function () {
|
||||||
triggerDeleteAlbum($(this).data("id"));
|
triggerDeleteAlbum($(this).data("id"));
|
||||||
});
|
});
|
||||||
$(".move-cat-delete-small").on("click", function () {
|
|
||||||
triggerDeleteAlbum($(this).data("id"));
|
|
||||||
});
|
|
||||||
$(".move-cat-title-container").unbind("click").on("click", function () {
|
$(".move-cat-title-container").unbind("click").on("click", function () {
|
||||||
openRenameAlbumPopIn($(this).find(".move-cat-title").attr("title"));
|
openRenameAlbumPopIn($(this).find(".move-cat-title").attr("title"));
|
||||||
$(".RenameAlbumSubmit").data("cat_id", $(this).attr('data-id'));
|
$(".RenameAlbumSubmit").data("cat_id", $(this).attr('data-id'));
|
||||||
@@ -741,16 +690,9 @@ function applyMove(event) {
|
|||||||
openAddAlbumPopIn($(this).data("aid"));
|
openAddAlbumPopIn($(this).data("aid"));
|
||||||
$(".AddAlbumSubmit").data("a-parent", $(this).data("aid"));
|
$(".AddAlbumSubmit").data("a-parent", $(this).data("aid"));
|
||||||
});
|
});
|
||||||
$(".move-cat-add-small").unbind("click").on("click", function () {
|
|
||||||
openAddAlbumPopIn($(this).data("aid"));
|
|
||||||
$(".AddAlbumSubmit").data("a-parent", $(this).data("aid"));
|
|
||||||
});
|
|
||||||
$(".move-cat-delete").on("click", function () {
|
$(".move-cat-delete").on("click", function () {
|
||||||
triggerDeleteAlbum($(this).data("id"));
|
triggerDeleteAlbum($(this).data("id"));
|
||||||
});
|
});
|
||||||
$(".move-cat-delete-small").on("click", function () {
|
|
||||||
triggerDeleteAlbum($(this).data("id"));
|
|
||||||
});
|
|
||||||
$(".move-cat-title-container").on("click", function () {
|
$(".move-cat-title-container").on("click", function () {
|
||||||
openRenameAlbumPopIn($(this).find(".move-cat-title").attr("title"));
|
openRenameAlbumPopIn($(this).find(".move-cat-title").attr("title"));
|
||||||
$(".RenameAlbumSubmit").data("cat_id", $(this).attr('data-id'));
|
$(".RenameAlbumSubmit").data("cat_id", $(this).attr('data-id'));
|
||||||
@@ -768,16 +710,9 @@ function applyMove(event) {
|
|||||||
openAddAlbumPopIn($(this).data("aid"));
|
openAddAlbumPopIn($(this).data("aid"));
|
||||||
$(".AddAlbumSubmit").data("a-parent", $(this).data("aid"));
|
$(".AddAlbumSubmit").data("a-parent", $(this).data("aid"));
|
||||||
});
|
});
|
||||||
$(".move-cat-add-small").unbind("click").on("click", function () {
|
|
||||||
openAddAlbumPopIn($(this).data("aid"));
|
|
||||||
$(".AddAlbumSubmit").data("a-parent", $(this).data("aid"));
|
|
||||||
});
|
|
||||||
$(".move-cat-delete").on("click", function () {
|
$(".move-cat-delete").on("click", function () {
|
||||||
triggerDeleteAlbum($(this).data("id"));
|
triggerDeleteAlbum($(this).data("id"));
|
||||||
});
|
});
|
||||||
$(".move-cat-delete-small").on("click", function () {
|
|
||||||
triggerDeleteAlbum($(this).data("id"));
|
|
||||||
});
|
|
||||||
$(".move-cat-title-container").on("click", function () {
|
$(".move-cat-title-container").on("click", function () {
|
||||||
openRenameAlbumPopIn($(this).find(".move-cat-title").attr("title"));
|
openRenameAlbumPopIn($(this).find(".move-cat-title").attr("title"));
|
||||||
$(".RenameAlbumSubmit").data("cat_id", $(this).attr('data-id'));
|
$(".RenameAlbumSubmit").data("cat_id", $(this).attr('data-id'));
|
||||||
@@ -855,7 +790,7 @@ function changeRank(node, rank) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
function makePrivateHierarchy (node) {
|
function makePrivateHierarchy(node) {
|
||||||
node.status = 'private';
|
node.status = 'private';
|
||||||
node.children.forEach(node => {
|
node.children.forEach(node => {
|
||||||
makePrivateHierarchy(node);
|
makePrivateHierarchy(node);
|
||||||
|
|||||||
@@ -523,28 +523,10 @@ input[name="position"] {
|
|||||||
|
|
||||||
.dragging .move-cat-container .move-cat-toogler,
|
.dragging .move-cat-container .move-cat-toogler,
|
||||||
.dragging .move-cat-container .move-cat-action-cont a,
|
.dragging .move-cat-container .move-cat-action-cont a,
|
||||||
.dragging .move-cat-container .move-cat-title-container,
|
.dragging .move-cat-container .move-cat-title-container{
|
||||||
.dragging .move-cat-action-small {
|
|
||||||
pointer-events: all;
|
pointer-events: all;
|
||||||
}
|
}
|
||||||
|
|
||||||
.move-cat-action-small {
|
|
||||||
display: none;
|
|
||||||
position: relative;
|
|
||||||
right: 10px;
|
|
||||||
font-weight: bold;
|
|
||||||
cursor: pointer;
|
|
||||||
transform: scale(1.2);
|
|
||||||
padding: 20px 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#catOptionsSmall .dropdown-option {
|
|
||||||
font-size: 10px;
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
#catOptionsSmall .dropdown-option::before{
|
|
||||||
margin: 0 6px 0 -2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.last-update {
|
.last-update {
|
||||||
display: none;
|
display: none;
|
||||||
@@ -575,23 +557,25 @@ input[name="position"] {
|
|||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
.move-cat-action {
|
ul.jqtree-tree ul.jqtree_common {
|
||||||
display: none;
|
margin-left: 20px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.move-cat-action-small {
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
|
|
||||||
.move-cat-title-container {
|
|
||||||
max-width: 80%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@media (max-width: 850px) {
|
|
||||||
.move-cat-title-container {
|
.move-cat-title-container {
|
||||||
max-width: 60%;
|
max-width: 60%;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@media (max-width: 1100px) {
|
||||||
|
.move-cat-title-container {
|
||||||
|
max-width: 50%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (max-width: 850px) {
|
||||||
|
.move-cat-title-container {
|
||||||
|
max-width: 40%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
Reference in New Issue
Block a user