mirror of
				https://github.com/Jermolene/TiddlyWiki5
				synced 2025-10-31 07:32:59 +00:00 
			
		
		
		
	Add "cascade" filter run prefix and use it to control view templates (#6168)
* Initial Commit
* Set currentTiddler and ..currentTiddler for filter evaulation
* Precompile the filters for performance
* Add explicit test for empty result when no filter passes
* Use the cascade filter run prefix to choose the view template body template
* Use the cascade mechanism to choose between the edit and view templates
* Simplify cascade filter
Thanks @saqimtiaz
* Add control panel UI for inspecting the template cascades
* Refactor import listing and plugin listing as alternate body templates
As suggested by @pmario
* Refer to $:/core/ui/{View|Edit}Template via their associated config tiddlers
* Fix typo in previous commit
* Add demo of custom story tiddler template
* Tweak control panel wording
* Standardise "Story Tiddler Template" nomenclature
* Add a cascade for the editor template body
* Add a cascade for the view template title
* Avoid unwanted whitespace
* Add a cascade for dynamically choosing tiddler icons
			
			
This commit is contained in:
		| @@ -27,10 +27,15 @@ Basics/Tiddlers/Prompt: Number of tiddlers | |||||||
| Basics/Title/Prompt: Title of this ~TiddlyWiki | Basics/Title/Prompt: Title of this ~TiddlyWiki | ||||||
| Basics/Username/Prompt: Username for signing edits | Basics/Username/Prompt: Username for signing edits | ||||||
| Basics/Version/Prompt: ~TiddlyWiki version | Basics/Version/Prompt: ~TiddlyWiki version | ||||||
|  | Cascades/Caption: Cascades | ||||||
|  | Cascades/Hint: These global rules are used to dynamically choose certain templates. The result of the cascade is the result of the first filter in the sequence that returns a result | ||||||
|  | Cascades/TagPrompt: Filters tagged <$macrocall $name="tag" tag=<<currentTiddler>>/> | ||||||
| EditorTypes/Caption: Editor Types | EditorTypes/Caption: Editor Types | ||||||
| EditorTypes/Editor/Caption: Editor | EditorTypes/Editor/Caption: Editor | ||||||
| EditorTypes/Hint: These tiddlers determine which editor is used to edit specific tiddler types. | EditorTypes/Hint: These tiddlers determine which editor is used to edit specific tiddler types. | ||||||
| EditorTypes/Type/Caption: Type | EditorTypes/Type/Caption: Type | ||||||
|  | EditTemplateBody/Caption: Edit Template Body | ||||||
|  | EditTemplateBody/Hint: This rule cascade is used by the default edit template to dynamically choose the template for editing the body of a tiddler. | ||||||
| Info/Caption: Info | Info/Caption: Info | ||||||
| Info/Hint: Information about this TiddlyWiki | Info/Hint: Information about this TiddlyWiki | ||||||
| KeyboardShortcuts/Add/Prompt: Type shortcut here | KeyboardShortcuts/Add/Prompt: Type shortcut here | ||||||
| @@ -191,6 +196,8 @@ Settings/TitleLinks/Yes/Description: Display tiddler titles as links | |||||||
| Settings/MissingLinks/Caption: Wiki Links | Settings/MissingLinks/Caption: Wiki Links | ||||||
| Settings/MissingLinks/Hint: Choose whether to link to tiddlers that do not exist yet | Settings/MissingLinks/Hint: Choose whether to link to tiddlers that do not exist yet | ||||||
| Settings/MissingLinks/Description: Enable links to missing tiddlers | Settings/MissingLinks/Description: Enable links to missing tiddlers | ||||||
|  | StoryTiddler/Caption: Story Tiddler | ||||||
|  | StoryTiddler/Hint: This rule cascade is used to dynamically choose the template for displaying a tiddler in the story river. | ||||||
| StoryView/Caption: Story View | StoryView/Caption: Story View | ||||||
| StoryView/Prompt: Current view: | StoryView/Prompt: Current view: | ||||||
| Stylesheets/Caption: Stylesheets | Stylesheets/Caption: Stylesheets | ||||||
| @@ -201,6 +208,8 @@ Theme/Caption: Theme | |||||||
| Theme/Prompt: Current theme: | Theme/Prompt: Current theme: | ||||||
| TiddlerFields/Caption: Tiddler Fields | TiddlerFields/Caption: Tiddler Fields | ||||||
| TiddlerFields/Hint: This is the full set of TiddlerFields in use in this wiki (including system tiddlers but excluding shadow tiddlers). | TiddlerFields/Hint: This is the full set of TiddlerFields in use in this wiki (including system tiddlers but excluding shadow tiddlers). | ||||||
|  | TiddlerIcon/Caption: Tiddler Icon | ||||||
|  | TiddlerIcon/Hint: This rules cascade is used to dynamically choose the icon for a tiddler. | ||||||
| Toolbars/Caption: Toolbars | Toolbars/Caption: Toolbars | ||||||
| Toolbars/EditToolbar/Caption: Edit Toolbar | Toolbars/EditToolbar/Caption: Edit Toolbar | ||||||
| Toolbars/EditToolbar/Hint: Choose which buttons are displayed for tiddlers in edit mode. Drag and drop to change the ordering | Toolbars/EditToolbar/Hint: Choose which buttons are displayed for tiddlers in edit mode. Drag and drop to change the ordering | ||||||
| @@ -212,3 +221,7 @@ Toolbars/EditorToolbar/Hint: Choose which buttons are displayed in the editor to | |||||||
| Toolbars/ViewToolbar/Caption: View Toolbar | Toolbars/ViewToolbar/Caption: View Toolbar | ||||||
| Toolbars/ViewToolbar/Hint: Choose which buttons are displayed for tiddlers in view mode. Drag and drop to change the ordering | Toolbars/ViewToolbar/Hint: Choose which buttons are displayed for tiddlers in view mode. Drag and drop to change the ordering | ||||||
| Tools/Download/Full/Caption: Download full wiki | Tools/Download/Full/Caption: Download full wiki | ||||||
|  | ViewTemplateBody/Caption: View Template Body | ||||||
|  | ViewTemplateBody/Hint: This rule cascade is used by the default view template to dynamically choose the template for displaying the body of a tiddler. | ||||||
|  | ViewTemplateTitle/Caption: View Template Title | ||||||
|  | ViewTemplateTitle/Hint: This rule cascade is used by the default view template to dynamically choose the template for displaying the title of a tiddler. | ||||||
							
								
								
									
										51
									
								
								core/modules/filterrunprefixes/cascade.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								core/modules/filterrunprefixes/cascade.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,51 @@ | |||||||
|  | /*\ | ||||||
|  | title: $:/core/modules/filterrunprefixes/cascade.js | ||||||
|  | type: application/javascript | ||||||
|  | module-type: filterrunprefix | ||||||
|  | \*/ | ||||||
|  | (function(){ | ||||||
|  |  | ||||||
|  | /*jslint node: true, browser: true */ | ||||||
|  | /*global $tw: false */ | ||||||
|  | "use strict"; | ||||||
|  |  | ||||||
|  | /* | ||||||
|  | Export our filter prefix function | ||||||
|  | */ | ||||||
|  | exports.cascade = function(operationSubFunction,options) { | ||||||
|  | 	return function(results,source,widget) { | ||||||
|  | 		if(results.length !== 0) { | ||||||
|  | 			var filterList = operationSubFunction(source,widget), | ||||||
|  | 				filterFnList = []; | ||||||
|  | 			var inputResults = results.toArray(); | ||||||
|  | 			results.clear(); | ||||||
|  | 			$tw.utils.each(inputResults,function(title) { | ||||||
|  | 				var result = ""; // If no filter matches, we return an empty string | ||||||
|  | 				$tw.utils.each(filterList,function(filter,index) { | ||||||
|  | 					if(!filterFnList[index]) { | ||||||
|  | 						filterFnList[index] = options.wiki.compileFilter(filter); | ||||||
|  | 					} | ||||||
|  | 					var output = filterFnList[index](options.wiki.makeTiddlerIterator([title]),{ | ||||||
|  | 							getVariable: function(name) { | ||||||
|  | 								switch(name) { | ||||||
|  | 									case "currentTiddler": | ||||||
|  | 										return "" + title; | ||||||
|  | 									case "..currentTiddler": | ||||||
|  | 										return widget.getVariable("currentTiddler"); | ||||||
|  | 									default: | ||||||
|  | 										return widget.getVariable(name); | ||||||
|  | 								} | ||||||
|  | 							} | ||||||
|  | 						}); | ||||||
|  | 					if(output.length !== 0) { | ||||||
|  | 						result = output[0]; | ||||||
|  | 						return false; | ||||||
|  | 					} | ||||||
|  | 				}); | ||||||
|  | 				results.push(result); | ||||||
|  | 			}); | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | })(); | ||||||
							
								
								
									
										9
									
								
								core/ui/ControlPanel/Cascades.tid
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								core/ui/ControlPanel/Cascades.tid
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | |||||||
|  | title: $:/core/ui/ControlPanel/Cascades | ||||||
|  | tags: $:/tags/ControlPanel/Advanced | ||||||
|  | caption: {{$:/language/ControlPanel/Cascades/Caption}} | ||||||
|  |  | ||||||
|  | {{$:/language/ControlPanel/Cascades/Hint}} | ||||||
|  |  | ||||||
|  | <div class="tc-control-panel"> | ||||||
|  | <$macrocall $name="tabs" tabsList="[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Cascades]!has[draft.of]]" default="$:/core/ui/ControlPanel/StoryTiddler"/> | ||||||
|  | </div> | ||||||
							
								
								
									
										9
									
								
								core/ui/ControlPanel/Cascades/EditTemplateBody.tid
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								core/ui/ControlPanel/Cascades/EditTemplateBody.tid
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | |||||||
|  | title: $:/core/ui/ControlPanel/EditTemplateBody | ||||||
|  | tags: $:/tags/ControlPanel/Cascade | ||||||
|  | caption: {{$:/language/ControlPanel/EditTemplateBody/Caption}} | ||||||
|  |  | ||||||
|  | \define lingo-base() $:/language/ControlPanel/EditTemplateBody/ | ||||||
|  |  | ||||||
|  | <<lingo Hint>> | ||||||
|  |  | ||||||
|  | {{$:/tags/EditTemplateBodyFilter||$:/snippets/ListTaggedCascade}} | ||||||
							
								
								
									
										9
									
								
								core/ui/ControlPanel/Cascades/StoryTiddler.tid
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								core/ui/ControlPanel/Cascades/StoryTiddler.tid
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | |||||||
|  | title: $:/core/ui/ControlPanel/StoryTiddler | ||||||
|  | tags: $:/tags/ControlPanel/Cascades | ||||||
|  | caption: {{$:/language/ControlPanel/StoryTiddler/Caption}} | ||||||
|  |  | ||||||
|  | \define lingo-base() $:/language/ControlPanel/StoryTiddler/ | ||||||
|  |  | ||||||
|  | <<lingo Hint>> | ||||||
|  |  | ||||||
|  | {{$:/tags/StoryTiddlerTemplateFilter||$:/snippets/ListTaggedCascade}} | ||||||
							
								
								
									
										9
									
								
								core/ui/ControlPanel/Cascades/TiddlerIcon.tid
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								core/ui/ControlPanel/Cascades/TiddlerIcon.tid
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | |||||||
|  | title: $:/core/ui/ControlPanel/TiddlerIcon | ||||||
|  | tags: $:/tags/ControlPanel/Cascades | ||||||
|  | caption: {{$:/language/ControlPanel/TiddlerIcon/Caption}} | ||||||
|  |  | ||||||
|  | \define lingo-base() $:/language/ControlPanel/TiddlerIcon/ | ||||||
|  |  | ||||||
|  | <<lingo Hint>> | ||||||
|  |  | ||||||
|  | {{$:/tags/TiddlerIconFilter||$:/snippets/ListTaggedCascade}} | ||||||
							
								
								
									
										9
									
								
								core/ui/ControlPanel/Cascades/ViewTemplateBody.tid
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								core/ui/ControlPanel/Cascades/ViewTemplateBody.tid
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | |||||||
|  | title: $:/core/ui/ControlPanel/ViewTemplateBody | ||||||
|  | tags: $:/tags/ControlPanel/Cascades | ||||||
|  | caption: {{$:/language/ControlPanel/ViewTemplateBody/Caption}} | ||||||
|  |  | ||||||
|  | \define lingo-base() $:/language/ControlPanel/ViewTemplateBody/ | ||||||
|  |  | ||||||
|  | <<lingo Hint>> | ||||||
|  |  | ||||||
|  | {{$:/tags/ViewTemplateBodyFilter||$:/snippets/ListTaggedCascade}} | ||||||
							
								
								
									
										9
									
								
								core/ui/ControlPanel/Cascades/ViewTemplateTitle.tid
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								core/ui/ControlPanel/Cascades/ViewTemplateTitle.tid
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | |||||||
|  | title: $:/core/ui/ControlPanel/ViewTemplateTitle | ||||||
|  | tags: $:/tags/ControlPanel/Cascades | ||||||
|  | caption: {{$:/language/ControlPanel/ViewTemplateTitle/Caption}} | ||||||
|  |  | ||||||
|  | \define lingo-base() $:/language/ControlPanel/ViewTemplateTitle/ | ||||||
|  |  | ||||||
|  | <<lingo Hint>> | ||||||
|  |  | ||||||
|  | {{$:/tags/ViewTemplateTitleFilter||$:/snippets/ListTaggedCascade}} | ||||||
| @@ -1,56 +1,4 @@ | |||||||
| title: $:/core/ui/EditTemplate/body | title: $:/core/ui/EditTemplate/body | ||||||
| tags: $:/tags/EditTemplate | tags: $:/tags/EditTemplate | ||||||
|  |  | ||||||
| \define lingo-base() $:/language/EditTemplate/Body/ | <$transclude tiddler={{{ [<currentTiddler>] :cascade[all[shadows+tiddlers]tag[$:/tags/EditTemplateBodyFilter]get[text]] :and[!is[blank]else[$:/core/ui/EditTemplate/body/default]] }}} /> | ||||||
| \define config-visibility-title() |  | ||||||
| $:/config/EditorToolbarButtons/Visibility/$(currentTiddler)$ |  | ||||||
| \end |  | ||||||
|  |  | ||||||
| \define importFileActions() |  | ||||||
| <$action-popup $state=<<importState>> $coords="(0,0,0,0)" $floating="yes"/> |  | ||||||
| \end |  | ||||||
|  |  | ||||||
| <$list filter="[all[current]has[_canonical_uri]]"> |  | ||||||
|  |  | ||||||
| <div class="tc-message-box"> |  | ||||||
|  |  | ||||||
| <<lingo External/Hint>> |  | ||||||
|  |  | ||||||
| <a href={{!!_canonical_uri}}><$text text={{!!_canonical_uri}}/></a> |  | ||||||
|  |  | ||||||
| <$edit-text field="_canonical_uri" class="tc-edit-fields" tabindex={{$:/config/EditTabIndex}} cancelPopups="yes"></$edit-text> |  | ||||||
|  |  | ||||||
| </div> |  | ||||||
|  |  | ||||||
| </$list> |  | ||||||
|  |  | ||||||
| <$set name="edit-preview-state" value={{{ [{$:/config/ShowEditPreview/PerTiddler}!match[yes]then[$:/state/showeditpreview]] :else[<qualify "$:/state/showeditpreview">] }}}> |  | ||||||
| <$list filter="[all[current]!has[_canonical_uri]]"> |  | ||||||
| <$vars importTitle=<<qualify $:/ImportImage>> importState=<<qualify $:/state/ImportImage>> > |  | ||||||
| <$dropzone importTitle=<<importTitle>> autoOpenOnImport="no" contentTypesFilter={{$:/config/Editor/ImportContentTypesFilter}} class="tc-dropzone-editor" enable={{{ [{$:/config/DragAndDrop/Enable}match[no]] :else[subfilter{$:/config/Editor/EnableImportFilter}then[yes]else[no]] }}} filesOnly="yes" actions=<<importFileActions>> ><$reveal stateTitle=<<edit-preview-state>> type="match" text="yes"> |  | ||||||
| <div class="tc-tiddler-preview"> |  | ||||||
|  |  | ||||||
| <$transclude tiddler="$:/core/ui/EditTemplate/body/editor" mode="inline"/> |  | ||||||
|  |  | ||||||
| <div class="tc-tiddler-preview-preview"> |  | ||||||
|  |  | ||||||
| <$transclude tiddler={{$:/state/editpreviewtype}} mode="inline"> |  | ||||||
|  |  | ||||||
| <$transclude tiddler="$:/core/ui/EditTemplate/body/preview/output" mode="inline"/> |  | ||||||
|  |  | ||||||
| </$transclude> |  | ||||||
|  |  | ||||||
| </div> |  | ||||||
|  |  | ||||||
| </div> |  | ||||||
| </$reveal> |  | ||||||
|  |  | ||||||
| <$reveal stateTitle=<<edit-preview-state>> type="nomatch" text="yes"> |  | ||||||
|  |  | ||||||
| <$transclude tiddler="$:/core/ui/EditTemplate/body/editor" mode="inline"/> |  | ||||||
|  |  | ||||||
| </$reveal> |  | ||||||
| </$dropzone> |  | ||||||
| </$vars> |  | ||||||
| </$list> |  | ||||||
| </$set> |  | ||||||
|   | |||||||
							
								
								
									
										13
									
								
								core/ui/EditTemplate/body/canonical-uri.tid
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								core/ui/EditTemplate/body/canonical-uri.tid
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | |||||||
|  | title: $:/core/ui/EditTemplate/body/canonical-uri | ||||||
|  |  | ||||||
|  | \define lingo-base() $:/language/EditTemplate/Body/ | ||||||
|  |  | ||||||
|  | <div class="tc-message-box"> | ||||||
|  |  | ||||||
|  | <<lingo External/Hint>> | ||||||
|  |  | ||||||
|  | <a href={{!!_canonical_uri}}><$text text={{!!_canonical_uri}}/></a> | ||||||
|  |  | ||||||
|  | <$edit-text field="_canonical_uri" class="tc-edit-fields" tabindex={{$:/config/EditTabIndex}} cancelPopups="yes"></$edit-text> | ||||||
|  |  | ||||||
|  | </div> | ||||||
							
								
								
									
										38
									
								
								core/ui/EditTemplate/body/default.tid
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										38
									
								
								core/ui/EditTemplate/body/default.tid
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,38 @@ | |||||||
|  | title: $:/core/ui/EditTemplate/body/default | ||||||
|  |  | ||||||
|  | \define config-visibility-title() | ||||||
|  | $:/config/EditorToolbarButtons/Visibility/$(currentTiddler)$ | ||||||
|  | \end | ||||||
|  |  | ||||||
|  | \define importFileActions() | ||||||
|  | <$action-popup $state=<<importState>> $coords="(0,0,0,0)" $floating="yes"/> | ||||||
|  | \end | ||||||
|  |  | ||||||
|  | <$set name="edit-preview-state" value={{{ [{$:/config/ShowEditPreview/PerTiddler}!match[yes]then[$:/state/showeditpreview]] :else[<qualify "$:/state/showeditpreview">] }}}> | ||||||
|  | <$vars importTitle=<<qualify $:/ImportImage>> importState=<<qualify $:/state/ImportImage>> > | ||||||
|  | <$dropzone importTitle=<<importTitle>> autoOpenOnImport="no" contentTypesFilter={{$:/config/Editor/ImportContentTypesFilter}} class="tc-dropzone-editor" enable={{{ [{$:/config/DragAndDrop/Enable}match[no]] :else[subfilter{$:/config/Editor/EnableImportFilter}then[yes]else[no]] }}} filesOnly="yes" actions=<<importFileActions>> ><$reveal stateTitle=<<edit-preview-state>> type="match" text="yes"> | ||||||
|  | <div class="tc-tiddler-preview"> | ||||||
|  |  | ||||||
|  | <$transclude tiddler="$:/core/ui/EditTemplate/body/editor" mode="inline"/> | ||||||
|  |  | ||||||
|  | <div class="tc-tiddler-preview-preview"> | ||||||
|  |  | ||||||
|  | <$transclude tiddler={{$:/state/editpreviewtype}} mode="inline"> | ||||||
|  |  | ||||||
|  | <$transclude tiddler="$:/core/ui/EditTemplate/body/preview/output" mode="inline"/> | ||||||
|  |  | ||||||
|  | </$transclude> | ||||||
|  |  | ||||||
|  | </div> | ||||||
|  |  | ||||||
|  | </div> | ||||||
|  | </$reveal> | ||||||
|  |  | ||||||
|  | <$reveal stateTitle=<<edit-preview-state>> type="nomatch" text="yes"> | ||||||
|  |  | ||||||
|  | <$transclude tiddler="$:/core/ui/EditTemplate/body/editor" mode="inline"/> | ||||||
|  |  | ||||||
|  | </$reveal> | ||||||
|  | </$dropzone> | ||||||
|  | </$vars> | ||||||
|  | </$set> | ||||||
							
								
								
									
										14
									
								
								core/ui/ListTaggedCascade.tid
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								core/ui/ListTaggedCascade.tid
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,14 @@ | |||||||
|  | title: $:/snippets/ListTaggedCascade | ||||||
|  |  | ||||||
|  | {{||$:/language/ControlPanel/Cascades/TagPrompt}} | ||||||
|  |  | ||||||
|  | <ol> | ||||||
|  | <$list filter="[all[shadows+tiddlers]tag<currentTiddler>]"> | ||||||
|  | <li> | ||||||
|  | <div> | ||||||
|  | <$link><$text text=<<currentTiddler>>/></$link> | ||||||
|  | </div> | ||||||
|  | <$codeblock code={{!!text}}/> | ||||||
|  | </li> | ||||||
|  | </$list> | ||||||
|  | </ol> | ||||||
| @@ -14,7 +14,7 @@ tags: $:/tags/PageTemplate | |||||||
|  |  | ||||||
| </section> | </section> | ||||||
|  |  | ||||||
| <$list filter="[list[$:/StoryList]]" history="$:/HistoryList" template={{$:/config/ui/ViewTemplate}} editTemplate={{$:/config/ui/EditTemplate}} storyview={{$:/view}} emptyMessage={{$:/config/EmptyStoryMessage}}/> | <$list filter="[list[$:/StoryList]]" history="$:/HistoryList" template="$:/core/ui/StoryTiddlerTemplate" storyview={{$:/view}} emptyMessage={{$:/config/EmptyStoryMessage}}/> | ||||||
|  |  | ||||||
| <section class="story-frontdrop"> | <section class="story-frontdrop"> | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										3
									
								
								core/ui/StoryTiddlerTemplate.tid
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								core/ui/StoryTiddlerTemplate.tid
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | |||||||
|  | title: $:/core/ui/StoryTiddlerTemplate | ||||||
|  |  | ||||||
|  | <$transclude tiddler={{{ [<currentTiddler>] :cascade[all[shadows+tiddlers]tag[$:/tags/StoryTiddlerTemplateFilter]get[text]] :and[!is[blank]else{$:/config/ui/ViewTemplate}] }}} /> | ||||||
| @@ -16,7 +16,7 @@ title: $:/core/ui/TagPickerTagTemplate | |||||||
| <$set name="backgroundColor" value={{!!color}}> | <$set name="backgroundColor" value={{!!color}}> | ||||||
| <$wikify name="foregroundColor" text="""<$macrocall $name="contrastcolour" target={{!!color}} fallbackTarget=<<fallbackTarget>> colourA=<<colourA>> colourB=<<colourB>>/>"""> | <$wikify name="foregroundColor" text="""<$macrocall $name="contrastcolour" target={{!!color}} fallbackTarget=<<fallbackTarget>> colourA=<<colourA>> colourB=<<colourB>>/>"""> | ||||||
| <span class="tc-tag-label tc-btn-invisible" style=<<tag-pill-styles>>> | <span class="tc-tag-label tc-btn-invisible" style=<<tag-pill-styles>>> | ||||||
| <$transclude tiddler={{!!icon}}/><$view field="title" format="text"/> | {{||$:/core/ui/TiddlerIcon}}<$view field="title" format="text"/> | ||||||
| </span> | </span> | ||||||
| </$wikify> | </$wikify> | ||||||
| </$set> | </$set> | ||||||
|   | |||||||
| @@ -3,7 +3,7 @@ title: $:/core/ui/TagTemplate | |||||||
| \whitespace trim | \whitespace trim | ||||||
| <span class="tc-tag-list-item" data-tag-title=<<currentTiddler>>> | <span class="tc-tag-list-item" data-tag-title=<<currentTiddler>>> | ||||||
| <$set name="transclusion" value=<<currentTiddler>>> | <$set name="transclusion" value=<<currentTiddler>>> | ||||||
| <$macrocall $name="tag-pill-body" tag=<<currentTiddler>> icon={{!!icon}} colour={{!!color}} palette={{$:/palette}} element-tag="""$button""" element-attributes="""popup=<<qualify "$:/state/popup/tag">> dragFilter='[all[current]tagging[]]' tag='span'"""/> | <$macrocall $name="tag-pill-body" tag=<<currentTiddler>> colour={{!!color}} palette={{$:/palette}} element-tag="""$button""" element-attributes="""popup=<<qualify "$:/state/popup/tag">> dragFilter='[all[current]tagging[]]' tag='span'"""/> | ||||||
| <$reveal state=<<qualify "$:/state/popup/tag">> type="popup" position="below" animate="yes" class="tc-drop-down"> | <$reveal state=<<qualify "$:/state/popup/tag">> type="popup" position="below" animate="yes" class="tc-drop-down"> | ||||||
| <$set name="tv-show-missing-links" value="yes"> | <$set name="tv-show-missing-links" value="yes"> | ||||||
| <$transclude tiddler="$:/core/ui/ListItemTemplate"/> | <$transclude tiddler="$:/core/ui/ListItemTemplate"/> | ||||||
|   | |||||||
							
								
								
									
										15
									
								
								core/ui/TiddlerIcon.tid
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								core/ui/TiddlerIcon.tid
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | |||||||
|  | title: $:/core/ui/TiddlerIcon | ||||||
|  |  | ||||||
|  | \whitespace trim | ||||||
|  | \define title-styles() | ||||||
|  | fill:$(foregroundColor)$; | ||||||
|  | \end | ||||||
|  | <$let tiddlerIcon={{{ [<currentTiddler>] :cascade[all[shadows+tiddlers]tag[$:/tags/TiddlerIconFilter]get[text]] }}}> | ||||||
|  | <$list filter="[<tiddlerIcon>!is[blank]]" variable="ignore"> | ||||||
|  | <$let foregroundColor={{!!color}}> | ||||||
|  | <span class=<<iconSpanClass>> style=<<title-styles>>> | ||||||
|  | <$transclude tiddler=<<tiddlerIcon>>/> | ||||||
|  | </span> | ||||||
|  | </$let> | ||||||
|  | </$list> | ||||||
|  | </$let> | ||||||
| @@ -3,14 +3,6 @@ tags: $:/tags/ViewTemplate | |||||||
|  |  | ||||||
| <$reveal tag="div" class="tc-tiddler-body" type="nomatch" stateTitle=<<folded-state>> text="hide" retain="yes" animate="yes"> | <$reveal tag="div" class="tc-tiddler-body" type="nomatch" stateTitle=<<folded-state>> text="hide" retain="yes" animate="yes"> | ||||||
|  |  | ||||||
| <$list filter="[all[current]!has[plugin-type]!field:hide-body[yes]]"> | <$transclude tiddler={{{ [<currentTiddler>] :cascade[all[shadows+tiddlers]tag[$:/tags/ViewTemplateBodyFilter]get[text]] :and[!is[blank]else[$:/core/ui/ViewTemplate/body/default]] }}} /> | ||||||
|  |  | ||||||
| <$transclude> |  | ||||||
|  |  | ||||||
| <$transclude tiddler="$:/language/MissingTiddler/Hint"/> |  | ||||||
|  |  | ||||||
| </$transclude> |  | ||||||
|  |  | ||||||
| </$list> |  | ||||||
|  |  | ||||||
| </$reveal> | </$reveal> | ||||||
|   | |||||||
							
								
								
									
										3
									
								
								core/ui/ViewTemplate/body/blank.tid
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								core/ui/ViewTemplate/body/blank.tid
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | |||||||
|  | title: $:/core/ui/ViewTemplate/body/blank | ||||||
|  |  | ||||||
|  | <!-- Intentionally blank --> | ||||||
							
								
								
									
										3
									
								
								core/ui/ViewTemplate/body/code.tid
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								core/ui/ViewTemplate/body/code.tid
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | |||||||
|  | title: $:/core/ui/ViewTemplate/body/code | ||||||
|  |  | ||||||
|  | <$codeblock code={{{ [<currentTiddler>get[text]] }}} language={{{ [<currentTiddler>get[type]else[text/vnd.tiddlywiki]] }}}/> | ||||||
							
								
								
									
										7
									
								
								core/ui/ViewTemplate/body/default.tid
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								core/ui/ViewTemplate/body/default.tid
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | |||||||
|  | title: $:/core/ui/ViewTemplate/body/default | ||||||
|  |  | ||||||
|  | <$transclude> | ||||||
|  |  | ||||||
|  | <$transclude tiddler="$:/language/MissingTiddler/Hint"/> | ||||||
|  |  | ||||||
|  | </$transclude> | ||||||
| @@ -1,5 +1,4 @@ | |||||||
| title: $:/core/ui/ViewTemplate/import | title: $:/core/ui/ViewTemplate/body/import | ||||||
| tags: $:/tags/ViewTemplate |  | ||||||
| 
 | 
 | ||||||
| \define lingo-base() $:/language/Import/ | \define lingo-base() $:/language/Import/ | ||||||
| 
 | 
 | ||||||
							
								
								
									
										10
									
								
								core/ui/ViewTemplate/body/plugin.tid
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								core/ui/ViewTemplate/body/plugin.tid
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | |||||||
|  | title: $:/core/ui/ViewTemplate/body/plugin | ||||||
|  |  | ||||||
|  | <div class="tc-tiddler-plugin-info"> | ||||||
|  | <$let plugin-type={{!!plugin-type}} | ||||||
|  | 	default-popup-state="yes" | ||||||
|  | 	qualified-state=<<qualify "$:/state/plugin-info">> | ||||||
|  | > | ||||||
|  | {{||$:/core/ui/Components/plugin-info}} | ||||||
|  | </$let> | ||||||
|  | </div> | ||||||
| @@ -1,15 +0,0 @@ | |||||||
| title: $:/core/ui/ViewTemplate/plugin |  | ||||||
| tags: $:/tags/ViewTemplate |  | ||||||
|  |  | ||||||
| <$reveal tag="div" class="tc-tiddler-plugin-info" type="nomatch" stateTitle=<<folded-state>> text="hide" retain="yes" animate="yes"> |  | ||||||
|  |  | ||||||
| <$list filter="[all[current]has[plugin-type]] -[all[current]field:plugin-type[import]]"> |  | ||||||
| <$set name="plugin-type" value={{!!plugin-type}}> |  | ||||||
| <$set name="default-popup-state" value="yes"> |  | ||||||
| <$set name="qualified-state" value=<<qualify "$:/state/plugin-info">>> |  | ||||||
| {{||$:/core/ui/Components/plugin-info}} |  | ||||||
| </$set> |  | ||||||
| </$set> |  | ||||||
| </$set> |  | ||||||
| </$list> |  | ||||||
| </$reveal> |  | ||||||
| @@ -2,9 +2,6 @@ title: $:/core/ui/ViewTemplate/title | |||||||
| tags: $:/tags/ViewTemplate | tags: $:/tags/ViewTemplate | ||||||
|  |  | ||||||
| \whitespace trim | \whitespace trim | ||||||
| \define title-styles() |  | ||||||
| fill:$(foregroundColor)$; |  | ||||||
| \end |  | ||||||
| <div class="tc-tiddler-title"> | <div class="tc-tiddler-title"> | ||||||
| <div class="tc-titlebar"> | <div class="tc-titlebar"> | ||||||
| <span class="tc-tiddler-controls"> | <span class="tc-tiddler-controls"> | ||||||
| @@ -12,25 +9,10 @@ fill:$(foregroundColor)$; | |||||||
| </span> | </span> | ||||||
| <$set name="tv-wikilinks" value={{$:/config/Tiddlers/TitleLinks}}> | <$set name="tv-wikilinks" value={{$:/config/Tiddlers/TitleLinks}}> | ||||||
| <$link> | <$link> | ||||||
| <$set name="foregroundColor" value={{!!color}}> | <$let iconSpanClass="tc-tiddler-title-icon"> | ||||||
| <$list filter="[all[current]has[icon]]~[[$:/config/DefaultTiddlerIcon]has[text]]"> | {{||$:/core/ui/TiddlerIcon}} | ||||||
| <span class="tc-tiddler-title-icon" style=<<title-styles>>> | </$let> | ||||||
| <$transclude tiddler={{!!icon}}> | <$transclude tiddler={{{ [<currentTiddler>] :cascade[all[shadows+tiddlers]tag[$:/tags/ViewTemplateTitleFilter]get[text]] :and[!is[blank]else[$:/core/ui/ViewTemplate/title/default]] }}} /> | ||||||
| <$transclude tiddler={{$:/config/DefaultTiddlerIcon}}/> |  | ||||||
| </$transclude> |  | ||||||
| </span> |  | ||||||
| </$list> |  | ||||||
| </$set> |  | ||||||
| <$list filter="[all[current]removeprefix[$:/]]"> |  | ||||||
| <h2 class="tc-title" title={{$:/language/SystemTiddler/Tooltip}}> |  | ||||||
| <span class="tc-system-title-prefix">$:/</span><$text text=<<currentTiddler>>/> |  | ||||||
| </h2> |  | ||||||
| </$list> |  | ||||||
| <$list filter="[all[current]!prefix[$:/]]"> |  | ||||||
| <h2 class="tc-title"> |  | ||||||
| <$view field="title"/> |  | ||||||
| </h2> |  | ||||||
| </$list> |  | ||||||
| </$link> | </$link> | ||||||
| </$set> | </$set> | ||||||
| </div> | </div> | ||||||
|   | |||||||
							
								
								
									
										6
									
								
								core/ui/ViewTemplate/title/default.tid
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								core/ui/ViewTemplate/title/default.tid
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | |||||||
|  | title: $:/core/ui/ViewTemplate/title/default | ||||||
|  |  | ||||||
|  | \whitespace trim | ||||||
|  | <h2 class="tc-title"> | ||||||
|  | <$view field="title"/> | ||||||
|  | </h2> | ||||||
							
								
								
									
										6
									
								
								core/ui/ViewTemplate/title/system.tid
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								core/ui/ViewTemplate/title/system.tid
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | |||||||
|  | title: $:/core/ui/ViewTemplate/title/system | ||||||
|  |  | ||||||
|  | \whitespace trim | ||||||
|  | <h2 class="tc-title" title={{$:/language/SystemTiddler/Tooltip}}> | ||||||
|  | <span class="tc-system-title-prefix">$:/</span><$text text={{{ [<currentTiddler>removeprefix[$:/]] }}}/> | ||||||
|  | </h2> | ||||||
							
								
								
									
										5
									
								
								core/wiki/config/EditTemplateBodyFilters.multids
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								core/wiki/config/EditTemplateBodyFilters.multids
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | |||||||
|  | title: $:/config/EditTemplateBodyFilters/ | ||||||
|  | tags: $:/tags/EditTemplateBodyFilter | ||||||
|  |  | ||||||
|  | canonical-uri: [has[_canonical_uri]then[$:/core/ui/EditTemplate/body/canonical-uri]] | ||||||
|  | default: [[$:/core/ui/EditTemplate/body/default]] | ||||||
							
								
								
									
										5
									
								
								core/wiki/config/StoryTiddlerTemplateFilters.multids
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								core/wiki/config/StoryTiddlerTemplateFilters.multids
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | |||||||
|  | title: $:/config/StoryTiddlerTemplateFilters/ | ||||||
|  | tags: $:/tags/StoryTiddlerTemplateFilter | ||||||
|  |  | ||||||
|  | draft: [is[draft]then{$:/config/ui/EditTemplate}] | ||||||
|  | default: [{$:/config/ui/ViewTemplate}] | ||||||
							
								
								
									
										5
									
								
								core/wiki/config/TiddlerIconFilters.multids
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								core/wiki/config/TiddlerIconFilters.multids
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | |||||||
|  | title: $:/config/TiddlerIconFilters/ | ||||||
|  | tags: $:/tags/TiddlerIconFilter | ||||||
|  |  | ||||||
|  | icon-field: [has[icon]then{!!icon}] | ||||||
|  | default: [{$:/config/DefaultTiddlerIcon}has[text]] | ||||||
							
								
								
									
										8
									
								
								core/wiki/config/ViewTemplateBodyFilters.multids
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								core/wiki/config/ViewTemplateBodyFilters.multids
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | |||||||
|  | title: $:/config/ViewTemplateBodyFilters/ | ||||||
|  | tags: $:/tags/ViewTemplateBodyFilter | ||||||
|  |  | ||||||
|  | system: [prefix[$:/boot/]] [prefix[$:/config/]] [prefix[$:/core/]!field:title[$:/core/readme]!field:title[$:/core/icon]] [prefix[$:/info/]] [prefix[$:/language/]] [prefix[$:/languages/]] [prefix[$:/snippets/]] [prefix[$:/state/]] [prefix[$:/status/]] [prefix[$:/info/]] [prefix[$:/temp/]] +[limit[1]then[$:/core/ui/ViewTemplate/body/code]] | ||||||
|  | import: [field:plugin-type[import]then[$:/core/ui/ViewTemplate/body/import]] | ||||||
|  | plugin: [has[plugin-type]then[$:/core/ui/ViewTemplate/body/plugin]] | ||||||
|  | hide-body: [field:hide-body[yes]then[$:/core/ui/ViewTemplate/body/blank]] | ||||||
|  | default: [[$:/core/ui/ViewTemplate/body/default]] | ||||||
							
								
								
									
										5
									
								
								core/wiki/config/ViewTemplateTitleFilters.multids
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								core/wiki/config/ViewTemplateTitleFilters.multids
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | |||||||
|  | title: $:/config/ViewTemplateTitleFilters/ | ||||||
|  | tags: $:/tags/ViewTemplateTitleFilter | ||||||
|  |  | ||||||
|  | system: [prefix[$:/]then[$:/core/ui/ViewTemplate/title/system]] | ||||||
|  | default: [[$:/core/ui/ViewTemplate/title/default]] | ||||||
| @@ -10,18 +10,18 @@ color:$(foregroundColor)$; | |||||||
| \define tag-pill-inner(tag,icon,colour,fallbackTarget,colourA,colourB,element-tag,element-attributes,actions) | \define tag-pill-inner(tag,icon,colour,fallbackTarget,colourA,colourB,element-tag,element-attributes,actions) | ||||||
| <$vars foregroundColor=<<contrastcolour target:"""$colour$""" fallbackTarget:"""$fallbackTarget$""" colourA:"""$colourA$""" colourB:"""$colourB$""">> backgroundColor="""$colour$"""> | <$vars foregroundColor=<<contrastcolour target:"""$colour$""" fallbackTarget:"""$fallbackTarget$""" colourA:"""$colourA$""" colourB:"""$colourB$""">> backgroundColor="""$colour$"""> | ||||||
| <$element-tag$ $element-attributes$ class="tc-tag-label tc-btn-invisible" style=<<tag-pill-styles>>> | <$element-tag$ $element-attributes$ class="tc-tag-label tc-btn-invisible" style=<<tag-pill-styles>>> | ||||||
| $actions$<$transclude tiddler="""$icon$"""/><$view tiddler=<<__tag__>> field="title" format="text" /> | $actions${{||$:/core/ui/TiddlerIcon}}<$view tiddler=<<__tag__>> field="title" format="text" /> | ||||||
| </$element-tag$> | </$element-tag$> | ||||||
| </$vars> | </$vars> | ||||||
| \end | \end | ||||||
|  |  | ||||||
| \define tag-pill-body(tag,icon,colour,palette,element-tag,element-attributes,actions) | \define tag-pill-body(tag,icon,colour,palette,element-tag,element-attributes,actions) | ||||||
| <$macrocall $name="tag-pill-inner" tag=<<__tag__>> icon="""$icon$""" colour="""$colour$""" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}} element-tag="""$element-tag$""" element-attributes="""$element-attributes$""" actions="""$actions$"""/> | <$macrocall $name="tag-pill-inner" tag=<<__tag__>> colour="""$colour$""" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}} element-tag="""$element-tag$""" element-attributes="""$element-attributes$""" actions="""$actions$"""/> | ||||||
| \end | \end | ||||||
|  |  | ||||||
| \define tag-pill(tag,element-tag:"span",element-attributes:"",actions:"") | \define tag-pill(tag,element-tag:"span",element-attributes:"",actions:"") | ||||||
| <span class="tc-tag-list-item" data-tag-title=<<__tag__>>> | <span class="tc-tag-list-item" data-tag-title=<<__tag__>>> | ||||||
| <$macrocall $name="tag-pill-body" tag=<<__tag__>> icon={{{ [<__tag__>get[icon]] }}} colour={{{ [<__tag__>get[color]] }}} palette={{$:/palette}} element-tag="""$element-tag$""" element-attributes="""$element-attributes$""" actions="""$actions$"""/> | <$macrocall $name="tag-pill-body" tag=<<__tag__>> colour={{{ [<__tag__>get[color]] }}} palette={{$:/palette}} element-tag="""$element-tag$""" element-attributes="""$element-attributes$""" actions="""$actions$"""/> | ||||||
| </span> | </span> | ||||||
| \end | \end | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										2
									
								
								core/wiki/tags/EditTemplateBodyFilter.tid
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								core/wiki/tags/EditTemplateBodyFilter.tid
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | |||||||
|  | title: $:/tags/EditTemplateBodyFilter | ||||||
|  | list: $:/config/EditTemplateBodyFilters/canonical-uri $:/config/EditTemplateBodyFilters/default | ||||||
							
								
								
									
										2
									
								
								core/wiki/tags/StoryTiddlerTemplateFilter.tid
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								core/wiki/tags/StoryTiddlerTemplateFilter.tid
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | |||||||
|  | title: $:/tags/StoryTiddlerTemplateFilter | ||||||
|  | list: $:/config/StoryTiddlerTemplateFilters/draft $:/config/StoryTiddlerTemplateFilters/default | ||||||
							
								
								
									
										3
									
								
								core/wiki/tags/TiddlerIconFilter.tid
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								core/wiki/tags/TiddlerIconFilter.tid
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | |||||||
|  | title: $:/tags/TiddlerIconFilter | ||||||
|  | list: $:/config/TiddlerIconFilters/icon-field $:/config/TiddlerIconFilters/default | ||||||
|  |  | ||||||
							
								
								
									
										3
									
								
								core/wiki/tags/ViewTemplateBodyFilter.tid
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								core/wiki/tags/ViewTemplateBodyFilter.tid
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | |||||||
|  | title: $:/tags/ViewTemplateBodyFilter | ||||||
|  | list: $:/config/ViewTemplateBodyFilters/system $:/config/ViewTemplateBodyFilters/import $:/config/ViewTemplateBodyFilters/plugin $:/config/ViewTemplateBodyFilters/hide-body $:/config/ViewTemplateBodyFilters/default | ||||||
|  |  | ||||||
							
								
								
									
										3
									
								
								core/wiki/tags/ViewTemplateTitleFilter.tid
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								core/wiki/tags/ViewTemplateTitleFilter.tid
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | |||||||
|  | title: $:/tags/ViewTemplateTitleFilter | ||||||
|  | list: $:/config/ViewTemplateTitleFilters/system $:/config/ViewTemplateTitleFilters/default | ||||||
|  |  | ||||||
| @@ -288,6 +288,38 @@ describe("'reduce' and 'intersection' filter prefix tests", function() { | |||||||
| 		tags: ["cakes","with tea"], | 		tags: ["cakes","with tea"], | ||||||
| 		text: "Does anyone eat pound cake?" | 		text: "Does anyone eat pound cake?" | ||||||
| 	}); | 	}); | ||||||
|  | 	wiki.addTiddler({ | ||||||
|  | 		title: "$:/filter1", | ||||||
|  | 		text: "[tag[cakes]then[It is customary]]", | ||||||
|  | 		tags: "$:/tags/Filter $:/tags/SecondFilter" | ||||||
|  | 	}); | ||||||
|  | 	wiki.addTiddler({ | ||||||
|  | 		title: "$:/filter2", | ||||||
|  | 		text: "[<currentTiddler>tag[shopping]then[It is not customary]]", | ||||||
|  | 		tags: "$:/tags/Filter $:/tags/SecondFilter" | ||||||
|  | 	}); | ||||||
|  | 	wiki.addTiddler({ | ||||||
|  | 		title: "$:/filter3", | ||||||
|  | 		text: "[[Just a default]]", | ||||||
|  | 		tags: "$:/tags/Filter" | ||||||
|  | 	}); | ||||||
|  | 	wiki.addTiddler({ | ||||||
|  | 		title: "$:/tags/Filter", | ||||||
|  | 		list: "$:/filter1 $:/filter2 $:/filter3" | ||||||
|  | 	}); | ||||||
|  | 	wiki.addTiddler({ | ||||||
|  | 		title: "$:/tags/SecondFilter", | ||||||
|  | 		list: "$:/filter1 $:/filter2" | ||||||
|  | 	}); | ||||||
|  | 	 | ||||||
|  | 	it("should handle the :cascade filter prefix", function() { | ||||||
|  | 		expect(wiki.filterTiddlers("[[Rice Pudding]] :cascade[all[shadows+tiddlers]tag[$:/tags/Filter]get[text]]").join(",")).toBe("It is not customary"); | ||||||
|  | 		expect(wiki.filterTiddlers("[[chocolate cake]] :cascade[all[shadows+tiddlers]tag[$:/tags/Filter]get[text]]").join(",")).toBe("It is customary"); | ||||||
|  | 		expect(wiki.filterTiddlers("[[Sparkling water]] :cascade[all[shadows+tiddlers]tag[$:/tags/Filter]get[text]]").join(",")).toBe("Just a default"); | ||||||
|  | 		expect(wiki.filterTiddlers("[[Rice Pudding]] :cascade[all[shadows+tiddlers]tag[$:/tags/SecondFilter]get[text]]").join(",")).toBe("It is not customary"); | ||||||
|  | 		expect(wiki.filterTiddlers("[[chocolate cake]] :cascade[all[shadows+tiddlers]tag[$:/tags/SecondFilter]get[text]]").join(",")).toBe("It is customary"); | ||||||
|  | 		expect(wiki.filterTiddlers("[[Sparkling water]] :cascade[all[shadows+tiddlers]tag[$:/tags/SecondFilter]get[text]]").join(",")).toBe(""); | ||||||
|  | 	}); | ||||||
|  |  | ||||||
| 	it("should handle the :reduce filter prefix", function() { | 	it("should handle the :reduce filter prefix", function() { | ||||||
| 		expect(wiki.filterTiddlers("[tag[shopping]] :reduce[get[quantity]add<accumulator>]").join(",")).toBe("22"); | 		expect(wiki.filterTiddlers("[tag[shopping]] :reduce[get[quantity]add<accumulator>]").join(",")).toBe("22"); | ||||||
|   | |||||||
| @@ -0,0 +1,9 @@ | |||||||
|  | title: Demo Tiddler List with Custom Story Tiddler Template | ||||||
|  | tags: $:/tags/TiddlerList | ||||||
|  | filter: HelloThere Community GettingStarted Features Reference Plugins Learning | ||||||
|  |  | ||||||
|  | This is a demo tiddler with a custom story tiddler template. See [[Story Tiddler Templates]] for details. | ||||||
|  |  | ||||||
|  | Click to close this tiddler: {{||$:/core/ui/Buttons/close}} | ||||||
|  |  | ||||||
|  | Click to edit this tiddler: {{||$:/core/ui/Buttons/edit}} | ||||||
| @@ -0,0 +1,31 @@ | |||||||
|  | title: $:/_tw5.com/CustomStoryTiddlerTemplateDemo/Styles | ||||||
|  | tags: $:/tags/Stylesheet | ||||||
|  |  | ||||||
|  | .tc-custom-tiddler-template { | ||||||
|  | 	border: 3px solid <<colour muted-foreground>>; | ||||||
|  | 	border-radius: 1em; | ||||||
|  | 	margin-bottom: 1em; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .tc-custom-tiddler-template-inner { | ||||||
|  | 	background: <<colour muted-foreground>>; | ||||||
|  | 	padding: 1em; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .tc-custom-tiddler-template-list { | ||||||
|  | 	position: relative; | ||||||
|  | 	height: 33vh; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .tc-custom-tiddler-template-list .tc-custom-tiddler-template-list-item { | ||||||
|  | 	position: absolute; | ||||||
|  | 	width: 100%; | ||||||
|  | 	transform-origin: 50% 0; | ||||||
|  | 	top: 50px; | ||||||
|  | 	left: 0; | ||||||
|  | 	<<box-shadow "0px 0px 15px rgba(0, 0, 0, 0.3)">> | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .tc-custom-tiddler-template-list .tc-custom-tiddler-template-list-item .tc-tiddler-frame { | ||||||
|  | 	margin: 0; | ||||||
|  | } | ||||||
| @@ -0,0 +1,22 @@ | |||||||
|  | title: $:/_tw5.com/CustomStoryTiddlerTemplateDemo/Template | ||||||
|  |  | ||||||
|  | \define list-item-styles() | ||||||
|  | transform: translate($(left)$%,$(top)$%) scale(0.3) rotate($(angle)$deg); | ||||||
|  | \end | ||||||
|  |  | ||||||
|  | <div class="tc-custom-tiddler-template"> | ||||||
|  | 	<div class="tc-custom-tiddler-template-inner"> | ||||||
|  | 		<$transclude mode="block"/> | ||||||
|  | 	</div> | ||||||
|  | 	<div class="tc-custom-tiddler-template-list"> | ||||||
|  | 		<$let numItems={{{ [subfilter{!!filter}count[]] }}} angleIncrement={{{ [[45]divide<numItems>] }}} posIncrement={{{ [[90]divide<numItems>] }}}> | ||||||
|  | 			<$list filter={{!!filter}} counter="counter"> | ||||||
|  | 				<$let  angle={{{ [<counter>subtract[1]multiply<angleIncrement>subtract[22.5]] }}} left={{{ [<counter>subtract[1]multiply<posIncrement>subtract[45]] }}} top={{{ 0 }}}> | ||||||
|  | 					<div class="tc-custom-tiddler-template-list-item" style=<<list-item-styles>>> | ||||||
|  | 						{{||$:/core/ui/ViewTemplate}} | ||||||
|  | 					</div> | ||||||
|  | 				</$let> | ||||||
|  | 			</$list> | ||||||
|  | 		</$let> | ||||||
|  | 	</div> | ||||||
|  | </div> | ||||||
| @@ -0,0 +1,5 @@ | |||||||
|  | title: $:/_tw5.com/CustomStoryTiddlerTemplateDemo/Filter | ||||||
|  | tags: $:/tags/StoryTiddlerTemplateFilter | ||||||
|  | list-before: $:/config/StoryTiddlerTemplateFilters/default | ||||||
|  |  | ||||||
|  | [tag[$:/tags/TiddlerList]then[$:/_tw5.com/CustomStoryTiddlerTemplateDemo/Template]] | ||||||
| @@ -0,0 +1,5 @@ | |||||||
|  | title: $:/_tw5.com/CustomTiddlerIconCascadeDemo | ||||||
|  | tags: $:/tags/TiddlerIconFilter | ||||||
|  |  | ||||||
|  | [tag[TableOfContents]then[$:/core/images/globe]] | ||||||
|  | [tag[Working with TiddlyWiki]then[$:/core/images/help]]  | ||||||
		Reference in New Issue
	
	Block a user
	 Jeremy Ruston
					Jeremy Ruston