author: Andreas Hahn core-version: >=5.1.20 dependents: description: An easy plugin packer list: readme usage license name: Tinka plugin-type: plugin source: https://tinkaplugin.github.io title: $:/plugins/ahahn/tinka type: application/json version: 0.5.0 { "tiddlers": { "$:/plugins/ahahn/tinka/docs/Help Tab": { "title": "$:/plugins/ahahn/tinka/docs/Help Tab", "type": "text/vnd.tiddlywiki", "text": "!!Using the Sidebar Tab\n\nWhen working on a plugin, it is often handy to be able to navigate quickly between the plugin tiddlers. That is what the Sidebar Tab is for.\r\nAfter enabling it in the \"Tinka Plugin Management\" tab for a specific plugin in the Control Panel, it gives you an additional sidebar tab, that contains a list of all the tiddlers that are contained in the plugin in question. Furthermore, it also shows you tiddlers that live in the same \"directory\" which are likely tiddlers that you want to add to the plugin eventually.\n\nIf you have tiddlers whose names aren't prefixed by the plugin path, you can use the Filter search included in the help tab to select those. For example, if the rest of your tiddlers is scattered somewhere in the wiki, but tagged with myPlugin, you could use the filter: `[tag[myPlugin]]` to select them.\n\nThe \"Quick Package\" button gives you the option of quickly integrating changes you made to individual tiddlers into the plugin. Note that the \"Quick Package\" Button will only integrate the changes you made to tiddlers already contained in the plugin into the plugin tiddler itself, you can't add new tiddlers to a plugin this way. For those tasks, you will still have to use the control panel menu.\r\n" }, "$:/plugins/ahahn/tinka/docs/How to create a new plugin": { "title": "$:/plugins/ahahn/tinka/docs/How to create a new plugin", "type": "text/vnd.tiddlywiki", "text": "!! How to create a new plugin\n\nTo create a completely new plugin, first go to the Control Panel extension Tinka provides and click on the \"Create new Plugin\" button. Next enter the ''plugin type'' of the plugin you want to create or choose a type from the dropdown menu. Usually you will want to use either the value \"''plugin''\" or \"''theme''\", as this covers most cases of plugins.\n\nNext is the ''plugin path'': This is the name of the tiddler where the finished plugin is going to be stored in. TiddlyWiki uses a special naming theme for these, so you will mostly find that the actual tiddlers that contain a plugin are named in this scheme:\n\n`$:/plugins/myOrganisation/pluginName`. \n\nThis ensures that plugins can be not only immideately recognized, but are also separate from other tiddlers in the wiki.\n\nAfter also entering a title for your new plugin or theme, you are basically good to go. These three fields: ''plugin type'', ''plugin path'' and the ''plugin title'' are all the fields that are required for a functioning plugin. In theory, you could now go ahead and press the \"''Package Plugin''\" button, which will give you an empty plugin shell to which you can add tiddlers later.\n\nIn most cases however it is desired to also fill out the rest of the metadata fields. In detail, these are:\n\n* ''(Plugin-)Name:'' This will be the name of the plugin that is prominently displayed in the control panel.\r\n* ''(Plugin-)Description:'' This is a short description of the plugin's functionality that is displayed after the name in the control panel.\r\n* ''Author:'' Name of the plugin author.\r\n* ''Source:'' Website or URL of the plugin, also the place where updates are found.\r\n* ''Dependents:'' List of plugins this plugin depends on (usually empty, but e.g. `$:/core`)\r\n* ''List'': List of tiddlers contained in the plugin, that will serve as readme tiddlers, when inspecting a plugin via the control panel. (e.g. `$:/plugins/ahahn/tinka/readme`)\r\n* ''Version:'' Version of your plugin in the format: X.X.X\r\n* ''Core-Version:'' Usually the minimal TiddlyWiki version your plugin requires in order for it to work (e.g //>=5.1.8//)\n\nAfter entering the metadata, all that is left is to select the tiddlers you want to include in the plugin. You can search for these via the default search field, but you can also use a filter to find them (e.g. based on a tag). In most cases it is sufficient to enter the name of the plugin into the default search in order to find the tiddlers that belong to the plugin. Lastly, just click the \"''Package Plugin''\" button and you're done, you have now created your first plugin. A save&refresh will be required for it to be loaded into TiddlyWiki.\r\n" }, "$:/plugins/ahahn/tinka/icon": { "title": "$:/plugins/ahahn/tinka/icon", "type": "image/svg+xml", "text": "\r\n\n\n\r\n \r\n \r\n \r\n \r\n \r\n image/svg+xml\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n" }, "$:/plugins/ahahn/tinka/tinka-backupPlugin.js": { "title": "$:/plugins/ahahn/tinka/tinka-backupPlugin.js", "text": "/*\\\r\ntitle: $:/plugins/ahahn/tinka/tinka-backupPlugin.js\r\ntype: application/javascript\r\nmodule-type: widget\r\n\r\nTinka's backup action widget to backup a plugin.\r\n \r\nBacks up the specified plugin tiddler and modifies the \r\n'plugin-type' and 'title' field accordingly.\r\n\r\n\\*/\r\n(function(){\r\n\r\n/*jslint node: true, browser: true */\r\n/*global $tw: false */\r\n\"use strict\";\r\n\r\nvar CommonAction = require(\"$:/plugins/ahahn/tinka/tinkaCommonAction.js\").tinkaCommonAction;\r\n\r\nvar BackupPluginWidget = function(parseTreeNode,options) {\r\n this.initialise(parseTreeNode,options);\r\n this.setup(false,false,{\r\n \"$plugin\": \"\",\r\n \"$restore\": \"no\"\r\n },false);\r\n};\r\n\r\n/*\r\nInherit from the base widget class\r\n*/\r\nBackupPluginWidget.prototype = new CommonAction();\r\n\r\n/*\r\nSmall string table\r\n*/\r\nBackupPluginWidget.prototype.CONFIRM_OVERRIDE = \"You are about to restore a backup, but another version of this plugin is already active. Do you want to backup the current version (if not already existing) and restore this backup anyway ?\"; \r\n\r\n/*\r\nInvoke the action associated with this widget\r\n*/\r\nBackupPluginWidget.prototype.invokeAction = function(triggeringWidget,event) {\r\n this.actionPlugin = this.param[\"$plugin\"];\r\n this.actionRestore = this.param[\"$restore\"];\r\n\r\n if(this.actionPlugin) {\r\n if(this.actionRestore == \"yes\") {\r\n var backupTiddler = this.wiki.getTiddler(this.actionPlugin);\r\n var operationConfirmed = true;\r\n if(backupTiddler instanceof $tw.Tiddler) { \r\n if(this.checkIfExists(backupTiddler.fields[\"original-title\"])) {\r\n operationConfirmed = false;\r\n operationConfirmed = confirm(this.CONFIRM_OVERRIDE);\r\n if(operationConfirmed) {\r\n // after backing up, delete current $original-title Tiddler\r\n this.backupPlugin(backupTiddler.fields[\"original-title\"]);\r\n this.wiki.deleteTiddler(backupTiddler.fields[\"original-title\"]); \r\n }\r\n }\r\n \r\n if(operationConfirmed) {\r\n var pluginType = this.determinePluginType(backupTiddler.fields[\"plugin-type\"]);\r\n this.wiki.addTiddler(new $tw.Tiddler(backupTiddler,{\r\n \"title\": backupTiddler.fields[\"original-title\"],\r\n \"original-title\": undefined,\r\n \"type\": \"application/json\",\r\n \"plugin-type\": pluginType\r\n }));\r\n }\r\n }\r\n }\r\n else {\r\n this.backupPlugin(this.actionPlugin);\r\n }\r\n }\r\n return true; // Action was invoked\r\n};\r\n\r\nBackupPluginWidget.prototype.determinePluginType = function(name) {\r\n var reg = /(.*)-backup/;\r\n var matches = name.match(reg);\r\n \r\n if(matches != null) {\r\n return matches[1]; \r\n }\r\n \r\n return \"plugin\";\r\n}\r\n\r\n\r\nBackupPluginWidget.prototype.backupPlugin = function(plugin) {\r\n var pluginTiddler = this.wiki.getTiddler(plugin);\r\n var didBackup = false;\r\n if(pluginTiddler instanceof $tw.Tiddler) {\r\n var backupTitle = this.getBackupTitle(pluginTiddler.fields.title,pluginTiddler.fields.version);\r\n didBackup = true;\r\n \r\n //Don't make a backup if a backup already exists\r\n if(!this.checkIfExists(backupTitle)) {\r\n var backupTiddler = new $tw.Tiddler(pluginTiddler, {\r\n \"title\": backupTitle,\r\n \"original-title\": pluginTiddler.fields.title,\r\n \"plugin-type\": \"\" + pluginTiddler.fields[\"plugin-type\"] + \"-backup\",\r\n \"type\": \"text/plain\"\r\n });\r\n\r\n this.wiki.addTiddler(backupTiddler); \r\n }\r\n }\r\n return didBackup;\r\n}\r\n\r\nBackupPluginWidget.prototype.getBackupTitle = function(title,version) {\r\n return \"\" + title + \"-\" + version + \"-backup\";\r\n};\r\n \r\nBackupPluginWidget.prototype.checkIfExists = function(tiddler) {\r\n return this.wiki.getTiddler(tiddler) != undefined;\r\n}\r\n\r\nexports[\"tinka-backupPlugin\"] = BackupPluginWidget;\r\n\r\n})();\r\n", "type": "application/javascript", "module-type": "widget" }, "$:/plugins/ahahn/tinka/tinka-check.js": { "title": "$:/plugins/ahahn/tinka/tinka-check.js", "text": "/*\\\r\ntitle: $:/plugins/ahahn/tinka/tinka-check.js\r\ntype: application/javascript\r\nmodule-type: widget\r\n\r\nChecks param \"text\" for match with \"pattern\".\r\n\r\n\\*/\r\n(function(){\r\n\r\n/*jslint node: true, browser: true */\r\n/*global $tw: false */\r\n\"use strict\";\r\n\r\nvar TinkaCommonActionWidget = require(\"$:/plugins/ahahn/tinka/tinkaCommonAction.js\").tinkaCommonAction;\r\n\r\nvar CheckAction = function(parseTreeNode,options) {\r\n\tthis.initialise(parseTreeNode,options);\r\n\tthis.setup(false,true,[\"text\", \"pattern\"],true);\r\n};\r\n\r\nCheckAction.prototype = new TinkaCommonActionWidget();\r\n/*\r\nInvoke the action associated with this widget\r\n*/\r\nCheckAction.prototype.invokeAction = function(triggeringWidget,event) {\r\n\t//important: recompute Attributes\r\n\tthis.processAttributes();\r\n\tvar regexp = new RegExp(this.param[\"pattern\"]);\r\n\t\r\n\tif(regexp.test(this.param[\"text\"])) {\r\n\t\tvar ev = {};\r\n\t\tev.verb = \"pass\";\r\n\t\tev.data = event;\r\n\t\tthis.invokeActions(triggeringWidget,ev); \r\n\t}\r\n\telse {\r\n\t\tvar ev = {};\r\n\t\tev.verb = \"fail\";\r\n\t\tev.data = event;\r\n\t\tthis.invokeActions(triggeringWidget,ev);\r\n\t}\r\n\t\r\n\treturn true; // Action was invoked\r\n};\r\n\r\nexports[\"tinka-check\"] = CheckAction;\r\n\r\n})();\r\n", "type": "application/javascript", "module-type": "widget" }, "$:/plugins/ahahn/tinka/tinka-filter.js": { "title": "$:/plugins/ahahn/tinka/tinka-filter.js", "text": "/*\\\r\ntitle: $:/plugins/ahahn/tinka/tinka-filter.js\r\ntype: application/javascript\r\nmodule-type: widget\r\n\r\nWidgets to filters actions according to their verb.\r\n\r\n\\*/\r\n(function(){\r\n\r\n/*jslint node: true, browser: true */\r\n/*global $tw: false */\r\n\"use strict\";\r\n\r\nvar TinkaCommonActionWidget = require(\"$:/plugins/ahahn/tinka/tinkaCommonAction.js\").tinkaCommonAction;\r\n\r\nvar FilterAction = function(parseTreeNode,options) {\r\n\tthis.initialise(parseTreeNode,options);\r\n\tthis.setup(false, true, [\"verb\"], true);\r\n};\r\n\r\nFilterAction.prototype = new TinkaCommonActionWidget();\r\n/*\r\nInvoke the action associated with this widget\r\n*/\r\nFilterAction.prototype.invokeAction = function(triggeringWidget,event) {\r\n\tif (event.verb === this.param[\"verb\"]) {\r\n\t\tthis.invokeActions(triggeringWidget, event);\r\n\t}\r\n\treturn true; // Action was invoked\r\n};\r\n\r\nexports[\"tinka-filter\"] = FilterAction;\r\n\r\n})();\r\n", "type": "application/javascript", "module-type": "widget" }, "$:/plugins/ahahn/tinka/tinka-repackagePlugin.js": { "title": "$:/plugins/ahahn/tinka/tinka-repackagePlugin.js", "text": "/*\\\r\ntitle: $:/plugins/ahahn/tinka/tinka-repackagePlugin.js\r\ntype: application/javascript\r\nmodule-type: widget\r\n\r\nrepackagePlugin action widget\r\n\r\n<$repackagePlugin $plugin=<> $repackage=\"yes\" $diff=<> />\r\n\r\n\\*/\r\n(function(){\r\n\r\n/*jslint node: true, browser: true */\r\n/*global $tw: false */\r\n\"use strict\";\r\n\r\nvar CommonAction = require(\"$:/plugins/ahahn/tinka/tinkaCommonAction.js\").tinkaCommonAction;\r\n\r\n \r\nvar repackagePluginWidget = function(parseTreeNode,options) {\r\n\tthis.initialise(parseTreeNode,options);\r\n this.setup(false,false,[\"$plugin\",\"$create\",\"$diff\"],false);\r\n};\r\n\r\n/*\r\nInherit from the base widget class\r\n*/\r\nrepackagePluginWidget.prototype = new CommonAction();\r\n\r\n/*\r\nInvoke the action associated with this widget\r\n*/\r\nrepackagePluginWidget.prototype.invokeAction = function(triggeringWidget,event) {\r\n \tvar diff = {};\r\n \tvar title = \"\";\r\n\tthis.actionPlugin = this.param[\"$plugin\"];\r\n\tthis.actionCreate = this.param[\"$create\"];\r\n \tthis.actionDiff = this.param[\"$diff\"];\r\n\r\n \tif(this.actionPlugin) {\r\n title = this.actionPlugin;\r\n if(this.actionDiff) {\r\n \tvar tid = this.wiki.getTiddler(this.actionDiff);\r\n diff = tid || {};\r\n }\r\n \r\n if(this.actionCreate == \"yes\") {\r\n //create new plugin Tiddler with the data from the diff tiddler\r\n var pluginTid = {};\r\n \r\n title = diff.fields[\"create-title\"] || this.actionPlugin;\r\n pluginTid.title = title;\r\n pluginTid[\"text\"] =\t\"{\\\"tiddlers\\\": {}}\";\r\n pluginTid[\"type\"] = \"application/json\";\r\n pluginTid[\"author\"] = diff.fields[\"create-author\"];\r\n pluginTid[\"description\"] = diff.fields[\"create-description\"];\r\n\t\tpluginTid[\"name\"] = diff.fields[\"create-name\"];\r\n pluginTid[\"list\"] = diff.fields[\"create-list\"];\r\n pluginTid[\"plugin-type\"] = diff.fields[\"create-plugin-type\"];\r\n pluginTid[\"dependents\"] = diff.fields[\"create-dependents\"];\r\n pluginTid[\"version\"] = diff.fields[\"create-version\"];\r\n pluginTid[\"core-version\"] = diff.fields[\"create-core-version\"];\r\n this.wiki.addTiddler(new $tw.Tiddler(pluginTid));\r\n }\r\n \r\n //execute repackaging\r\n $tw.utils.repackPlugin(title,diff.fields.addTiddlers,diff.fields.removeTiddlers);\r\n \t}\r\n};\r\n\r\nexports[\"tinka-repackagePlugin\"] = repackagePluginWidget;\r\n\r\n})();\r\n", "type": "application/javascript", "module-type": "widget" }, "$:/plugins/ahahn/tinka/tinka-saveTaglistToField.js": { "title": "$:/plugins/ahahn/tinka/tinka-saveTaglistToField.js", "text": "/*\\\r\ntitle: $:/plugins/ahahn/tinka/tinka-saveTaglistToField.js\r\ntype: application/javascript\r\nmodule-type: widget\r\n\r\nSaves a tiddlers list of tags to a csv field.\r\n\r\n\\*/\r\n(function(){\r\n\r\n/*jslint node: true, browser: true */\r\n/*global $tw: false */\r\n\"use strict\";\r\n\r\nvar CommonAction = require(\"$:/plugins/ahahn/tinka/tinkaCommonAction.js\").tinkaCommonAction;\r\n\r\nvar SaveTaglistToFieldWidget = function(parseTreeNode,options) {\r\n\tthis.initialise(parseTreeNode,options);\r\n this.setup(false,false,[\"$target\",\"$tiddler\",\"$field\"],false);\r\n};\r\n\r\n/*\r\nInherit from the base widget class\r\n*/\r\nSaveTaglistToFieldWidget.prototype = new CommonAction();\r\n\r\n/*\r\nInvoke the action associated with this widget\r\n*/\r\nSaveTaglistToFieldWidget.prototype.invokeAction = function(triggeringWidget,event) {\r\n\tvar taglist = [];\r\n \tvar field = \"text\";\r\n \r\n if(this.param[\"$target\"]) {\r\n \tvar targetTags = this.wiki.getTiddler(this.param[\"$target\"]);\r\n \t\r\n \tif(targetTags) {\r\n \t\ttaglist = targetTags.fields.tags || [];\r\n \t}\r\n }\r\n \r\n \tif(this.param[\"$field\"]) {\r\n \t\tfield = this.param[\"$field\"];\r\n \t}\r\n \r\n \tif(this.param[\"$tiddler\"]) {\r\n \t\t//save taglist in field on tiddler\r\n \tthis.wiki.setTextReference(this.param[\"$tiddler\"]+ \"!!\" +field,taglist,this.getVariable(\"currentTiddler\")); \r\n \t}\r\n\r\n return true; // Action was invoked\r\n};\r\n\r\nexports[\"tinka-saveTaglistToField\"] = SaveTaglistToFieldWidget;\r\n\r\n})();\r\n", "type": "application/javascript", "module-type": "widget" }, "$:/plugins/ahahn/tinka/tinkaCommonAction.js": { "title": "$:/plugins/ahahn/tinka/tinkaCommonAction.js", "text": "/*\\\r\ntitle: $:/plugins/ahahn/tinka/tinkaCommonAction.js\r\ntype: application/javascript\r\nmodule-type: widget\r\n\r\nTinka common action widget\r\n\r\n\\*/\r\n(function(){\r\n\r\n/*jslint node: true, browser: true */\r\n/*global $tw: false */\r\n\"use strict\";\r\n\r\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\r\n\r\nvar CommonActionWidget = function(parseTreeNode,options) {\r\n\tthis.initialise(parseTreeNode,options);\r\n};\r\n\r\n/*\r\nInherit from the base widget class\r\n*/\r\nCommonActionWidget.prototype = new Widget();\r\n\r\n/*\r\nSetup an action widget with these properties\r\n*/\r\nCommonActionWidget.prototype.setup = function(allowPropagation,doRenderChildren,preparedParams,refreshOnAttributeChange) {\r\n\tthis.doRenderChildren = doRenderChildren;\r\n\tthis.preparedParams = preparedParams;\r\n\tthis.allowPropagation = allowPropagation;\r\n\tthis.refreshOnAttributeChange = refreshOnAttributeChange;\r\n};\r\n \r\n \r\n/*\r\nRender this widget into the DOM\r\n*/\r\nCommonActionWidget.prototype.render = function(parent,nextSibling) {\r\n\tthis.parentDomNode = parent;\r\n\tthis.computeAttributes();\r\n\tthis.execute();\r\n \tif(this.doRenderChildren) {\r\n\t\tthis.renderChildren(parent,nextSibling);\r\n \t}\r\n};\r\n\r\n/*\r\nCompute the internal state of the widget\r\n*/\r\nCommonActionWidget.prototype.execute = function() {\r\n this.processAttributes();\r\n\t// Construct the child widgets\r\n\tif(this.doRenderChildren) {\r\n\t\tthis.makeChildWidgets();\r\n\t}\r\n};\r\n\t\r\n/*\r\nCompute the values of our attributes\r\n*/\r\nCommonActionWidget.prototype.processAttributes = function() {\r\n\tvar self = this;\r\n\tthis.computeAttributes();\r\n\tthis.param = {};\r\n\r\n if(this.isObject(this.preparedParams) && !this.isArray(this.preparedParams)) {\r\n $tw.utils.each(this.preparedParams,function(def, name) {\r\n self.param[name] = self.getAttribute(name,def);\r\n });\r\n }\r\n else {\r\n $tw.utils.each(this.preparedParams,function(name) {\r\n self.param[name] = self.getAttribute(name);\r\n });\r\n }\r\n};\r\n\r\nCommonActionWidget.prototype.allowActionPropagation = function() {\r\n\treturn this.allowPropagation;\t\r\n};\r\n\r\nCommonActionWidget.prototype.isEmptyObject = function(obj) {\r\n\tfor(var prop in obj) {\r\n if(obj.hasOwnProperty(prop))\r\n return false;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nCommonActionWidget.prototype.isObject = function(obj) {\r\n return ((obj !== null) && (typeof obj === 'object'));\r\n};\r\n\r\nCommonActionWidget.prototype.isArray = function(obj) {\r\n return (Object.prototype.toString.call(obj) === '[object Array]');\r\n};\r\n\r\n/*\r\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\r\n*/\r\nCommonActionWidget.prototype.refresh = function(changedTiddlers) {\r\n \tvar changedAttributes = this.computeAttributes();\r\n\t\t\r\n\tif(!this.isEmptyObject(changedAttributes) && this.refreshOnAttributeChange) {\r\n\t\tthis.refreshSelf();\r\n\t\treturn true;\r\n }\r\n\telse if (!this.isEmptyObject(changedAttributes)) {\r\n\t\tthis.processAttributes();\r\n\t}\r\n\t\r\n\treturn this.refreshChildren(changedTiddlers);\t\t\r\n};\r\n\r\nexports.tinkaCommonAction = CommonActionWidget;\r\n\r\n})();\r\n", "type": "application/javascript", "module-type": "widget" }, "$:/plugins/ahahn/tinka/license": { "title": "$:/plugins/ahahn/tinka/license", "type": "text/vnd.tiddlywiki", "caption": "license", "text": "Tinka Plugin for Tiddlywiki5\n\nCopyright (c) 2020 Andreas Hahn \n\nPermission is hereby granted, free of charge, to any person obtaining a copy\r\nof this software and associated documentation files (the \"Software\"), to deal\r\nin the Software without restriction, including without limitation the rights\r\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\ncopies of the Software, and to permit persons to whom the Software is\r\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\r\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r\nSOFTWARE.\r\n" }, "$:/plugins/ahahn/tinka/emptyDiff": { "title": "$:/plugins/ahahn/tinka/emptyDiff", "type": "text/vnd.tiddlywiki", "text": "" }, "$:/plugins/ahahn/tinka/tinka-export": { "title": "$:/plugins/ahahn/tinka/tinka-export", "tags": "$:/tags/Macro", "type": "text/vnd.tiddlywiki", "text": "\\define tinkaExportButtonFilename(baseFilename)\r\n$baseFilename$$(extension)$\r\n\\end\n\n\\define tinkaExportQualifiedState()\r\n$:/state/popup/tinkaExport-$(currentTiddler)$\r\n\\end\n\n\\define tinkaExportButton(exportFilter:\"[!is[system]sort[title]]\",lingoBase,baseFilename:\"tiddlers\")\r\n\r\n<$button popup=<> tooltip={{$lingoBase$Hint}} aria-label={{$lingoBase$Caption}} class=<> selectedClass=\"tc-selected\">\r\n<$list filter=\"[prefix[yes]]\">\r\n{{$:/core/images/export-button}}\r\n\r\n<$list filter=\"[prefix[yes]]\">\r\n<$text text={{$lingoBase$Caption}}/>\r\n\r\n\r\n\r\n<$reveal state=<> type=\"popup\" position=\"below\" animate=\"yes\">\r\n
\r\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Exporter]]\">\r\n<$set name=\"extension\" value={{!!extension}}>\r\n<$button class=\"tc-btn-invisible\">\r\n<$action-sendmessage $message=\"tm-download-file\" $param=<> exportFilter=\"\"\"$exportFilter$\"\"\" filename=<>/>\r\n<$action-deletetiddler $tiddler=<>/>\r\n<$transclude field=\"description\"/>\r\n\r\n\r\n\r\n
\r\n\r\n\\end\r\n" }, "$:/plugins/ahahn/tinka/readme": { "title": "$:/plugins/ahahn/tinka/readme", "type": "text/vnd.tiddlywiki", "text": "This is a Control Panel extension that aims to simplify the plugin creation and editing process. After installing, you will find a new tab in your control panel that makes creating and modifying plugins a little bit easier.\n\nProject Homepage on tinkaplugin.github.io\n\n!! Version History\n\n!!! 2020-08-03 Release of version 0.5.0\n\n''Changelog''\n\n* Fixed graphical glitches with newer versions of TW5\r\n* Reworked the interface for modifying plugins\r\n* Added the ability to select and unselect all search results when adding tiddlers to plugins\r\n* `name` and `description` field are now used for both plugins and themes\r\n* Added default filter to the search\r\n* You can now attach notes to backups\r\n* Renamed control panel tabs\r\n* The version will correctly be set when creating a new plugin\n\n!!! 2017-05-13 Release of version 0.4.0\n\nThis release fixes the following bugs:\n\n''Changelog''\n\n* Themes will now get the correct prefix `$:/themes/` when packaging\r\n* Fixed search results not linking properly\r\n* Added description field when creating a new theme\n\n\r\n!!! 2017-03-01 Release of version 0.3.0\n\nAfter more than a year, Tinka is now on github and also released under the [[MIT license|$:/plugins/ahahn/tinka/license]].\n\n''Changelog''\n\n* Packaging success now produces a modal that actively reminds the user to refresh the wiki.\r\n* The search tab state is now kept in a temporary system tiddler.\r\n* Added warning when repackaging themes that are not active.\r\n* The 'Help Tab' functionality is now also available for plugins that do not follow the `$:/plugins/...` naming convention. In particular this applies to themes and core plugins.\r\n* Fixed wrong headings for some modal dialogs.\r\n* Older action widgets remodeled to use the (new) CommonAction widget as a base.\r\n* Fixed error check that prevented users to enter a minimal core version dependency when creating a new plugin.\n\n!!! 2015-09-20 Release of version 0.2.0-beta\n\n''Changelog''\n\n* Added Help-Tab capabilities to quickly navigate between plugin tiddlers.\r\n* Moved Create-Plugin wizard to its own tab.\r\n* Redid Create-Plugin UI to be easier and more accessible.\r\n* Backups can now also be downloaded/exported.\r\n* Added more documentation.\n\n!!! 2015-05-18 Release of version 0.1.0\n\n''Changelog''\n\n* The metadata section now include edit fields for the `name` and `source` fields.\r\n* The //default search// box now only searches for title matches.\r\n* Backups can now be exported/downloaded.\r\n*
Backups can now be restored and made active again. If another version of the plugin is already active, the option is given to back it up,before restoring the backup.\n\n\r\n''Warning: For this mechanism to work, there has to be an 'original-title' field present in the backup tiddler. This is automatically added by Tinka, however earlier versions of Tinka did not add this field. If you want to restore a backup from an earlier version of Tinka, you will have to add the 'original-title' field manually and populate it with the former title of the plugin tiddler, in order for the restore function to work.''\r\n
\n\n!!! 2015-04-30 Release of version 0.0.2\n\n''Changelog''\n\n* The list of plugin tiddlers is now hidden by default, since some lists can get very long.\r\n* Added a different search option (default/filter)\r\n* Improved Documentation slightly\r\n* Added a backup option, so a plugin can be backed up before repackaging.\n\n \r\n!!! 2015-04-29 Release of version 0.0.1\r\n" }, "$:/plugins/ahahn/tinka/style": { "title": "$:/plugins/ahahn/tinka/style", "list-after": "$:/themes/tiddlywiki/vanilla/base", "tags": "$:/tags/Stylesheet", "type": "text/vnd.tiddlywiki", "text": "\r\n/* ==button styles== */\n\nbutton.tinka-blue, button.tinka-orange {\r\n display: inline-block;\r\n margin: 0.4em;\r\n padding: 0.5em;\r\n border: none;\r\n border-radius: 0.1em; \r\n font-weight: normal;\r\n font-size: 1em;\r\n cursor: pointer;\r\n color: #fff;\r\n fill: #fff;\r\n}\n\n.tinka-blue {\r\n background-color: #5E9FCA;\r\n box-shadow: 0.1em 0.1em 0.4em 0 #355;\r\n}\n\n.tinka-blue:active {\r\n background-color: #6EAFDA;\r\n}\n\n.tinka-orange {\r\n background-color: #FF8C19;\r\n box-shadow: 0.1em 0.1em 0.4em 0 #841;\r\n}\n\n.tinka-orange:active {\r\n background-color: #FF9C29;\r\n}\n\n.tinka-archive-buttons {\r\n padding-left: 30px;\r\n display: inline-block;\r\n}\n\nbutton.tinka-sidebar-button, button.tinka-invisible {\r\n color: #acacac;\r\n fill: #acacac;\r\n}\n\n.tinka-enlarge {\r\n font-size: 1.5em;\r\n padding: 1.5em;\r\n}\n\n.tinka-enlarge svg {\r\n font-size: 3em;\r\n}\n\n.tinka-orb {\r\n border-radius: 10pt;\r\n}\n\n.tc-dirty .tinka-button-refresh {\r\n display: none;\r\n}\n\n/* ==container styles== */\n\n.tinka-centered-container {\r\n text-align: center;\r\n padding: 1em;\r\n}\n\n.tinka-note {\r\n display:block;\r\n padding-left: 5px;\r\n background-color: #FFF9B0;\r\n color: #7F7A32;\r\n border: 1px solid #7F7A32;\r\n border-radius: 5px;\r\n font-style: italic;\r\n font-size: 0.8em;\r\n}\n\n.tinka-note-red {\r\n display:block;\r\n padding-left: 5px;\r\n background-color: #E8DEE0;\r\n color: #E82C0C;\r\n border: 1px solid #E82C0C;\r\n border-radius: 5px;\r\n font-style: italic;\r\n font-size: 0.8em;\r\n}\n\n.tinka-backup-info {\r\nflex-wrap: wrap;\r\n}\n\n.tinka-backup-info .tinka-backup-note {\r\nflex-basis: 100%;\r\n}\n\n/* ==text formatting== */\n\n.tinka-list-item {\r\n\tlist-style: none;\r\n}\n\n.tinka-saving {\r\n display: none;\r\n}\n\n.tc-dirty .tinka-saving {\r\n display: inline;\r\n}\n\n.tinka-success {\r\n color: #26CC50;\r\n}\n\n.tinka-success .tc-image-done-button, .tinka-success .tc-image-save-button {\r\n fill: #26CC50;\r\n}\n\n.tinka-error {\r\n color: #F00;\r\n}\n\n.tinka-error .tc-image-close-button {\r\n fill: #F00;\r\n}\n\ntable.tinka-meta-table tr td {\r\n padding: 5px;\r\n}\n\n/* ==forms style== */\r\n.tc-control-panel input.tinka-inline-edit {\r\n width: 30%;\r\n min-width: 30pt;\r\n}\n\n.tinka-full-edit {\r\n width: 100%;\r\n}\n\n.tc-control-panel input.tinka-full-edit, input.tinka-full-edit {\r\n width: 100%;\r\n}\r\n" }, "$:/plugins/ahahn/tinka/backupList": { "title": "$:/plugins/ahahn/tinka/backupList", "caption": "Backups", "list-after": "$:/plugins/ahahn/tinka/pluginManagement", "tags": "$:/tags/tinka/ControlPanel", "type": "text/vnd.tiddlywiki", "text": "\\define plugin-export()\r\n[title[$(currentTiddler)$]]\r\n\\end\n\n\\define plugin-icon-title()\r\n$(currentTiddler)$/icon\r\n\\end\n\n\\define plugin-disable-title()\r\n$:/config/Plugins/Disabled/$(currentTiddler)$\r\n\\end\n\n\\define plugin-table-body(type,disabledMessage)\r\n
\r\n<$transclude tiddler=<> subtiddler=<>>\r\n<$transclude tiddler=\"$:/core/images/plugin-generic-$type$\"/>\r\n
\r\n
\r\n<$link to={{!!title}}>\r\n

''<$view field=\"description\"><$view field=\"title\"/>'' $disabledMessage$\r\n

\r\n

\r\n<$view field=\"title\"/>\r\n

\r\n

\r\n
<$view field=\"version\"/>
\r\n

\r\n
\r\n<$macrocall $name=\"tinkaExportButton\" exportFilter=<> />\r\n<$button class=\"tc-btn-big-green tinka-blue\">\r\n<$tinka-backupPlugin $plugin=<> $restore=\"yes\"/>\r\n<$action-sendmessage $message=\"tm-modal\" $param=\"$:/plugins/ahahn/tinka/restoreSuccess\" />Restore\r\n
\r\n
\r\n''Note'':\r\n<$edit-text tag=\"textarea\" field=\"note\" class=\"tinka-full-edit\"/>\r\n
\r\n\\end\n\n\\define plugin-table(type)\r\n<$list filter=\"[!has[draft.of]plugin-type[$type$]sort[description]]\" emptyMessage=<>>\r\n
\r\n<>\r\n
\r\n\r\n\\end\n\n!!Backups\n\n<>\r\n<>\r\n<>\r\n" }, "$:/plugins/ahahn/tinka/controlPanelExtension": { "title": "$:/plugins/ahahn/tinka/controlPanelExtension", "caption": "Tinka Plugin Management", "tags": "$:/tags/ControlPanel", "type": "text/vnd.tiddlywiki", "text": "<>\r\n" }, "$:/plugins/ahahn/tinka/createDialog": { "title": "$:/plugins/ahahn/tinka/createDialog", "caption": "Create a new Plugin", "tags": "$:/tags/tinka/ControlPanel", "type": "text/vnd.tiddlywiki", "text": "\\define plugin-tiddler-selection()\r\n[[$(target)$]plugintiddlers[]]\r\n\\end\n\n\\define qualified-modify-add()\r\n$(qualifiedTiddler)$-$(target)$-add\r\n\\end\n\n\\define qualified-modify-diff()\r\n$(qualifiedTiddler)$-$(target)$-diff\r\n\\end\n\n\\define diff-plugin-title()\r\n$(qualifiedTiddler)$-$(target)$-diff!!create-title\r\n\\end\n\n\\define added-filter()\r\n[[$(addedTiddlers)$]tags[]]\r\n\\end\n\n\\define concatPluginTitle(prefix, sep)\r\n$prefix$$(createTitleOrg)$$sep$$(createTitleName)$\r\n\\end\n\n\\define tiddlerReference(ref)\r\n$(currentTiddler)$$ref$\r\n\\end\n\n\\define varsReference(ref)\r\n$(TinkaVars)$$ref$\r\n\\end\n\n\r\n!! Create New Plugin\n\nUsage: Enter the necessary metadata for your plugin and use the Filter selection below to pick the tiddlers that should be added to the plugin. After selecting the tiddlers, press 'Package Plugin'. Refer to the [[Documentation|$:/plugins/ahahn/tinka/usage]] for further help.\n\n<$set name=\"target\" value=\"skeleton\">\r\n<$set name=\"qualifiedTiddler\" value=<> >\n\n!!! Step 1: Enter Metadata\n\n\r\n<$set name=\"currentTiddler\" value=<>>\r\n\t<$transclude mode=\"block\" tiddler=\"$:/plugins/ahahn/tinka/createMetadata\"/>\r\n\n\n!!! Step 2: Add Tiddlers\n\nUse the search box below to select the tiddlers you want to add to the plugin.\n\n{{$:/plugins/ahahn/tinka/searchDisplay}}\n\n\r\n''Added Tiddlers''\n\n<$set name=\"addedTiddlers\" value=<> >\r\n
    \r\n<$list filter=<> emptyMessage=\"No tiddlers added.\">\r\n\t\t
  • \r\n <$checkbox tiddler=<> tag={{!!title}} />\r\n <$link to={{!!title}}>{{!!title}}\r\n
  • \r\n\r\n
\r\n\n\n\r\n<$button class=\"tc-btn-big-green tinka-orange\">\r\n<$set name=\"TinkaVars\" value=\"$:/temp/tinka/CreateVars\">\r\n<$set name=\"currentTiddler\" value=<>>\r\n\t<$action-deletetiddler $tiddler=<> />\r\n\t<$action-setfield $tiddler=<> result=\"false\" />\n\n\t\r\n\t<$tinka-check text={{!!create-title-org}} pattern=\"^[^\\s]+$\">\r\n\t\t<$tinka-filter verb=\"fail\">\r\n\t\t\t<$action-setfield $tiddler=<> result=\"true\"/>\r\n\t\t\t<$action-setfield $tiddler=<> errorTitle=\"The plugin title is not allowed to be empty or contain whitespaces.\"/>\r\n\t\t\r\n\t\r\n\t\t\r\n\t<$tinka-check text={{!!create-title-name}} pattern=\"^[^\\s]+$\">\r\n\t\t<$tinka-filter verb=\"fail\">\r\n\t\t\t<$action-setfield $tiddler=<> result=\"true\"/>\r\n\t\t\t<$action-setfield $tiddler=<> errorTitle=\"The plugin path is not allowed to be empty or contain whitespaces.\"/>\r\n\t\t\r\n\t\r\n\t\t\r\n\t\r\n\t<$tinka-check text={{!!create-plugin-type}} pattern=\"^.+$\">\r\n\t\t<$tinka-filter verb=\"fail\">\r\n\t\t\t<$action-setfield $tiddler=<> result=\"true\"/>\r\n\t\t\t<$action-setfield $tiddler=<> errorType=\"You have to set a plugin type.\"/>\r\n\t\t\r\n\t\r\n\t\t\r\n\t\t\r\n\t\t<$tinka-check text={{!!create-description}} pattern=\"^.+$\">\r\n\t\t\t<$tinka-filter verb=\"fail\">\r\n\t\t\t\t<$action-setfield $tiddler=<> result=\"true\"/>\r\n\t\t\t\t<$action-setfield $tiddler=<> errorPlugin=\"You have to enter a plugin title.\"/>\r\n\t\t\t\r\n\t\t\r\n\t\t<$tinka-check text={{!!create-name}} pattern=\"^.+$\">\r\n\t\t\t<$tinka-filter verb=\"fail\">\r\n\t\t\t\t<$action-setfield $tiddler=<> result=\"true\"/>\r\n\t\t\t\t<$action-setfield $tiddler=<> errorTheme=\"You have to enter a theme title.\"/>\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t\r\n\t\t<$reveal state=<> type=\"nomatch\" text=\"\">\r\n\t\t\t<$tinka-check text={{!!create-version}} pattern=\"^(\\d)+\\.(\\d)+\\.(\\d)+(-\\w+)?$\">\r\n\t\t\t\t<$tinka-filter verb=\"fail\">\r\n\t\t\t\t\t<$action-setfield $tiddler=<> result=\"true\"/>\r\n\t\t\t\t\t<$action-setfield $tiddler=<> errorVersion=\"Version numbers must have the following format: X.X.X (e.g. 1.0.0).\"/>\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\r\n\t\t\r\n\t\t<$reveal state=<> type=\"nomatch\" text=\"\">\r\n\t\t\t<$tinka-check text={{!!create-core-version}} pattern=\"^(>|>=|<|<=)?(\\d)+\\.(\\d)+\\.(\\d)+(-\\w+)?$\">\r\n\t\t\t\t<$tinka-filter verb=\"fail\">\r\n\t\t\t\t\t<$action-setfield $tiddler=<> result=\"true\"/>\r\n\t\t\t\t\t<$action-setfield $tiddler=<> errorCoreVersion=\"The core version number must have the following format: [>|>=|<|<=|]X.X.X-AAAA (e.g. >=5.1.8).\"/>\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\n\n\t<$set name=\"currentTiddler\" value=<> >\r\n\t<$tinka-check text={{!!result}} pattern=\"^false$\">\r\n\t<$set name=\"currentTiddler\" value=<>>\r\n\t<$tinka-filter verb=\"pass\">\r\n\t\n\n\t\t<$set name=\"createTitleOrg\" value={{!!create-title-org}}>\r\n\t\t\t<$set name=\"createTitleName\" value={{!!create-title-name}}>\r\n \r\n <$reveal state=<> type=\"match\" text=\"theme\">\r\n\t\t\t\t <$action-setfield create-title=<> />\r\n \n\n <$reveal state=<> type=\"nomatch\" text=\"theme\">\r\n\t\t\t\t <$action-setfield create-title=<> />\r\n \r\n\t\t\t\r\n\t\t\r\n\t\r\n\t\t<$tinka-saveTaglistToField $target=<> $tiddler=<> $field=\"addTiddlers\"/>\r\n\t\t<$tinka-repackagePlugin $plugin=\"$:/plugins/unknown/newPlugin\" $create=\"yes\" $diff=<> />\r\n\t\t\r\n\t\t<$reveal state=<> type=\"nomatch\" text=\"\">\r\n\t\t\t<$action-setfield $tiddler={{!!create-title}} version={{!!create-version}} />\r\n\t\t\r\n\t\t<$action-deletetiddler $tiddler=<>/>\r\n\t\t<$action-deletetiddler $tiddler=<>/>\r\n\t\t<$action-sendmessage $message=\"tm-modal\" $param=\"$:/plugins/ahahn/tinka/packageSuccess\" />\r\n\t\r\n\t<$tinka-filter verb=\"fail\">\r\n\t\t<$action-sendmessage $message=\"tm-modal\" $param=\"$:/plugins/ahahn/tinka/packageErrors\" errorVars=<>/>\r\n\t\r\n\t\r\n\t\r\n\t\r\n\r\n\r\nPackage plugin\n\n\r\n\r\n\r\n" }, "$:/plugins/ahahn/tinka/createMetadata/noSpecialPluginType": { "title": "$:/plugins/ahahn/tinka/createMetadata/noSpecialPluginType", "type": "text/vnd.tiddlywiki", "text": "\r\n Name:\r\n <$edit-text tag=\"input\" type=\"text\" field=\"create-name\" placeholder=\"e.g. My Plugin\"/>\n\n \tDescription:\r\n <$edit-text tag=\"input\" type=\"text\" placeholder=\"e.g. super cool plugin\" field=\"create-description\"/>\r\n\r\n" }, "$:/plugins/ahahn/tinka/createMetadata/pluginPluginType": { "title": "$:/plugins/ahahn/tinka/createMetadata/pluginPluginType", "type": "text/vnd.tiddlywiki", "text": "\r\n ''Plugin Name:''\r\n <$edit-text class=\"tinka-full-edit\" tag=\"input\" type=\"text\" field=\"create-name\" placeholder=\"e.g. Tinka\"/>\r\n\r\n\r\n \t''Plugin Description:''\r\n <$edit-text class=\"tinka-full-edit\" tag=\"input\" type=\"text\" placeholder=\"e.g. Tinka - Plugin Packer\" field=\"create-description\" placeholder=\"e.g. An easy plugin packer\"/>\r\n\r\n" }, "$:/plugins/ahahn/tinka/createMetadata/tableEnd": { "title": "$:/plugins/ahahn/tinka/createMetadata/tableEnd", "type": "text/vnd.tiddlywiki", "text": "\r\n Version:\r\n <$edit-text tag=\"input\" type=\"text\" field=\"create-version\"/>\r\n \r\n\t\tCore-Version:\r\n <$edit-text type=\"text\" placeholder=\"e.g. >=5.1.8\" tag=\"input\" field=\"create-core-version\"/>\r\n\t\r\n" }, "$:/plugins/ahahn/tinka/createMetadata/tableHead": { "title": "$:/plugins/ahahn/tinka/createMetadata/tableHead", "type": "text/vnd.tiddlywiki", "text": "\t\r\n\t\t''Plugin Path:''\r\n `$:/plugins/`<$edit-text class=\"tinka-inline-edit\" type=\"text\" placeholder=\"e.g. myName\" tag=\"input\" field=\"create-title-org\"/>`/`<$edit-text type=\"text\" class=\"tinka-inline-edit\" placeholder=\"e.g. myPlugin\" tag=\"input\" field=\"create-title-name\" /> \r\n\t\r\n \r\n \r\n\t\tAuthor:\r\n <$edit-text type=\"text\" placeholder=\"e.g. John Doe\" tag=\"input\" field=\"create-author\"/>\r\n\t\t\r\n\t\tSource:\r\n <$edit-text tag=\"input\" type=\"text\" placeholder=\"e.g. http://twguides.org\" field=\"source\"/>\r\n\t\n\n\t\r\n\t\tDependents:\r\n <$edit-text tag=\"input\" type=\"text\" field=\"create-dependents\"/>\r\n \r\n List:\r\n <$edit-text tag=\"input\" type=\"text\" placeholder=\"e.g. readme usage\" field=\"create-list\"/>\r\n \t\r\n" }, "$:/plugins/ahahn/tinka/createMetadata/themePluginType": { "title": "$:/plugins/ahahn/tinka/createMetadata/themePluginType", "type": "text/vnd.tiddlywiki", "text": "\r\n ''Theme Name:''\r\n <$edit-text class=\"tinka-full-edit\" tag=\"input\" type=\"text\" placeholder=\"e.g. My cool theme\" field=\"create-name\"/>\r\n\n\n\r\n ''Theme Description:''\r\n <$edit-text class=\"tinka-full-edit\" tag=\"input\" type=\"text\" placeholder=\"e.g. My description\" field=\"create-description\"/>\r\n\r\n" }, "$:/plugins/ahahn/tinka/createMetadata": { "title": "$:/plugins/ahahn/tinka/createMetadata", "create-plugin-type": "plugin", "create-title": "", "created": "20150429174811520", "modified": "20170225181341996", "tags": "", "type": "text/vnd.tiddlywiki", "text": "''Plugin-Type:'' <$edit-text tag=\"input\" type=\"text\" field=\"create-plugin-type\"/>\r\n <$button popup=\"$:/temp/tinka/NewPluginPopup\" class=\"tc-btn-invisible tc-btn-dropdown\">{{$:/core/images/down-arrow}}\r\n\t\r\n\t\t<$reveal state=\"$:/temp/tinka/NewPluginPopup\" type=\"popup\" position=\"below\">\r\n\t\t
\r\n\t\t<$linkcatcher to=\"!!create-plugin-type\">\r\n\t\t\t<$link to=\"plugin\">Plugin\r\n\t\t\t<$link to=\"theme\">Theme\r\n\t\t\r\n\t\t
\r\n\t\t\n\n<$reveal state=\"!!create-plugin-type\" type=\"nomatch\" text=\"plugin\" >\r\n\t<$reveal state=\"!!create-plugin-type\" type=\"nomatch\" text=\"theme\" >\r\n\t\t\r\n\t\t<$transclude tiddler=\"$:/plugins/ahahn/tinka/createMetadata/tableHead\" />\r\n\t\t<$transclude tiddler=\"$:/plugins/ahahn/tinka/createMetadata/noSpecialPluginType\" />\r\n\t\t<$transclude tiddler=\"$:/plugins/ahahn/tinka/createMetadata/tableEnd\" />\r\n\t\t
\r\n\t\r\n\n\n<$reveal state=\"!!create-plugin-type\" type=\"match\" text=\"plugin\">\r\n\t\t\r\n\t\t<$transclude tiddler=\"$:/plugins/ahahn/tinka/createMetadata/tableHead\" />\r\n\t\t<$transclude tiddler=\"$:/plugins/ahahn/tinka/createMetadata/pluginPluginType\" />\r\n\t\t<$transclude tiddler=\"$:/plugins/ahahn/tinka/createMetadata/tableEnd\" />\r\n\t\t
\r\n\n\n<$reveal state=\"!!create-plugin-type\" type=\"match\" text=\"theme\">\r\n\t\t\r\n\t\t<$transclude tiddler=\"$:/plugins/ahahn/tinka/createMetadata/tableHead\" />\r\n\t\t<$transclude tiddler=\"$:/plugins/ahahn/tinka/createMetadata/themePluginType\" />\r\n\t\t<$transclude tiddler=\"$:/plugins/ahahn/tinka/createMetadata/tableEnd\" />\r\n\t\t
\r\n\n\n''bold'' = //required field//\r\n" }, "$:/plugins/ahahn/tinka/dropdownManage": { "title": "$:/plugins/ahahn/tinka/dropdownManage", "type": "text/vnd.tiddlywiki", "text": "\\define plugin-tiddler-selection()\r\n[[$(target)$]plugintiddlers[]]\r\n\\end\n\n\\define qualified-remove-popup()\r\n$:/state/popup/$(qualifiedTiddler)$-$(target)$-remove-popup\r\n\\end\n\n\\define qualified-modify-remove()\r\n$(qualifiedTiddler)$-$(target)$-remove\r\n\\end\n\n\\define qualified-modify-add()\r\n$(qualifiedTiddler)$-$(target)$-add\r\n\\end\n\n\\define qualified-modify-diff()\r\n$(qualifiedTiddler)$-$(target)$-diff\r\n\\end\n\n\\define target-type()\r\n$(target)$!!plugin-type\r\n\\end\n\n\\define added-filter()\r\n[[$(addedTiddlers)$]tags[]]\r\n\\end\n\n\\define pluginSuffixFilter()\r\n[[$(target)$]prefix[$:/plugins/]removeprefix[$:/plugins/]] [[$(target)$]!prefix[$:/plugins/]]\r\n\\end\n\n\\define sideTabNameBuilder()\r\n$:/plugins/ahahn/tinka/temp/$(pluginSuffix)$ - Help Tab\r\n\\end\n\n\\define helpTabCaption()\r\n$(pluginSuffix)$ - Help Tab\r\n\\end\n\n\\define helpTabText()\r\n<$set name=\"pluginPrefix\" value=\"$(target)$\" >\r\n<$set name=\"currentTiddler\" value=\"$(sideTabName)$\" >\n\n<$transclude tiddler=\"$:/plugins/ahahn/tinka/pluginSidePanel\" />\n\n\r\n\r\n\\end\n\n\\define buttonRow()\r\n<$reveal state=<> type=\"match\" text=\"theme\">\r\n\tWarning: Themes can only be repackaged if the theme is currently active or loaded as a dependant!\r\n\n\n<$button class=\"tinka-orange\">Re-package plugin\r\n\t<$tinka-saveTaglistToField $target=<> $tiddler=<> $field=\"removeTiddlers\"/>\r\n\t<$tinka-saveTaglistToField $target=<> $tiddler=<> $field=\"addTiddlers\"/>\r\n\t<$tinka-repackagePlugin $plugin=<> $create=\"no\" $diff=<> />\r\n\t<$action-deletetiddler $tiddler=<>/>\r\n\t<$action-deletetiddler $tiddler=<>/>\r\n\t<$action-deletetiddler $tiddler=<>/>\r\n\t<$action-sendmessage $message=\"tm-modal\" $param=\"$:/plugins/ahahn/tinka/packageSuccess\" />\r\n\r\n<$button class=\"tinka-blue\">Create Backup\r\n\t<$tinka-backupPlugin $plugin=<> />\r\n\t<$action-sendmessage $message=\"tm-modal\" $param=\"$:/plugins/ahahn/tinka/backupSuccess\" />\r\n\r\n<$list filter=<> variable=\"pluginSuffix\">\r\n\t<$set name=\"sideTabName\" value=<> >\r\n\t<$reveal state=<> type=\"match\" text=\"\">\r\n\t\t<$button class=\"tinka-blue\">Enable Sidebar-Tab\r\n\t\t\t<$action-setfield $tiddler=<> text=<> caption=<> tags=\"$:/tags/SideBar\" />\r\n\t\t\r\n\t\r\n\t<$reveal state=<> type=\"nomatch\" text=\"\">\r\n\t\t<$button class=\"tinka-blue\">Disable Sidebar-Tab\r\n\t\t<$action-deletetiddler $tiddler=<> />\r\n\t\t\r\n\t\r\n\t\r\n\n\n\\end\n\n<$set name=\"qualifiedTiddler\" value=<> >\n\nIf you have edited the shadow tiddlers that belong to the plugin, just repackage without making any changes. That way the packaged plugin will incorporate the changes made to the individual tiddlers. Refer to the [[Documentation|$:/plugins/ahahn/tinka/usage]] for help.\n\n<>\n\nNote: It is recommended to create a backup before repackaging a plugin.\n\n!!! Edit Metadata\r\nNote: Changes will be committed immediately.\n\n<$set name=\"currentTiddler\" value=<>>\r\n\t<$transclude mode=\"block\" tiddler=\"$:/plugins/ahahn/tinka/editMetadata\"/>\r\n\n\n!!! Remove Tiddlers\r\nNote: Re-packaging required for changes to take effect.\n\n<$reveal type=\"match\" text=\"\" state=<> ><$button set=<> setTo=\"show\" class=\"tc-btn-invisible\">{{$:/core/images/right-arrow}} Show plugin tiddlers\r\n<$reveal type=\"nomatch\" text=\"\" state=<> >\r\n<$button set=<> setTo=\"\" class=\"tc-btn-invisible\">{{$:/core/images/down-arrow}} Hide plugin tiddlers\r\n
    \r\n\t<$list filter=<> emptyMessage=\"No tiddlers in plugin.\">\r\n\t\t
  • \r\n <$checkbox tiddler=<> tag={{!!title}} />\r\n <$link to={{!!title}}><$text text={{!!title}} />
  • \r\n\t\r\n
\r\n\n\n!!! Add Tiddlers\r\nNote: Re-packaging required for changes to take effect.\n\nUse the search box below to select the tiddlers you want to add to the plugin.\n\n{{$:/plugins/ahahn/tinka/searchDisplay}}\n\n\r\n''Added Tiddlers''\n\n<$set name=\"addedTiddlers\" value=<> >\r\n
    \r\n<$list filter=<> emptyMessage=\"No tiddlers added.\">\r\n\t\t
  • \r\n <$checkbox tiddler=<> tag={{!!title}} />\r\n <$link to={{!!title}}>{{!!title}}\r\n
  • \r\n\r\n
\r\n\n\n<>\n\n\r\n" }, "$:/plugins/ahahn/tinka/editMetadata": { "title": "$:/plugins/ahahn/tinka/editMetadata", "type": "text/vnd.tiddlywiki", "text": "|tinka-meta-table|k\r\n|Name:|<$edit-text tag=\"input\" type=\"text\" field=\"name\"/>|Author:|<$edit-text type=\"text\" tag=\"input\" field=\"author\"/>|\r\n|Description:|<$edit-text tag=\"input\" type=\"text\" field=\"description\"/>|<|<|\r\n|Dependents:|<$edit-text tag=\"input\" type=\"text\" field=\"dependents\"/>|List:|<$edit-text tag=\"input\" type=\"text\" field=\"list\"/>|\r\n|Plugin-Type:|<$edit-text tag=\"input\" type=\"text\" field=\"plugin-type\"/>|Version:|<$edit-text tag=\"input\" type=\"text\" field=\"version\"/>|\r\n|Source:|<$edit-text tag=\"input\" type=\"text\" field=\"source\"/>|Core-Version:|<$edit-text tag=\"input\" type=\"text\" field=\"core-version\"/>|\r\n" }, "$:/plugins/ahahn/tinka/backupSuccess": { "title": "$:/plugins/ahahn/tinka/backupSuccess", "caption": "Backup Success", "subtitle": "Backup Success", "type": "text/vnd.tiddlywiki", "text": "
\n\n!!{{$:/core/images/done-button}} Backup Success !\n\nA backup of the plugin was successfully created.\n\n
\r\n" }, "$:/plugins/ahahn/tinka/packageErrors": { "title": "$:/plugins/ahahn/tinka/packageErrors", "caption": "Packaging Errors!", "subtitle": "Packaging Errors!", "type": "text/vnd.tiddlywiki", "text": "\\define errorFilter()\r\n[[$(errorVars)$]fields[]prefix[error]]\r\n\\end\n\n\r\n
\n\n!!{{$:/core/images/close-button}} There were some errors !\n\nThe follwoing errors occured whilst processing your request:\n\n
    \r\n\t<$list filter=<> variable=\"errorField\">\r\n\t\t
  • <$view tiddler=<> field=<> />
  • \r\n\t\r\n
\r\n
\r\n" }, "$:/plugins/ahahn/tinka/packageSuccess": { "title": "$:/plugins/ahahn/tinka/packageSuccess", "caption": "Packaging Success", "subtitle": "Packaging Success", "type": "text/vnd.tiddlywiki", "text": "
\n\n!!{{$:/core/images/done-button}} (Re-)Packaging Success !\n\nThe plugin was successfully (re-)packaged. It is recommended to save and reload the wiki now in order to avoid plugins to misbehave.\n\n
\r\n {{$:/core/images/save-button}} Saving...
(If your wiki doesn't save automatically, please save&reload manually.)
\r\n <$button class=\"tc-btn-big-green tinka-enlarge tinka-orb tinka-button-refresh\">\r\n <$action-sendmessage $message=\"tm-browser-refresh\" />\r\n {{$:/core/images/refresh-button}}\r\n

\r\n RELOAD NOW!\r\n

\r\n \r\n
\r\n
\r\n" }, "$:/plugins/ahahn/tinka/restoreSuccess": { "title": "$:/plugins/ahahn/tinka/restoreSuccess", "caption": "Restore Successful", "subtitle": "Restore Successful", "type": "text/vnd.tiddlywiki", "text": "
\n\n!!{{$:/core/images/done-button}} Restore Success !\n\nThe backup was successfully restored!\n\n
\r\n" }, "$:/plugins/ahahn/tinka/pluginManagement": { "title": "$:/plugins/ahahn/tinka/pluginManagement", "caption": "Modify Plugins", "tags": "$:/tags/tinka/ControlPanel", "type": "text/vnd.tiddlywiki", "text": "\r\n\\define plugin-dropdown(type)\r\n<$list filter=\"[!has[draft.of]plugin-type[$type$]sort[description]]\" emptyMessage=<>>\n\n<$reveal type=\"match\" text=<> state=\"$:/temp/tinka/ModifyPluginSearch!!search\" >\r\n\t
\r\n\t
\r\n\t<$set name=\"target\" value=<> >\r\n\t

''<$text text={{{ [get[name]] ~[split[/]last[1]] }}} />''

\r\n\t

Version: <$view field=\"version\" /> - <$view field=\"description\" />

\n\n\t{{$:/plugins/ahahn/tinka/dropdownManage}}\n\n\t\r\n\t
\r\n\t
\r\n\n\n\r\n\\end\n\n''Choose Plugin to Modify:'' <$edit-text tag=\"input\" type=\"text\" placeholder=\"$:/plugins/myPlugin\" focusPopup=\"$:/temp/tinka/ModifyPluginPopup\" class=\"tc-popup-handle\" tiddler=\"$:/temp/tinka/ModifyPluginSearch\" field=\"search\" cancelPopups=\"yes\"/>\r\n<$button popup=\"$:/temp/tinka/ModifyPluginPopup\" class=\"tc-btn-invisible tc-btn-dropdown\">{{$:/core/images/down-arrow}}\n\n<$reveal state=\"$:/temp/tinka/ModifyPluginPopup\" type=\"popup\" position=\"below\">\r\n
\r\n<$linkcatcher to=\"$:/temp/tinka/ModifyPluginSearch!!search\">\r\n
\r\nPlugins\r\n
\r\n<$list filter=\"[!has[draft.of]plugin-type[plugin]sort[description]]\" emptyMessage=<>>\r\n\t<$link to=<> >''<$text text={{{ [get[name]] ~[split[/]last[1]] }}} />'' - <$view field=\"version\" />\r\n\r\n
\r\nThemes\r\n
\r\n<$list filter=\"[!has[draft.of]plugin-type[theme]sort[description]]\" emptyMessage=<>>\r\n\t<$link to=<> >''<$text text={{{ [get[name]] ~[split[/]last[1]] }}} />'' - <$view field=\"version\" />\r\n\r\n\r\n
\r\n\n\n\r\n<>\r\n<>\n\n" }, "$:/plugins/ahahn/tinka/pluginSidePanel": { "title": "$:/plugins/ahahn/tinka/pluginSidePanel", "type": "text/vnd.tiddlywiki", "text": "\\define pluginFilter()\r\n[[$(pluginPrefix)$]plugintiddlers[]sort[]]\r\n\\end\n\n\\define pluginDirFilter()\r\n[all[tiddlers]prefix[$(pluginPrefix)$]sort[]]\r\n\\end\n\n!!!Shadow tiddlers contained in the plugin:\n\n<$list filter=<> template=\"$:/core/ui/ListItemTemplate\"/>\n\n!!!Normal tiddlers in the plugin directory:\r\n<$list filter=<> template=\"$:/core/ui/ListItemTemplate\"/>\n\n<$reveal state=\"!!extender\" type=\"nomatch\" text=\"open\">\r\n<$button set=\"!!extender\" setTo=\"open\" class=\"tc-btn-invisible tinka-sidebar-button\">

{{$:/core/images/chevron-right}} Filter search

\r\n\r\n<$reveal state=\"!!extender\" type=\"match\" text=\"open\">\r\n<$button set=\"!!extender\" setTo=\"close\" class=\"tc-btn-invisible tinka-sidebar-button\">

{{$:/core/images/chevron-down}} Filter search

\r\n
\r\n<$edit-text type=\"search\" tiddler=\"$:/plugins/ahahn/tinka/temp/helpTabSearch\" field=\"filterSearch\" />\r\n<$list filter={{$:/plugins/ahahn/tinka/temp/helpTabSearch!!filterSearch}} template=\"$:/core/ui/ListItemTemplate\"/>\r\n
\r\n\n\n<$button class=\"tinka-orange\">\r\n<$tinka-repackagePlugin $plugin=<> $create=\"no\" $diff=\"$:/plugins/ahahn/tinka/emptyDiff\" />\r\n<$action-sendmessage $message=\"tm-modal\" $param=\"$:/plugins/ahahn/tinka/packageSuccess\" />Quick-Package\r\n<$button class=\"tc-btn-big-green tinka-blue\">\r\n<$action-deletetiddler $tiddler=<> />\r\nDisable Sidebar-Tab\r\n" }, "$:/plugins/ahahn/tinka/search-default": { "title": "$:/plugins/ahahn/tinka/search-default", "caption": "Default search", "tags": "$:/tags/TinkaSearch", "type": "text/vnd.tiddlywiki", "text": "\\define searchstring()\r\n[all[tiddlers]search:title{$(searchTiddler)$}sort[title]]\r\n\\end\n\nEnter search term: <$edit-text class=\"tinka-full-edit\" tiddler=\"$:/temp/tinka/search\" type=\"search\" default=\"\" tag=\"input\"/> <$reveal state=\"$:/temp/tinka/search\" type=\"nomatch\" text=\"\"><$button class=\"tc-btn-invisible\" set=\"$:/temp/tinka/search\" setTo=\"\">{{$:/core/images/close-button}}\n\n<$reveal state=\"$:/temp/tinka/search\" type=\"nomatch\" text=\"\">\r\n <$set name=\"searchTiddler\" value=\"$:/temp/tinka/search\">\r\n
    \r\n <$list filter=<> emptyMessage=\"
  • No Tiddlers selected.
  • \">\r\n
  • \r\n <$checkbox tiddler=<> tag={{!!title}} />\r\n <$link to={{!!title}}><$text text={{!!title}} />\r\n
  • \r\n \r\n
\n\n\t<$macrocall $name=\"selectAllButtons\" sa_filter=<> />\r\n \r\n\n\n\r\n<$reveal state=\"$:/temp/tinka/search\" type=\"match\" text=\"\">\r\n
    \r\n
  • No Tiddlers selected.
  • \r\n
\r\n\n\n\r\n" }, "$:/plugins/ahahn/tinka/search-filter": { "title": "$:/plugins/ahahn/tinka/search-filter", "caption": "Filter search", "list-after": "$:/plugins/ahahn/tinka/search-default", "tags": "$:/tags/TinkaSearch", "type": "text/vnd.tiddlywiki", "text": "\\define defaultFilter()\r\n[prefix[$(target)$]]\r\n\\end\n\nEnter Filterstring to select tiddlers: <$edit-text class=\"tinka-full-edit\" tiddler=\"$:/temp/tinka/search\" type=\"search\" default=<> placeholder=<> tag=\"input\"/> <$reveal state=\"$:/temp/tinka/search\" type=\"nomatch\" text=\"\"><$button class=\"tc-btn-invisible\" set=\"$:/temp/tinka/search\" setTo=\"\">{{$:/core/images/close-button}}\r\n
    \r\n<$reveal text=\"\" type=\"nomatch\" state=\"$:/temp/tinka/search\">\r\n<$list filter={{$:/temp/tinka/search}} emptyMessage=\"
  • No Tiddlers selected.
  • \">\r\n\t\t
  • \r\n <$checkbox tiddler=<> tag={{!!title}} />\r\n <$link to={{!!title}}><$text text={{!!title}} />\r\n
  • \r\n\r\n<$macrocall $name=\"selectAllButtons\" sa_filter={{$:/temp/tinka/search}} />\r\n\r\n<$reveal text=\"\" type=\"match\" state=\"$:/temp/tinka/search\">\r\n<$list filter=<> emptyMessage=\"
  • No Tiddlers selected.
  • \">\r\n\t\t
  • \r\n <$checkbox tiddler=<> tag={{!!title}} />\r\n <$link to={{!!title}}><$text text={{!!title}} />\r\n
  • \r\n\r\n<$macrocall $name=\"selectAllButtons\" sa_filter=<> />\r\n\r\n
\r\n" }, "$:/plugins/ahahn/tinka/searchDisplay": { "title": "$:/plugins/ahahn/tinka/searchDisplay", "type": "text/vnd.tiddlywiki", "text": "\\define selectAllButtons(sa_filter)\r\n<$fieldmangler tiddler=<> >\r\n\t<$button>\r\n\t\tSelect All\r\n\t\t<$list filter=\"$sa_filter$\">\r\n\t\t\t<$action-sendmessage $message=\"tm-add-tag\" $param=<> />\r\n\t\t\r\n\t\r\n\t<$button>\r\n\t\tUnselect All\r\n\t\t<$list filter=\"$sa_filter$\">\r\n\t\t\t<$action-sendmessage $message=\"tm-remove-tag\" $param=<> />\r\n\t\t\r\n\t\r\n\r\n\\end\n\n<>\r\n" }, "$:/plugins/ahahn/tinka/usage": { "title": "$:/plugins/ahahn/tinka/usage", "caption": "Usage/Help", "created": "20150430092825762", "modified": "20170225181342015", "tags": "", "type": "text/vnd.tiddlywiki", "text": "{{$:/plugins/ahahn/tinka/docs/How to create a new plugin}}\n\n{{$:/plugins/ahahn/tinka/docs/Help Tab}}\n\n!! Notes\n\nWhen ''repackaging'' a plugin, the version number of the plugin is automatically increased. This might not be wanted in all cases and has to be manually corrected after packaging.\n\nAlso version suffixes such as:\n\n* -prerelease\r\n* -beta\n\nare supported and will be appended to the new version number when present.\n\n!! Adding items to the list field\n\nItems added to the `list` field will become tab entries in the generated plugin. Each item in the list should have a corresponding tiddler with the format:\n\n```\r\n$:/plugins///\r\n```\n\nwhere `` is the name you provided as author, `` is the name of the plugin you are creating, and `` is the same as the name that appears in the list entry.\n\nThe contents of the tab referenced in the `list` field will then be provided by the corresponding `$:/plugins///` tiddler.\n\n!! Plugin mechanism\r\nFor more information about how the plugin mechanism in TiddlyWiki works, see the official documentation: http://tiddlywiki.com/#PluginMechanism\n\n!! Filter language\r\nFilters are useful to select a subset of tiddlers from a wiki. If you are new to filters, learn more about them here: http://tiddlywiki.com/#Filters\r\n" } } }