Hi Everyone,
Here is the result of my latest endeavor. This adds a create parameter to
the fieldmangler widget which creates the tiddler specified in "tiddler"
with the fields in "create". This allows temp tiddlers to be initialized
with state data without needing a button click. Notice that it only creates
it if it doesn't exist.
this.mangleTitle = ... ; //Insert after this line in execute()
this.createText = this.getAttribute("create",false);
if(typeof(this.createText) === "string") {
try{ this.createText = JSON.parse(this.createText); }
catch (e) { console.error(e); this.createText = false; }
console.log(this.createText);
if(this.createText){
this.createText['title'] = this.mangleTitle;
if(!this.wiki.tiddlerExists(this.mangleTitle))
this.wiki.addTiddler(this.createText);
}
}
And here is a tiddler that uses it. This tiddler creates a button that
toggles the story river between centered and normal. Centered is default.
\define createStateTiddler()
{ "text": "$(default)$" , "tags": "$:/tags/stylesheet" }
\end
\define state-1-css()
\end
\define state-2-css()
@media (min-width: 770px) { .story-river { margin: 0 auto; }
.sidebar-header { left: 50%; right: 0; padding-left: 413px; } }
\end
<$set name="default" value=<<state-2-css>> >
<span title="Toggle width/sidebar">
<$fieldmangler tiddler="$:/temp/toggle-centered"
create=<<createStateTiddler>>>
<$reveal type="match" state="$:/temp/toggle-centered" text=<<state-1-css>>
default=$(default)$>
<$button message="tw-add-tag" param="$:/tags/stylesheet"
set="$:/temp/toggle-centered" setTo=<<state-2-css>> class="btn-invisible
centered-toggle-1">{{$:/_images/right-arrow-button}}</$button>
</$reveal><$reveal type="match" state="$:/temp/toggle-centered"
text=<<state-2-css>>>
<$button message="tw-add-tag" param="$:/tags/stylesheet"
set="$:/temp/toggle-centered" setTo=<<state-1-css>> class="btn-invisible
centered-toggle-2">{{$:/_images/left-arrow-button}}</$button>
</$reveal></$fieldmangler>
</span>
</$set>
If you don't have the corresponding images for the buttons, just remove the
btn-invisible class from the buttons. I'm putting this out as a feature
request (a hackability request?).
I haven't changed the buttons yet, so that is how they were working before
I did this. I had to click the button once to create the tiddler, and then
a second time to finally see something happen. This way, whatever way I
initialize it I see the effect on start up.
Is this something that could be added to the core? Note that "create", as I
wrote it, must be valid JSON and the title gets overwritten if it is there.
Enjoy!
--Arlen
--
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.