Support giving title when creating albums. Two-step prompt.
This commit is contained in:
		
							parent
							
								
									5f6d21fdee
								
							
						
					
					
						commit
						a1919a7725
					
				
					 4 changed files with 93 additions and 32 deletions
				
			
		
							
								
								
									
										71
									
								
								frontends/etiquette_flask/static/js/albums.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								frontends/etiquette_flask/static/js/albums.js
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,71 @@ | |||
| var create_child_prompt_button; | ||||
| var create_child_title_entry; | ||||
| var create_child_submit_button; | ||||
| var create_child_cancel_button; | ||||
| 
 | ||||
| console.log(create_child_title_entry); | ||||
| function on_pageload() | ||||
| { | ||||
|     create_child_prompt_button = document.getElementById("create_child_prompt_button"); | ||||
|     create_child_title_entry = document.getElementById("create_child_title_entry"); | ||||
|     create_child_submit_button = document.getElementById("create_child_submit_button"); | ||||
|     create_child_cancel_button = document.getElementById("create_child_cancel_button"); | ||||
|     bind_box_to_button(create_child_title_entry, create_child_submit_button); | ||||
| } | ||||
| document.addEventListener("DOMContentLoaded", on_pageload); | ||||
| 
 | ||||
| 
 | ||||
| function open_creator_prompt(event) | ||||
| { | ||||
|     create_child_prompt_button.classList.add("hidden"); | ||||
|     create_child_title_entry.classList.remove("hidden"); | ||||
|     create_child_title_entry.focus(); | ||||
|     create_child_submit_button.classList.remove("hidden"); | ||||
|     create_child_cancel_button.classList.remove("hidden"); | ||||
| } | ||||
| 
 | ||||
| function cancel_create_child(event) | ||||
| { | ||||
|     create_child_prompt_button.classList.remove("hidden"); | ||||
|     create_child_title_entry.value = ""; | ||||
|     create_child_title_entry.classList.add("hidden"); | ||||
|     create_child_submit_button.classList.add("hidden"); | ||||
|     create_child_cancel_button.classList.add("hidden"); | ||||
| } | ||||
| 
 | ||||
| function create_album_and_follow(title, parent) | ||||
| { | ||||
|     var url = "/albums/create_album"; | ||||
|     var data = new FormData(); | ||||
|     if (title !== undefined) | ||||
|     { | ||||
|         data.append("title", title); | ||||
|     } | ||||
|     if (parent !== undefined) | ||||
|     { | ||||
|         data.append("parent", parent); | ||||
|     } | ||||
|     function receive_callback(response) | ||||
|     { | ||||
|         if (response["meta"]["status"] == 200 && response["data"]["id"]) | ||||
|         { | ||||
|             window.location.href = "/album/" + response["data"]["id"]; | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|             console.log(response); | ||||
|         } | ||||
|     } | ||||
|     post(url, data, receive_callback); | ||||
| } | ||||
| 
 | ||||
| function submit_create_child(event) | ||||
| { | ||||
|     var title = document.getElementById("create_child_title_entry").value; | ||||
|     if (! title) | ||||
|     { | ||||
|         title = undefined; | ||||
|     } | ||||
|     var parent_id = ALBUM_ID; | ||||
|     create_album_and_follow(title, parent_id); | ||||
| } | ||||
|  | @ -48,28 +48,6 @@ function post(url, data, callback) | |||
|     request.send(data); | ||||
| } | ||||
| 
 | ||||
| function create_album_and_follow(parent) | ||||
| { | ||||
|     var url = "/albums/create_album"; | ||||
|     var data = new FormData(); | ||||
|     if (parent !== undefined) | ||||
|     { | ||||
|         data.append("parent", parent); | ||||
|     } | ||||
|     function receive_callback(response) | ||||
|     { | ||||
|         if (response["meta"]["status"] == 200 && response["data"]["id"]) | ||||
|         { | ||||
|             window.location.href = "/album/" + response["data"]["id"]; | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|             console.log(response); | ||||
|         } | ||||
|     } | ||||
|     post(url, data, receive_callback); | ||||
| } | ||||
| 
 | ||||
| function delete_all_children(element) | ||||
| { | ||||
|     while (element.firstChild) | ||||
|  |  | |||
|  | @ -11,6 +11,7 @@ | |||
|     <link rel="stylesheet" href="/static/css/clipboard_tray.css"> | ||||
|     <link rel="stylesheet" href="/static/css/photo_card.css"> | ||||
|     <script src="/static/js/common.js"></script> | ||||
|     <script src="/static/js/albums.js"></script> | ||||
|     <script src="/static/js/editor.js"></script> | ||||
|     <script src="/static/js/photoclipboard.js"></script> | ||||
| 
 | ||||
|  | @ -81,7 +82,12 @@ p | |||
|                 {% for sub_album in sub_albums|sort(attribute='title') %} | ||||
|                 <li><a href="/album/{{sub_album.id}}{{viewparam}}">{{sub_album.display_name}}</a></li> | ||||
|                 {% endfor %} | ||||
|                 <li><button class="green_button" onclick="var parent='{{album.id}}'; create_album_and_follow(parent);">Create child</button></li> | ||||
|                 <li> | ||||
|                     <button id="create_child_prompt_button" class="green_button" onclick="open_creator_prompt(event);">Create child</button> | ||||
|                     <input type="text" id="create_child_title_entry" class="hidden" placeholder="Album title"> | ||||
|                     <button id="create_child_submit_button" class="green_button hidden" onclick="submit_create_child(event);">Create</button> | ||||
|                     <button id="create_child_cancel_button" class="red_button hidden" onclick="cancel_create_child(event);">Cancel</button> | ||||
|                 </li> | ||||
|             </ul> | ||||
|         </ul> | ||||
|     </ul> | ||||
|  | @ -125,12 +131,12 @@ p | |||
| 
 | ||||
| 
 | ||||
| <script type="text/javascript"> | ||||
| var blank_title_text = "Album {{album.id}}"; | ||||
| var ALBUM_ID = "{{album.id}}"; | ||||
| var BLANK_TITLE_TEXT = "Album {{album.id}}"; | ||||
| 
 | ||||
| function _paste_unpaste_photo_clipboard(add_or_remove) | ||||
| { | ||||
|     var photo_ids = Array.from(photo_clipboard); | ||||
|     photo_ids = photo_ids.join(","); | ||||
|     var photo_ids = Array.from(photo_clipboard).join(","); | ||||
|     var url = "/album/{{album.id}}/" + add_or_remove; | ||||
|     var data = new FormData(); | ||||
|     data.append("photo_id", photo_ids); | ||||
|  | @ -150,7 +156,6 @@ function paste_photo_clipboard() | |||
| { | ||||
|     _paste_unpaste_photo_clipboard("add_photo"); | ||||
| } | ||||
| 
 | ||||
| function unpaste_photo_clipboard() | ||||
| { | ||||
|     _paste_unpaste_photo_clipboard("remove_photo"); | ||||
|  | @ -169,7 +174,7 @@ document.getElementById("clipboard_tray_toolbox").appendChild(unpaste_photo_clip | |||
| 
 | ||||
| function on_open(editor, edit_element_map, display_element_map) | ||||
| { | ||||
|     if (display_element_map["title"].innerText == blank_title_text) | ||||
|     if (display_element_map["title"].innerText == BLANK_TITLE_TEXT) | ||||
|     { | ||||
|         display_element_map["title"].innerText = ""; | ||||
|     } | ||||
|  | @ -189,8 +194,8 @@ function on_save(editor, edit_element_map, display_element_map) | |||
|         editor.save(); | ||||
|         if (title_text.innerText == "") | ||||
|         { | ||||
|             document.title = blank_title_text; | ||||
|             title_text.innerText = blank_title_text; | ||||
|             document.title = BLANK_TITLE_TEXT; | ||||
|             title_text.innerText = BLANK_TITLE_TEXT; | ||||
|         } | ||||
|         else | ||||
|         { | ||||
|  | @ -214,7 +219,7 @@ function on_cancel(editor, edit_element_map, display_element_map) | |||
|     editor.cancel(); | ||||
|     if (display_element_map["title"].innerText == "") | ||||
|     { | ||||
|         display_element_map["title"].innerText = blank_title_text; | ||||
|         display_element_map["title"].innerText = BLANK_TITLE_TEXT; | ||||
|     } | ||||
|     if (display_element_map["description"].innerText == "") | ||||
|     { | ||||
|  |  | |||
|  | @ -7,6 +7,7 @@ | |||
|     <meta name="viewport" content="width=device-width, initial-scale=1.0"/> | ||||
|     <link rel="stylesheet" href="/static/css/common.css"> | ||||
|     <script src="/static/js/common.js"></script> | ||||
|     <script src="/static/js/albums.js"></script> | ||||
| 
 | ||||
| <style> | ||||
| #content_body | ||||
|  | @ -25,12 +26,18 @@ | |||
|         {% for album in albums %} | ||||
|         <li><a href="/album/{{album.id}}">{{album.display_name}}</a></li> | ||||
|         {% endfor %} | ||||
|         <li><button class="green_button" onclick="create_album_and_follow();">Create album</button></li> | ||||
|         <li> | ||||
|             <button id="create_child_prompt_button" class="green_button" onclick="open_creator_prompt(event);">Create album</button> | ||||
|             <input type="text" id="create_child_title_entry" class="hidden" placeholder="Album title"> | ||||
|             <button id="create_child_submit_button" class="green_button hidden" onclick="submit_create_child(event);">Create</button> | ||||
|             <button id="create_child_cancel_button" class="red_button hidden" onclick="cancel_create_child(event);">Cancel</button> | ||||
|         </li> | ||||
|     </ul> | ||||
| </div> | ||||
| </body> | ||||
| 
 | ||||
| 
 | ||||
| <script type="text/javascript"> | ||||
| ALBUM_ID = undefined; | ||||
| </script> | ||||
| </html> | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue