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); |     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) | function delete_all_children(element) | ||||||
| { | { | ||||||
|     while (element.firstChild) |     while (element.firstChild) | ||||||
|  |  | ||||||
|  | @ -11,6 +11,7 @@ | ||||||
|     <link rel="stylesheet" href="/static/css/clipboard_tray.css"> |     <link rel="stylesheet" href="/static/css/clipboard_tray.css"> | ||||||
|     <link rel="stylesheet" href="/static/css/photo_card.css"> |     <link rel="stylesheet" href="/static/css/photo_card.css"> | ||||||
|     <script src="/static/js/common.js"></script> |     <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/editor.js"></script> | ||||||
|     <script src="/static/js/photoclipboard.js"></script> |     <script src="/static/js/photoclipboard.js"></script> | ||||||
| 
 | 
 | ||||||
|  | @ -81,7 +82,12 @@ p | ||||||
|                 {% for sub_album in sub_albums|sort(attribute='title') %} |                 {% for sub_album in sub_albums|sort(attribute='title') %} | ||||||
|                 <li><a href="/album/{{sub_album.id}}{{viewparam}}">{{sub_album.display_name}}</a></li> |                 <li><a href="/album/{{sub_album.id}}{{viewparam}}">{{sub_album.display_name}}</a></li> | ||||||
|                 {% endfor %} |                 {% 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> |         </ul> | ||||||
|     </ul> |     </ul> | ||||||
|  | @ -125,12 +131,12 @@ p | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| <script type="text/javascript"> | <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) | function _paste_unpaste_photo_clipboard(add_or_remove) | ||||||
| { | { | ||||||
|     var photo_ids = Array.from(photo_clipboard); |     var photo_ids = Array.from(photo_clipboard).join(","); | ||||||
|     photo_ids = photo_ids.join(","); |  | ||||||
|     var url = "/album/{{album.id}}/" + add_or_remove; |     var url = "/album/{{album.id}}/" + add_or_remove; | ||||||
|     var data = new FormData(); |     var data = new FormData(); | ||||||
|     data.append("photo_id", photo_ids); |     data.append("photo_id", photo_ids); | ||||||
|  | @ -150,7 +156,6 @@ function paste_photo_clipboard() | ||||||
| { | { | ||||||
|     _paste_unpaste_photo_clipboard("add_photo"); |     _paste_unpaste_photo_clipboard("add_photo"); | ||||||
| } | } | ||||||
| 
 |  | ||||||
| function unpaste_photo_clipboard() | function unpaste_photo_clipboard() | ||||||
| { | { | ||||||
|     _paste_unpaste_photo_clipboard("remove_photo"); |     _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) | 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 = ""; |         display_element_map["title"].innerText = ""; | ||||||
|     } |     } | ||||||
|  | @ -189,8 +194,8 @@ function on_save(editor, edit_element_map, display_element_map) | ||||||
|         editor.save(); |         editor.save(); | ||||||
|         if (title_text.innerText == "") |         if (title_text.innerText == "") | ||||||
|         { |         { | ||||||
|             document.title = blank_title_text; |             document.title = BLANK_TITLE_TEXT; | ||||||
|             title_text.innerText = blank_title_text; |             title_text.innerText = BLANK_TITLE_TEXT; | ||||||
|         } |         } | ||||||
|         else |         else | ||||||
|         { |         { | ||||||
|  | @ -214,7 +219,7 @@ function on_cancel(editor, edit_element_map, display_element_map) | ||||||
|     editor.cancel(); |     editor.cancel(); | ||||||
|     if (display_element_map["title"].innerText == "") |     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 == "") |     if (display_element_map["description"].innerText == "") | ||||||
|     { |     { | ||||||
|  |  | ||||||
|  | @ -7,6 +7,7 @@ | ||||||
|     <meta name="viewport" content="width=device-width, initial-scale=1.0"/> |     <meta name="viewport" content="width=device-width, initial-scale=1.0"/> | ||||||
|     <link rel="stylesheet" href="/static/css/common.css"> |     <link rel="stylesheet" href="/static/css/common.css"> | ||||||
|     <script src="/static/js/common.js"></script> |     <script src="/static/js/common.js"></script> | ||||||
|  |     <script src="/static/js/albums.js"></script> | ||||||
| 
 | 
 | ||||||
| <style> | <style> | ||||||
| #content_body | #content_body | ||||||
|  | @ -25,12 +26,18 @@ | ||||||
|         {% for album in albums %} |         {% for album in albums %} | ||||||
|         <li><a href="/album/{{album.id}}">{{album.display_name}}</a></li> |         <li><a href="/album/{{album.id}}">{{album.display_name}}</a></li> | ||||||
|         {% endfor %} |         {% 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> |     </ul> | ||||||
| </div> | </div> | ||||||
| </body> | </body> | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| <script type="text/javascript"> | <script type="text/javascript"> | ||||||
|  | ALBUM_ID = undefined; | ||||||
| </script> | </script> | ||||||
| </html> | </html> | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue