mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2026-01-25 12:23:42 +00:00
Compare commits
18 Commits
filtered-a
...
whitespace
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
be65f55c9e | ||
|
|
842605d28e | ||
|
|
f6cd7608f5 | ||
|
|
8e1cad5a59 | ||
|
|
d70b23e439 | ||
|
|
81405ee8f4 | ||
|
|
16e7510c72 | ||
|
|
26acd9be72 | ||
|
|
9a4aafdb41 | ||
|
|
5094096a87 | ||
|
|
98d411c08a | ||
|
|
7dfdbae812 | ||
|
|
6b13614a6a | ||
|
|
c9f816fb53 | ||
|
|
d3cea5d730 | ||
|
|
fb9459a0dd | ||
|
|
98cd4a09b4 | ||
|
|
fa423e508f |
@@ -133,6 +133,7 @@ Excise/Caption/Replace/Link: link
|
||||
Excise/Caption/Replace/Transclusion: transclusion
|
||||
Excise/Caption/Tag: Tag new tiddler with the title of this tiddler
|
||||
Excise/Caption/TiddlerExists: Warning: tiddler already exists
|
||||
Excise/DefaultTitle: New Excision
|
||||
Excise/Hint: Excise the selected text into a new tiddler
|
||||
Heading1/Caption: heading 1
|
||||
Heading1/Hint: Apply heading level 1 formatting to lines containing selection
|
||||
|
||||
@@ -26,6 +26,7 @@ Tags/ClearInput/Caption: clear input
|
||||
Tags/ClearInput/Hint: Clear tag input
|
||||
Tags/Dropdown/Caption: tag list
|
||||
Tags/Dropdown/Hint: Show tag list
|
||||
Tags/EmptyMessage: (no search result)
|
||||
Title/BadCharacterWarning: Warning: avoid using any of the characters <<bad-chars>> in tiddler titles
|
||||
Title/Exists/Prompt: Target tiddler already exists
|
||||
Title/Relink/Prompt: Update ''<$text text=<<fromTitle>>/>'' to ''<$text text=<<toTitle>>/>'' in the //tags// and //list// fields of other tiddlers
|
||||
|
||||
@@ -6,6 +6,8 @@ Filter/Hint: Search via a [[filter expression|https://tiddlywiki.com/static/Filt
|
||||
Filter/Matches: //<small><<resultCount>> matches</small>//
|
||||
Matches: //<small><<resultCount>> matches</small>//
|
||||
Matches/All: All matches:
|
||||
Matches/NoMatch: //No match//
|
||||
Matches/NoResult: //No search result//
|
||||
Matches/Title: Title matches:
|
||||
Search: Search
|
||||
Search/TooShort: Search text too short
|
||||
|
||||
@@ -14,11 +14,12 @@ Text editor operation to excise the selection to a new tiddler
|
||||
|
||||
exports["excise"] = function(event,operation) {
|
||||
var editTiddler = this.wiki.getTiddler(this.editTitle),
|
||||
editTiddlerTitle = this.editTitle;
|
||||
editTiddlerTitle = this.editTitle,
|
||||
excisionBaseTitle = $tw.language.getString("Buttons/Excise/DefaultTitle");
|
||||
if(editTiddler && editTiddler.fields["draft.of"]) {
|
||||
editTiddlerTitle = editTiddler.fields["draft.of"];
|
||||
}
|
||||
var excisionTitle = event.paramObject.title || this.wiki.generateNewTitle("New Excision");
|
||||
var excisionTitle = event.paramObject.title || this.wiki.generateNewTitle(excisionBaseTitle);
|
||||
this.wiki.addTiddler(new $tw.Tiddler(
|
||||
this.wiki.getCreationFields(),
|
||||
this.wiki.getModificationFields(),
|
||||
|
||||
@@ -6,7 +6,7 @@ module-type: wikirule
|
||||
Conditional shortcut syntax
|
||||
|
||||
```
|
||||
This is a <% if [{something}] %>Elephant<% elseif [{else}] %>Pelican<% else %>Crocodile<% endif %>
|
||||
This is a <%if [{something}] %>Elephant<%elseif [{else}] %>Pelican<%else%>Crocodile<%endif%>
|
||||
```
|
||||
|
||||
\*/
|
||||
@@ -27,7 +27,7 @@ exports.init = function(parser) {
|
||||
};
|
||||
|
||||
exports.findNextMatch = function(startPos) {
|
||||
// Look for the next <% if shortcut
|
||||
// Look for the next <%if shortcut
|
||||
this.matchRegExp.lastIndex = startPos;
|
||||
this.match = this.matchRegExp.exec(this.parser.source);
|
||||
// If not found then return no match
|
||||
|
||||
@@ -55,7 +55,7 @@ var PutSaver = function(wiki) {
|
||||
callback: function(err,data,xhr) {
|
||||
// Check DAV header http://www.webdav.org/specs/rfc2518.html#rfc.section.9.1
|
||||
if(!err) {
|
||||
self.serverAcceptsPuts = xhr.status === 200 && !!xhr.getResponseHeader("dav");
|
||||
self.serverAcceptsPuts = xhr.status >= 200 && xhr.status < 300 && !!xhr.getResponseHeader("dav");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -96,13 +96,15 @@ KeyboardWidget.prototype.execute = function() {
|
||||
this.param = this.getAttribute("param","");
|
||||
this.key = this.getAttribute("key","");
|
||||
this.tag = this.getAttribute("tag","");
|
||||
this.keyInfoArray = $tw.keyboardManager.parseKeyDescriptors(this.key);
|
||||
if(this.key.substr(0,2) === "((" && this.key.substr(-2,2) === "))") {
|
||||
this.shortcutTiddlers = [];
|
||||
var name = this.key.substring(2,this.key.length -2);
|
||||
$tw.utils.each($tw.keyboardManager.lookupNames,function(platformDescriptor) {
|
||||
self.shortcutTiddlers.push("$:/config/" + platformDescriptor + "/" + name);
|
||||
});
|
||||
if($tw.keyboardManager) {
|
||||
this.keyInfoArray = $tw.keyboardManager.parseKeyDescriptors(this.key);
|
||||
if(this.key.substr(0,2) === "((" && this.key.substr(-2,2) === "))") {
|
||||
this.shortcutTiddlers = [];
|
||||
var name = this.key.substring(2,this.key.length -2);
|
||||
$tw.utils.each($tw.keyboardManager.lookupNames,function(platformDescriptor) {
|
||||
self.shortcutTiddlers.push("$:/config/" + platformDescriptor + "/" + name);
|
||||
});
|
||||
}
|
||||
}
|
||||
// Make child widgets
|
||||
this.makeChildWidgets();
|
||||
@@ -126,7 +128,7 @@ KeyboardWidget.prototype.refresh = function(changedTiddlers) {
|
||||
this.assignDomNodeClasses();
|
||||
}
|
||||
// Update the keyInfoArray if one of its shortcut-config-tiddlers has changed
|
||||
if(this.shortcutTiddlers && $tw.utils.hopArray(changedTiddlers,this.shortcutTiddlers)) {
|
||||
if(this.shortcutTiddlers && $tw.utils.hopArray(changedTiddlers,this.shortcutTiddlers) && $tw.keyboardManager) {
|
||||
this.keyInfoArray = $tw.keyboardManager.parseKeyDescriptors(this.key);
|
||||
}
|
||||
return this.refreshChildren(changedTiddlers);
|
||||
|
||||
@@ -164,59 +164,12 @@ exports.enqueueTiddlerEvent = function(title,isDeleted) {
|
||||
self.eventsTriggered = false;
|
||||
if($tw.utils.count(changes) > 0) {
|
||||
self.dispatchEvent("change",changes);
|
||||
self.runFilteredActions();
|
||||
}
|
||||
});
|
||||
this.eventsTriggered = true;
|
||||
}
|
||||
};
|
||||
|
||||
exports.runFilteredActions = function() {
|
||||
if(!$tw.browser) {
|
||||
return;
|
||||
}
|
||||
var self = this;
|
||||
var now = (new Date()).getTime();
|
||||
// Minimum interval between runs
|
||||
this.intervalFilteredActions = this.intervalFilteredActions || 100;
|
||||
// Time of the last run
|
||||
this.timestampLastRunFilteredActions = this.timestampLastRunFilteredActions || now - this.intervalFilteredActions * 2;
|
||||
// If we've run the filtered actions recently, queue another run
|
||||
if((this.timestampLastRunFilteredActions + this.intervalFilteredActions) > now) {
|
||||
if(!this.filterActionTimerId) {
|
||||
this.filterActionTimerId = setTimeout(function() {
|
||||
self.filterActionTimerId = null;
|
||||
self.runFilteredActions();
|
||||
},this.intervalFilteredActions);
|
||||
}
|
||||
return;
|
||||
}
|
||||
// Record the time of this run
|
||||
this.timestampLastRunFilteredActions = now;
|
||||
// Get the list of filtered action tiddlers and process each one
|
||||
var filteredActions = $tw.wiki.getTiddlersWithTag("$:/tags/FilteredActions");
|
||||
$tw.utils.each(filteredActions,function(filteredActionTitle) {
|
||||
var tiddler = self.getTiddler(filteredActionTitle);
|
||||
if(tiddler && tiddler.fields.filter) {
|
||||
var results = self.filterTiddlers(tiddler.fields.filter);
|
||||
if(results.length > 0) {
|
||||
console.log("Executing actions",tiddler.fields.text,results)
|
||||
self.invokeActionString(
|
||||
tiddler.fields.text,
|
||||
null,
|
||||
{
|
||||
filteredActionTitle: filteredActionTitle,
|
||||
results: $tw.utils.stringifyList(results),
|
||||
jsonResults: JSON.stringify(results)
|
||||
},{
|
||||
parentWidget: $tw.rootWidget
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
exports.getSizeOfTiddlerEventQueue = function() {
|
||||
return $tw.utils.count(this.changedTiddlers);
|
||||
};
|
||||
|
||||
@@ -4,7 +4,7 @@ tags: $:/tags/RawMarkupWikified
|
||||
\procedure meta-plain(name,source,name-attribute:"name")
|
||||
\whitespace trim
|
||||
<%if [<source>has[text]] %>
|
||||
<meta <$text text=<<name-attribute>>/>="<$text text=<<name>>/>" content="<$text text={{{ [<source>get[text]encodehtml[]] }}}/>">
|
||||
<meta <$text text=<<name-attribute>>/>="<$text text=<<name>>/>" content="<$text text={{{ [<source>get[text]encodehtml[]] }}}/>">
|
||||
<$text text={{{ [charcode[10]] }}}/>
|
||||
<%endif%>
|
||||
\end meta-plain
|
||||
@@ -13,7 +13,7 @@ tags: $:/tags/RawMarkupWikified
|
||||
\whitespace trim
|
||||
<%if [<source>has[text]] %>
|
||||
<$wikify name="html" text={{{ [<source>get[text]] }}} output="text">
|
||||
<meta <$text text=<<name-attribute>>/>="<$text text=<<name>>/>" content="<$text text={{{ [<html>encodehtml[]] }}}/>">
|
||||
<meta <$text text=<<name-attribute>>/>="<$text text=<<name>>/>" content="<$text text={{{ [<html>encodehtml[]] }}}/>">
|
||||
<$text text={{{ [charcode[10]] }}}/>
|
||||
</$wikify>
|
||||
<%endif%>
|
||||
|
||||
@@ -9,14 +9,16 @@ caption: {{$:/language/Search/Filter/Caption}}
|
||||
tag="$:/tags/AdvancedSearch"
|
||||
beforeafter="$beforeafter$"
|
||||
defaultState="$:/core/ui/AdvancedSearch/System"
|
||||
actions="<$action-setfield $tiddler='$:/state/advancedsearch/currentTab' text=<<nextTab>>/>"/>
|
||||
actions="<$action-setfield $tiddler='$:/state/advancedsearch/currentTab' text=<<nextTab>>/>"
|
||||
/>
|
||||
\end
|
||||
|
||||
\define cancel-search-actions()
|
||||
\whitespace trim
|
||||
<$list
|
||||
filter="[{$:/temp/advancedsearch/input}!match{$:/temp/advancedsearch}]"
|
||||
emptyMessage="<$action-deletetiddler $filter='[[$:/temp/advancedsearch]] [[$:/temp/advancedsearch/input]] [[$:/temp/advancedsearch/selected-item]]' />">
|
||||
<$list filter="[{$:/temp/advancedsearch/input}!match{$:/temp/advancedsearch}]">
|
||||
<$list-empty>
|
||||
<$action-deletetiddler $filter="[[$:/temp/advancedsearch]] [[$:/temp/advancedsearch/input]] [[$:/temp/advancedsearch/selected-item]]"/>
|
||||
</$list-empty>
|
||||
<$action-setfield $tiddler="$:/temp/advancedsearch/input" text={{$:/temp/advancedsearch}}/>
|
||||
<$action-setfield $tiddler="$:/temp/advancedsearch/refresh" text="yes"/>
|
||||
</$list>
|
||||
@@ -24,54 +26,67 @@ caption: {{$:/language/Search/Filter/Caption}}
|
||||
|
||||
\define input-accept-actions()
|
||||
\whitespace trim
|
||||
<$list
|
||||
filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]"
|
||||
emptyMessage="<$list filter='[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]'><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>">
|
||||
<$list filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]">
|
||||
<$list-empty>
|
||||
<$list filter="[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]">
|
||||
<$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/>
|
||||
</$list>
|
||||
<$/list-empty>
|
||||
<$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/>
|
||||
</$list>
|
||||
\end
|
||||
|
||||
\define input-accept-variant-actions()
|
||||
\whitespace trim
|
||||
<$list
|
||||
filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]"
|
||||
emptyMessage="<$list filter='[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]'><$list filter='[<__tiddler__>get[text]minlength[1]]'><$action-sendmessage $message='tm-edit-tiddler' $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>">
|
||||
<$list filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]">
|
||||
<$list-empty>
|
||||
<$list filter="[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]">
|
||||
<$list filter="[<__tiddler__>get[text]minlength[1]]">
|
||||
<$action-sendmessage $message="tm-edit-tiddler" $param={{{ [<__tiddler__>get[text]] }}}/>
|
||||
</$list>
|
||||
</$list>
|
||||
</$list-empty>
|
||||
<$list filter="[<__tiddler__>get[text]minlength[1]]">
|
||||
<$action-sendmessage $message="tm-edit-tiddler" $param={{{ [<__tiddler__>get[text]] }}}/>
|
||||
</$list></$list>
|
||||
\end
|
||||
\whitespace trim
|
||||
<<lingo Filter/Hint>>
|
||||
<div class="tc-search tc-advanced-search">
|
||||
<$keyboard key="((input-tab-right))" actions=<<set-next-input-tab>>>
|
||||
<$keyboard key="((input-tab-left))" actions=<<set-next-input-tab "before">>>
|
||||
<$macrocall $name="keyboard-driven-input"
|
||||
tiddler="$:/temp/advancedsearch/input"
|
||||
storeTitle="$:/temp/advancedsearch"
|
||||
refreshTitle="$:/temp/advancedsearch/refresh"
|
||||
selectionStateTitle="$:/temp/advancedsearch/selected-item"
|
||||
type="search"
|
||||
tag="input"
|
||||
focus={{$:/config/Search/AutoFocus}}
|
||||
configTiddlerFilter="[[$:/temp/advancedsearch]]"
|
||||
firstSearchFilterField="text"
|
||||
inputAcceptActions=<<input-accept-actions>>
|
||||
inputAcceptVariantActions=<<input-accept-variant-actions>>
|
||||
inputCancelActions=<<cancel-search-actions>>/>
|
||||
</$keyboard>
|
||||
</$keyboard>
|
||||
 
|
||||
<$list filter="[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch/FilterButton]!has[draft.of]]"><$transclude/></$list>
|
||||
</div>
|
||||
<$reveal state="$:/temp/advancedsearch" type="nomatch" text="">
|
||||
<$set name="resultCount" value="<$count filter={{$:/temp/advancedsearch}}/>">
|
||||
<div class="tc-search-results">
|
||||
<p><<lingo Filter/Matches>></p>
|
||||
<$list filter={{$:/temp/advancedsearch}}>
|
||||
<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[[$:/temp/advancedsearch/selected-item]get[text]] +[then[]else[tc-list-item-selected]] }}}>
|
||||
<$transclude tiddler="$:/core/ui/ListItemTemplate"/>
|
||||
</span>
|
||||
</$list>
|
||||
</$list>
|
||||
\end
|
||||
|
||||
\whitespace trim
|
||||
|
||||
<<lingo Filter/Hint>>
|
||||
|
||||
<div class="tc-search tc-advanced-search">
|
||||
<$keyboard key="((input-tab-right))" actions=<<set-next-input-tab>> class="tc-small-gap-right">
|
||||
<$keyboard key="((input-tab-left))" actions=<<set-next-input-tab "before">>>
|
||||
<$macrocall $name="keyboard-driven-input"
|
||||
tiddler="$:/temp/advancedsearch/input"
|
||||
storeTitle="$:/temp/advancedsearch"
|
||||
refreshTitle="$:/temp/advancedsearch/refresh"
|
||||
selectionStateTitle="$:/temp/advancedsearch/selected-item"
|
||||
type="search"
|
||||
tag="input"
|
||||
focus={{$:/config/Search/AutoFocus}}
|
||||
configTiddlerFilter="[[$:/temp/advancedsearch]]"
|
||||
firstSearchFilterField="text"
|
||||
inputAcceptActions=<<input-accept-actions>>
|
||||
inputAcceptVariantActions=<<input-accept-variant-actions>>
|
||||
inputCancelActions=<<cancel-search-actions>>
|
||||
/>
|
||||
</$keyboard>
|
||||
</$keyboard>
|
||||
<$list filter="[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch/FilterButton]!has[draft.of]]">
|
||||
<$transclude/>
|
||||
</$list>
|
||||
</div>
|
||||
</$set>
|
||||
|
||||
<$reveal state="$:/temp/advancedsearch" type="nomatch" text="" tag="div" class="tc-search-results">
|
||||
<$set name="resultCount" value="<$count filter={{$:/temp/advancedsearch}}/>">
|
||||
<p><<lingo Filter/Matches>></p>
|
||||
<$list filter={{$:/temp/advancedsearch}}>
|
||||
<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[[$:/temp/advancedsearch/selected-item]get[text]] +[then[]else[tc-list-item-selected]] }}}>
|
||||
<$transclude tiddler="$:/core/ui/ListItemTemplate"/>
|
||||
</span>
|
||||
</$list>
|
||||
</$set>
|
||||
</$reveal>
|
||||
|
||||
@@ -79,11 +79,15 @@ first-search-filter: [all[shadows]search<userInput>sort[title]limit[250]] -[[$:/
|
||||
|
||||
<$list filter="[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]" emptyMessage="<div class='tc-search-results'>{{$:/language/Search/Search/TooShort}}</div>" variable="listItem">
|
||||
|
||||
<$set name="resultCount" value="<$count filter='[all[shadows]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]]'/>">
|
||||
<$set name="resultCount" value={{{ [all[shadows]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]] +[count[]]}}}>
|
||||
|
||||
<div class="tc-search-results">
|
||||
|
||||
<<lingo Shadows/Matches>>
|
||||
<%if [<resultCount>match[0]] %>
|
||||
{{$:/language/Search/Matches/NoMatch}}
|
||||
<%else%>
|
||||
<<lingo Shadows/Matches>>
|
||||
<%endif%>
|
||||
|
||||
<$list filter="[all[shadows]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]]">
|
||||
<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[[$:/temp/advancedsearch/selected-item]get[text]] +[then[]else[tc-list-item-selected]] }}}>
|
||||
|
||||
@@ -58,15 +58,15 @@ caption: {{$:/language/Search/Standard/Caption}}
|
||||
configTiddler={{{ [[$:/state/advancedsearch/standard/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}] }}}
|
||||
searchListState="$:/temp/advancedsearch/selected-item">
|
||||
<$list filter="[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]">
|
||||
<$list-empty>
|
||||
<$list filter='[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]'><$transclude mode="block"/></$list>
|
||||
</$list-empty>
|
||||
<$macrocall $name="tabs"
|
||||
tabsList="[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]"
|
||||
default={{$:/config/SearchResults/Default}}
|
||||
actions="<$action-setfield $tiddler='$:/state/advancedsearch/standard/currentTab' text=<<currentTab>>/>"
|
||||
explicitState="$:/state/tab/search-results/advancedsearch" />
|
||||
</$list>
|
||||
<$list filter="[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]] :else[[]]">
|
||||
<$list filter="[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]"><$transclude mode="block"/></$list>
|
||||
</$list>
|
||||
</$vars>
|
||||
</$list>
|
||||
</$reveal>
|
||||
|
||||
@@ -78,11 +78,15 @@ first-search-filter: [is[system]search<userInput>sort[title]limit[250]] -[[$:/te
|
||||
|
||||
<$list filter="[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]" emptyMessage="<div class='tc-search-results'>{{$:/language/Search/Search/TooShort}}</div>" variable="listItem">
|
||||
|
||||
<$set name="resultCount" value="<$count filter='[is[system]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]] -[[$:/temp/advancedsearch/selected-item]]'/>">
|
||||
<$set name="resultCount" value={{{ [is[system]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]] -[[$:/temp/advancedsearch/selected-item]] +[count[]] }}}>
|
||||
|
||||
<div class="tc-search-results">
|
||||
|
||||
<<lingo System/Matches>>
|
||||
<%if [<resultCount>match[0]] %>
|
||||
{{$:/language/Search/Matches/NoMatch}}
|
||||
<%else%>
|
||||
<<lingo System/Matches>>
|
||||
<%endif%>
|
||||
|
||||
<$list filter="[is[system]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]] -[[$:/temp/advancedsearch/selected-item]]">
|
||||
<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[[$:/temp/advancedsearch/selected-item]get[text]] +[then[]else[tc-list-item-selected]] }}}>
|
||||
|
||||
@@ -9,7 +9,7 @@ second-search-filter: [!is[system]search<userInput>sort[title]limit[250]]
|
||||
//<small>{{$:/language/Search/Matches/Title}}</small>//
|
||||
|
||||
<$list filter="[<userInput>minlength[1]]" variable="ignore">
|
||||
<$list filter={{{ [<configTiddler>get[first-search-filter]] }}}>
|
||||
<$list filter={{{ [<configTiddler>get[first-search-filter]] }}} emptyMessage={{$:/language/Search/Matches/NoResult}}>
|
||||
<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[<searchListState>get[text]] +[then[]else[tc-list-item-selected]] }}}>
|
||||
<$transclude tiddler="$:/core/ui/ListItemTemplate"/>
|
||||
</span>
|
||||
@@ -19,7 +19,7 @@ second-search-filter: [!is[system]search<userInput>sort[title]limit[250]]
|
||||
//<small>{{$:/language/Search/Matches/All}}</small>//
|
||||
|
||||
<$list filter="[<userInput>minlength[1]]" variable="ignore">
|
||||
<$list filter={{{ [<configTiddler>get[second-search-filter]] }}}>
|
||||
<$list filter={{{ [<configTiddler>get[second-search-filter]] }}} emptyMessage={{$:/language/Search/Matches/NoResult}}>
|
||||
<span class={{{[<currentTiddler>addsuffix[-secondaryList]] -[<searchListState>get[text]] +[then[]else[tc-list-item-selected]] }}}>
|
||||
<$transclude tiddler="$:/core/ui/ListItemTemplate"/>
|
||||
</span>
|
||||
|
||||
@@ -13,6 +13,7 @@ title: $:/core/ui/TestCaseTemplate
|
||||
testActions="Actions"
|
||||
testHideIfPass=<<hideIfPass>>
|
||||
>
|
||||
<$data $filter={{!!import}}/>
|
||||
<$data $compound-filter={{!!import-compound}}/>
|
||||
<$data $compound-tiddler=<<currentTiddler>>/>
|
||||
<%if [{!!description}!is[blank]] %><$data title="Description" text={{!!description}}/><%endif%>
|
||||
|
||||
@@ -31,11 +31,11 @@ second-search-filter: [subfilter<tagListFilter>is[system]search:title<userInput>
|
||||
\procedure add-tag-actions()
|
||||
<$let tag=<<_tf.getTag>> >
|
||||
<$action-listops $tiddler=<<saveTiddler>> $field=<<tagField>> $subfilter='+[toggle<tag>trim[]]'/>
|
||||
<% if [<tag>] :intersection[<saveTiddler>get<tagField>enlist-input[]] %>
|
||||
<%if [<tag>] :intersection[<saveTiddler>get<tagField>enlist-input[]] %>
|
||||
<!-- tag has been removed - do nothing -->
|
||||
<% else %>
|
||||
<%else%>
|
||||
<<actions>>
|
||||
<% endif %>
|
||||
<%endif%>
|
||||
<<delete-tag-state-tiddlers>>
|
||||
<$action-setfield $tiddler=<<refreshTitle>> text="yes"/>
|
||||
</$let>
|
||||
@@ -46,11 +46,11 @@ second-search-filter: [subfilter<tagListFilter>is[system]search:title<userInput>
|
||||
The second ESC tries to close the "draft tiddler"
|
||||
-->
|
||||
\procedure clear-tags-actions-inner()
|
||||
<% if [<storeTitle>has[text]] ~[<newTagNameTiddler>has[text]] %>
|
||||
<%if [<storeTitle>has[text]] ~[<newTagNameTiddler>has[text]] %>
|
||||
<<delete-tag-state-tiddlers>>
|
||||
<% else %>
|
||||
<%else%>
|
||||
<<cancel-delete-tiddler-actions "cancel">>
|
||||
<% endif %>
|
||||
<%endif%>
|
||||
\end
|
||||
|
||||
<!-- triggered by keyboard only -->
|
||||
@@ -83,6 +83,9 @@ The second ESC tries to close the "draft tiddler"
|
||||
emptyMessage="<div class='tc-search-results'>{{$:/language/Search/Search/TooShort}}</div>" variable="listItem"
|
||||
>
|
||||
<$list filter=<<filter>> variable="tag">
|
||||
<$list-empty>
|
||||
<span class="tc-small-gap-left">{{$:/language/EditTemplate/Tags/EmptyMessage}}</span>
|
||||
</$list-empty>
|
||||
<!-- The buttonClasses filter is used to define tc-tag-button-selected state -->
|
||||
<!-- tf.get-tagpicker-focus-selector has to be resolved for $:/core/ui/TagPickerTagTemplate,
|
||||
othwerwise qualify in tf.tagpicker-dropdown-id causes problems -->
|
||||
@@ -125,13 +128,13 @@ The second ESC tries to close the "draft tiddler"
|
||||
>
|
||||
{{$:/core/images/down-arrow}}
|
||||
</$button>
|
||||
<% if [<storeTitle>has[text]] %>
|
||||
<%if [<storeTitle>has[text]] %>
|
||||
<$button actions=<<delete-tag-state-tiddlers>> class="tc-btn-invisible tc-small-gap tc-btn-dropdown"
|
||||
tooltip={{$:/language/EditTemplate/Tags/ClearInput/Hint}} aria-label={{$:/language/EditTemplate/Tags/ClearInput/Caption}}
|
||||
>
|
||||
{{$:/core/images/close-button}}
|
||||
</$button>
|
||||
<% endif %>
|
||||
<%endif%>
|
||||
<span class="tc-add-tag-button tc-small-gap-left">
|
||||
<$let tag=<<_tf.getTag>>>
|
||||
<$button set=<<newTagNameTiddler>> actions=<<add-button-actions>> >
|
||||
@@ -141,13 +144,13 @@ The second ESC tries to close the "draft tiddler"
|
||||
</span>
|
||||
</div>
|
||||
<div class="tc-block-dropdown-wrapper">
|
||||
<% if [<tf.tagpicker-dropdown-id>has[text]] %>
|
||||
<%if [<tf.tagpicker-dropdown-id>has[text]] %>
|
||||
<div class="tc-block-dropdown tc-block-tags-dropdown">
|
||||
<$macrocall $name="tag-picker-listTags" filter=<<nonSystemTagsFilter>> suffix="-primaryList" />
|
||||
<hr>
|
||||
<$macrocall $name="tag-picker-listTags" filter=<<systemTagsFilter>> suffix="-secondaryList" />
|
||||
</div>
|
||||
<% endif %>
|
||||
<%endif%>
|
||||
</div>
|
||||
</div>
|
||||
\end
|
||||
|
||||
@@ -9,6 +9,6 @@ type: text/vnd.tiddlywiki
|
||||
<$link to={{{ [<__version__>addprefix[Release ]] }}} class="doc-from-version">{{$:/core/images/warning}} New in: <$text text=<<__version__>>/></$link>
|
||||
\end
|
||||
|
||||
\define .deprecated-since(version, superseded:"TODO-Link")
|
||||
<$link to="Deprecated - What does it mean" class="doc-deprecated-version tc-btn-invisible">{{$:/core/images/warning}} Deprecated since: <$text text=<<__version__>>/></$link> (see <$link to=<<__superseded__>>><$text text=<<__superseded__>>/></$link>)
|
||||
\define .deprecated-since(version, superseded:"")
|
||||
<$link to="Deprecated - What does it mean" class="doc-deprecated-version tc-btn-invisible">{{$:/core/images/warning}} Deprecated from v<$text text=<<__version__>>/></$link> <%if [<__superseded__>else[]!match[]] %>(see <$link to=<<__superseded__>>><$text text=<<__superseded__>>/></$link>)<%endif%>
|
||||
\end
|
||||
|
||||
@@ -9,7 +9,7 @@ type: text/vnd.tiddlywiki
|
||||
\end
|
||||
|
||||
\define .deprecated-since(version, superseded:"TODO-Link")
|
||||
<$button to="Deprecated - What does it mean" class="doc-deprecated-version tc-btn-invisible">{{$:/core/images/warning}} Obsolète depuis<<:>> $version$ </$button>. Utilisez [[$superseded$]] à la place
|
||||
<$button to="Deprecated - What does it mean" class="doc-deprecated-version tc-btn-invisible">{{$:/core/images/warning}} Obsolète depuis<<:>> $version$ </$button>. <%if [<__superseded__>else[]!match[]] %>Utilisez [[$superseded$]] à la place<%endif%>
|
||||
\end
|
||||
|
||||
<pre><$view field="text"/></pre>
|
||||
@@ -1,6 +1,6 @@
|
||||
caption: 5.3.6
|
||||
created: 20240710120027897
|
||||
modified: 20240710120027897
|
||||
created: 20240830144941926
|
||||
modified: 20240830144941926
|
||||
tags: ReleaseNotes
|
||||
title: Release 5.3.6
|
||||
type: text/vnd.tiddlywiki
|
||||
@@ -12,20 +12,38 @@ description: Under development
|
||||
|
||||
! Translation improvements
|
||||
|
||||
<<.link-badge-added "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8531">> support for new language "Chinese (Hong Kong)"
|
||||
|
||||
This release includes improvements to the following translations:
|
||||
|
||||
*
|
||||
* Chinese
|
||||
|
||||
! Plugin Improvements
|
||||
|
||||
!! Geospatial Plugin
|
||||
|
||||
* <<.link-badge-added "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8404">> support for custom wikitext popups to be attached to map features
|
||||
* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8437">> ordering of latitude and longitude in geospatial operators
|
||||
* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8484">> crash when geomap contains an empty geolayer widget
|
||||
|
||||
!! Markdown Plugin
|
||||
|
||||
* <<.link-badge-added "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8395">> strikethrough, superscript and subscript editor toolbar buttons
|
||||
* <<.link-badge-improved "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8402">> readability of Markdown links to other tiddlers
|
||||
* <<.link-badge-added "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8459">> image toolbar dropdown to editor toolbar
|
||||
* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8492">> colour for target footnote background
|
||||
|
||||
! TestCaseWidget and Related Improvements
|
||||
|
||||
This release includes several fixes and improvements to the TestCaseWidget, its default template, and the related DataWidget and CompoundTiddlers format. These features were first introduced in [[Release 5.3.4]] and are undergoing continuous improvement as we work on integrating them more widely across the system.
|
||||
|
||||
* <<.link-badge-added "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8447">> new `$compound-filter` attribute for the DataWidget that allows other compound tiddlers to be imported. There is also a companion ''import-compound'' field for the TestCaseWidget template
|
||||
* <<.link-badge-improved "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8514">> the TestCaseWidget default template to make it more modular
|
||||
* <<.link-badge-added "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8499">> support for an ''import'' field in the default TestCaseWidget template, allowing additional tiddlers to be imported
|
||||
* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8416">> [[TestCaseWidget]] default template to allow wikitext within the test case narrative
|
||||
* <<.link-badge-added "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8449">> WikiText formatting buttons when editing CompoundTiddlers
|
||||
* <<.link-badge-added "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8450">> CompoundTiddlers type `text/vnd.tiddlywiki-multiple` to the editor type dropdown
|
||||
* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8409">> filesystem handling so that CompoundTiddlers are saved as .tid files
|
||||
|
||||
! Widget Improvements
|
||||
|
||||
@@ -37,11 +55,21 @@ This release includes improvements to the following translations:
|
||||
|
||||
! Usability Improvements
|
||||
|
||||
* <<.link-badge-improved "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8530">> language descriptions by localising them
|
||||
* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8407">> the contrast of plugin stability badges on hover
|
||||
* <<.link-badge-added "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8430">> a "copy to clipboard" button to the view template body template used for code tiddlers
|
||||
* <<.link-badge-added "github.com/TiddlyWiki/TiddlyWiki5/pull/8441">> support for social media cards to be added to TiddlyWiki
|
||||
* <<.link-badge-added "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8518">> type attribute to input fields in control panel, allowing virtual keyboards to switch to the proper one when editing settings
|
||||
* <<.link-badge-added "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8558">> empty message to tag picker, search dropdown and advanced search
|
||||
|
||||
! Hackability Improvements
|
||||
|
||||
*
|
||||
* <<.link-badge-added "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8431">> support for the HTML entity `⁠` which can be useful for joining HTML elements without an unwanted linebreak
|
||||
* <<.link-badge-added "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8439">> a keyboard shortcut for opening the control panel (by default it is <kbd>ctrl</kbd>-<kbd>alt</kbd>-<kbd>C</kbd>)
|
||||
* <<.link-badge-added "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8182">> new [[Hidden Setting: Tag Pill Drag Filter]] that allows configuration of the tiddlers that are transferred when dragging a tag pill
|
||||
* <<.link-badge-added "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8384">> tests to ensure that the syntax elements `{% %}` and `{= =}` are reserved for external tooling, and will never be recognised by TiddlyWiki itself
|
||||
* <<.link-badge-added "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8462">> new cascades for the view template subtitle and tags
|
||||
* <<.link-badge-improved "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8500">> excision tool implementation to make the excision tiddler title translatable
|
||||
|
||||
! Bug Fixes
|
||||
|
||||
@@ -49,28 +77,47 @@ This release includes improvements to the following translations:
|
||||
* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8393">> crash when [[WidgetMessage: tm-copy-to-clipboard]] is passed an empty string
|
||||
* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8399">> disengage "select all" when cancelling an import
|
||||
* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8382">> [[transcludes Operator]] and [[backtranscludes Operator]] minor issue with transclusions made via a filtered attribute
|
||||
* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8416">> [[TestCaseWidget]] default template to allow wikitext within the test case narrative
|
||||
* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/discussions/8428">> scroll top position when animation duration is zero
|
||||
* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8476">> importing $:/build tiddler when upgrading to avoid overwriting it
|
||||
* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/commit/d9ac4a823fe0f91c615ed33fa890069f88cc8ab9">> crash with RenderCommand when filename filter returns empty result
|
||||
* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8355">> display of language plugins
|
||||
* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8540">> (and <<.link-badge-here "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8546">>) display of non-square plugin icons
|
||||
* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8517">> appearance of input elements other than type `text` and `search`
|
||||
* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/commit/38081b86c97a795420515156fcd52177574be516">> crash with filesystem adaptor if the wiki folder is missing
|
||||
* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8413">> unwrapped oveflowed code blocks not showing scroll bars when setting "Wrap long lines in code blocks" to "No" in "Theme tweaks"
|
||||
* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/7317">> (and <<.link-badge-here "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8552">>) search input box outline in Chrome-like browsers
|
||||
* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/commit/fa423e508ff5012423a1904bb17c9d61848732ee">> interpretation of success codes in Put saver OPTIONS request
|
||||
* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8485">> duplicated search result in advanced search if more than one tiddler is tagged with $:/tags/SearchResults
|
||||
* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/commit/7dfdbae812306875bac2445ca4ee505b406e3be1">> crash with KeyboardWidget in startup actions
|
||||
|
||||
! Node.js Improvements
|
||||
|
||||
* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8409">> filesystem handling so that [[Compound Tiddlers]] are saved as .tid files
|
||||
* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8339">> server crash when authenticating if newlines are contained in the site title
|
||||
|
||||
! Developer Improvements
|
||||
|
||||
*
|
||||
* <<.link-badge-improved "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8423">> the browser checks used in $:/boot/bootprefix.js
|
||||
* <<.link-badge-extended "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8494">> parse tree format to add `start`/`end` properties to table row and cell elements
|
||||
* <<.link-badge-improved "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8265">> and simplified plugin library edition usage
|
||||
|
||||
! Acknowledgements
|
||||
|
||||
[[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki:
|
||||
|
||||
<<.contributors """
|
||||
BramChen
|
||||
btheado
|
||||
flibbles
|
||||
hoelzro
|
||||
kookma
|
||||
Leilei332
|
||||
linonetwo
|
||||
pmario
|
||||
PotOfCoffee2Go
|
||||
saqimtiaz
|
||||
simonbaird
|
||||
springerspandrel
|
||||
twMat
|
||||
valpackett
|
||||
webplusai
|
||||
""">>
|
||||
|
||||
@@ -5,7 +5,7 @@ tags: [[$:/tags/wiki-test-spec]]
|
||||
|
||||
title: Text
|
||||
|
||||
This is a <% if [<something>match[one]] %>Elephant<% endif %>, I think.
|
||||
This is a <%if [<something>match[one]] %>Elephant<%endif%>, I think.
|
||||
+
|
||||
title: Output
|
||||
|
||||
|
||||
@@ -6,23 +6,23 @@ tags: [[$:/tags/wiki-test-spec]]
|
||||
title: Output
|
||||
|
||||
\procedure test(animal)
|
||||
<% if [<animal>match[Elephant]] %>
|
||||
<%if [<animal>match[Elephant]] %>
|
||||
|
||||
! It is an elephant
|
||||
|
||||
<% else %>
|
||||
<%else%>
|
||||
|
||||
<% if [<animal>match[Giraffe]] %>
|
||||
<%if [<animal>match[Giraffe]] %>
|
||||
|
||||
! It is a giraffe
|
||||
|
||||
<% else %>
|
||||
<%else%>
|
||||
|
||||
! It is completely unknown
|
||||
|
||||
<% endif %>
|
||||
<%endif%>
|
||||
|
||||
<% endif %>
|
||||
<%endif%>
|
||||
|
||||
\end
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ tags: [[$:/tags/wiki-test-spec]]
|
||||
|
||||
title: Text
|
||||
|
||||
This is a <% if [<something>match[one]] %>Elephant<% else %>Crocodile<% endif %>, I think.
|
||||
This is a <%if [<something>match[one]] %>Elephant<%else%>Crocodile<%endif%>, I think.
|
||||
+
|
||||
title: Output
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ tags: [[$:/tags/wiki-test-spec]]
|
||||
|
||||
title: Text
|
||||
|
||||
This is a <% if [<something>match[one]] %>Elephant<% elseif [<something>match[two]] %>Antelope<% else %>Crocodile<% endif %>, I think.
|
||||
This is a <%if [<something>match[one]] %>Elephant<%elseif [<something>match[two]] %>Antelope<%else%>Crocodile<%endif%>, I think.
|
||||
+
|
||||
title: Output
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ tags: [[$:/tags/wiki-test-spec]]
|
||||
|
||||
title: Text
|
||||
|
||||
This is a <% if [<something>match[one]] %>Elephant
|
||||
This is a <%if [<something>match[one]] %>Elephant
|
||||
+
|
||||
title: Output
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ tags: [[$:/tags/wiki-test-spec]]
|
||||
|
||||
title: Output
|
||||
|
||||
This is a <% if 1 2 3 4 5 6 %>Elephant<% endif %>, I think.
|
||||
This is a <%if 1 2 3 4 5 6 %>Elephant<%endif%>, I think.
|
||||
+
|
||||
title: ExpectedResult
|
||||
|
||||
|
||||
@@ -6,15 +6,15 @@ tags: [[$:/tags/wiki-test-spec]]
|
||||
title: Output
|
||||
|
||||
\procedure test(animal)
|
||||
<% if [<animal>match[Elephant]] %>
|
||||
<%if [<animal>match[Elephant]] %>
|
||||
It is an elephant
|
||||
<% else %>
|
||||
<% if [<animal>match[Giraffe]] %>
|
||||
<%else%>
|
||||
<%if [<animal>match[Giraffe]] %>
|
||||
It is a giraffe
|
||||
<% else %>
|
||||
<%else%>
|
||||
It is completely unknown
|
||||
<% endif %>
|
||||
<% endif %>
|
||||
<%endif%>
|
||||
<%endif%>
|
||||
\end
|
||||
|
||||
<<test "Giraffe">>
|
||||
|
||||
@@ -7,20 +7,20 @@ title: Text
|
||||
|
||||
\whitespace trim
|
||||
This is a 
|
||||
<% if [<something>match[one]] %>
|
||||
<% if [<another>match[one]] %>
|
||||
<%if [<something>match[one]] %>
|
||||
<%if [<another>match[one]] %>
|
||||
Indian
|
||||
<% elseif [<another>match[two]] %>
|
||||
<%elseif [<another>match[two]] %>
|
||||
African
|
||||
<% else %>
|
||||
<%else%>
|
||||
Unknown
|
||||
<% endif %>
|
||||
<%endif%>
|
||||
 Elephant
|
||||
<% elseif [<something>match[two]] %>
|
||||
<%elseif [<something>match[two]] %>
|
||||
Antelope
|
||||
<% else %>
|
||||
<%else%>
|
||||
Crocodile
|
||||
<% endif %>
|
||||
<%endif%>
|
||||
, I think.
|
||||
+
|
||||
title: Output
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
title: Sample Filtered Action
|
||||
tags: $:/tags/FilteredActions
|
||||
filter: [list[$:/StoryList]match[Sample Filtered Action]]
|
||||
|
||||
<$action-setfield $tiddler="$:/SiteTitle" text={{{ [{$:/SiteTitle}addsuffix[!]] }}}/>
|
||||
@@ -1,5 +1,5 @@
|
||||
created: 20240507221902644
|
||||
modified: 20240729083054531
|
||||
modified: 20240808020847667
|
||||
tags: Concepts
|
||||
title: TestCaseTiddlers
|
||||
type: text/vnd.tiddlywiki
|
||||
@@ -14,8 +14,9 @@ Test case tiddlers have the following ''fields'':
|
||||
|<<.field type>> |Needs to be set to `text/vnd.tiddlywiki-multiple` |
|
||||
|<<.field tags>> |Test cases are tagged [[$:/tags/wiki-test-spec]]. Test cases that intentionally fail are tagged [[$:/tags/wiki-test-spec-failing]] |
|
||||
|<<.field description>> |Descriptive heading for the test, intended to make it easy to identify the test |
|
||||
|<<.field display-format>> |Optional, defaults to `wikitext`. Set to `plaintext` to cause the output to be rended as plain text |
|
||||
|<<.field import-compound>> |<<.from-version "5.3.6">> A filter string, that defines a list of compound tiddlers, that should be imported. See: <<.wlink DataWidget>> widget |
|
||||
|<<.field display-format>> |Optional, defaults to `wikitext`. Set to `plaintext` to cause the output to be rendered as plain text |
|
||||
|<<.field import>> |<<.from-version "5.3.6">> A filter string that defines a list of tiddlers to import |
|
||||
|<<.field import-compound>> |<<.from-version "5.3.6">> A filter string that defines a list of compound tiddlers to import. See: <<.wlink DataWidget>> widget |
|
||||
|
||||
Test case tiddlers with the appropriate tag are shown in the $:/ControlPanel ''-> Advanced -> Test Cases ''
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@ I'm the original inventor of TiddlyWiki. You can hire me through [[Intertwingled
|
||||
|
||||
Further information:
|
||||
|
||||
* A recording of the [[keynote I gave at QCon London in April 2024|https://www.infoq.com/presentations/bbc-micro/]], and the [[discussion on talk.tiddlywiki.org|https://talk.tiddlywiki.org/t/recording-of-jeremys-keynote-at-qcon-london-april-2024/10505]]. The talk mixes some nostalgia about my teenage activities with the BBC Micro with thoughts on the development of the software industry and insights gained from working with TiddlyWiki
|
||||
* An [[interview with me in The Inquirer|http://www.theinquirer.net/inquirer/feature/2105529/bt-software-engineer-tells-telco-source]] by Wendy Grossman
|
||||
* A [[hilarious interview with me|https://www.youtube.com/watch?v=auyIhw8MTmQ]] from British television in 1983
|
||||
* Here's a video of a presentation I did in 2007 called [["How to Start an Open Source Project"|http://vimeo.com/856110]].
|
||||
|
||||
@@ -5,8 +5,8 @@ tags: $:/tags/ViewTemplate
|
||||
title: $:/editions/tw5.com/empty-tag-node-template
|
||||
type:
|
||||
|
||||
<% if [<storyTiddler>!has[text]!has[tags]tagging[]] %>
|
||||
<%if [<storyTiddler>!has[text]!has[tags]tagging[]] %>
|
||||
The following tiddlers are tagged with <<tag>>:
|
||||
|
||||
<<list-links filter:"[<storyTiddler>!has[text]!has[tags]tagging[]]" class:"multi-columns">>
|
||||
<% endif %>
|
||||
<%endif%>
|
||||
@@ -23,13 +23,13 @@ type: text/vnd.tiddlywiki
|
||||
These new token-based shortcuts allow a richer structure and expressivity than existing features such as widgets or pragmas. For example:
|
||||
|
||||
```
|
||||
<% if [<animal>match[Elephant]] %>
|
||||
<%if [<animal>match[Elephant]] %>
|
||||
It is an elephant
|
||||
<% elseif [<animal>match[Giraffe]] %>
|
||||
<%elseif [<animal>match[Giraffe]] %>
|
||||
It is a giraffe
|
||||
<% else %>
|
||||
<%else%>
|
||||
It is completely unknown
|
||||
<% endif %>
|
||||
<%endif%>
|
||||
```
|
||||
|
||||
Behind the scenes, the conditional shortcut syntax is rendered as the equivalent [[ListWidgets|ListWidget]].
|
||||
|
||||
@@ -119,7 +119,7 @@ type: text/vnd.tiddlywiki
|
||||
\procedure .infoBox(text:"", title, icon:"$:/core/images/info-button", class, iconSize:"1.4rem")
|
||||
\function _f.tipClass() [[doc-icon-block]] [<class>!is[blank]then<class>] +[join[ ]]
|
||||
<div class=<<_f.tipClass>>>
|
||||
<%if [<title>!is[blank]] %><div>''<<title>>''</div><% endif %>
|
||||
<%if [<title>!is[blank]] %><div>''<<title>>''</div><%endif%>
|
||||
<div class="doc-block-icon"><$transclude $tiddler=<<icon>> size=<<iconSize>>/></div>
|
||||
<<text>>
|
||||
</div>
|
||||
|
||||
@@ -9,18 +9,18 @@ type: text/vnd.tiddlywiki
|
||||
\whitespace trim
|
||||
|
||||
\procedure .op-place()
|
||||
<% if [<op-name>!is[blank]] %>
|
||||
<%if [<op-name>!is[blank]] %>
|
||||
<$macrocall $name=".place" _=<<op-name>> /><span class="tc-tiny-gap">=</span>
|
||||
<% endif %>
|
||||
<%endif%>
|
||||
\end
|
||||
|
||||
\procedure .op-row()
|
||||
<% if [<op-body>!is[blank]] %>
|
||||
<%if [<op-body>!is[blank]] %>
|
||||
<tr>
|
||||
<th align="left"><<op-head>></th>
|
||||
<td><<.op-place>><<op-body>></td>
|
||||
</tr>
|
||||
<% endif %>
|
||||
<%endif%>
|
||||
\end
|
||||
|
||||
<$list filter="[all[current]tag[Named Filter Run Prefix]]">
|
||||
|
||||
@@ -16,9 +16,9 @@ title: $:/editions/tw5.com/operator-macros
|
||||
<$list filter="[title<.state-prefix>addsuffix{!!title}addsuffix[/]addsuffix<n>]" variable=".state">
|
||||
<$reveal state=<<.state>> type="nomatch" text="show">
|
||||
<code><$text text=<<eg>>/></code>
|
||||
<% if [<ie>!is[blank]] %>
|
||||
<%if [<ie>!is[blank]] %>
|
||||
<dd>→ <<ie>></dd>
|
||||
<% endif %>
|
||||
<%endif%>
|
||||
<dl>
|
||||
<dd><$button actions=<<.operator-example-tryit-actions>>>Try it</$button></dd>
|
||||
</dl>
|
||||
|
||||
@@ -8,17 +8,17 @@ title: $:/editions/tw5.com/operator-template
|
||||
\whitespace trim
|
||||
|
||||
\procedure .op-place()
|
||||
<% if [<op-name>!is[blank]] %>
|
||||
<%if [<op-name>!is[blank]] %>
|
||||
<$macrocall $name=".place" _=<<op-name>> /><span class="tc-tiny-gap">=</span>
|
||||
<% endif %>
|
||||
<%endif%>
|
||||
\end
|
||||
|
||||
\procedure .op-row()
|
||||
<% if [<op-body>!is[blank]] %>
|
||||
<%if [<op-body>!is[blank]] %>
|
||||
<tr>
|
||||
<th align="left"><<op-head>></th><td><<.op-place>><<op-body>></td>
|
||||
</tr>
|
||||
<% endif %>
|
||||
<%endif%>
|
||||
\end
|
||||
|
||||
<$list filter="[all[current]tag[Filter Operators]]">
|
||||
|
||||
@@ -19,20 +19,22 @@ type: text/vnd.tiddlywiki
|
||||
\end
|
||||
|
||||
\procedure .from-version(version)
|
||||
<% if [<version>compare:version:gteq<tf.from-version-reference>] %>
|
||||
<%if [<version>compare:version:gteq<tf.from-version-reference>] %>
|
||||
<<.from-version-template "doc-from-version doc-from-version-new" "New in v">>
|
||||
<% else %>
|
||||
<%else%>
|
||||
<<.from-version-template "doc-from-version" "Introduced in v">>
|
||||
<% endif %>
|
||||
<%endif%>
|
||||
\end
|
||||
|
||||
\procedure .deprecated-since(version, superseded:"TODO-Link")
|
||||
\procedure .deprecated-since(version, superseded:"")
|
||||
<$link to="Deprecated - What does it mean" class="doc-deprecated-version tc-btn-invisible">
|
||||
{{$:/core/images/warning}}
|
||||
<span class="tc-tiny-gap">Deprecated since:</span>
|
||||
<$text text=<<version>>/>
|
||||
<span class="tc-tiny-gap">Deprecated from </span>
|
||||
v<$text text=<<version>>/>
|
||||
</$link>
|
||||
<span class="tc-tiny-gap-left">
|
||||
(see <$link class="tc-tiny-gap-left" to=<<superseded>>><$text text=<<superseded>>/></$link>)
|
||||
</span>
|
||||
<%if [<superseded>else[]!match[]] %>
|
||||
<span class="tc-tiny-gap-left">
|
||||
(see <$link class="tc-tiny-gap-left" to=<<superseded>>><$text text=<<superseded>>/></$link>)
|
||||
</span>
|
||||
<%endif%>
|
||||
\end
|
||||
|
||||
@@ -75,7 +75,7 @@ eg="""<$edit-text tiddler=<<currentTiddler>> field="heading" size="25" focus="ye
|
||||
eg="""\procedure onInput()
|
||||
<%if [get[temp]match[$:/]] %>
|
||||
<$action-confirm $message="Yes, this is how system tiddler names begin!"/>
|
||||
<% endif %>
|
||||
<%endif%>
|
||||
\end
|
||||
|
||||
Type a new tiddler name, starting with the system prefix `$:/`: <$edit-text inputActions=<<onInput>> field="temp" class="tc-edit-texteditor"/>
|
||||
|
||||
@@ -26,7 +26,7 @@ The content of the `<$edit>` widget is ignored.
|
||||
|
||||
! Examples
|
||||
|
||||
!! Edit the contents (text field) of a tiddler titled <%if [<now YYYY-0MM-0DD>is[tiddler]] %> <$tiddler tiddler=<<now YYYY-0MM-0DD>> > <$link/></$tiddler> <%else %> with today’s date <% endif %>
|
||||
!! Edit the contents (text field) of a tiddler titled <%if [<now YYYY-0MM-0DD>is[tiddler]] %> <$tiddler tiddler=<<now YYYY-0MM-0DD>> > <$link/></$tiddler> <%else %> with today’s date <%endif%>
|
||||
|
||||
<$macrocall $name=".example" n="1"
|
||||
eg="""<$edit tiddler=<<now YYYY-0MM-0DD>> class="tc-edit-texteditor"/>
|
||||
|
||||
@@ -11,40 +11,40 @@ Within an "if" or "elseif" clause, the variable `condition` contains the value o
|
||||
A simple example:
|
||||
|
||||
<$macrocall $name='wikitext-example-without-html'
|
||||
src='<% if [{$:/info/url/protocol}match[file:]] %>
|
||||
src='<%if [{$:/info/url/protocol}match[file:]] %>
|
||||
Loaded from a file URI
|
||||
<% else %>
|
||||
<%else%>
|
||||
Not loaded from a file URI
|
||||
<% endif %>
|
||||
<%endif%>
|
||||
'/>
|
||||
|
||||
One or more `<% elseif %>` clauses may be included before the `<% else %>` clause:
|
||||
One or more `<%elseif%>` clauses may be included before the `<%else%>` clause:
|
||||
|
||||
<$macrocall $name='wikitext-example-without-html'
|
||||
src='<% if [{$:/info/url/protocol}match[file:]] %>
|
||||
src='<%if [{$:/info/url/protocol}match[file:]] %>
|
||||
Loaded from a file URI
|
||||
<% elseif [{$:/info/url/protocol}match[https:]] %>
|
||||
<%elseif [{$:/info/url/protocol}match[https:]] %>
|
||||
Loaded from an HTTPS URI
|
||||
<% elseif [{$:/info/url/protocol}match[http:]] %>
|
||||
<%elseif [{$:/info/url/protocol}match[http:]] %>
|
||||
Loaded from an HTTP URI
|
||||
<% else %>
|
||||
<%else%>
|
||||
Loaded from an unknown protocol
|
||||
<% endif %>
|
||||
<%endif%>
|
||||
'/>
|
||||
|
||||
The conditional shortcut syntax can be nested:
|
||||
|
||||
<$macrocall $name='wikitext-example-without-html'
|
||||
src='\procedure test(animal)
|
||||
<% if [<animal>match[Elephant]] %>
|
||||
<%if [<animal>match[Elephant]] %>
|
||||
It is an elephant
|
||||
<% else %>
|
||||
<% if [<animal>match[Giraffe]] %>
|
||||
<%else%>
|
||||
<%if [<animal>match[Giraffe]] %>
|
||||
It is a giraffe
|
||||
<% else %>
|
||||
<%else%>
|
||||
It is completely unknown
|
||||
<% endif %>
|
||||
<% endif %>
|
||||
<%endif%>
|
||||
<%endif%>
|
||||
\end
|
||||
|
||||
<<test "Giraffe">>
|
||||
@@ -56,7 +56,7 @@ src='\procedure test(animal)
|
||||
|
||||
Notes:
|
||||
|
||||
* Clauses are parsed in inline mode by default. Force block mode parsing by following the opening `<% if %>`, `<% elseif %>` or `<% else %>` with two line breaks
|
||||
* Clauses are parsed in inline mode by default. Force block mode parsing by following the opening `<%if %>`, `<%elseif%>` or `<%else%>` with two line breaks
|
||||
* Widgets and HTML elements must be within a single conditional clause; it is not possible to start an element in one conditional clause and end it in another
|
||||
* The conditional shortcut syntax cannot contain pragmas such as procedure definitions
|
||||
|
||||
|
||||
@@ -133,6 +133,7 @@ Excise/Caption/Replace/Link: 链接
|
||||
Excise/Caption/Replace/Transclusion: 嵌入
|
||||
Excise/Caption/Tag: 将新条目的标签设为此条目的名称
|
||||
Excise/Caption/TiddlerExists: 提醒:条目已经存在
|
||||
Excise/DefaultTitle: 新的剪切
|
||||
Excise/Hint: 剪切所选文本到一个新条目
|
||||
Heading1/Caption: 标题 1
|
||||
Heading1/Hint: 套用标题级别 1 的格式于包含所选文本的列
|
||||
|
||||
@@ -199,6 +199,12 @@ Settings/TitleLinks/Caption: 条目标题
|
||||
Settings/TitleLinks/Hint: 可选地显示条目标题为链接
|
||||
Settings/TitleLinks/No/Description: 不显示条目标题为链接
|
||||
Settings/TitleLinks/Yes/Description: 显示条目标题为链接
|
||||
SocialCard/Caption: 社交媒体卡
|
||||
SocialCard/Domain/Prompt: 显示链接的网域名称(例如 ''tiddlywiki.com'')
|
||||
SocialCard/Hint: 社交和消息服务使用此信息来显示在线托管时指向此 TiddlyWiki 的链接的预览卡
|
||||
SocialCard/PreviewUrl/Prompt: 用于预览此 TiddlyWiki 图像的完整网址
|
||||
SocialCard/PreviewUrl/Preview: 预览图像:
|
||||
SocialCard/Url/Prompt: 此 TiddlyWiki 的完整网址
|
||||
StoryTiddler/Caption: 故事条目
|
||||
StoryTiddler/Hint: 此规则级联用于动态选择模板,以便在故事河中显示条目。
|
||||
StoryView/Caption: 视图模式
|
||||
|
||||
@@ -133,6 +133,7 @@ Excise/Caption/Replace/Link: 鏈接
|
||||
Excise/Caption/Replace/Transclusion: 嵌入
|
||||
Excise/Caption/Tag: 將新條目的標籤設為此條目的名稱
|
||||
Excise/Caption/TiddlerExists: 警示:條目已經存在
|
||||
Excise/DefaultTitle: 新的剪切
|
||||
Excise/Hint: 剪切所選文字到一個新條目
|
||||
Heading1/Caption: 標題 1
|
||||
Heading1/Hint: 套用標題級別 1 的格式於包含所選文字的列
|
||||
|
||||
@@ -199,6 +199,12 @@ Settings/TitleLinks/Caption: 條目標題
|
||||
Settings/TitleLinks/Hint: 可選地顯示條目標題為鏈接
|
||||
Settings/TitleLinks/No/Description: 不顯示條目標題為鏈接
|
||||
Settings/TitleLinks/Yes/Description: 顯示條目標題為鏈接
|
||||
SocialCard/Caption: 社交媒體卡
|
||||
SocialCard/Domain/Prompt: 顯示連結的網域名稱(例如 ''tiddlywiki.com'')
|
||||
SocialCard/Hint: 社交和訊息服務使用此資訊來顯示線上託管時指向此 TiddlyWiki 的連結的預覽卡
|
||||
SocialCard/PreviewUrl/Prompt: 用於預覽此 TiddlyWiki 圖像的完整網址
|
||||
SocialCard/PreviewUrl/Preview: 預覽圖像:
|
||||
SocialCard/Url/Prompt: 此 TiddlyWiki 的完整網址
|
||||
StoryTiddler/Caption: 故事條目
|
||||
StoryTiddler/Hint: 此規則級聯用於動態選擇範本,以便在故事河中顯示條目。
|
||||
StoryView/Caption: 檢視模式
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
title: $:/plugins/tiddlywiki/geospatial/tests/widgets/geomap-empty-layer
|
||||
description: Map using geolayer without json and lat/long attributes
|
||||
import: $:/plugins/tiddlywiki/geospatial
|
||||
type: text/vnd.tiddlywiki-multiple
|
||||
tags: [[$:/tags/wiki-test-spec]]
|
||||
|
||||
title: Narrative
|
||||
|
||||
Verify exception reported in [[8452|https://github.com/TiddlyWiki/TiddlyWiki5/issues/8452]] is not thrown when the geolayer widget has no attributes
|
||||
+
|
||||
title: Output
|
||||
|
||||
<$geomap startPosition="bounds">
|
||||
<$geolayer/>
|
||||
</$geomap>
|
||||
+
|
||||
title: ExpectedResult
|
||||
|
||||
<p><div style="width:100%;height:600px;"></div></p>
|
||||
@@ -262,10 +262,12 @@ GeomapWidget.prototype.refreshMap = function() {
|
||||
var bounds = null;
|
||||
$tw.utils.each(this.renderedLayers,function(layer) {
|
||||
var featureBounds = layer.layer.getBounds();
|
||||
if(bounds) {
|
||||
bounds.extend(featureBounds);
|
||||
} else {
|
||||
bounds = featureBounds;
|
||||
if(featureBounds.isValid()) {
|
||||
if(bounds) {
|
||||
bounds.extend(featureBounds);
|
||||
} else {
|
||||
bounds = featureBounds;
|
||||
}
|
||||
}
|
||||
});
|
||||
if(bounds) {
|
||||
|
||||
@@ -6,11 +6,11 @@ title: $:/plugins/tiddlywiki/github-fork-ribbon/usage
|
||||
\end
|
||||
|
||||
\procedure ribbonCreateActions()
|
||||
<% if [[$:/github-ribbon]!is[tiddler]] %>
|
||||
<%if [[$:/github-ribbon]!is[tiddler]] %>
|
||||
<$action-setfield $tiddler="$:/github-ribbon" $field="text" $value=<<ribbonCode>>
|
||||
tags="$:/tags/PageTemplate"
|
||||
code-body="yes" />
|
||||
<% endif %>
|
||||
<%endif%>
|
||||
<$action-navigate $to="$:/github-ribbon" />
|
||||
\end
|
||||
|
||||
@@ -18,9 +18,9 @@ title: $:/plugins/tiddlywiki/github-fork-ribbon/usage
|
||||
<$button actions=<<ribbonCreateActions>> >
|
||||
<%if [[$:/github-ribbon]!is[tiddler]] %>
|
||||
Create
|
||||
<% else %>
|
||||
<%else%>
|
||||
Show
|
||||
<% endif %> ~$:/github-ribbon
|
||||
<%endif%> ~$:/github-ribbon
|
||||
</$button>
|
||||
\end
|
||||
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
title: $:/plugins/tiddlywiki/tour/filtered-action
|
||||
tags: $:/tags/FilteredActions
|
||||
filter: [{$:/config/ShowTour}!is[blank]else[show]match[show]then[$:/state/tour/step]get[text]get[step-success-filter]] :map[subfilter<currentTiddler>] :filter[<currentTiddler>!match[]]
|
||||
|
||||
\import [[$:/plugins/tiddlywiki/tour/variables]]
|
||||
<$action-sendmessage $message="tm-confetti-launch"/>
|
||||
<<tour-next-step>>
|
||||
@@ -48,6 +48,7 @@ tags: $:/tags/PageTemplate
|
||||
<$let tour-task="">
|
||||
<$transclude tiddler=<<currentTourStep>> mode="block"/>
|
||||
</$let>
|
||||
<$confetti/>
|
||||
<p>
|
||||
Congratulations, you may proceed
|
||||
</p>
|
||||
|
||||
@@ -75,12 +75,16 @@ input[type="search"] {
|
||||
outline-offset: initial;
|
||||
}
|
||||
|
||||
button, textarea, input, select {
|
||||
outline-color: <<colour primary>>;
|
||||
button:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible {
|
||||
outline: 2px solid <<colour primary>>;
|
||||
outline-offset: -2px;
|
||||
border-radius: 0.25em;
|
||||
}
|
||||
|
||||
:-moz-focusring {
|
||||
button:-moz-focusring, input:-moz-focusring, textarea:-moz-focusring, select:-moz-focusring {
|
||||
outline: 2px solid <<colour primary>>;
|
||||
outline-offset: -2px;
|
||||
border-radius: 0.25em;
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user