mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2024-12-29 11:30:28 +00:00
1c23059204
* First pass at dynamic loading/unloading * Show warning for changes to plugins containing JS modules * Use $:/config/RegisterPluginType/* for configuring whether a plugin type is automatically registered Where "registered" means "the constituent shadows are loaded". * Fix the info plugin The previous mechanism re-read all plugin info during startup * Don't prettify JSON in the plugin library * Indicate in plugin library whether a plugin requires reloading * Display the highlighted plugin name in the plugin chooser And if there's no name field fall back to the part of the title after the final slash.
51 lines
1.5 KiB
JavaScript
51 lines
1.5 KiB
JavaScript
/*\
|
|
title: $:/core/modules/startup/info.js
|
|
type: application/javascript
|
|
module-type: startup
|
|
|
|
Initialise $:/info tiddlers via $:/temp/info-plugin pseudo-plugin
|
|
|
|
\*/
|
|
(function(){
|
|
|
|
/*jslint node: true, browser: true */
|
|
/*global $tw: false */
|
|
"use strict";
|
|
|
|
// Export name and synchronous status
|
|
exports.name = "info";
|
|
exports.before = ["startup"];
|
|
exports.after = ["load-modules"];
|
|
exports.synchronous = true;
|
|
|
|
var TITLE_INFO_PLUGIN = "$:/temp/info-plugin";
|
|
|
|
exports.startup = function() {
|
|
// Collect up the info tiddlers
|
|
var infoTiddlerFields = {};
|
|
// Give each info module a chance to fill in as many info tiddlers as they want
|
|
$tw.modules.forEachModuleOfType("info",function(title,moduleExports) {
|
|
if(moduleExports && moduleExports.getInfoTiddlerFields) {
|
|
var tiddlerFieldsArray = moduleExports.getInfoTiddlerFields(infoTiddlerFields);
|
|
$tw.utils.each(tiddlerFieldsArray,function(fields) {
|
|
if(fields) {
|
|
infoTiddlerFields[fields.title] = fields;
|
|
}
|
|
});
|
|
}
|
|
});
|
|
// Bake the info tiddlers into a plugin. We use the non-standard plugin-type "info" because ordinary plugins are only registered asynchronously after being loaded dynamically
|
|
var fields = {
|
|
title: TITLE_INFO_PLUGIN,
|
|
type: "application/json",
|
|
"plugin-type": "info",
|
|
text: JSON.stringify({tiddlers: infoTiddlerFields},null,$tw.config.preferences.jsonSpaces)
|
|
};
|
|
$tw.wiki.addTiddler(new $tw.Tiddler(fields));
|
|
$tw.wiki.readPluginInfo([TITLE_INFO_PLUGIN]);
|
|
$tw.wiki.registerPluginTiddlers("info");
|
|
$tw.wiki.unpackPluginTiddlers();
|
|
};
|
|
|
|
})();
|