I have some tiddlers that use UUIDs that are not human-readable and have a readable name in another field. So this is the exact use case for which I wanted this extended beyond just the body field. Similarly I also have a custom tags implementation in the view template....
Not to mention another wiki in which I completely replace the tiddler UI for certain tiddlers. I will adopt this whether the pull request gets merged or not, thanks Joshua. On Monday, May 25, 2020 at 9:56:37 AM UTC+2, Joshua Fontany wrote: > > Oooooh, wow. This is incredibly powerful. > > PR is up. I have attached a *.json bundle with the tiddlers I am using to > test the rendering. > The Title and Subtitle overrides have a `name` field, like a plugin, and > this triggers a custom view template for each that pushes the title into > the subtitle, and renders the Name in the <h2>title</h2>. Both obey the > Titles-a-Links setting in $:/Config > Settings. > > I have also attached a *.json bundle with just the changed > shadow-tiddlers, so you could actually try this out on tiddlywiki.com by > dragging both to a tab with it loaded. > > https://github.com/Jermolene/TiddlyWiki5/pull/4681 > > Best, > Joshua Fontany > > On Sunday, May 24, 2020 at 4:06:40 PM UTC-7, Joshua Fontany wrote: >> >> Yes, I think we can use this modification in all of the tiddler >> ViewTemplate/EditTemplate sections. >> >> I like the idea of using it for $:/config/ui/ViewTemplate itself.... hmm, >> some way to debug things would be good, because this opens things up to a >> lot of possible ways to mess thing up. Maybe a new tab or section in >> $:/Config to toggle transcluding the template tidders VS just outputing >> their name as a link (so you can "jump to the code" if it is not rendering >> correctly by toggling the Debug switch and clicking a template title). >> >> Thanks Saq, I'll put together a set of change as a PR, so we can have >> some testable code and references to clean the idea up a bit. >> >> Best, >> Joshua F >> >> On Sunday, May 24, 2020 at 1:42:15 PM UTC-7, Saq Imtiaz wrote: >>> >>> I'm still a bit under the weather so not thinking with the clearest head >>> here but a few thoughts: >>> >>> - I like the use of subfilter, that is the problem with the current >>> way $:/config/ui/ViewTemplate is used, it is a direct assignment as a >>> text >>> reference >>> - I would want similiar extensibility for other parts of the >>> templates and not just the body. >>> - Could we tweak how we use $:/config/ui/ViewTemplate in >>> $:/core/ui/PageTemplate/story to also allow subfilters, allowing us to >>> use >>> filters in that tiddler? template={{{ >>> [subfilter{$:/config/ui/ViewTemplate}] }}} >>> >>> Hope some or any of that is helpful! >>> Saq >>> >>> On Sunday, May 24, 2020 at 9:34:06 PM UTC+2, Joshua Fontany wrote: >>>> >>>> So I have decided to edit a core system tiddler (gasp) for my current 2 >>>> projects. One is a Martial Arts Wiki, with a glossary of over 500 >>>> Indonesian, Malay, Sundanese, Filipino, Javanese, Hawaiian, and Chinese >>>> terms with special martial-arts context-specific meanings, and a ton of >>>> Bookmarks (YouTube, etc). The other project is the every-growing UnNamed >>>> RPG Campaign Manager, and one of the biggest roadblocks there was "custom >>>> character/ship/etc sheets". >>>> >>>> I think I have a solution for this one. Will it be PR worthy? Let's >>>> find out. The ability to hide/replace the default text field is a bit >>>> cumbersome atm. You can hide the text-body by setting the `hide-body` >>>> field >>>> to "yes". And we can add new "sections" with `$/tags/ViewTemplate`, but >>>> unless we dig around and copy the $reveal code from another template >>>> section that will not be consistent with the Collapse state.... Yeah. >>>> Complicated. >>>> >>>> If I change the `$:/core/ui/ViewTemplate/body` tiddler slightly, we can >>>> move the "tiddler-body-default" wikitext to a macro in the same tiddler: >>>> ``` >>>> \define tiddler-body-default() >>>> <$list filter="[all[current]!has[plugin-type]!field:hide-body[yes]]"> >>>> >>>> >>>> <$transclude> >>>> >>>> >>>> <$transclude tiddler="$:/language/MissingTiddler/Hint"/> >>>> >>>> >>>> </$transclude> >>>> >>>> >>>> </$list> >>>> \end >>>> >>>> ``` >>>> And re-write the body of the tiddler like so: >>>> ``` >>>> <$reveal tag="div" class="tc-tiddler-body" type="nomatch" stateTitle=< >>>> <folded-state>> text="hide" retain="yes" animate="yes"> >>>> >>>> >>>> <$list variable="bodyTemplate" >>>> filter="[all[current]subfilter{$:/config/ViewTemplate/Body}]" >>>> emptyMessage=< >>>> <tiddler-body-default>> > >>>> >>>> >>>> <$transclude tiddler=<<bodyTemplate>> > >>>> >>>> >>>> <$tiddler tiddler=<<bodyTemplate>> > >>>> >>>> >>>> <$transclude tiddler="$:/language/MissingTiddler/Hint"/> >>>> >>>> >>>> </$tiddler> >>>> >>>> >>>> </$transclude> >>>> >>>> >>>> </$list> >>>> >>>> >>>> </$reveal> >>>> >>>> ``` >>>> Then we can use an array of filters to check for tags, type, or any >>>> other way you want to trigger a custom view template, and you can have >>>> more >>>> than one resulting bodyTemplate titles output and it's all nested in the >>>> correct $reveal widget, etc. Even better, you can use the >>>> `<<tiddler-body-default>> macro ANYWHERE in your own templates to get the >>>> default text-field to show up in that spot. Here is my current >>>> `$:/config/ViewTemplate/Body`: >>>> ``` >>>> [tag[$:/tags/Macro]then[$:/plugins/joshuafontany/core/ui/ViewTemplate/ >>>> body/macro]] >>>> [tag[Glossary]then[$:/plugins/joshuafontany/silatglossary/ui/ >>>> ViewTemplate/body]] >>>> [match[Test]then[$/plugins/joshuafontany/core/ui/ViewTemplate/body/TEST >>>> ]] >>>> >>>> ``` >>>> Which as you can see, uses the >>>> `$:/plugins/joshuafontany/core/ui/ViewTemplate/body/macro` tiddler as the >>>> body-template for all Global Macro tiddlers. This template looks like: >>>> ``` >>>> <pre><code language={{!!type}}><$view field="text"/></code></pre> >>>> >>>> >>>> ``` >>>> >>>> Which is a bit overkill, but is exactly how, internally, the >>>> `application.javascript` tiddlers are rendered. But this means I no longer >>>> have to click edit on every Macro tiddler just to re-read it for bug, etc. >>>> I'm going to expand this technique to render other custom tiddler types >>>> for >>>> other projects. >>>> >>>> Oh, yes, final note. The Type field can and will definitely over-ride >>>> this custom rendering, as that's done internally using the wiki's Parser >>>> methods. Also, I'm not sure if this is 100% backwards compatible, but the >>>> only thing I can possibly think of it changing are the Numeric Values >>>> output by the Qualify Macro (as these depend on how many and which >>>> tiddlers >>>> the current content is being rendered "through"). >>>> >>>> I think I will expand this to allow for a tabbed interface in the Draft >>>> Mode UI, with the standard Text Editor in one tab, and other content in >>>> other tabs. I can also use this to extent the Title field to allow for a >>>> custom Name (short & human readable, see plugins) that will display full >>>> size (if present) and which pushes the full Title down to a line of >>>> smaller >>>> text. >>>> >>>> Best, >>>> >>>> Joshua Fontany >>>> >>> -- 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 view this discussion on the web visit https://groups.google.com/d/msgid/tiddlywikidev/224cf521-acd2-4479-9712-5427d772eea1%40googlegroups.com.
