Hello Jeremy,
I'm facing more problems than I though with this one. I have another
problem with the params. The widget is not getting the params correctly.
Sometimes it gets empty strings and in other cases it took the previous
value. I don't know where the problem is.
If you don't mind, I will paste the code here. Meanwhile I will try to set
a git repository on my computer. The code is a bit dirty but I have plans
to change it.
Thanks in advance.
/*\
title: $:/plugins/danielo/packAsPlugin/packAsPlugin.js
type: application/javascript
module-type: widget
encrypttiddler widget
```
```
\*/
(function (){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
var Widget = require("$:/core/modules/widgets/widget.js").widget;
var packAsPlugin = function (parseTreeNode,options) {
this.initialise(parseTreeNode,options);
this.addEventListeners([
{type: "tw-pack-plugin", handler: "handlePackevent"},
{type: "tw-unpack-plugin", handler: "handleUnpackevent"}
]);
};
/*
Inherit from the base widget class
*/
packAsPlugin.prototype = new Widget();
/*
Render this widget into the DOM
*/
packAsPlugin.prototype.render = function (parent,nextSibling) {
this.parentDomNode = parent;
this.computeAttributes();
this.execute();
this.renderChildren(parent,nextSibling);
};
/*
Compute the internal state of the widget
*/
packAsPlugin.prototype.execute = function () {
// Get attributes
this.pluginDependencies=this.getAttribute("dependencies");
this.pluginDescription=this.getAttribute("description","plugin
packed with Danielo's pack plugin");
this.pluginType=this.getAttribute("type","plugin");
this.pluginVersion=this.getAttribute("version");
this.pluginAuthor=this.getAttribute("author",$tw.wiki.getTiddlerText("$:/status/UserName")
|| "Danielo" );
this.pluginName=this.getAttribute("name","yourPlugin") || "aPlugin" ;
this.tiddlersFilter=this.getAttribute("filter","[!is[system]!is[shadow]!has[draft.of]]");
// Construct the child widgets
console.log(this.pluginAuthor+"-Name:"+this.pluginName+"-filter:"+this.tiddlersFilter);
this.makeChildWidgets();
};
/*
Selectively refreshes the widget if needed. Returns true if the widget or
any of its children needed re-rendering
*/
packAsPlugin.prototype.refresh = function (changedTiddlers) {
var changedAttributes = this.computeAttributes();
console.log(this.computeAttributes());
if(changedAttributes.tiddler) {
this.refreshSelf();
return true;
} else {
return this.refreshChildren(changedTiddlers);
}
};
packAsPlugin.prototype.handlePackevent = function (event){
var pluginFields=this.createPluginTiddler();
var sourceTiddlers=this.wiki.filterTiddlers(this.tiddlersFilter);
var components=[];
console.log("Pack of plugins to include ["+sourceTiddlers+"]");
for(var i=0;i<sourceTiddlers.length;i++){
components.push(this.createComponentTiddler(sourceTiddlers[i]));
console.log("Packing: "+sourceTiddlers[i]);
}
this.saveTiddler("",pluginFields);
console.log("Created plugin tiddler "+pluginFields.title + " Version
"+pluginFields.version);
$tw.utils.repackPlugin(pluginFields.title,components);
this.setVariable("resultPlugin",pluginFields.title);
this.makeChildWidgets();
};
packAsPlugin.prototype.handleUnpackevent = function (event){
//WIP
};
packAsPlugin.prototype.getBasicTitle = function (){ return
"$:/plugins/"+this.pluginAuthor+"/"+this.pluginName };
packAsPlugin.prototype.createComponentTitle = function (componentName){
return this.getBasicTitle()+"/"+this.basename(componentName)
};
packAsPlugin.prototype.basename = function (path) {
return path.replace(/\\/g,'/').replace( /.*\//, '' );
};
packAsPlugin.prototype.createComponentTiddler = function (originalTitle){
var tiddler=this.wiki.getTiddler(originalTitle);
if(tiddler){
var componentTitle = this.createComponentTitle(originalTitle);
this.saveTiddler(tiddler,{title:componentTitle});
console.log("Created "+componentTitle);
return componentTitle;
}
};
packAsPlugin.prototype.createPluginTiddler = function (){
var previousVersion = this.wiki.getTiddler(this.getBasicTitle());
this.pluginVersion = previousVersion ? previousVersion.fields.version :
this.pluginVersion;
var fields={
title:this.getBasicTitle(),
dependencies: this.pluginDependencies,
description: this.pluginDescription,
version:this.pluginVersion,
"plugin-type":this.pluginType,
type:"application/json",
text: JSON.stringify({tiddlers:{}})
};
return fields;
};
packAsPlugin.prototype.saveTiddler=function (tiddler,fields){
this.wiki.addTiddler( new
$tw.Tiddler(this.wiki.getModificationFields(),tiddler,fields ) );
};
exports.packPlugin = packAsPlugin;
})();
--
You received this message because you are subscribed to the Google Groups
"TiddlyWikiDev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/tiddlywikidev.
For more options, visit https://groups.google.com/d/optout.