1
0
mirror of https://github.com/Jermolene/TiddlyWiki5 synced 2025-10-23 03:37:39 +00:00

Fix renaming a tiddler can result in duplicate tags

Fixes #6398
This commit is contained in:
jeremy@jermolene.com
2022-01-14 16:57:30 +00:00
parent 54bfb28063
commit 35f7a8ea06

View File

@@ -46,26 +46,31 @@ function relinkTiddler(fromTitle,toTitle,options) {
if(!tiddler.fields["plugin-type"] && type !== "application/javascript") { if(!tiddler.fields["plugin-type"] && type !== "application/javascript") {
var tags = tiddler.fields.tags ? tiddler.fields.tags.slice(0) : undefined, var tags = tiddler.fields.tags ? tiddler.fields.tags.slice(0) : undefined,
list = tiddler.fields.list ? tiddler.fields.list.slice(0) : undefined, list = tiddler.fields.list ? tiddler.fields.list.slice(0) : undefined,
isModified = false; isModified = false,
if(!options.dontRenameInTags) { processList = function(listField) {
// Rename tags if(listField && listField.indexOf(fromTitle) !== -1) {
$tw.utils.each(tags,function (title,index) { // Remove any existing instances of the toTitle
var p = listField.indexOf(toTitle);
while(p !== -1) {
listField.splice(p,1);
p = listField.indexOf(toTitle);
}
// Replace the fromTitle with toTitle
$tw.utils.each(listField,function (title,index) {
if(title === fromTitle) { if(title === fromTitle) {
console.log("Renaming tag '" + tags[index] + "' to '" + toTitle + "' of tiddler '" + tiddler.fields.title + "'"); listField[index] = toTitle;
tags[index] = toTitle;
isModified = true; isModified = true;
} }
}); });
} }
};
if(!options.dontRenameInTags) {
// Rename tags
processList(tags);
}
if(!options.dontRenameInLists) { if(!options.dontRenameInLists) {
// Rename lists // Rename lists
$tw.utils.each(list,function (title,index) { processList(list);
if(title === fromTitle) {
console.log("Renaming list item '" + list[index] + "' to '" + toTitle + "' of tiddler '" + tiddler.fields.title + "'");
list[index] = toTitle;
isModified = true;
}
});
} }
if(isModified) { if(isModified) {
var newTiddler = new $tw.Tiddler(tiddler,{tags: tags, list: list},self.getModificationFields()) var newTiddler = new $tw.Tiddler(tiddler,{tags: tags, list: list},self.getModificationFields())