\define each-other-level(filter)
<li><$link to=<<currentTiddler>> ><$text text=<<currentTiddler>>/></$link></li>
<ul>
<$list filter="$filter$">
<<each-other-level $filter$>>
</$list>
</ul>
\end
\define first-level(filter)
<ul>
<$list filter="$filter$">
<<each-other-level $filter$>>
</$list>
</ul>
\end
Start in TableOfContents<br>
<$tiddler tiddler="TableOfContents">
<<first-level "[is[current]tagging[]]">>
</$tiddler>
See how the at the bottom we start calling the
first-level macro, then this calls each-other-level for each item in the list.
The recursion then occurs when inside each-other-level we call each-other-level
Not how the list is wrapped in `<ul>` and each line with `<li>` this makes use of HTML to generate lists and will nest them.
Soon I will post a more advanced version with Notes.
Regards
Tony
\define each-other-level(filter)
<li><$macrocall $name=tag tag=<<currentTiddler>>/></li>
<ul>
<$list filter="$filter$">
<<each-other-level $filter$>>
</$list>
</ul>
\end
\define first-level(filter)
<ul>
<$list filter="$filter$">
<<each-other-level $filter$>>
</$list>
</ul>
\end
Start in TableOfContents<br>
<$tiddler tiddler="TableOfContents">
<<first-level "[is[current]tagging[]]">>
</$tiddler>
<$link to=<<currentTiddler>> ><$text text=<<currentTiddler>>/></$link>
\define each-other-level(filter)<$set name=level filter="[<level>add[1]]"><$wikify name=branch-number text=<<append-branch-number>> ><ul><li><<branch-number>><!--$transclude tiddler={{!!icon}}/--> <$link to=<<currentTiddler>> ><$text text=<<currentTiddler>>/></$link><$list filter="[{Recursion-Demo!!show-details}match[yes]]" variable=nul> (level:<<level>>) <!--parent: <<parentTiddler>--> <!--<position-in-parentTiddler-list>--></$list><$list filter="[{Recursion-Demo!!show-buttons}match[yes]]" variable=nul> {{$:/core/ui/Buttons/permalink}} {{||$:/core/ui/Buttons/edit}} {{||$:/core/ui/Buttons/clone}} <<copy-title>> <<copy-content>></$list></li><$set name=parentTiddler value=<<currentTiddler>> >
<$list filter="$filter$"> <<each-other-level $filter$>></$list>
</$set></ul></$wikify></$set>\end\define first-level(filter)<h3><$link to=<<currentTiddler>> ><$text text=<<currentTiddler>>/></$link></h3><$set name=parentTiddler value=<<currentTiddler>> ><$set name=level value="">
<$list filter="$filter$"> <<each-other-level $filter$>></$list>
</$set></$set>End all<br>\end\define append-branch-number() $(branch-number)$<<position-in-parentTiddler-list>>.\define position-in-list() {{{ +[allbefore:include<currentTiddler>count[]] }}}\define position-in-parentTiddler-list() <$list filter="[<parentTiddler>tagging[]] +[allbefore:include<currentTiddler>count[]]" variable=position><$text text=<<position>>/></$list>\end\define copy-title()<$button message="tm-copy-to-clipboard" param=<<currentTiddler>> tooltip="Copy the Tiddler Title to the clipboard" class="tc-btn-invisible">{{$:/core/images/copy-clipboard}}title</$button>\end\define copy-content()<$button message="tm-copy-to-clipboard" param={{!!text}} tooltip="Copy the Tiddler Content to the clipboard" class="tc-btn-invisible">{{$:/core/images/copy-clipboard}}content</$button>\end
<h2>Recursion and a Table of Contents</h2>
:This is a demonstration of simple <$button tooltip="No other tiddler is required to make this work, only the tiddlers to be listed, does not use the TOC macros" class="tc-btn-invisible tc-tiddlylink">"single tiddler"</$button> recursion macro, allowing designer influence of a TOC. *A Table of contents Macro is designed to build a hierarchy from tiddlers tagging tiddlers*All that is needed is to call one macro from another. However it will call the second macro for each level down it finds.**The two essential macros are ''first-level'' and ''each-other-level''.**And additional macro "append-branch" is define to concatenate the current level on a branch.*When all items are listed at a given level it falls back to the last items in the previous level*This macro is not checking to Avoid an infinite loop that may cause infinite recursion*The "level" variable displayed in (n) shows how many levels deep you are*Icons will be displayed if they exist in tiddlers (uncomment `<!--$transclude tiddler={{!!icon}}/-->`)*by setting the parentTiddler before calling the next level we can search its list field to see where the current tiddler comes in the list (this adds a bit of time using the trick discussed [[here|https://groups.google.com/forum/?hl=en#!topic/tiddlywiki/wY6haW2cYMA]]*Change `<!--parent: <<parentTiddler>-->` to `<parent: <<parentTiddler>>` to see each parent displayed.;Challenges*Generate a way to generate a number for the exact position in the list eg 1, 2, 3... in sequence for every tiddler listed*A Popup or modal to preview the content of each listed tiddler, perhaps even with mouse over.<$checkbox field="show-details" checked="yes" unchecked="no" default="no"> Show details</$checkbox><$checkbox field="show-buttons" checked="yes" unchecked="no" default="no"> Show Action Buttons</$checkbox>
<$tiddler tiddler="TableOfContents"><$set name=branch-number value=""> <<first-level "[is[current]tagging[]]">></$set></$tiddler>
<ul style="list-style:none;">
Rather than Provide a link to each tiddler in our toc we can use a tag pill on the current tiddler.You can use a tag pill to drag and drop the order of items so tagged;
\define slider-toc(title, content)<$set name="revealState" value=<<qualify "$:/state-reveal-$title$">>> <$reveal type="nomatch" state=<<revealState>> text="yes"> <$button class="tc-btn-invisible tc-tiddlylink" set=<<revealState>> setTo="yes"> {{$:/core/images/right-arrow}} </$button> </$reveal> <$reveal type="match" state=<<revealState>> text="yes"> <$button class="tc-btn-invisible tc-tiddlylink" set=<<revealState>> setTo="no"> {{$:/core/images/down-arrow}} </$button> </$reveal> <$link to=<<__title__>>><$view tiddler="""$title$""" field="caption"> <$view tiddler="""$title$""" field="title"></$view> </$view></$link><br><$reveal type="match" state=<<revealState>> text="yes">$content$</$reveal></$set>\end
\define each-other-level(filter)<$macrocall $name=slider-toc title=<<currentTiddler>> content="""<ul>
<$list filter="$filter$"> <<each-other-level $filter$>></$list>
</ul>"""/>
<$macrocall $name=slider-toc title=<<currentTiddler>>
content="""<ul>
\define slider-toc(title, content)<$set name="revealState" value=<<qualify "$:/state-reveal-$title$">>> <$reveal type="nomatch" state=<<revealState>> text="yes"> <$button class="tc-btn-invisible tc-tiddlylink" set=<<revealState>> setTo="yes"> {{$:/core/images/right-arrow}} </$button> </$reveal> <$reveal type="match" state=<<revealState>> text="yes"> <$button class="tc-btn-invisible tc-tiddlylink" set=<<revealState>> setTo="no"> {{$:/core/images/down-arrow}} </$button> </$reveal> <$link to=<<__title__>>><$view tiddler="""$title$""" field="caption"> <$view tiddler="""$title$""" field="title"></$view> </$view></$link><br><$reveal type="match" state=<<revealState>> text="yes">$content$</$reveal></$set>\end
\define each-other-level(filter)<$macrocall $name=slider-toc title=<<currentTiddler>> content="""<ul><$list filter="$filter$">
<$list filter="[<currentTiddler>tagging[]count[]match[0]]" variable=ignore emptyMessage=<<each-other-level $filter$>> > <$link to=<<currentTiddler>>><$view field="caption"> <$view field="title"></$view> </$view></$link><br></$list></$list></ul>"""/>\end
\define level-content(filter)<ul><$list filter="$filter$"><$list filter="[<currentTiddler>tagging[]count[]match[0]]" variable=ignore emptyMessage=<<each-other-level $filter$>> > <$link to=<<currentTiddler>>><$view field="caption"> <$view field="title"></$view> </$view></$link><br></$list></$list></ul>
\end
\define first-level(filter)<ul><$list filter="$filter$"> <<each-other-level $filter$>></$list></ul>\end
Start in TableOfContents<br><$tiddler tiddler="TableOfContents">
<<first-level "[is[current]tagging[]]">>
</$tiddler>
I would encourage any posts in this thread with TOC examples to build a good resource, be it searching the forum, what you add to twscripts and other examples.
My key point though was pointing out how when someone has a special need they can take the basic initial script and build on that rather than trying to force it into the default toc macros.
The only caviet is I have not tested for infinate loops however we could use the depth set at a high number to combat it.
However if someone is writing a book they are unlikely place a cheaper within a chapter so for many use cases a loop is unlikely to be created.
In fact illustrating how to stop infinite loops is another useful code pattern.
Your slider examples also add a lot to the code patterns.
Regards
Tont
I am planing to provide an example of reordering the toc, but I ran down a number of rabbit holes which opened whole new worlds like in Alice in wonderland.
I have being very productive lately and hope to release many of my inventions. In truth I am not so good at releasing them because I am always polishing them up with new features.
I wish I had some of whatever Mohammad has.
I find sharing fundamental constructs that took time for me to understand well, then starting a conversation about them fun, interesting and inspiring. Some day I hope to take some De facto standards I built for myself and see them become dejure. Some would say I am a slow learner but I am not, I am a deep learner and that takes time and in time I will give more to the community.
But sometimes its the little tips, the every day tricks we all have, that have the most impact, once Shared.
regards
Tony
I am planing to provide an example of reordering the toc, [...] hope to release many of my inventions.
In truth I am not so good at releasing them because I am always polishing them up with new features.
I agree loading too many features into a solution is not good especialy when sharing so people can learn from it.
In part the features I am referring to are those that make the solution simple but customisable and based on higher quality design, such that its reusable and more likely to work with other solutions and plugins. I suppose this can mean a degree of perfectionisium that not every one will make use of, but hopefully it avoids side effects and compatibility issues.
Regards
Tony
Regards
Tony
Mohammad wrote:Drag and drop in tiddlywiki.com and see how amazingly it works!Thanks, both of you, for sharing. Please note that recursions can cause problems also: For example, go to tiddlywiki.com and tag the HelloThere tiddler with "Examples" (i.e to create a loop because Examples is a subtiddler to HelloThere). This does not cause problems. But if you add Mohammads creation you get RSOE. I'm not sure how native TW avoids this but know it was something that was actively dealt with a few years back.
A wish: One major lacking feature of current ToC's is drag'n drop-ability. I.e to rearrange the branches in the tree. This would be the basis for a super useful outliner: The next step would be a feature to "open all tiddlers" in a tree or a subbranch. It'd be a very powerful tool for authoring longer texts.
Mohammad wrote:Drag and drop in tiddlywiki.com and see how amazingly it works!Thanks, both of you, for sharing. Please note that recursions can cause problems also: For example, go to tiddlywiki.com and tag the HelloThere tiddler with "Examples" (i.e to create a loop because Examples is a subtiddler to HelloThere). This does not cause problems. But if you add Mohammads creation you get RSOE. I'm not sure how native TW avoids this but know it was something that was actively dealt with a few years back.
A wish: One major lacking feature of current ToC's is drag'n drop-ability. I.e to rearrange the branches in the tree. This would be the basis for a super useful outliner: The next step would be a feature to "open all tiddlers" in a tree or a subbranch. It'd be a very powerful tool for authoring longer texts.<:-)
On Wednesday, January 22, 2020 at 1:32:03 AM UTC-8, Mat wrote:Mohammad wrote:Drag and drop in tiddlywiki.com and see how amazingly it works!Thanks, both of you, for sharing. Please note that recursions can cause problems also: For example, go to tiddlywiki.com and tag the HelloThere tiddler with "Examples" (i.e to create a loop because Examples is a subtiddler to HelloThere). This does not cause problems. But if you add Mohammads creation you get RSOE. I'm not sure how native TW avoids this but know it was something that was actively dealt with a few years back.This was one of my earlier TW5 contributions. The TOC macros use an "exclude" paramter that is dynamically updated as the recursion occurs. Each level of recursion adds the current Tiddler to a list (using syntax -[[tiddlername]]) so that as it dives down into the tree, any tiddler that has already been visited in the current 'branch' is excluded from being visited again. This prevents infinite loops that eat up all the browser memory and eventually cause a fatal error condition.
A wish: One major lacking feature of current ToC's is drag'n drop-ability. I.e to rearrange the branches in the tree. This would be the basis for a super useful outliner: The next step would be a feature to "open all tiddlers" in a tree or a subbranch. It'd be a very powerful tool for authoring longer texts.My custom TOC macros for InsideTiddlyWiki include drag-and-drop handling. To try it, open http://www.TiddlyTools.com/InsideTW and then 'unlock' the document (padlock icon in the upper right toolbar). Then open the TOC "slidebar" (menu icon in the upper left toolbar). Then just drag-n-drop items. It supports "drop before", "drop after" and "drop into" handling based on modifier keys (default=drop before, SHIFT=drop after, CTRL=drop into). The macro code is here: http://tiddlytools.com/InsideTW/#TiddlyTools%2FTOC%2FMacros. See also http://tiddlytools.com/InsideTW/#TiddlyTools%2FTOC%2FTemplate and http://tiddlytools.com/InsideTW/#TiddlyTools%2FTOC%2FStylesheet-e-e
\define toc-all(here,exclude)
<$list filter="""[title[$here$]tagging[]] $exclude$ -[[$here$]]""">
<$text text=<<currentTiddler>>/>
<div style="padding-left:2em;">
<$macrocall $name="toc-all" here=<<currentTiddler>> exclude="""$exclude$ -[[$here$]]"""/>
</div>
</$list>
\end
<<toc-all TableOfContents>>
Mohammad wrote:Drag and drop in tiddlywiki.com and see how amazingly it works!Thanks, both of you, for sharing. Please note that recursions can cause problems also: For example, go to tiddlywiki.com and tag the HelloThere tiddler with "Examples" (i.e to create a loop because Examples is a subtiddler to HelloThere). This does not cause problems. But if you add Mohammads creation you get RSOE. I'm not sure how native TW avoids this but know it was something that was actively dealt with a few years back.
My custom TOC macros for InsideTiddlyWiki include drag-and-drop handling. To try it, open http://www.TiddlyTools.com/InsideTW and
-e-e
Eric Shulman wrote:My custom TOC macros for InsideTiddlyWiki include drag-and-drop handling. To try it, open http://www.TiddlyTools.com/InsideTW andAha!It has an on-hover "more button" showing tools.
And it auto-navigates to show where in the tree you are!
I'm not sure how to test if it is possible to drag'n drop a tiddler title from the river into the ToC - is it?
Really cool Eric, I'll start using it!!!
In your solution, how one can EXCLUDE one branch or item from toc?I means assume in tiddlywiki.com I want to exclude (hide) Examples branch from!How the below code should be modified to reflect this exclusion?
And it auto-navigates to show where in the tree you are!It uses $:/HistoryList!!currenttiddler to highlight the most recently opened tiddler
--
You received this message because you are subscribed to the Google Groups "TiddlyWiki" group.
To unsubscribe from this group and stop receiving emails from it, send an email to tiddlywiki+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/tiddlywiki/22548730-53e5-40ea-a201-4ca46d447c95%40googlegroups.com.
http://tiddlytools.com/InsideTW/#TiddlyTools%2FTOC%2FMacros
http://tiddlytools.com/InsideTW/#TiddlyTools%2FTOC%2FTemplate
http://tiddlytools.com/InsideTW/#TiddlyTools%2FTOC%2FStylesheet
http://tiddlytools.com/InsideTW/#TiddlyTools%2FTOC%2Fscrollhere.js
Scott,I cannot reproduce it!I deleted HelloThere and even TableOfContents, it works fine.Could give me a short a example!Best wishesMohammad
On Wed, Jan 22, 2020 at 10:06 PM Scott Kingery <techlif...@gmail.com> wrote:
Thanks all for the work on this.--Mohammad, I like that you are hiding the > symbols for entries that don't have sub-entries. However, this doesn't seem to work in my testing when the top level has no sub-entries. For example, if on tiddlywiki.com there were no HelloThere entries you would still get the ">" symbol. Not sure if that is fixable.Scott
On Tuesday, January 21, 2020 at 9:21:34 PM UTC-8, Mohammad wrote:Hi Tony,This is an improved TOC-Expandable sports two button to collapse and expand all tiddlers in the table-of-contentsAlso it is smart enough to hide the right arow for entries have no child.I have created an experimental wiki on tiddlyspot will share later.Drag and drop in tiddlywiki.com and see how amazingly it works!
You received this message because you are subscribed to the Google Groups "TiddlyWiki" group.
To unsubscribe from this group and stop receiving emails from it, send an email to tiddl...@googlegroups.com.
Drag'n dropping a toc item creates double entries.
The icons for open/close to the left of each item can't be seen. I've searched but can't figure out why.
I confirm that the Eric method is simpler and takes care of circular references!
\define toc-all(here,exclude)
<$list filter="""[title[$here$]tagging[]] $exclude$ -[[$here$]]""">
<$text text=<<currentTiddler>>/>
<div style="padding-left:2em;">
<$macrocall $name="toc-all" here=<<currentTiddler>> exclude="""$exclude$ -[[$here$]]"""/>
</div>
</$list>
\end
<<toc-all TableOfContents>>
It has an on-hover "more button" showing tools.Yes... this makes it easy to use "New Here" to add a new child item to the tree
Eric,It has an on-hover "more button" showing tools.Yes... this makes it easy to use "New Here" to add a new child item to the treeIn my opinion, this solution is not really usable on the phone (although I have only tried it in DeveloperTools Responsive view), because hover is only possible with the mouse.
.tt-toc-item .tt-favorite { opacity:0.5; }
.tt-toc-item .tt-toc-tools { opacity:0.5; }
<$action-listops $tiddler=<<newtag>> $field="list" $subfilter="+[append<actionTiddler>putafter<item>]" />
<<toc-toggle-all>>
<<toc-tree "root">>
In the example of previous post assume you add a new tiddler tagged with A named adIf ad has a list-after field with value aa, whenever you reorder list and darg and drop aa to a new position, dd will be moved and appear after aa.the same is true for child tiddlers with list-before field.
\define list-tagged-draggable-drop-actions(tag)
<!-- Save the current ordering of the tiddlers with this tag -->
<$set name="order" filter="[<__tag__>tagging[]]">
<!-- Remove any list-after or list-before fields from the tiddlers with this tag -->
<$list filter="[<__tag__>tagging[]]">
<$action-deletefield $field="list-before"/>
<$action-deletefield $field="list-after"/>
</$list>
<!-- Save the new order to the Tag Tiddler -->
<$action-listops $tiddler=<<__tag__>> $field="list" $filter="+[enlist<order>] +[insertbefore:currentTiddler<actionTiddler>]"/>
<!-- Make sure the newly added item has the right tag -->
<!-- Removing this line makes dragging tags within the dropdown work as intended -->
<!--<$action-listops $tiddler=<<actionTiddler>> $tags=<<__tag__>>/>-->
<!-- Using the following 5 lines as replacement makes dragging titles from outside into the dropdown apply the tag -->
<$list filter="[<actionTiddler>!contains:tags<__tag__>]">
<$fieldmangler tiddler=<<actionTiddler>>>
<$action-sendmessage $message="tm-add-tag" $param=<<__tag__>>/>
</$fieldmangler>
</$list>
</$set>
\end
\define toc-item-drop()<$reveal default=<<actionTiddler>> type="nomatch" text=<<item>>> <!-- DON'T DROP ON SELF --> <!-- get OLDTAG and NEWTAG, exclude special TiddlyBook tags --> <$vars sourcetags={{{ [<actionTiddler>get[tags]] }}} targettags={{{ [<item>get[tags]] }}}> <$vars oldtag={{{ [enlist<sourcetags>!enlist<toc-ignore-tags>] }}} newtag={{{ [enlist<targettags>!enlist<toc-ignore-tags>] }}}>
<!-- Save the current ordering of the tiddlers with this tag -->
<$set name="order" filter="[<newtag>tagging[]]">
<!-- Remove any list-after or list-before fields from the tiddlers with this tag -->
<$list filter="[<newtag>tagging[]]">
<$action-deletefield $field="list-before"/><$action-deletefield $field="list-after"/></$list>
<$reveal default=<<modifier>> type="match" text="normal"> <!-- DROP BEFORE SIBLING --> <$action-listops $tiddler=<<actionTiddler>> $field="tags" $subfilter="-[<oldtag>]" /> <$action-listops $tiddler=<<actionTiddler>> $field="tags" $subfilter="[<newtag>]" /> <$action-listops $tiddler=<<oldtag>> $field="list" $subfilter="-[<actionTiddler>]" /> <$action-listops $tiddler=<<newtag>> $field="list" $subfilter="+[enlist<order>] +[append<actionTiddler>putbefore<item>]" /> </$reveal> <$reveal default=<<modifier>> type="match" text="shift"> <!-- DROP AFTER SIBLING --> <$action-listops $tiddler=<<actionTiddler>> $field="tags" $subfilter="-[<oldtag>]" /> <$action-listops $tiddler=<<actionTiddler>> $field="tags" $subfilter="[<newtag>]" /> <$action-listops $tiddler=<<oldtag>> $field="list" $subfilter="-[<actionTiddler>]" /> <$action-listops $tiddler=<<newtag>> $field="list" $subfilter="+[enlist<order>] +[append<actionTiddler>putafter<item>]" /> </$reveal> <$reveal default=<<modifier>> type="match" text="ctrl"> <!-- DROP AS CHILD --> <$action-listops $tiddler=<<actionTiddler>> $field="tags" $subfilter="-[<oldtag>]" /> <$action-listops $tiddler=<<actionTiddler>> $field="tags" $subfilter="[<item>]" /> <$action-listops $tiddler=<<oldtag>> $field="list" $subfilter="-[<actionTiddler>]" /> <$action-listops $tiddler=<<item>> $field="list" $subfilter="[<actionTiddler>]" /> </$reveal> </$set> </$vars> </$vars></$reveal>\end
Hello again Eric,Based on your recent reply, I made some change to toc-item-drop macro the and it seems it work now!Please have a look and let me know if you confirm it.
\define toc-item-drop()
<$reveal default=<<actionTiddler>> type="nomatch" text=<<item>>> <!-- DON
'T DROP ON SELF -->
<!-- get OLDTAG and NEWTAG, exclude special TiddlyBook tags -->
<$vars sourcetags={{{ [<actionTiddler>get[tags]] }}}
targettags={{{ [<item>get[tags]] }}}>
<$vars oldtag={{{ [enlist<sourcetags>!enlist<toc-ignore-tags>] }}}
newtag={{{ [enlist<targettags>!enlist<toc-ignore-tags>] }}}>
<$reveal default=<<modifier>> type="match" text="normal"> <!-- DROP BEFORE SIBLING -->
<$set name="order" filter="[<newtag>tagging[]]">
<$list filter=<<order>>> <$action-deletefield $field="list-before"/> <$action-deletefield $field="list-after"/> </$list>
<$action-listops $tiddler=<<actionTiddler>> $field="tags" $subfilter="-[<oldtag>]" />
<$action-listops $tiddler=<<actionTiddler>> $field="tags" $subfilter="[<newtag>]" />
<$action-listops $tiddler=<<oldtag>> $field="list" $subfilter="-[<actionTiddler>]" />
<$action-listops $tiddler=<<newtag>> $field="list" $subfilter="[enlist<order>] -[<actionTiddler>] +[append<actionTiddler>putbefore<item>]" />
</$set>
</$reveal>
<$reveal default=<<modifier>> type="match" text="shift"> <!-- DROP AFTER SIBLING -->
<$set name="order" filter="[<newtag>tagging[]]">
<$list filter=<<order>>> <$action-deletefield $field="list-before"/> <$action-deletefield $field="list-after"/> </$list>
<$action-listops $tiddler=<<actionTiddler>> $field="tags" $subfilter="-[<oldtag>]" />
<$action-listops $tiddler=<<actionTiddler>> $field="tags" $subfilter="[<newtag>]" />
<$action-listops $tiddler=<<oldtag>> $field="list" $subfilter="-[<actionTiddler>]" />
<$action-listops $tiddler=<<newtag>> $field="list" $subfilter="[enlist<order>] -[<actionTiddler>] +[append<actionTiddler>putafter<item>]" />
</$set>
</$reveal>
<$reveal default=<<modifier>> type="match" text="ctrl"> <!-- DROP AS CHILD -->
<$action-listops $tiddler=<<actionTiddler>> $field="tags" $subfilter="-[<oldtag>]" />
<$action-listops $tiddler=<<actionTiddler>> $field="tags" $subfilter="[<item>]" />
<$action-listops $tiddler=<<oldtag>> $field="list" $subfilter="-[<actionTiddler>]" />
<$action-listops $tiddler=<<item>> $field="list" $subfilter="[<actionTiddler>]" />
</$reveal>
</$vars>
</$vars>
</$reveal>
\end
Mohammad wrote:Drag and drop in tiddlywiki.com and see how amazingly it works!Thanks, both of you, for sharing. Please note that recursions can cause problems also: For example, go to tiddlywiki.com and tag the HelloThere tiddler with "Examples" (i.e to create a loop because Examples is a subtiddler to HelloThere). This does not cause problems. But if you add Mohammads creation you get RSOE. I'm not sure how native TW avoids this but know it was something that was actively dealt with a few years back.
A wish: One major lacking feature of current ToC's is drag'n drop-ability. I.e to rearrange the branches in the tree. This would be the basis for a super useful outliner: The next step would be a feature to "open all tiddlers" in a tree or a subbranch. It'd be a very powerful tool for authoring longer texts.
<:-)