Add the clipboard checkbox on pageload, not in server response.

With the recent addition of search_embed iframes on other pages, we
had photo cards appearing but the photo_clipboard module was not
imported thus the checkboxes did nothing. I don't want to import
photo_clipboard onto every single page, I'd rather they click through
to the full search UI. Otherwise every single page will have the tray
and often not a good enough reason for it.
So, since the functionality of the checkbox is completely reliant on
the photo_clipboard.js module anyway, there's no reason not to have it
generated by that module.
This commit is contained in:
voussoir 2021-01-05 01:24:03 -08:00
parent 7c62c064cb
commit 29774f2524
3 changed files with 25 additions and 5 deletions

View file

@ -54,6 +54,21 @@ function save_clipboard()
// Card management /////////////////////////////////////////////////////////////////////////////////
photo_clipboard.give_checkbox =
function give_checkbox(photo_card)
{
// There are some UIs where photo cards appear
const checkbox = document.createElement("input")
checkbox.type = "checkbox";
checkbox.className = "photo_clipboard_selector_checkbox";
checkbox.onclick = function(event)
{
return photo_clipboard.on_photo_select(event);
}
photo_card.appendChild(checkbox);
return checkbox;
}
photo_clipboard.apply_check =
function apply_check(checkbox)
{
@ -104,12 +119,17 @@ photo_clipboard.apply_check_all =
function apply_check_all()
{
/*
Run through all the photo cards on the page and set their checkbox to the
correct value.
Run through all the photo cards, give them their checkbox if they don't
already have it, and check it if that photo is on the clipboard.
*/
const checkboxes = document.getElementsByClassName("photo_clipboard_selector_checkbox");
for (const checkbox of checkboxes)
const cards = document.getElementsByClassName("photo_card");
for (const card of cards)
{
let checkbox = card.getElementsByClassName("photo_clipboard_selector_checkbox")[0];
if (! checkbox)
{
checkbox = photo_clipboard.give_checkbox(card);
}
photo_clipboard.apply_check(checkbox);
}
}

View file

@ -607,6 +607,7 @@ function autofocus_add_tag_box()
function on_pageload()
{
autofocus_add_tag_box();
photo_clipboard.apply_check(document.getElementById("clipboard_checkbox"));
}
document.addEventListener("DOMContentLoaded", on_pageload);
</script>

View file

@ -29,7 +29,6 @@
data-id="{{photo.id}}"
class="photo_card photo_card_{{view}} photo_card_unselected {%if photo.searchhidden%}photo_card_searchhidden{%endif%}"
>
<input type="checkbox" class="photo_clipboard_selector_checkbox" onclick="return photo_clipboard.on_photo_select(event);"/>
<div class="photo_card_filename"><a target="_blank" href="/photo/{{photo.id}}">{{photo.basename}}</a></div>
<span class="photo_card_metadata">
{{- metadata_inner|safe -}}