mirror of
https://gitlab.com/octtspacc/OcttKB
synced 2025-06-06 00:29:12 +02:00
OcttKB Cross-Repo Sync (HTML to Raw)
This commit is contained in:
@ -0,0 +1,80 @@
|
||||
/*\
|
||||
module-type: startup
|
||||
|
||||
Replaces the relinkTiddler defined in $:/core/modules/wiki-bulkops.js
|
||||
|
||||
This is a startup instead of a wikimethods module-type because it's the only
|
||||
way to ensure this runs after the old relinkTiddler method is applied.
|
||||
|
||||
\*/
|
||||
(function(){
|
||||
|
||||
/*jslint node: false, browser: true */
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
var language = require('$:/plugins/flibbles/relink/js/language.js');
|
||||
var utils = require("$:/plugins/flibbles/relink/js/utils.js");
|
||||
|
||||
exports.name = "redefine-relinkTiddler";
|
||||
exports.synchronous = true;
|
||||
// load-modules is when wikimethods are applied in
|
||||
// ``$:/core/modules/startup/load-modules.js``
|
||||
exports.after = ['load-modules'];
|
||||
// We come before commands because they may do renaming, or jasmine testing
|
||||
exports.before = ['commands'];
|
||||
|
||||
exports.startup = function() {
|
||||
$tw.Wiki.prototype.relinkTiddler = relinkTiddler;
|
||||
};
|
||||
|
||||
/** Walks through all relinkable tiddlers and relinks them.
|
||||
* This replaces the existing function in core Tiddlywiki.
|
||||
*/
|
||||
function relinkTiddler(fromTitle, toTitle, options) {
|
||||
options = options || {};
|
||||
var failures = [];
|
||||
var indexer = utils.getIndexer(this);
|
||||
var records = indexer.relinkLookup(fromTitle, toTitle, options);
|
||||
for (var title in records) {
|
||||
var entries = records[title],
|
||||
changes = Object.create(null),
|
||||
update = false,
|
||||
fails = false;
|
||||
for (var field in entries) {
|
||||
var entry = entries[field];
|
||||
fails = fails || entry.impossible;
|
||||
if (entry.output !== undefined) {
|
||||
changes[field] = entry.output;
|
||||
update = true;
|
||||
}
|
||||
}
|
||||
if (fails) {
|
||||
failures.push(title);
|
||||
}
|
||||
// If any fields changed, update tiddler
|
||||
if (update) {
|
||||
console.log("Renaming '"+fromTitle+"' to '"+toTitle+"' in '" + title + "'");
|
||||
|
||||
var tiddler = this.getTiddler(title);
|
||||
var modifyField = utils.touchModifyField(this) ? this.getModificationFields() : undefined;
|
||||
var newTiddler = new $tw.Tiddler(tiddler,changes,modifyField)
|
||||
newTiddler = $tw.hooks.invokeHook("th-relinking-tiddler",newTiddler,tiddler);
|
||||
this.addTiddler(newTiddler);
|
||||
// If the title changed, we need to perform a nested rename
|
||||
if (newTiddler.fields.title !== title) {
|
||||
this.deleteTiddler(title);
|
||||
this.relinkTiddler(title, newTiddler.fields.title,options);
|
||||
}
|
||||
}
|
||||
};
|
||||
if (failures.length > 0) {
|
||||
var options = $tw.utils.extend(
|
||||
{ variables: {to: toTitle, from: fromTitle},
|
||||
wiki: this},
|
||||
options );
|
||||
language.reportFailures(failures, options);
|
||||
}
|
||||
};
|
||||
|
||||
})();
|
Reference in New Issue
Block a user