mirror of
				https://github.com/zadam/trilium.git
				synced 2025-10-31 02:16:05 +01:00 
			
		
		
		
	separate cloning dialog
This commit is contained in:
		| @@ -6,7 +6,7 @@ import utils from "../services/utils.js"; | |||||||
|  |  | ||||||
| const $dialog = $("#add-link-dialog"); | const $dialog = $("#add-link-dialog"); | ||||||
| const $form = $("#add-link-form"); | const $form = $("#add-link-form"); | ||||||
| const $autoComplete = $("#note-autocomplete"); | const $autoComplete = $("#add-link-note-autocomplete"); | ||||||
| const $linkTitle = $("#link-title"); | const $linkTitle = $("#link-title"); | ||||||
| const $addLinkTitleFormGroup = $("#add-link-title-form-group"); | const $addLinkTitleFormGroup = $("#add-link-title-form-group"); | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										55
									
								
								src/public/javascripts/dialogs/clone_to.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										55
									
								
								src/public/javascripts/dialogs/clone_to.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,55 @@ | |||||||
|  | import noteAutocompleteService from "../services/note_autocomplete.js"; | ||||||
|  | import utils from "../services/utils.js"; | ||||||
|  | import cloningService from "../services/cloning.js"; | ||||||
|  | import treeUtils from "../services/tree_utils.js"; | ||||||
|  | import noteDetailService from "../services/note_detail.js"; | ||||||
|  | import toastService from "../services/toast.js"; | ||||||
|  | import treeCache from "../services/tree_cache.js"; | ||||||
|  |  | ||||||
|  | const $dialog = $("#clone-to-dialog"); | ||||||
|  | const $form = $("#clone-to-form"); | ||||||
|  | const $noteAutoComplete = $("#clone-to-note-autocomplete"); | ||||||
|  | const $clonePrefix = $("#clone-prefix"); | ||||||
|  |  | ||||||
|  | let clonedNoteId; | ||||||
|  |  | ||||||
|  | export async function showDialog(noteId) { | ||||||
|  |     clonedNoteId = noteId || noteDetailService.getActiveTabNoteId(); | ||||||
|  |  | ||||||
|  |     if (!clonedNoteId) { | ||||||
|  |         return; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     utils.closeActiveDialog(); | ||||||
|  |  | ||||||
|  |     glob.activeDialog = $dialog; | ||||||
|  |  | ||||||
|  |     $dialog.modal(); | ||||||
|  |  | ||||||
|  |     $noteAutoComplete.val('').focus(); | ||||||
|  |  | ||||||
|  |     noteAutocompleteService.initNoteAutocomplete($noteAutoComplete); | ||||||
|  |     noteAutocompleteService.showRecentNotes($noteAutoComplete); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | $form.submit(() => { | ||||||
|  |     const notePath = $noteAutoComplete.getSelectedPath(); | ||||||
|  |  | ||||||
|  |     if (notePath) { | ||||||
|  |         $dialog.modal('hide'); | ||||||
|  |  | ||||||
|  |         const targetNoteId = treeUtils.getNoteIdFromNotePath(notePath); | ||||||
|  |  | ||||||
|  |         cloningService.cloneNoteTo(clonedNoteId, targetNoteId, $clonePrefix.val()).then(async () => { | ||||||
|  |             const clonedNote = await treeCache.getNote(clonedNoteId); | ||||||
|  |             const targetNote = await treeCache.getNote(targetNoteId); | ||||||
|  |  | ||||||
|  |             toastService.showMessage(`Note "${clonedNote.title}" has been cloned into ${targetNote.title}`); | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  |     else { | ||||||
|  |         console.error("No path to clone to."); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     return false; | ||||||
|  | }); | ||||||
| @@ -16,6 +16,7 @@ const HELP = "../dialogs/help.js"; | |||||||
| const NOTE_INFO = "../dialogs/note_info.js"; | const NOTE_INFO = "../dialogs/note_info.js"; | ||||||
| const ABOUT = "../dialogs/about.js"; | const ABOUT = "../dialogs/about.js"; | ||||||
| const LINK_MAP = "../dialogs/link_map.js"; | const LINK_MAP = "../dialogs/link_map.js"; | ||||||
|  | const CLONE_TO = "../dialogs/clone_to.js"; | ||||||
|  |  | ||||||
| function registerEntrypoints() { | function registerEntrypoints() { | ||||||
|     // hot keys are active also inside inputs and content editables |     // hot keys are active also inside inputs and content editables | ||||||
| @@ -185,6 +186,7 @@ function registerEntrypoints() { | |||||||
|         return false; |         return false; | ||||||
|     }); |     }); | ||||||
|  |  | ||||||
|  |     utils.bindGlobalShortcut('ctrl+e', () => import(CLONE_TO).then(d => d.showDialog())); | ||||||
| } | } | ||||||
|  |  | ||||||
| export default { | export default { | ||||||
|   | |||||||
| @@ -57,7 +57,7 @@ function initNoteAutocomplete($el, options) { | |||||||
|             .prop("title", "Show recent notes"); |             .prop("title", "Show recent notes"); | ||||||
|  |  | ||||||
|     const $goToSelectedNoteButton = $("<a>") |     const $goToSelectedNoteButton = $("<a>") | ||||||
|         .addClass("input-group-text go-to-selected-note-button bx bx-right-arrow") |         .addClass("input-group-text go-to-selected-note-button bx bx-arrow-to-right") | ||||||
|         .attr("data-action", "note"); |         .attr("data-action", "note"); | ||||||
|  |  | ||||||
|     const $sideButtons = $("<div>") |     const $sideButtons = $("<div>") | ||||||
|   | |||||||
| @@ -487,6 +487,10 @@ pre:not(.CodeMirror-line) { | |||||||
|     cursor: pointer; |     cursor: pointer; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | .show-recent-notes-button, .input-clearer-button, .go-to-selected-note-button { | ||||||
|  |     padding-top: 8px; | ||||||
|  | } | ||||||
|  |  | ||||||
| .show-recent-notes-button { | .show-recent-notes-button { | ||||||
|     cursor: pointer; |     cursor: pointer; | ||||||
|     font-size: 1.3em; |     font-size: 1.3em; | ||||||
|   | |||||||
| @@ -175,6 +175,7 @@ | |||||||
|     <% include dialogs/help.ejs %> |     <% include dialogs/help.ejs %> | ||||||
|     <% include dialogs/note_info.ejs %> |     <% include dialogs/note_info.ejs %> | ||||||
|     <% include dialogs/link_map.ejs %> |     <% include dialogs/link_map.ejs %> | ||||||
|  |     <% include dialogs/clone_to.ejs %> | ||||||
| </div> | </div> | ||||||
|  |  | ||||||
| <script type="text/javascript"> | <script type="text/javascript"> | ||||||
|   | |||||||
| @@ -13,10 +13,10 @@ | |||||||
|             <form id="add-link-form"> |             <form id="add-link-form"> | ||||||
|                 <div class="modal-body"> |                 <div class="modal-body"> | ||||||
|                     <div class="form-group"> |                     <div class="form-group"> | ||||||
|                         <label for="note-autocomplete">Note</label> |                         <label for="add-link-note-autocomplete">Note</label> | ||||||
|  |  | ||||||
|                         <div class="input-group"> |                         <div class="input-group"> | ||||||
|                             <input id="note-autocomplete" class="form-control" placeholder="search for note by its name"> |                             <input id="add-link-note-autocomplete" class="form-control" placeholder="search for note by its name"> | ||||||
|                         </div> |                         </div> | ||||||
|                     </div> |                     </div> | ||||||
|  |  | ||||||
| @@ -25,7 +25,7 @@ | |||||||
|                         <input id="link-title" class="form-control" style="width: 100%;"> |                         <input id="link-title" class="form-control" style="width: 100%;"> | ||||||
|                     </div> |                     </div> | ||||||
|                 </div> |                 </div> | ||||||
|                 <div class="modal-footer" style="display: flex; justify-content: space-between;"> |                 <div class="modal-footer"> | ||||||
|                     <button type="submit" class="btn btn-primary">Add note link <kbd>enter</kbd></button> |                     <button type="submit" class="btn btn-primary">Add note link <kbd>enter</kbd></button> | ||||||
|                 </div> |                 </div> | ||||||
|             </form> |             </form> | ||||||
|   | |||||||
							
								
								
									
										34
									
								
								src/views/dialogs/clone_to.ejs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								src/views/dialogs/clone_to.ejs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,34 @@ | |||||||
|  | <div id="clone-to-dialog" class="modal mx-auto" tabindex="-1" role="dialog"> | ||||||
|  |     <div class="modal-dialog modal-lg" style="max-width: 1000px" role="document"> | ||||||
|  |         <div class="modal-content"> | ||||||
|  |             <div class="modal-header"> | ||||||
|  |                 <h5 class="modal-title mr-auto">Clone note to ...</h5> | ||||||
|  |  | ||||||
|  |                 <button type="button" class="help-button" title="Help on links" data-help-page="Cloning-notes">?</button> | ||||||
|  |  | ||||||
|  |                 <button type="button" class="close" data-dismiss="modal" aria-label="Close" style="margin-left: 0 !important;"> | ||||||
|  |                     <span aria-hidden="true">×</span> | ||||||
|  |                 </button> | ||||||
|  |             </div> | ||||||
|  |             <form id="clone-to-form"> | ||||||
|  |                 <div class="modal-body"> | ||||||
|  |                     <div class="form-group"> | ||||||
|  |                         <label for="clone-to-note-autocomplete">Target parent note</label> | ||||||
|  |  | ||||||
|  |                         <div class="input-group"> | ||||||
|  |                             <input id="clone-to-note-autocomplete" class="form-control" placeholder="search for note by its name"> | ||||||
|  |                         </div> | ||||||
|  |                     </div> | ||||||
|  |  | ||||||
|  |                     <div class="form-group" title="Cloned note will be shown in note tree with given prefix"> | ||||||
|  |                         <label for="clone-prefix">Prefix (optional)</label> | ||||||
|  |                         <input id="clone-prefix" class="form-control" style="width: 100%;"> | ||||||
|  |                     </div> | ||||||
|  |                 </div> | ||||||
|  |                 <div class="modal-footer"> | ||||||
|  |                     <button type="submit" class="btn btn-primary">Clone to selected note <kbd>enter</kbd></button> | ||||||
|  |                 </div> | ||||||
|  |             </form> | ||||||
|  |         </div> | ||||||
|  |     </div> | ||||||
|  | </div> | ||||||
		Reference in New Issue
	
	Block a user