1
0
mirror of https://github.com/Jermolene/TiddlyWiki5 synced 2025-08-08 14:55:17 +00:00

Add confirmation when overwriting an existing tiddler

Now there's a JavaScript confirm when attempting to save a tiddler that
has been renamed to the name of an existing tiddler
This commit is contained in:
Jeremy Ruston 2013-09-14 21:57:23 +01:00
parent 642520862e
commit 10a635927d

View File

@ -187,32 +187,43 @@ NavigatorWidget.prototype.generateDraftTitle = function(title) {
// Take a tiddler out of edit mode, saving the changes // Take a tiddler out of edit mode, saving the changes
NavigatorWidget.prototype.handleSaveTiddlerEvent = function(event) { NavigatorWidget.prototype.handleSaveTiddlerEvent = function(event) {
this.getStoryList(); this.getStoryList();
var storyTiddlerModified = false; var storyTiddlerModified = false; // We have to special case saving the story tiddler itself
for(var t=0; t<this.storyList.length; t++) { for(var t=0; t<this.storyList.length; t++) {
if(this.storyList[t] === event.tiddlerTitle) { if(this.storyList[t] === event.tiddlerTitle) {
var tiddler = this.renderer.renderTree.wiki.getTiddler(event.tiddlerTitle); var tiddler = this.renderer.renderTree.wiki.getTiddler(event.tiddlerTitle);
if(tiddler.hasField("draft.title") && tiddler.fields["draft.title"]) { if(tiddler) {
var draftTitle = tiddler.fields["draft.title"],
draftOf = tiddler.fields["draft.of"];
if(draftTitle) {
var isRename = draftOf !== draftTitle,
isConfirmed = true;
if(isRename && this.renderer.renderTree.wiki.tiddlerExists(draftTitle)) {
isConfirmed = confirm("Do you wish to overwrite the tiddler '" + draftTitle + "'?");
}
if(isConfirmed) {
// Save the draft tiddler as the real tiddler // Save the draft tiddler as the real tiddler
this.renderer.renderTree.wiki.addTiddler(new $tw.Tiddler(this.renderer.renderTree.wiki.getCreationFields(),tiddler,{ this.renderer.renderTree.wiki.addTiddler(new $tw.Tiddler(this.renderer.renderTree.wiki.getCreationFields(),tiddler,{
title: tiddler.fields["draft.title"], title: draftTitle,
"draft.title": undefined, "draft.title": undefined,
"draft.of": undefined "draft.of": undefined
},this.renderer.renderTree.wiki.getModificationFields())); },this.renderer.renderTree.wiki.getModificationFields()));
// Remove the draft tiddler // Remove the draft tiddler
this.renderer.renderTree.wiki.deleteTiddler(event.tiddlerTitle); this.renderer.renderTree.wiki.deleteTiddler(event.tiddlerTitle);
// Remove the original tiddler if we're renaming it // Remove the original tiddler if we're renaming it
if(tiddler.fields["draft.of"] !== tiddler.fields["draft.title"]) { if(isRename) {
this.renderer.renderTree.wiki.deleteTiddler(tiddler.fields["draft.of"]); this.renderer.renderTree.wiki.deleteTiddler(draftOf);
} }
// Make the story record point to the newly saved tiddler // Make the story record point to the newly saved tiddler
this.storyList[t] = tiddler.fields["draft.title"]; this.storyList[t] = draftTitle;
// Check if we're modifying the story tiddler itself // Check if we're modifying the story tiddler itself
if(tiddler.fields["draft.title"] === this.storyTitle) { if(draftTitle === this.storyTitle) {
storyTiddlerModified = true; storyTiddlerModified = true;
} }
} }
} }
} }
}
}
if(!storyTiddlerModified) { if(!storyTiddlerModified) {
this.saveStoryList(); this.saveStoryList();
} }