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:
		
							parent
							
								
									7c62c064cb
								
							
						
					
					
						commit
						29774f2524
					
				
					 3 changed files with 25 additions and 5 deletions
				
			
		|  | @ -54,6 +54,21 @@ function save_clipboard() | ||||||
| 
 | 
 | ||||||
| // Card management /////////////////////////////////////////////////////////////////////////////////
 | // 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 = | photo_clipboard.apply_check = | ||||||
| function apply_check(checkbox) | function apply_check(checkbox) | ||||||
| { | { | ||||||
|  | @ -104,12 +119,17 @@ photo_clipboard.apply_check_all = | ||||||
| function apply_check_all() | function apply_check_all() | ||||||
| { | { | ||||||
|     /* |     /* | ||||||
|     Run through all the photo cards on the page and set their checkbox to the |     Run through all the photo cards, give them their checkbox if they don't | ||||||
|     correct value. |     already have it, and check it if that photo is on the clipboard. | ||||||
|     */ |     */ | ||||||
|     const checkboxes = document.getElementsByClassName("photo_clipboard_selector_checkbox"); |     const cards = document.getElementsByClassName("photo_card"); | ||||||
|     for (const checkbox of checkboxes) |     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); |         photo_clipboard.apply_check(checkbox); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -607,6 +607,7 @@ function autofocus_add_tag_box() | ||||||
| function on_pageload() | function on_pageload() | ||||||
| { | { | ||||||
|     autofocus_add_tag_box(); |     autofocus_add_tag_box(); | ||||||
|  |     photo_clipboard.apply_check(document.getElementById("clipboard_checkbox")); | ||||||
| } | } | ||||||
| document.addEventListener("DOMContentLoaded", on_pageload); | document.addEventListener("DOMContentLoaded", on_pageload); | ||||||
| </script> | </script> | ||||||
|  |  | ||||||
|  | @ -29,7 +29,6 @@ | ||||||
|     data-id="{{photo.id}}" |     data-id="{{photo.id}}" | ||||||
|     class="photo_card photo_card_{{view}} photo_card_unselected {%if photo.searchhidden%}photo_card_searchhidden{%endif%}" |     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> |     <div class="photo_card_filename"><a target="_blank" href="/photo/{{photo.id}}">{{photo.basename}}</a></div> | ||||||
|     <span class="photo_card_metadata"> |     <span class="photo_card_metadata"> | ||||||
|         {{- metadata_inner|safe -}} |         {{- metadata_inner|safe -}} | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue