mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2024-11-15 14:24:51 +00:00
e8bb897e26
When renaming an existing tiddler, the edit template now shows a checkbox that determines whether or not to relink references to the tiddler in the list or tags fields of other tiddlers.
81 lines
2.3 KiB
JavaScript
81 lines
2.3 KiB
JavaScript
/*\
|
|
title: $:/core/modules/wiki-bulkops.js
|
|
type: application/javascript
|
|
module-type: wikimethod
|
|
|
|
Bulk tiddler operations such as rename.
|
|
|
|
\*/
|
|
(function(){
|
|
|
|
/*jslint node: true, browser: true */
|
|
/*global $tw: false */
|
|
"use strict";
|
|
|
|
/*
|
|
Rename a tiddler, and relink any tags or lists that reference it.
|
|
*/
|
|
function renameTiddler(fromTitle,toTitle,options) {
|
|
var self = this;
|
|
fromTitle = (fromTitle || "").trim();
|
|
toTitle = (toTitle || "").trim();
|
|
options = options || {};
|
|
if(fromTitle && toTitle && fromTitle !== toTitle) {
|
|
// Rename the tiddler itself
|
|
var tiddler = this.getTiddler(fromTitle);
|
|
this.addTiddler(new $tw.Tiddler(tiddler,{title: toTitle},this.getModificationFields()));
|
|
this.deleteTiddler(fromTitle);
|
|
// Rename any tags or lists that reference it
|
|
relinkTiddler(fromTitle,toTitle,options)
|
|
}
|
|
}
|
|
|
|
/*
|
|
Relink any tags or lists that reference a given tiddler
|
|
*/
|
|
function relinkTiddler(fromTitle,toTitle,options) {
|
|
var self = this;
|
|
fromTitle = (fromTitle || "").trim();
|
|
toTitle = (toTitle || "").trim();
|
|
options = options || {};
|
|
if(fromTitle && toTitle && fromTitle !== toTitle) {
|
|
this.each(function(tiddler,title) {
|
|
var type = tiddler.fields.type || "";
|
|
// Don't touch plugins or JavaScript modules
|
|
if(!tiddler.fields["plugin-type"] && type !== "application/javascript") {
|
|
var tags = (tiddler.fields.tags || []).slice(0),
|
|
list = (tiddler.fields.list || []).slice(0),
|
|
isModified = false;
|
|
if(!options.dontRenameInTags) {
|
|
// Rename tags
|
|
$tw.utils.each(tags,function (title,index) {
|
|
if(title === fromTitle) {
|
|
console.log("Renaming tag '" + tags[index] + "' to '" + toTitle + "' of tiddler '" + tiddler.fields.title + "'");
|
|
tags[index] = toTitle;
|
|
isModified = true;
|
|
}
|
|
});
|
|
}
|
|
if(!options.dontRenameInLists) {
|
|
// Rename lists
|
|
$tw.utils.each(list,function (title,index) {
|
|
if(title === fromTitle) {
|
|
console.log("Renaming list item '" + list[index] + "' to '" + toTitle + "' of tiddler '" + tiddler.fields.title + "'");
|
|
list[index] = toTitle;
|
|
isModified = true;
|
|
}
|
|
});
|
|
}
|
|
if(isModified) {
|
|
self.addTiddler(new $tw.Tiddler(tiddler,{tags: tags, list: list},self.getModificationFields()));
|
|
}
|
|
}
|
|
});
|
|
}
|
|
};
|
|
|
|
exports.renameTiddler = renameTiddler;
|
|
exports.relinkTiddler = relinkTiddler;
|
|
|
|
})();
|