1
0
mirror of https://github.com/Jermolene/TiddlyWiki5 synced 2024-11-26 19:47:20 +00:00

Merge branch 'master' into multi-wiki-support

This commit is contained in:
Jeremy Ruston 2024-11-06 15:20:44 +00:00
commit ad901a9f50
143 changed files with 2820 additions and 510 deletions

View File

@ -5,7 +5,7 @@ on:
- master
- tiddlywiki-com
env:
NODE_VERSION: "18"
NODE_VERSION: "22"
jobs:
test:
runs-on: ubuntu-latest

View File

@ -97,7 +97,6 @@ if [ -n "$TW5_BUILD_ARCHIVE" ]; then
node $TW5_BUILD_TIDDLYWIKI \
$TW5_BUILD_MAIN_EDITION \
--verbose \
--version \
--load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_ARCHIVE \
@ -115,7 +114,6 @@ fi
node $TW5_BUILD_TIDDLYWIKI \
$TW5_BUILD_MAIN_EDITION \
--verbose \
--version \
--load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT \
@ -128,7 +126,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /tiddlywikicore-<version>.js Core plugin javascript
node $TW5_BUILD_TIDDLYWIKI \
./editions/empty \
--verbose \
--output $TW5_BUILD_OUTPUT \
--build empty emptyexternalcore \
|| exit 1
@ -137,7 +134,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /test.html Test edition
node $TW5_BUILD_TIDDLYWIKI \
./editions/test \
--verbose \
--output $TW5_BUILD_OUTPUT \
--rendertiddler $:/core/save/all test.html text/plain \
|| exit 1
@ -150,7 +146,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /dev/static/static.css Static stylesheet
node $TW5_BUILD_TIDDLYWIKI \
./editions/dev \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT/dev \
--build index favicon static \
@ -159,7 +154,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /tour.html tour edition
node $TW5_BUILD_TIDDLYWIKI \
./editions/tour \
--verbose \
--output $TW5_BUILD_OUTPUT \
--rendertiddler $:/core/save/all tour.html text/plain \
|| exit 1
@ -167,7 +161,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /share.html Custom edition for sharing via the URL
node $TW5_BUILD_TIDDLYWIKI \
./editions/share \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT \
--build share \
@ -176,7 +169,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /upgrade.html Custom edition for performing upgrades
node $TW5_BUILD_TIDDLYWIKI \
./editions/upgrade \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT \
--build upgrade \
@ -185,7 +177,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /encrypted.html Copy of the main file encrypted with the password "password"
node $TW5_BUILD_TIDDLYWIKI \
$TW5_BUILD_MAIN_EDITION \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT \
--build encrypted \
@ -201,7 +192,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /editions/xlsx-utils/index.html xlsx-utils edition
node $TW5_BUILD_TIDDLYWIKI \
./editions/xlsx-utils \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT/editions/xlsx-utils/ \
--build index \
@ -210,7 +200,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /editions/resumebuilder/index.html Resume builder edition
node $TW5_BUILD_TIDDLYWIKI \
./editions/resumebuilder \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT/editions/resumebuilder/ \
--build index \
@ -219,7 +208,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /editions/text-slicer/index.html Text slicer edition
node $TW5_BUILD_TIDDLYWIKI \
./editions/text-slicer \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT/editions/text-slicer/ \
--build index \
@ -228,7 +216,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /editions/translators/index.html Translators edition
node $TW5_BUILD_TIDDLYWIKI \
./editions/translators \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT/editions/translators/ \
--build index \
@ -237,7 +224,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /editions/introduction/index.html Introduction edition
node $TW5_BUILD_TIDDLYWIKI \
./editions/introduction \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT/editions/introduction/ \
--build index \
@ -246,7 +232,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /editions/full/index.html Full edition
node $TW5_BUILD_TIDDLYWIKI \
./editions/full \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT/editions/full/ \
--build index \
@ -255,7 +240,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /editions/tw5.com-docs/index.html tiddlywiki.com docs edition
node $TW5_BUILD_TIDDLYWIKI \
./editions/tw5.com-docs \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT/editions/tw5.com-docs/ \
--build index \
@ -264,7 +248,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /editions/twitter-archivist/index.html Twitter Archivist edition
node $TW5_BUILD_TIDDLYWIKI \
./editions/twitter-archivist \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT/editions/twitter-archivist/ \
--build index \
@ -280,7 +263,6 @@ node $TW5_BUILD_TIDDLYWIKI \
node $TW5_BUILD_TIDDLYWIKI \
./editions/innerwikidemo \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT \
--rendertiddler $:/core/save/all plugins/tiddlywiki/innerwiki/index.html text/plain \
@ -291,7 +273,6 @@ node $TW5_BUILD_TIDDLYWIKI \
node $TW5_BUILD_TIDDLYWIKI \
./editions/dynaviewdemo \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT \
--rendertiddler $:/core/save/all plugins/tiddlywiki/dynaview/index.html text/plain \
@ -306,7 +287,6 @@ node $TW5_BUILD_TIDDLYWIKI \
node $TW5_BUILD_TIDDLYWIKI \
./editions/katexdemo \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT \
--rendertiddler $:/core/save/all plugins/tiddlywiki/katex/index.html text/plain \
@ -317,7 +297,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /plugins/tiddlywiki/tahoelafs/empty.html Empty wiki with Tahoe-LAFS plugin
node $TW5_BUILD_TIDDLYWIKI \
./editions/tahoelafs \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT \
--rendertiddler $:/core/save/all plugins/tiddlywiki/tahoelafs/index.html text/plain \
@ -328,7 +307,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /plugins/tiddlywiki/d3/empty.html Empty wiki with D3 plugin
node $TW5_BUILD_TIDDLYWIKI \
./editions/d3demo \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT \
--rendertiddler $:/core/save/all plugins/tiddlywiki/d3/index.html text/plain \
@ -339,7 +317,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /plugins/tiddlywiki/codemirror/empty.html Empty wiki with codemirror plugin
node $TW5_BUILD_TIDDLYWIKI \
./editions/codemirrordemo \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT \
--rendertiddler $:/core/save/all plugins/tiddlywiki/codemirror/index.html text/plain \
@ -350,7 +327,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /plugins/tiddlywiki/markdown/empty.html Empty wiki with Markdown plugin
node $TW5_BUILD_TIDDLYWIKI \
./editions/markdowndemo \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT \
--rendertiddler $:/core/save/all plugins/tiddlywiki/markdown/index.html text/plain \
@ -361,7 +337,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /plugins/tiddlywiki/tw2parser/empty.html Empty wiki with tw2parser plugin
node $TW5_BUILD_TIDDLYWIKI \
./editions/classicparserdemo \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT \
--rendertiddler $:/core/save/all plugins/tiddlywiki/tw2parser/index.html text/plain \
@ -372,7 +347,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /plugins/tiddlywiki/highlight/empty.html Empty wiki with highlight plugin
node $TW5_BUILD_TIDDLYWIKI \
./editions/highlightdemo \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT \
--rendertiddler $:/core/save/all plugins/tiddlywiki/highlight/index.html text/plain \
@ -383,7 +357,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /plugins/tiddlywiki/geospatial/empty.html Empty wiki with geospatial plugin
node $TW5_BUILD_TIDDLYWIKI \
./editions/geospatialdemo \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT \
--rendertiddler $:/core/save/all plugins/tiddlywiki/geospatial/index.html text/plain \
@ -411,7 +384,6 @@ rm -rf $TW5_BUILD_OUTPUT/languages/zh-Hant/static/*
# /languages/de-AT/empty.html Empty wiki with de-AT language
node $TW5_BUILD_TIDDLYWIKI \
./editions/de-AT \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT/languages/de-AT \
--build favicon empty static index \
@ -421,7 +393,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /languages/de-DE/empty.html Empty wiki with de-DE language
node $TW5_BUILD_TIDDLYWIKI \
./editions/de-DE \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT/languages/de-DE \
--build favicon empty static index \
@ -431,7 +402,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /languages/es-ES/empty.html Empty wiki with es-ES language
node $TW5_BUILD_TIDDLYWIKI \
./editions/es-ES \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT/languages/es-ES \
--build favicon empty static index \
@ -441,7 +411,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /languages/fr-FR/empty.html Empty wiki with fr-FR language
node $TW5_BUILD_TIDDLYWIKI \
./editions/fr-FR \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT/languages/fr-FR \
--build favicon empty static index \
@ -451,7 +420,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /languages/ja-JP/empty.html Empty wiki with ja-JP language
node $TW5_BUILD_TIDDLYWIKI \
./editions/ja-JP \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT/languages/ja-JP \
--build empty index \
@ -461,7 +429,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /languages/ko-KR/empty.html Empty wiki with ko-KR language
node $TW5_BUILD_TIDDLYWIKI \
./editions/ko-KR \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT/languages/ko-KR \
--build favicon empty static index \
@ -471,7 +438,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /languages/zh-Hans/empty.html Empty wiki with zh-Hans language
node $TW5_BUILD_TIDDLYWIKI \
./editions/zh-Hans \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT/languages/zh-Hans \
--build empty index \
@ -481,7 +447,6 @@ node $TW5_BUILD_TIDDLYWIKI \
# /languages/zh-Hant/empty.html Empty wiki with zh-Hant language
node $TW5_BUILD_TIDDLYWIKI \
./editions/zh-Hant \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT/languages/zh-Hant \
--build empty index \
@ -495,7 +460,6 @@ node $TW5_BUILD_TIDDLYWIKI \
node $TW5_BUILD_TIDDLYWIKI \
./editions/pluginlibrary \
--verbose \
--load $TW5_BUILD_OUTPUT/build.tid \
--output $TW5_BUILD_OUTPUT/library/$TW5_BUILD_VERSION \
--build library\

View File

@ -175,6 +175,8 @@ Settings/NavigationPermalinkviewMode/UpdateAddressBar/Description: Update addres
Settings/PerformanceInstrumentation/Caption: Performance Instrumentation
Settings/PerformanceInstrumentation/Hint: Displays performance statistics in the browser developer console. Requires reload to take effect
Settings/PerformanceInstrumentation/Description: Enable performance instrumentation
Settings/RecentLimit/Caption: Recent Tab Limit
Settings/RecentLimit/Hint: Maximum number of tiddlers to be displayed under the sidebar "Recent" tab
Settings/ToolbarButtonStyle/Caption: Toolbar Button Style
Settings/ToolbarButtonStyle/Hint: Choose the style for toolbar buttons:
Settings/ToolbarButtonStyle/Styles/Borderless: Borderless

View File

@ -24,7 +24,7 @@ var Command = function(params,commander) {
Command.prototype.execute = function() {
// Get the build targets defined in the wiki
var buildTargets = $tw.boot.wikiInfo.build;
var buildTargets = $tw.boot.wikiInfo && $tw.boot.wikiInfo.build;
if(!buildTargets) {
return "No build targets defined";
}

View File

@ -56,36 +56,64 @@ Object.defineProperty(TW_TextNode.prototype, "formattedTextContent", {
}
});
var TW_Element = function(tag,namespace) {
var TW_Style = function(el) {
// Define the internal style object
var styleObject = {
// Method to get the entire style object
get: function() {
return el._style;
},
// Method to set styles using a string (e.g. "color:red; background-color:blue;")
set: function(str) {
var self = this;
str = str || "";
$tw.utils.each(str.split(";"),function(declaration) {
var parts = declaration.split(":"),
name = $tw.utils.trim(parts[0]),
value = $tw.utils.trim(parts[1]);
if(name && value) {
el._style[$tw.utils.convertStyleNameToPropertyName(name)] = value;
}
});
},
// Method to set a specific property without transforming the property name, such as a custom property
setProperty: function(name, value) {
el._style[name] = value;
}
};
// Return a Proxy to handle direct access to individual style properties
return new Proxy(styleObject, {
get: function(target, property) {
// If the property exists on styleObject, return it (get, set, setProperty methods)
if (property in target) {
return target[property];
}
// Otherwise, return the corresponding property from _style
return el._style[$tw.utils.convertStyleNameToPropertyName(property)] || "";
},
set: function(target, property, value) {
// Set the property in _style
el._style[$tw.utils.convertStyleNameToPropertyName(property)] = value;
return true;
}
});
};
var TW_Element = function(tag, namespace) {
bumpSequenceNumber(this);
this.isTiddlyWikiFakeDom = true;
this.tag = tag;
this.attributes = {};
this.isRaw = false;
this.children = [];
this._style = {};
this._style = {}; // Internal style object
this.style = new TW_Style(this); // Proxy for style management
this.namespaceURI = namespace || "http://www.w3.org/1999/xhtml";
};
Object.setPrototypeOf(TW_Element.prototype,TW_Node.prototype);
Object.defineProperty(TW_Element.prototype, "style", {
get: function() {
return this._style;
},
set: function(str) {
var self = this;
str = str || "";
$tw.utils.each(str.split(";"),function(declaration) {
var parts = declaration.split(":"),
name = $tw.utils.trim(parts[0]),
value = $tw.utils.trim(parts[1]);
if(name && value) {
self._style[$tw.utils.convertStyleNameToPropertyName(name)] = value;
}
});
}
});
Object.setPrototypeOf(TW_Element.prototype,TW_Node.prototype);
Object.defineProperty(TW_Element.prototype, "nodeType", {
get: function() {
@ -105,7 +133,7 @@ TW_Element.prototype.setAttribute = function(name,value) {
throw "Cannot setAttribute on a raw TW_Element";
}
if(name === "style") {
this.style = value;
this.style.set(value);
} else {
this.attributes[name] = value + "";
}

View File

@ -125,11 +125,23 @@ DroppableWidget.prototype.handleDropEvent = function(event) {
// Remove highlighting
$tw.utils.removeClass(this.domNodes[0],"tc-dragover");
// Try to import the various data types we understand
$tw.utils.importDataTransfer(dataTransfer,null,function(fieldsArray) {
fieldsArray.forEach(function(fields) {
self.performActions(fields.title || fields.text,event);
if(this.droppableActions) {
$tw.utils.importDataTransfer(dataTransfer,null,function(fieldsArray) {
fieldsArray.forEach(function(fields) {
self.performActions(fields.title || fields.text,event);
});
});
});
}
// Send a TitleList to performListActions
if(this.droppableListActions) {
$tw.utils.importDataTransfer(dataTransfer,null,function(fieldsArray) {
var titleList = [];
fieldsArray.forEach(function(fields) {
titleList.push(fields.title || fields.text);
});
self.performListActions($tw.utils.stringifyList(titleList),event);
});
}
// Tell the browser that we handled the drop
event.preventDefault();
// Stop the drop ripple up to any parent handlers
@ -137,6 +149,13 @@ DroppableWidget.prototype.handleDropEvent = function(event) {
return false;
};
DroppableWidget.prototype.performListActions = function(titleList,event) {
if(this.droppableListActions) {
var modifierKey = $tw.keyboardManager.getEventModifierKeyDescriptor(event);
this.invokeActionString(this.droppableListActions,this,event,{actionTiddlerList: titleList, modifier: modifierKey});
}
};
DroppableWidget.prototype.performActions = function(title,event) {
if(this.droppableActions) {
var modifierKey = $tw.keyboardManager.getEventModifierKeyDescriptor(event);
@ -149,6 +168,7 @@ Compute the internal state of the widget
*/
DroppableWidget.prototype.execute = function() {
this.droppableActions = this.getAttribute("actions");
this.droppableListActions = this.getAttribute("listActions");
this.droppableEffect = this.getAttribute("effect","copy");
this.droppableTag = this.getAttribute("tag");
this.droppableEnable = (this.getAttribute("enable") || "yes") === "yes";
@ -168,7 +188,8 @@ Selectively refreshes the widget if needed. Returns true if the widget or any of
*/
DroppableWidget.prototype.refresh = function(changedTiddlers) {
var changedAttributes = this.computeAttributes();
if(changedAttributes.tag || changedAttributes.enable || changedAttributes.disabledClass || changedAttributes.actions || changedAttributes.effect) {
if(changedAttributes.tag || changedAttributes.enable || changedAttributes.disabledClass ||
changedAttributes.actions|| changedAttributes.listActions || changedAttributes.effect) {
this.refreshSelf();
return true;
} else {

View File

@ -65,6 +65,16 @@ GenesisWidget.prototype.execute = function() {
children: this.parseTreeNode.children || [],
isNotRemappable: !this.genesisRemappable
}];
// Apply attributes in $names/$values
this.attributeNames = [];
this.attributeValues = [];
if(this.genesisNames && this.genesisValues) {
this.attributeNames = this.wiki.filterTiddlers(self.genesisNames,this);
this.attributeValues = this.wiki.filterTiddlers(self.genesisValues,this);
$tw.utils.each(this.attributeNames,function(varname,index) {
$tw.utils.addAttributeToParseTreeNode(parseTreeNodes[0],varname,self.attributeValues[index] || "");
});
}
// Apply explicit attributes
$tw.utils.each($tw.utils.getOrderedAttributesFromParseTreeNode(this.parseTreeNode),function(attribute) {
var name = attribute.name;
@ -79,16 +89,6 @@ GenesisWidget.prototype.execute = function() {
}
$tw.utils.addAttributeToParseTreeNode(parseTreeNodes[0],$tw.utils.extend({},attribute,{name: name}));
});
// Apply attributes in $names/$values
this.attributeNames = [];
this.attributeValues = [];
if(this.genesisNames && this.genesisValues) {
this.attributeNames = this.wiki.filterTiddlers(self.genesisNames,this);
this.attributeValues = this.wiki.filterTiddlers(self.genesisValues,this);
$tw.utils.each(this.attributeNames,function(varname,index) {
$tw.utils.addAttributeToParseTreeNode(parseTreeNodes[0],varname,self.attributeValues[index] || "");
});
}
// Construct the child widgets
this.makeChildWidgets(parseTreeNodes);
};

View File

@ -428,6 +428,11 @@ Widget.prototype.assignAttributes = function(domNode,options) {
destPrefix = options.destPrefix || "",
EVENT_ATTRIBUTE_PREFIX = "on";
var assignAttribute = function(name,value) {
// Process any CSS custom properties
if(name.substr(0,2) === "--" && name.length > 2) {
domNode.style.setProperty(name,value);
return;
}
// Process any style attributes before considering sourcePrefix and destPrefix
if(name.substr(0,6) === "style." && name.length > 6) {
domNode.style[$tw.utils.unHyphenateCss(name.substr(6))] = value;

View File

@ -0,0 +1,212 @@
color-scheme: dark
description: An inky color scheme for prose and code
name: FlexokiDark
tags: $:/tags/Palette
title: $:/palettes/FlexokiDark
type: application/x-tiddler-dictionary
flexoki-paper: #FFFCF0
flexoki-999: #100F0F
flexoki-950: #1C1B1A
flexoki-900: #282726
flexoki-850: #343331
flexoki-800: #403E3C
flexoki-700: #575653
flexoki-600: #6c6b66
flexoki-500: #878580
flexoki-300: #B7B5AC
flexoki-200: #CECDC3
flexoki-150: #DAD8CE
flexoki-100: #E6E4D9
flexoki-050: #F2F0E5
flexoki-red-600: #AF3029
flexoki-red-400: #D14D41
flexoki-orange-600: #BC5215
flexoki-orange-400: #DA702C
flexoki-yellow-900: #4D3A0B
flexoki-yellow-600: #AD8301
flexoki-yellow-400: #D0A215
flexoki-yellow-100: #FCEEB8
flexoki-green-600: #66800B
flexoki-green-400: #879A39
flexoki-cyan-950: #142625
flexoki-cyan-600: #227d77
flexoki-cyan-400: #3AA99F
flexoki-cyan-050: #EBF2E7
flexoki-blue-600: #205EA6
flexoki-blue-400: #4385BE
flexoki-purple-600: #5E409D
flexoki-purple-400: #8B7EC8
flexoki-magenta-600: #A02F6F
flexoki-magenta-400: #CE5D97
flexoki-bg: <<colour flexoki-999>>
flexoki-tx-2: <<colour flexoki-500>>
flexoki-tx-3: <<colour flexoki-700>>
flexoki-ui-3: <<colour flexoki-800>>
flexoki-ui-2: <<colour flexoki-850>>
flexoki-ui: <<colour flexoki-900>>
flexoki-bg-2: <<colour flexoki-950>>
flexoki-tx: <<colour flexoki-300>>
flexoki-re: <<colour flexoki-red-400>>
flexoki-or: <<colour flexoki-orange-400>>
flexoki-ye: <<colour flexoki-yellow-400>>
flexoki-gr: <<colour flexoki-green-400>>
flexoki-cy: <<colour flexoki-cyan-400>>
flexoki-bl: <<colour flexoki-blue-400>>
flexoki-pu: <<colour flexoki-purple-400>>
flexoki-ma: <<colour flexoki-magenta-400>>
flexoki-re-2: <<colour flexoki-red-600>>
flexoki-or-2: <<colour flexoki-orange-600>>
flexoki-ye-2: <<colour flexoki-yellow-600>>
flexoki-gr-2: <<colour flexoki-green-600>>
flexoki-cy-2: <<colour flexoki-cyan-600>>
flexoki-bl-2: <<colour flexoki-blue-600>>
flexoki-pu-2: <<colour flexoki-purple-600>>
flexoki-ma-2: <<colour flexoki-magenta-600>>
alert-background: <<colour flexoki-yellow-100>>
alert-border: <<colour flexoki-ye-2>>
alert-highlight: <<colour flexoki-re>>
alert-muted-foreground: <<colour flexoki-ye>>
background: #1C1B1A
blockquote-bar: <<colour flexoki-ma-2>>
button-background: <<colour flexoki-bg-2>>
button-foreground: <<colour flexoki-paper>>
button-border: <<colour flexoki-600>>
code-background: <<colour background>>
code-border: <<colour flexoki-tx>>
code-foreground: <<colour flexoki-tx>>
diff-delete-background: <<colour flexoki-re>>
diff-delete-foreground: <<colour flexoki-paper>>
diff-equal-background:
diff-equal-foreground: inherit
diff-insert-background: <<colour flexoki-gr>>
diff-insert-foreground: <<colour flexoki-paper>>
diff-invisible-background: <<colour flexoki-ye>>
diff-invisible-foreground: <<colour flexoki-paper>>
dirty-indicator: <<colour flexoki-re>>
download-background: <<colour flexoki-cy-2>>
download-foreground: <<colour background>>
dragger-background: <<colour background>>
dragger-foreground: <<colour foreground>>
dropdown-background: <<colour background>>
dropdown-border: <<colour flexoki-ui-3>>
dropdown-tab-background-selected: <<colour flexoki-ui>>
dropdown-tab-background: <<colour flexoki-ui-3>>
dropzone-background: <<colour flexoki-gr>>
external-link-background-hover: inherit
external-link-background-visited: inherit
external-link-background: inherit
external-link-foreground-hover: inherit
external-link-foreground-visited: <<colour flexoki-bl>>
external-link-foreground: <<colour flexoki-bl>>
footnote-target-background: <<colour flexoki-bg-2>>
foreground: #B7B5AC
highlight-background: #ffff00
highlight-foreground: #000000
menubar-background: <<colour primary>>
menubar-foreground: <<colour flexoki-paper>>
message-background: <<colour background>>
message-border: <<colour foreground>>
message-foreground: <<colour foreground>>
modal-backdrop: <<colour foreground>>
modal-background: <<colour background>>
modal-border: <<colour flexoki-ui-3>>
modal-footer-background: <<colour flexoki-ui-2>>
modal-footer-border: <<colour flexoki-ui-3>>
modal-header-border: <<colour flexoki-ui-3>>
muted-foreground: <<colour flexoki-tx-2>>
network-activity-foreground: <<colour flexoki-cy>>
notification-background: <<colour flexoki-ui-3>>
notification-border: <<colour flexoki-ui>>
page-background: <<colour flexoki-bg-2>>
pre-background: <<colour flexoki-ui-3>>
pre-border: <<colour flexoki-ui-2>>
primary: <<colour flexoki-cy>>
selection-background: #2b7b73
selection-foreground: <<colour flexoki-tx>>
select-tag-background: <<colour flexoki-bg>>
select-tag-foreground: <<colour flexoki-paper>>
sidebar-button-foreground: <<colour foreground>>
sidebar-controls-foreground-hover: <<colour flexoki-tx>>
sidebar-controls-foreground: <<colour flexoki-tx-3>>
sidebar-foreground-shadow: transparent
sidebar-foreground: <<colour flexoki-tx>>
sidebar-muted-foreground-hover: <<colour flexoki-tx>>
sidebar-muted-foreground: <<colour flexoki-tx-3>>
sidebar-tab-background-selected: <<colour flexoki-bg>>
sidebar-tab-background: <<colour flexoki-ui-2>>
sidebar-tab-border-selected: <<colour tab-border-selected>>
sidebar-tab-border: <<colour tab-border>>
sidebar-tab-divider: #e4e4e4
sidebar-tab-foreground-selected:
sidebar-tab-foreground: <<colour tab-foreground>>
sidebar-tiddler-link-foreground-hover: <<colour flexoki-tx>>
sidebar-tiddler-link-foreground: <<colour flexoki-tx-2>>
site-title-foreground: <<colour tiddler-title-foreground>>
stability-stable: <<colour flexoki-gr>>
stability-experimental: <<colour flexoki-ye>>
stability-deprecated: <<colour flexoki-re>>
stability-legacy: <<colour flexoki-bl>>
static-alert-foreground: #aaaaaa
tab-background-selected: <<colour background>>
tab-background: <<colour flexoki-bg-2>>
tab-border-selected: <<colour flexoki-ui-3>>
tab-border: <<colour flexoki-ui>>
tab-divider: <<colour flexoki-ui-2>>
tab-foreground-selected: <<colour tab-foreground>>
tab-foreground: <<colour flexoki-tx-2>>
table-border: <<colour flexoki-ui>>
table-footer-background: <<colour flexoki-ui>>
table-header-background: <<colour flexoki-ui>>
tag-background: #D0A215
tag-foreground: #100F0F
testcase-accent-level-1: <<colour flexoki-bl-2>>
testcase-accent-level-2: <<colour flexoki-ye-2>>
testcase-accent-level-3: <<colour flexoki-gr-2>>
tiddler-background: <<colour background>>
tiddler-border: <<colour flexoki-ui-2>>
tiddler-controls-foreground-hover: <<colour flexoki-tx-3>>
tiddler-controls-foreground-selected: <<colour flexoki-tx-2>>
tiddler-controls-foreground: <<colour flexoki-ui-2>>
tiddler-editor-background: <<colour flexoki-bg-2>>
tiddler-editor-border-image: #ffffff
tiddler-editor-border: <<colour flexoki-ui-2>>
tiddler-editor-fields-even: <<colour flexoki-ui-3>>
tiddler-editor-fields-odd: <<colour flexoki-ui-2>>
tiddler-info-background: <<colour flexoki-ui>>
tiddler-info-border: <<colour flexoki-ui>>
tiddler-info-tab-background: <<colour flexoki-ui>>
tiddler-link-background: <<colour background>>
tiddler-link-foreground: <<colour primary>>
tiddler-subtitle-foreground: <<colour flexoki-tx-3>>
tiddler-title-foreground: <<colour flexoki-ma>>
toolbar-new-button:
toolbar-options-button:
toolbar-save-button:
toolbar-info-button:
toolbar-edit-button:
toolbar-close-button:
toolbar-delete-button:
toolbar-cancel-button:
toolbar-done-button:
untagged-background: #999999
very-muted-foreground: <<colour flexoki-600>>
wikilist-background: #e5e5e5
wikilist-item: #fff
wikilist-info: #000
wikilist-title: #666
wikilist-title-svg: <<colour wikilist-title>>
wikilist-url: #aaa
wikilist-button-open: #4fb82b
wikilist-button-open-hover: green
wikilist-button-reveal: #5778d8
wikilist-button-reveal-hover: blue
wikilist-button-remove: #d85778
wikilist-button-remove-hover: red
wikilist-toolbar-background: #d3d3d3
wikilist-toolbar-foreground: #888
wikilist-droplink-dragover: rgba(255,192,192,0.5)
wikilist-button-background: #acacac
wikilist-button-foreground: #000

View File

@ -0,0 +1,214 @@
title: $:/palettes/FlexokiLight
name: FlexokiLight
description: An inky color scheme for prose and code
tags: $:/tags/Palette
type: application/x-tiddler-dictionary
color-scheme: light
flexoki-black: #100F0F
flexoki-paper: #FFFCF0
flexoki-950: #1C1B1A
flexoki-900: #282726
flexoki-850: #343331
flexoki-800: #403E3C
flexoki-700: #575653
flexoki-600: #6F6E69
flexoki-500: #878580
flexoki-300: #B7B5AC
flexoki-200: #CECDC3
flexoki-150: #DAD8CE
flexoki-100: #E6E4D9
flexoki-050: #F2F0E5
flexoki-red-600: #AF3029
flexoki-red-400: #D14D41
flexoki-orange-600: #BC5215
flexoki-orange-400: #DA702C
flexoki-yellow-900: #4D3A0B
flexoki-yellow-600: #AD8301
flexoki-yellow-400: #D0A215
flexoki-yellow-100: #FCEEB8
flexoki-green-600: #66800B
flexoki-green-400: #879A39
flexoki-cyan-950: #142625
flexoki-cyan-600: #24837B
flexoki-cyan-400: #3AA99F
flexoki-cyan-050: #EBF2E7
flexoki-blue-600: #205EA6
flexoki-blue-400: #4385BE
flexoki-purple-600: #5E409D
flexoki-purple-400: #8B7EC8
flexoki-magenta-600: #A02F6F
flexoki-magenta-400: #CE5D97
flexoki-tx: <<colour flexoki-black>>
flexoki-tx-2: <<colour flexoki-600>>
flexoki-tx-3: <<colour flexoki-300>>
flexoki-ui-3: <<colour flexoki-200>>
flexoki-ui-2: <<colour flexoki-150>>
flexoki-ui: <<colour flexoki-100>>
flexoki-bg-2: <<colour flexoki-050>>
flexoki-bg: <<colour flexoki-paper>>
flexoki-re: <<colour flexoki-red-400>>
flexoki-or: <<colour flexoki-orange-400>>
flexoki-ye: <<colour flexoki-yellow-400>>
flexoki-gr: <<colour flexoki-green-400>>
flexoki-cy: <<colour flexoki-cyan-400>>
flexoki-bl: <<colour flexoki-blue-400>>
flexoki-pu: <<colour flexoki-purple-400>>
flexoki-ma: <<colour flexoki-magenta-400>>
flexoki-re-2: <<colour flexoki-red-600>>
flexoki-or-2: <<colour flexoki-orange-600>>
flexoki-ye-2: <<colour flexoki-yellow-600>>
flexoki-gr-2: <<colour flexoki-green-600>>
flexoki-cy-2: <<colour flexoki-cyan-600>>
flexoki-bl-2: <<colour flexoki-blue-600>>
flexoki-pu-2: <<colour flexoki-purple-600>>
flexoki-ma-2: <<colour flexoki-magenta-600>>
alert-background: <<colour flexoki-yellow-100>>
alert-border: <<colour flexoki-ye-2>>
alert-highlight: <<colour flexoki-re-2>>
alert-muted-foreground: <<colour flexoki-tx-2>>
background: #FFFCF0
blockquote-bar: <<colour flexoki-magenta-600>>
button-background: <<colour flexoki-bg-2>>
button-foreground: <<colour flexoki-black>>
button-border: <<colour flexoki-500>>
code-background: <<colour flexoki-bg>>
code-border: <<colour flexoki-tx>>
code-foreground: <<colour flexoki-tx>>
diff-delete-background: <<colour flexoki-re-2>>
diff-delete-foreground: <<colour flexoki-paper>>
diff-equal-background:
diff-equal-foreground: <<colour foreground>>
diff-insert-background: <<colour flexoki-gr-2>>
diff-insert-foreground: <<colour flexoki-paper>>
diff-invisible-background: <<colour flexoki-ye-2>>
diff-invisible-foreground: <<colour flexoki-paper>>
dirty-indicator: <<colour flexoki-red-600>>
download-background: <<colour flexoki-gr>>
download-foreground: <<colour background>>
dragger-background: <<colour foreground>>
dragger-foreground: <<colour background>>
dropdown-background: <<colour background>>
dropdown-border: <<colour muted-foreground>>
dropdown-tab-background-selected: #fff
dropdown-tab-background: #ececec
dropzone-background: <<colour flexoki-gr>>
external-link-background-hover: inherit
external-link-background-visited: inherit
external-link-background: inherit
external-link-foreground-hover: inherit
external-link-foreground-visited: <<colour flexoki-bl>>
external-link-foreground: <<colour flexoki-bl>>
footnote-target-background: <<colour flexoki-bg-2>>
foreground: #100F0F
highlight-background: #ffff00
highlight-foreground: #000000
menubar-background: <<colour primary>>
menubar-foreground: <<colour flexoki-paper>>
message-background: <<colour flexoki-bg>>
message-border: <<colour flexoki-black>>
message-foreground: <<colour flexoki-black>>
modal-backdrop: <<colour foreground>>
modal-background: <<colour background>>
modal-border: #999999
modal-footer-background: #f5f5f5
modal-footer-border: #dddddd
modal-header-border: #eeeeee
muted-foreground: <<colour flexoki-500>>
network-activity-foreground: <<colour flexoki-cy-2>>
notification-background: <<colour flexoki-bg>>
notification-border: <<color flexoki-black>>
page-background: <<colour flexoki-bg-2>>
pre-background: <<colour flexoki-bg>>
pre-border: <<colour flexoki-ui-2>>
primary: <<colour flexoki-cy>>
selection-background:
selection-foreground:
select-tag-background: <<colour flexoki-bg>>
select-tag-foreground: <<color flexoki-black>>
sidebar-button-foreground: <<colour foreground>>
sidebar-controls-foreground-hover: <<colour flexoki-tx>>
sidebar-controls-foreground: <<colour flexoki-tx-3>>
sidebar-foreground-shadow: rgba(255,255,255, 0.8)
sidebar-foreground: <<colour flexoki-300>>
sidebar-muted-foreground-hover: <<colour flexoki-700>>
sidebar-muted-foreground: <<colour flexoki-200>>
sidebar-tab-background-selected: <<colour flexoki-bg-2>>
sidebar-tab-background: <<colour flexoki-ui>>
sidebar-tab-border-selected: <<colour tab-border-selected>>
sidebar-tab-border: <<colour tab-border>>
sidebar-tab-divider: <<colour flexoki-100>>
sidebar-tab-foreground-selected:
sidebar-tab-foreground: <<colour tab-foreground>>
sidebar-tiddler-link-foreground-hover: <<colour flexoki-500>>
sidebar-tiddler-link-foreground: <<colour flexoki-700>>
site-title-foreground: <<colour tiddler-title-foreground>>
stability-stable: <<colour flexoki-green-600>>
stability-experimental: <<colour flexoki-yellow-600>>
stability-deprecated: <<colour flexoki-red-600>>
stability-legacy: <<colour flexoki-blue-600>>
static-alert-foreground: <<colour flexoki-tx-3>>
tab-background-selected: <<colour background>>
tab-background: <<colour flexoki-bg-2>>
tab-border-selected: <<colour flexoki-ui-3>>
tab-border: <<colour flexoki-ui>>
tab-divider: <<colour flexoki-ui-2>>
tab-foreground-selected: <<colour tab-foreground>>
tab-foreground: <<colour flexoki-tx>>
table-border: <<colour flexoki-ui-2>>
table-footer-background: <<colour flexoki-tx-3>>
table-header-background: <<colour flexoki-bg-2>>
tag-background: #AD8301
tag-foreground: #FFFCF0
testcase-accent-level-1: <<colour flexoki-blue-400>>
testcase-accent-level-2: <<colour flexoki-yellow-400>>
testcase-accent-level-3: <<colour flexoki-green-400>>
tiddler-background: <<colour background>>
tiddler-border: <<colour background>>
tiddler-controls-foreground-hover: <<colour flexoki-tx-3>>
tiddler-controls-foreground-selected: <<colour flexoki-tx-2>>
tiddler-controls-foreground: <<colour flexoki-ui-3>>
tiddler-editor-background: <<colour flexoki-bg-2>>
tiddler-editor-border-image: #ffffff
tiddler-editor-border: <<colour flexoki-ui-2>>
tiddler-editor-fields-even: <<colour flexoki-ui-3>>
tiddler-editor-fields-odd: <<colour flexoki-ui-2>>
tiddler-info-background: <<colour flexoki-bg-2>>
tiddler-info-border: <<colour flexoki-200>>
tiddler-info-tab-background: <<colour flexoki-bg>>
tiddler-link-background: <<colour background>>
tiddler-link-foreground: <<colour primary>>
tiddler-subtitle-foreground: <<colour flexoki-black>>
tiddler-title-foreground: <<colour flexoki-magenta-600>>
toolbar-new-button:
toolbar-options-button:
toolbar-save-button:
toolbar-info-button:
toolbar-edit-button:
toolbar-close-button:
toolbar-delete-button:
toolbar-cancel-button:
toolbar-done-button:
untagged-background: #999999
very-muted-foreground: #888888
wikilist-background: <<colour flexoki-ui>>
wikilist-item: #fff
wikilist-info: #000
wikilist-title: #666
wikilist-title-svg: <<colour wikilist-title>>
wikilist-url: #aaa
wikilist-button-open: #4fb82b
wikilist-button-open-hover: green
wikilist-button-reveal: #5778d8
wikilist-button-reveal-hover: blue
wikilist-button-remove: #d85778
wikilist-button-remove-hover: red
wikilist-toolbar-background: #d3d3d3
wikilist-toolbar-foreground: #888
wikilist-droplink-dragover: rgba(255,192,192,0.5)
wikilist-button-background: #acacac
wikilist-button-foreground: #000

View File

@ -2,18 +2,28 @@ title: $:/core/ui/AdvancedSearch/Filter
tags: $:/tags/AdvancedSearch
caption: {{$:/language/Search/Filter/Caption}}
\define lingo-base() $:/language/Search/
\define set-next-input-tab(beforeafter:"after")
<$macrocall $name="change-input-tab"
\procedure lingo-base() $:/language/Search/
\procedure set-next-input-tab()
<$transclude $variable="change-input-tab"
stateTitle="$:/state/tab--1498284803"
tag="$:/tags/AdvancedSearch"
beforeafter="$beforeafter$"
beforeafter="after"
defaultState="$:/core/ui/AdvancedSearch/System"
actions="<$action-setfield $tiddler='$:/state/advancedsearch/currentTab' text=<<nextTab>>/>"
/>
\end
\define cancel-search-actions()
\procedure set-previous-input-tab()
<$transclude $variable="change-input-tab"
stateTitle="$:/state/tab--1498284803"
tag="$:/tags/AdvancedSearch"
beforeafter="before"
defaultState="$:/core/ui/AdvancedSearch/System"
actions="<$action-setfield $tiddler='$:/state/advancedsearch/currentTab' text=<<nextTab>>/>"
/>
\end
\procedure cancel-search-actions()
\whitespace trim
<$list filter="[{$:/temp/advancedsearch/input}!match{$:/temp/advancedsearch}]">
<$list-empty>
@ -24,30 +34,30 @@ caption: {{$:/language/Search/Filter/Caption}}
</$list>
\end
\define input-accept-actions()
\procedure input-accept-actions()
\whitespace trim
<$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 filter="[<tiddler>get[text]!is[missing]] :else[<tiddler>get[text]is[shadow]]">
<$action-navigate $to={{{ [<tiddler>get[text]] }}}/>
</$list>
<$/list-empty>
<$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/>
<$action-navigate $to={{{ [<tiddler>get[text]] }}}/>
</$list>
\end
\define input-accept-variant-actions()
\procedure input-accept-variant-actions()
\whitespace trim
<$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]!is[missing]] :else[<tiddler>get[text]is[shadow]]">
<$list filter="[<__tiddler__>get[text]minlength[1]]">
<$action-sendmessage $message="tm-edit-tiddler" $param={{{ [<__tiddler__>get[text]] }}}/>
<$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 filter="[<tiddler>get[text]minlength[1]]">
<$action-sendmessage $message="tm-edit-tiddler" $param={{{ [<tiddler>get[text]] }}}/>
</$list>
</$list>
\end
@ -58,8 +68,8 @@ caption: {{$:/language/Search/Filter/Caption}}
<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"
<$keyboard key="((input-tab-left))" actions=<<set-previous-input-tab>>>
<$transclude $variable="keyboard-driven-input"
tiddler="$:/temp/advancedsearch/input"
storeTitle="$:/temp/advancedsearch"
refreshTitle="$:/temp/advancedsearch/refresh"
@ -84,7 +94,7 @@ caption: {{$:/language/Search/Filter/Caption}}
<$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]] }}}>
<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[[$:/temp/advancedsearch/selected-item]get[text]] :and[then[]else[tc-list-item-selected]] }}}>
<$transclude tiddler="$:/core/ui/ListItemTemplate"/>
</span>
</$list>

View File

@ -3,18 +3,27 @@ tags: $:/tags/AdvancedSearch
caption: {{$:/language/Search/Shadows/Caption}}
first-search-filter: [all[shadows]search<userInput>sort[title]limit[250]] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]]
\define lingo-base() $:/language/Search/
\procedure lingo-base() $:/language/Search/
\define set-next-input-tab(beforeafter:"after")
<$macrocall $name="change-input-tab"
\procedure set-next-input-tab()
<$transclude $variable="change-input-tab"
stateTitle="$:/state/tab--1498284803"
tag="$:/tags/AdvancedSearch"
beforeafter="$beforeafter$"
beforeafter="after"
defaultState="$:/core/ui/AdvancedSearch/System"
actions="<$action-setfield $tiddler='$:/state/advancedsearch/currentTab' text=<<nextTab>>/>"/>
\end
\define cancel-search-actions()
\procedure set-previous-input-tab()
<$transclude $variable="change-input-tab"
stateTitle="$:/state/tab--1498284803"
tag="$:/tags/AdvancedSearch"
beforeafter="before"
defaultState="$:/core/ui/AdvancedSearch/System"
actions="<$action-setfield $tiddler='$:/state/advancedsearch/currentTab' text=<<nextTab>>/>"/>
\end
\procedure cancel-search-actions()
\whitespace trim
<$list
filter="[{$:/temp/advancedsearch}!match{$:/temp/advancedsearch/input}]"
@ -25,22 +34,22 @@ first-search-filter: [all[shadows]search<userInput>sort[title]limit[250]] -[[$:/
<$action-sendmessage $message="tm-focus-selector" $param=".tc-advanced-search input"/>
\end
\define input-accept-actions()
\procedure 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>">
<$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/>
emptyMessage="<$list filter='[<tiddler>get[text]!is[missing]] :else[<tiddler>get[text]is[shadow]]'><$action-navigate $to={{{ [<tiddler>get[text]] }}}/></$list>">
<$action-navigate $to={{{ [<tiddler>get[text]] }}}/>
</$list>
\end
\define input-accept-variant-actions()
\procedure 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="[<__tiddler__>get[text]minlength[1]]">
<$action-sendmessage $message="tm-edit-tiddler" $param={{{ [<__tiddler__>get[text]] }}}/>
emptyMessage="<$list filter='[<tiddler>get[text]!is[missing]] :else[<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="[<tiddler>get[text]minlength[1]]">
<$action-sendmessage $message="tm-edit-tiddler" $param={{{ [<tiddler>get[text]] }}}/>
</$list></$list>
\end
@ -50,8 +59,8 @@ first-search-filter: [all[shadows]search<userInput>sort[title]limit[250]] -[[$:/
<div class="tc-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"
<$keyboard key="((input-tab-left))" actions=<<set-previous-input-tab>>>
<$transclude $variable="keyboard-driven-input"
tiddler="$:/temp/advancedsearch/input"
storeTitle="$:/temp/advancedsearch"
refreshTitle="$:/temp/advancedsearch/refresh"
@ -79,7 +88,7 @@ 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={{{ [all[shadows]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]] +[count[]]}}}>
<$set name="resultCount" value={{{ [all[shadows]search{$:/temp/advancedsearch}] :except[[$:/temp/advancedsearch]] :except[[$:/temp/advancedsearch/input]] :and[count[]]}}}>
<div class="tc-search-results">
@ -89,8 +98,8 @@ first-search-filter: [all[shadows]search<userInput>sort[title]limit[250]] -[[$:/
<<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]] }}}>
<$list filter="[all[shadows]search{$:/temp/advancedsearch}sort[title]limit[250]] :except[[$:/temp/advancedsearch]] :except[[$:/temp/advancedsearch/input]]">
<span class={{{[<currentTiddler>addsuffix[-primaryList]] :except[[$:/temp/advancedsearch/selected-item]get[text]] :and[then[]else[tc-list-item-selected]] }}}>
<$transclude tiddler="$:/core/ui/ListItemTemplate"/>
</span>
</$list>

View File

@ -2,16 +2,20 @@ title: $:/core/ui/AdvancedSearch/Standard
tags: $:/tags/AdvancedSearch
caption: {{$:/language/Search/Standard/Caption}}
\define lingo-base() $:/language/Search/
\define set-next-input-tab(beforeafter:"after") <$macrocall $name="change-input-tab" stateTitle="$:/state/tab--1498284803" tag="$:/tags/AdvancedSearch" beforeafter="$beforeafter$" defaultState="$:/core/ui/AdvancedSearch/System" actions="<$action-setfield $tiddler='$:/state/advancedsearch/currentTab' text=<<nextTab>>/>"/>
\procedure lingo-base() $:/language/Search/
\procedure set-next-input-tab() <$transclude $variable="change-input-tab" stateTitle="$:/state/tab--1498284803" tag="$:/tags/AdvancedSearch" beforeafter="after" defaultState="$:/core/ui/AdvancedSearch/System" actions="<$action-setfield $tiddler='$:/state/advancedsearch/currentTab' text=<<nextTab>>/>"/>
\define next-search-tab(beforeafter:"after") <$macrocall $name="change-input-tab" stateTitle="$:/state/tab/search-results/advancedsearch" tag="$:/tags/SearchResults" beforeafter="$beforeafter$" defaultState={{$:/config/SearchResults/Default}} actions="<$action-setfield $tiddler='$:/state/advancedsearch/standard/currentTab' text=<<nextTab>>/>"/>
\procedure set-previous-input-tab() <$transclude $variable="change-input-tab" stateTitle="$:/state/tab--1498284803" tag="$:/tags/AdvancedSearch" beforeafter="before" defaultState="$:/core/ui/AdvancedSearch/System" actions="<$action-setfield $tiddler='$:/state/advancedsearch/currentTab' text=<<nextTab>>/>"/>
\define cancel-search-actions() <$list filter="[{$:/temp/advancedsearch}!match{$:/temp/advancedsearch/input}]" emptyMessage="<$action-deletetiddler $filter='[[$:/temp/advancedsearch]] [[$:/temp/advancedsearch/input]] [[$:/temp/advancedsearch/selected-item]]' />"><$action-setfield $tiddler="$:/temp/advancedsearch/input" text={{$:/temp/advancedsearch}}/><$action-setfield $tiddler="$:/temp/advancedsearch/refresh" text="yes"/></$list><$action-sendmessage $message="tm-focus-selector" $param=".tc-advanced-search input"/>
\procedure next-search-tab() <$transclude $variable="change-input-tab" stateTitle="$:/state/tab/search-results/advancedsearch" tag="$:/tags/SearchResults" beforeafter="after" defaultState={{$:/config/SearchResults/Default}} actions="<$action-setfield $tiddler='$:/state/advancedsearch/standard/currentTab' text=<<nextTab>>/>"/>
\define input-accept-actions() <$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>"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>
\procedure previous-search-tab() <$transclude $variable="change-input-tab" stateTitle="$:/state/tab/search-results/advancedsearch" tag="$:/tags/SearchResults" beforeafter="before" defaultState={{$:/config/SearchResults/Default}} actions="<$action-setfield $tiddler='$:/state/advancedsearch/standard/currentTab' text=<<nextTab>>/>"/>
\define input-accept-variant-actions() <$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="[<__tiddler__>get[text]minlength[1]]"><$action-sendmessage $message="tm-edit-tiddler" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>
\procedure cancel-search-actions() <$list filter="[{$:/temp/advancedsearch}!match{$:/temp/advancedsearch/input}]" emptyMessage="<$action-deletetiddler $filter='[[$:/temp/advancedsearch]] [[$:/temp/advancedsearch/input]] [[$:/temp/advancedsearch/selected-item]]' />"><$action-setfield $tiddler="$:/temp/advancedsearch/input" text={{$:/temp/advancedsearch}}/><$action-setfield $tiddler="$:/temp/advancedsearch/refresh" text="yes"/></$list><$action-sendmessage $message="tm-focus-selector" $param=".tc-advanced-search input"/>
\procedure input-accept-actions() <$list filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]" emptyMessage="<$list filter='[<tiddler>get[text]!is[missing]] :else[<tiddler>get[text]is[shadow]]'><$action-navigate $to={{{ [<tiddler>get[text]] }}}/></$list>"><$action-navigate $to={{{ [<tiddler>get[text]] }}}/></$list>
\procedure input-accept-variant-actions() <$list filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]" emptyMessage="<$list filter='[<tiddler>get[text]!is[missing]] :else[<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="[<tiddler>get[text]minlength[1]]"><$action-sendmessage $message="tm-edit-tiddler" $param={{{ [<tiddler>get[text]] }}}/></$list></$list>
\whitespace trim
@ -19,10 +23,10 @@ caption: {{$:/language/Search/Standard/Caption}}
<div class="tc-search">
<$keyboard key="((input-tab-right))" actions=<<set-next-input-tab>>>
<$keyboard key="((input-tab-left))" actions=<<set-next-input-tab "before">>>
<$keyboard key="((input-tab-left))" actions=<<set-previous-input-tab>>>
<$keyboard key="shift-alt-Right" actions=<<next-search-tab>>>
<$keyboard key="shift-alt-Left" actions=<<next-search-tab "before">>>
<$macrocall $name="keyboard-driven-input"
<$keyboard key="shift-alt-Left" actions=<<previous-search-tab>>>
<$transclude $variable="keyboard-driven-input"
tiddler="$:/temp/advancedsearch/input"
storeTitle="$:/temp/advancedsearch"
refreshTitle="$:/temp/advancedsearch/refresh"
@ -33,7 +37,7 @@ caption: {{$:/language/Search/Standard/Caption}}
inputCancelActions=<<cancel-search-actions>>
inputAcceptActions=<<input-accept-actions>>
inputAcceptVariantActions=<<input-accept-variant-actions>>
configTiddlerFilter="[[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}]"
configTiddlerFilter="[[$:/state/search/currentTab]!is[missing]get[text]] :else[{$:/config/SearchResults/Default}]"
filterMinLength={{$:/config/Search/MinLength}}/>
</$keyboard>
</$keyboard>
@ -55,13 +59,13 @@ caption: {{$:/language/Search/Standard/Caption}}
variable="listItem">
<$vars
userInput={{{ [[$:/temp/advancedsearch]get[text]] }}}
configTiddler={{{ [[$:/state/advancedsearch/standard/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}] }}}
configTiddler={{{ [[$:/state/advancedsearch/standard/currentTab]!is[missing]get[text]] :else[{$:/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"
<$transclude $variable="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>>/>"

View File

@ -1,19 +1,28 @@
title: $:/core/ui/AdvancedSearch/System
tags: $:/tags/AdvancedSearch
caption: {{$:/language/Search/System/Caption}}
first-search-filter: [is[system]search<userInput>sort[title]limit[250]] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]] -[[$:/temp/advancedsearch/selected-item]]
first-search-filter: [is[system]search<userInput>sort[title]limit[250]] :except[[$:/temp/advancedsearch]] :except[[$:/temp/advancedsearch/input]] :except[[$:/temp/advancedsearch/selected-item]]
\define lingo-base() $:/language/Search/
\define set-next-input-tab(beforeafter:"after",stateTitle,tag,defaultState,currentTabTiddler)
<$macrocall $name="change-input-tab"
\procedure lingo-base() $:/language/Search/
\procedure set-next-input-tab()
<$transclude $variable="change-input-tab"
stateTitle="$:/state/tab--1498284803"
tag="$:/tags/AdvancedSearch"
beforeafter="$beforeafter$"
beforeafter="after"
defaultState="$:/core/ui/AdvancedSearch/System"
actions="<$action-setfield $tiddler='$:/state/advancedsearch/currentTab' text=<<nextTab>>/>"/>
\end
\define cancel-search-actions()
\procedure set-previous-input-tab()
<$transclude $variable="change-input-tab"
stateTitle="$:/state/tab--1498284803"
tag="$:/tags/AdvancedSearch"
beforeafter="before"
defaultState="$:/core/ui/AdvancedSearch/System"
actions="<$action-setfield $tiddler='$:/state/advancedsearch/currentTab' text=<<nextTab>>/>"/>
\end
\procedure cancel-search-actions()
\whitespace trim
<$list
filter="[{$:/temp/advancedsearch}!match{$:/temp/advancedsearch/input}]"
@ -24,22 +33,22 @@ first-search-filter: [is[system]search<userInput>sort[title]limit[250]] -[[$:/te
<$action-sendmessage $message="tm-focus-selector" $param=".tc-advanced-search input"/>
\end
\define input-accept-actions()
\procedure 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>">
<$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/>
emptyMessage="<$list filter='[<tiddler>get[text]!is[missing]] :else[<tiddler>get[text]is[shadow]]'><$action-navigate $to={{{ [<tiddler>get[text]] }}}/></$list>">
<$action-navigate $to={{{ [<tiddler>get[text]] }}}/>
</$list>
\end
\define input-accept-variant-actions()
\procedure 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="[<__tiddler__>get[text]minlength[1]]">
<$action-sendmessage $message="tm-edit-tiddler" $param={{{ [<__tiddler__>get[text]] }}}/>
emptyMessage="<$list filter='[<tiddler>get[text]!is[missing]] :else[<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="[<tiddler>get[text]minlength[1]]">
<$action-sendmessage $message="tm-edit-tiddler" $param={{{ [<tiddler>get[text]] }}}/>
</$list></$list>
\end
@ -49,8 +58,8 @@ first-search-filter: [is[system]search<userInput>sort[title]limit[250]] -[[$:/te
<div class="tc-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"
<$keyboard key="((input-tab-left))" actions=<<set-previous-input-tab>>>
<$transclude $variable="keyboard-driven-input"
tiddler="$:/temp/advancedsearch/input"
storeTitle="$:/temp/advancedsearch"
refreshTitle="$:/temp/advancedsearch/refresh"
@ -78,7 +87,7 @@ 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={{{ [is[system]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]] -[[$:/temp/advancedsearch/selected-item]] +[count[]] }}}>
<$set name="resultCount" value={{{ [is[system]search{$:/temp/advancedsearch}] :except[[$:/temp/advancedsearch]] :except[[$:/temp/advancedsearch/input]] :except[[$:/temp/advancedsearch/selected-item]] +[count[]] }}}>
<div class="tc-search-results">
@ -88,8 +97,8 @@ first-search-filter: [is[system]search<userInput>sort[title]limit[250]] -[[$:/te
<<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]] }}}>
<$list filter="[is[system]search{$:/temp/advancedsearch}sort[title]limit[250]] :except[[$:/temp/advancedsearch]] :except[[$:/temp/advancedsearch/input]] :except[[$:/temp/advancedsearch/selected-item]]">
<span class={{{[<currentTiddler>addsuffix[-primaryList]] :except[[$:/temp/advancedsearch/selected-item]get[text]] :and[then[]else[tc-list-item-selected]] }}}>
<$transclude tiddler="$:/core/ui/ListItemTemplate"/>
</span>
</$list>

View File

@ -0,0 +1,10 @@
title: $:/core/ui/ControlPanel/Settings/RecentLimit
tags: $:/tags/ControlPanel/Settings
caption: {{$:/language/ControlPanel/Settings/RecentLimit/Caption}}
\whitespace trim
\procedure lingo-base() $:/language/ControlPanel/Settings/RecentLimit/
<<lingo Hint>>
|tc-table-no-border|k
|<$link to="$:/config/RecentLimit"><<lingo Caption>></$link> |<$edit-text tiddler="$:/config/RecentLimit" tag="input" type="number"/> |

View File

@ -1,35 +1,32 @@
title: $:/core/ui/EditTemplate/fields
tags: $:/tags/EditTemplate
\define lingo-base() $:/language/EditTemplate/
\define config-title()
$:/config/EditTemplateFields/Visibility/$(currentField)$
\end
\procedure lingo-base() $:/language/EditTemplate/
\function tf.config-title() [[$:/config/EditTemplateFields/Visibility/]addsuffix[$(currentField)$]substitute[]get[text]]
\define config-filter()
[[hide]] -[title{$(config-title)$}]
\end
\function tf.config-filter() [[hide]] :except[title<tf.config-title>]
<!-- Beware this is duplicated from EditTemplate.tid. For details see bug #7054 -->
\define get-field-value-tiddler-filter() [subfilter<get-field-editor-filter>sha256[16]addprefix[/]addprefix<newFieldValueTiddlerPrefix>]
\define get-field-editor-filter() [<newFieldNameTiddler>get[text]else[]] :cascade[all[shadows+tiddlers]tag[$:/tags/FieldEditorFilter]!is[draft]get[text]] :and[!is[blank]else{$:/core/ui/EditTemplate/fieldEditor/default}]
\procedure get-field-value-tiddler-filter() [subfilter<get-field-editor-filter>sha256[16]addprefix[/]addprefix<newFieldValueTiddlerPrefix>]
\procedure get-field-editor-filter() [<newFieldNameTiddler>get[text]else[]] :cascade[all[shadows+tiddlers]tag[$:/tags/FieldEditorFilter]!is[draft]get[text]] :and[!is[blank]else{$:/core/ui/EditTemplate/fieldEditor/default}]
\define current-tiddler-new-field-selector()
[data-tiddler-title="$(currentTiddlerCSSescaped)$"] .tc-edit-field-add-name-wrapper input
\end
\procedure prefix.bracket() [
\procedure suffix.bracket() ]
\define new-field-actions()
\function tf.current-tiddler-new-field-selector() [[data-tiddler-title=]addprefix[$(prefix.bracket)$]substitute[]addsuffix<currentTiddlerCSSescaped>addsuffix[$(suffix.bracket)$]substitute[]] .tc-edit-field-add-name-wrapper input :and[join[ ]]
\procedure new-field-actions()
\whitespace trim
<$action-sendmessage $message="tm-add-field" $name={{{ [<newFieldNameTiddler>get[text]] }}} $value={{{ [<newFieldNameTiddler>get[text]] :map[subfilter<get-field-value-tiddler-filter>get[text]] }}}/>
<$set name="safeNewFieldValueTiddlerPrefix" value=<<newFieldValueTiddlerPrefix>> emptyValue=<<qualify "$:/temp/NewFieldValue">> >
<$action-deletetiddler $filter="[<newFieldNameTiddler>] [prefix[$:/temp/NewFieldValue]prefix<safeNewFieldValueTiddlerPrefix>] [<storeTitle>] [<searchListState>]"/>
</$set>
<$action-sendmessage $message="tm-focus-selector" $param=<<current-tiddler-new-field-selector>>/>
<$action-sendmessage $message="tm-focus-selector" $param=<<tf.current-tiddler-new-field-selector>>/>
\end
\define delete-state-tiddlers() <$action-deletetiddler $filter="[<newFieldNameTiddler>] [<storeTitle>] [<searchListState>]"/>
\procedure delete-state-tiddlers() <$action-deletetiddler $filter="[<newFieldNameTiddler>] [<storeTitle>] [<searchListState>]"/>
\define cancel-search-actions-inner()
\procedure cancel-search-actions-inner()
\whitespace trim
<$list
filter="[<storeTitle>has[text]] [<newFieldNameTiddler>has[text]]"
@ -39,7 +36,7 @@ $:/config/EditTemplateFields/Visibility/$(currentField)$
</$list>
\end
\define cancel-search-actions()
\procedure cancel-search-actions()
\whitespace trim
<$set name="userInput" value={{{ [<storeTitle>get[text]] }}}>
<$list
@ -50,7 +47,7 @@ $:/config/EditTemplateFields/Visibility/$(currentField)$
</$set>
\end
\define new-field()
\procedure new-field()
\whitespace trim
<$vars name={{{ [<newFieldNameTiddler>get[text]] }}}>
<$reveal type="nomatch" text="" default=<<name>>>
@ -75,15 +72,15 @@ $value={{{ [subfilter<get-field-value-tiddler-filter>get[text]] }}}/>
<$set name="newFieldValueTiddlerPrefix" value=<<newFieldValueTiddlerPrefix>> emptyValue=<<qualify "$:/temp/NewFieldValue">> >
<div class="tc-edit-fields">
<table class={{{ [all[current]fields[]] :filter[lookup[$:/config/EditTemplateFields/Visibility/]!match[hide]] +[count[]!match[0]] +[then[tc-edit-fields]] ~[[tc-edit-fields tc-edit-fields-small]] }}}>
<table class={{{ [all[current]fields[]] :filter[lookup[$:/config/EditTemplateFields/Visibility/]!match[hide]] :and[count[]!match[0]] :and[then[tc-edit-fields]] :else[[tc-edit-fields tc-edit-fields-small]] }}}>
<tbody>
<$list filter="[all[current]fields[]] +[sort[title]]" variable="currentField" storyview="pop">
<$list filter=<<config-filter>> variable="temp">
<$list filter="[all[current]fields[]] :and[sort[title]]" variable="currentField" storyview="pop">
<$list filter=<<tf.config-filter>> variable="temp">
<tr class="tc-edit-field">
<td class="tc-edit-field-name">
<$text text=<<currentField>>/>:</td>
<td class="tc-edit-field-value">
<$keyboard key="((delete-field))" actions="""<$action-deletefield $field=<<currentField>>/><$set name="currentTiddlerCSSescaped" value={{{ [<currentTiddler>escapecss[]] }}}><$action-sendmessage $message="tm-focus-selector" $param=<<current-tiddler-new-field-selector>>/></$set>""">
<$keyboard key="((delete-field))" actions="""<$action-deletefield $field=<<currentField>>/><$set name="currentTiddlerCSSescaped" value={{{ [<currentTiddler>escapecss[]] }}}><$action-sendmessage $message="tm-focus-selector" $param=<<tf.current-tiddler-new-field-selector>>/></$set>""">
<$transclude tiddler={{{ [<currentField>] :cascade[all[shadows+tiddlers]tag[$:/tags/FieldEditorFilter]!is[draft]get[text]] :and[!is[blank]else{$:/core/ui/EditTemplate/fieldEditor/default}] }}} />
</$keyboard>
</td>
@ -107,10 +104,10 @@ $value={{{ [subfilter<get-field-value-tiddler-filter>get[text]] }}}/>
</em>
<$vars refreshTitle=<<qualify "$:/temp/fieldname/refresh">> storeTitle=<<newFieldNameInputTiddler>> searchListState=<<newFieldNameSelectionTiddler>>>
<div class="tc-edit-field-add-name-wrapper">
<$macrocall $name="keyboard-driven-input" tiddler=<<newFieldNameTiddler>> storeTitle=<<storeTitle>> refreshTitle=<<refreshTitle>>
<$transclude $variable="keyboard-driven-input" tiddler=<<newFieldNameTiddler>> storeTitle=<<storeTitle>> refreshTitle=<<refreshTitle>>
selectionStateTitle=<<searchListState>> tag="input" default="" placeholder={{$:/language/EditTemplate/Fields/Add/Name/Placeholder}}
focusPopup=<<qualify "$:/state/popup/field-dropdown">> class="tc-edit-texteditor tc-popup-handle" tabindex={{$:/config/EditTabIndex}}
focus={{{ [{$:/config/AutoFocus}match[fields]then[true]] ~[[false]] }}} cancelPopups="yes"
focus={{{ [{$:/config/AutoFocus}match[fields]then[true]] :else[[false]] }}} cancelPopups="yes"
configTiddlerFilter="[[$:/config/EditMode/fieldname-filter]]" inputCancelActions=<<cancel-search-actions>> />
<$button popup=<<qualify "$:/state/popup/field-dropdown">> class="tc-btn-invisible tc-btn-dropdown tc-small-gap" tooltip={{$:/language/EditTemplate/Field/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Field/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button>
<$reveal state=<<qualify "$:/state/popup/field-dropdown">> type="nomatch" text="" default="">
@ -121,8 +118,8 @@ $value={{{ [subfilter<get-field-value-tiddler-filter>get[text]] }}}/>
<<lingo Fields/Add/Dropdown/User>>
</div>
<$set name="newFieldName" value={{{ [<storeTitle>get[text]] }}}>
<$list filter="[!is[shadow]!is[system]fields[]search:title<newFieldName>sort[]] -created -creator -draft.of -draft.title -modified -modifier -tags -text -title -type" variable="currentField">
<$list filter="[<currentField>addsuffix[-primaryList]] -[<searchListState>get[text]]" emptyMessage="""<$link to=<<currentField>> class="tc-list-item-selected"><$text text=<<currentField>>/></$link>""">
<$list filter="[!is[shadow]!is[system]fields[]search:title<newFieldName>sort[]] :except[[created]] :except[[creator]] :except[[draft.of]] :except[[draft.title]] :except[[modified]] :except[[modifier]] :except[[tags]] :except[[text]] :except[[title]] :except[[type]]" variable="currentField">
<$list filter="[<currentField>addsuffix[-primaryList]] :except[<searchListState>get[text]]" emptyMessage="""<$link to=<<currentField>> class="tc-list-item-selected"><$text text=<<currentField>>/></$link>""">
<$link to=<<currentField>>>
<$text text=<<currentField>>/>
</$link>
@ -131,8 +128,8 @@ $value={{{ [subfilter<get-field-value-tiddler-filter>get[text]] }}}/>
<div class="tc-dropdown-item">
<<lingo Fields/Add/Dropdown/System>>
</div>
<$list filter="[fields[]search:title<newFieldName>sort[]] -[!is[shadow]!is[system]fields[]]" variable="currentField">
<$list filter="[<currentField>addsuffix[-secondaryList]] -[<searchListState>get[text]]" emptyMessage="""<$link to=<<currentField>> class="tc-list-item-selected"><$text text=<<currentField>>/></$link>""">
<$list filter="[fields[]search:title<newFieldName>sort[]] :except[!is[shadow]!is[system]fields[]]" variable="currentField">
<$list filter="[<currentField>addsuffix[-secondaryList]] :except[<searchListState>get[text]]" emptyMessage="""<$link to=<<currentField>> class="tc-list-item-selected"><$text text=<<currentField>>/></$link>""">
<$link to=<<currentField>>>
<$text text=<<currentField>>/>
</$link>
@ -151,7 +148,7 @@ $value={{{ [subfilter<get-field-value-tiddler-filter>get[text]] }}}/>
</$keyboard>
</span>
<span class="tc-edit-field-add-button">
<$macrocall $name="new-field"/>
<$transclude $variable="new-field"/>
</span>
</$let>
</$vars>

View File

@ -2,15 +2,15 @@ title: $:/core/ui/EditTemplate/type
tags: $:/tags/EditTemplate
first-search-filter: [all[shadows+tiddlers]prefix[$:/language/Docs/Types/]sort[description]sort[group-sort]removeprefix[$:/language/Docs/Types/]search<userInput>]
\define lingo-base() $:/language/EditTemplate/
\define input-cancel-actions() <$list filter="[<storeTitle>get[text]] [<currentTiddler>get[type]] +[limit[1]]" emptyMessage="""<<cancel-delete-tiddler-actions "cancel">>"""><$action-sendmessage $message="tm-remove-field" $param="type"/><$action-deletetiddler $filter="[<typeInputTiddler>] [<refreshTitle>] [<typeSelectionTiddler>]"/></$list>
\procedure lingo-base() $:/language/EditTemplate/
\procedure input-cancel-actions() <$list filter="[<storeTitle>get[text]] [<currentTiddler>get[type]] :and[limit[1]]" emptyMessage="""<<cancel-delete-tiddler-actions "cancel">>"""><$action-sendmessage $message="tm-remove-field" $param="type"/><$action-deletetiddler $filter="[<typeInputTiddler>] [<refreshTitle>] [<typeSelectionTiddler>]"/></$list>
\whitespace trim
<$set name="refreshTitle" value=<<qualify "$:/temp/type-search/refresh">>>
<div class="tc-edit-type-selector-wrapper">
<em class="tc-edit tc-small-gap-right"><<lingo Type/Prompt>></em>
<div class="tc-type-selector-dropdown-wrapper">
<div class="tc-type-selector"><$fieldmangler>
<$macrocall $name="keyboard-driven-input" tiddler=<<currentTiddler>> storeTitle=<<typeInputTiddler>> refreshTitle=<<refreshTitle>> selectionStateTitle=<<typeSelectionTiddler>> field="type" tag="input" default="" placeholder={{$:/language/EditTemplate/Type/Placeholder}} focusPopup=<<qualify "$:/state/popup/type-dropdown">> class="tc-edit-typeeditor tc-edit-texteditor tc-popup-handle" tabindex={{$:/config/EditTabIndex}} focus={{{ [{$:/config/AutoFocus}match[type]then[true]] ~[[false]] }}} cancelPopups="yes" configTiddlerFilter="[[$:/core/ui/EditTemplate/type]]" inputCancelActions=<<input-cancel-actions>>/><$button popup=<<qualify "$:/state/popup/type-dropdown">> class="tc-btn-invisible tc-btn-dropdown tc-small-gap" tooltip={{$:/language/EditTemplate/Type/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Type/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button><$button message="tm-remove-field" param="type" class="tc-btn-invisible tc-btn-icon" tooltip={{$:/language/EditTemplate/Type/Delete/Hint}} aria-label={{$:/language/EditTemplate/Type/Delete/Caption}}>{{$:/core/images/delete-button}}<$action-deletetiddler $filter="[<typeInputTiddler>] [<storeTitle>] [<refreshTitle>] [<selectionStateTitle>]"/></$button>
<$transclude $variable="keyboard-driven-input" tiddler=<<currentTiddler>> storeTitle=<<typeInputTiddler>> refreshTitle=<<refreshTitle>> selectionStateTitle=<<typeSelectionTiddler>> field="type" tag="input" default="" placeholder={{$:/language/EditTemplate/Type/Placeholder}} focusPopup=<<qualify "$:/state/popup/type-dropdown">> class="tc-edit-typeeditor tc-edit-texteditor tc-popup-handle" tabindex={{$:/config/EditTabIndex}} focus={{{ [{$:/config/AutoFocus}match[type]then[true]] :else[[false]] }}} cancelPopups="yes" configTiddlerFilter="[[$:/core/ui/EditTemplate/type]]" inputCancelActions=<<input-cancel-actions>>/><$button popup=<<qualify "$:/state/popup/type-dropdown">> class="tc-btn-invisible tc-btn-dropdown tc-small-gap" tooltip={{$:/language/EditTemplate/Type/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Type/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button><$button message="tm-remove-field" param="type" class="tc-btn-invisible tc-btn-icon" tooltip={{$:/language/EditTemplate/Type/Delete/Hint}} aria-label={{$:/language/EditTemplate/Type/Delete/Caption}}>{{$:/core/images/delete-button}}<$action-deletetiddler $filter="[<typeInputTiddler>] [<storeTitle>] [<refreshTitle>] [<selectionStateTitle>]"/></$button>
</$fieldmangler></div>
<div class="tc-block-dropdown-wrapper">
@ -23,7 +23,7 @@ first-search-filter: [all[shadows+tiddlers]prefix[$:/language/Docs/Types/]sort[d
<$text text={{!!group}}/>
</div>
<$set name="userInput" value={{{ [<typeInputTiddler>get[text]] }}}>
<$list filter="[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]group{!!group}] +[sort[description]] +[removeprefix[$:/language/Docs/Types/]] +[search<userInput>]"><span class={{{ [<currentTiddler>addsuffix[-primaryList]] -[<typeSelectionTiddler>get[text]] +[then[]else[tc-list-item-selected]] }}}><$link to={{{ [<currentTiddler>addprefix[$:/language/Docs/Types/]get[name]] }}}><$view tiddler={{{ [<currentTiddler>addprefix[$:/language/Docs/Types/]] }}} field="description"/><$text text=" "/>(<$view tiddler={{{ [<currentTiddler>addprefix[$:/language/Docs/Types/]] }}} field="name"/>)</$link></span>
<$list filter="[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]group{!!group}] :and[sort[description]] :and[removeprefix[$:/language/Docs/Types/]] :and[search<userInput>]"><span class={{{ [<currentTiddler>addsuffix[-primaryList]] :except[<typeSelectionTiddler>get[text]] :and[then[]else[tc-list-item-selected]] }}}><$link to={{{ [<currentTiddler>addprefix[$:/language/Docs/Types/]get[name]] }}}><$view tiddler={{{ [<currentTiddler>addprefix[$:/language/Docs/Types/]] }}} field="description"/><$text text=" "/>(<$view tiddler={{{ [<currentTiddler>addprefix[$:/language/Docs/Types/]] }}} field="name"/>)</$link></span>
</$list>
</$set>
</$list>

View File

@ -1,44 +1,49 @@
title: $:/core/ui/EditorToolbar/link-dropdown
\define lingo-base() $:/language/Buttons/Link/
\procedure lingo-base() $:/language/Buttons/Link/
\define add-link-actions()
\procedure add-link-actions()
\whitespace trim
<$action-sendmessage $message="tm-edit-text-operation" $param="make-link" text={{$(linkTiddler)$}} />
<$action-sendmessage $message="tm-edit-text-operation" $param="make-link" text={{{ [<linkTiddler>get[text]] }}} />
<$action-deletetiddler $filter="[<dropdown-state>] [<searchTiddler>] [<linkTiddler>] [<storeTitle>] [<searchListState>]"/>
\end
\define get-focus-selector() [data-tiddler-title="$(cssEscapedTitle)$"] .tc-create-wikitext-link input
\procedure prefix.bracket() [
\procedure suffix.bracket() ]
\define cancel-search-actions-inner()
\function tf.get-focus-selector() [[data-tiddler-title=]addprefix[$(prefix.bracket)$]substitute[]addsuffix<cssEscapedTitle>addsuffix[$(suffix.bracket)$]substitute[]] .tc-create-wikitext-link input :and[join[ ]]
\procedure cancel-search-actions-inner()
<$set name="userInput" value={{{ [<storeTitle>get[text]] }}}><$list filter="[<searchTiddler>get[text]!match<userInput>]" emptyMessage="<$action-deletetiddler $filter='[<searchTiddler>] [<linkTiddler>] [<storeTitle>] [<searchListState>]'/>"><$action-setfield $tiddler=<<searchTiddler>> text=<<userInput>>/><$action-setfield $tiddler=<<refreshTitle>> text="yes"/></$list></$set>
\end
\define cancel-search-actions() <$list filter="[<storeTitle>!has[text]] +[<searchTiddler>!has[text]]" emptyMessage="<<cancel-search-actions-inner>>"><$action-sendmessage $message="tm-edit-text-operation" $param="focus-editor"/></$list>
\procedure cancel-search-actions() <$list filter="[<storeTitle>!has[text]] :and[<searchTiddler>!has[text]]" emptyMessage="<<cancel-search-actions-inner>>"><$action-sendmessage $message="tm-edit-text-operation" $param="focus-editor"/></$list>
\define external-link()
\procedure external-link()
\whitespace trim
<$button class="tc-btn-invisible tc-btn-mini" style="width: auto; display: inline-block; background-colour: inherit;" actions=<<add-link-actions>>>
{{$:/core/images/chevron-right}}
</$button>
\end
\define set-next-input-tab(beforeafter:"after") <$macrocall $name="change-input-tab" stateTitle="$:/state/tab/search-results/sidebar" tag="$:/tags/SearchResults" beforeafter="$beforeafter$" defaultState={{$:/config/SearchResults/Default}} actions="<$action-setfield $tiddler='$:/state/search/currentTab' text=<<nextTab>>/>"/>
\procedure set-next-input-tab() <$transclude $variable="change-input-tab-after" stateTitle="$:/state/tab/search-results/sidebar" tag="$:/tags/SearchResults" defaultState={{$:/config/SearchResults/Default}} actions="<$action-setfield $tiddler='$:/state/search/currentTab' text=<<nextTab>>/>"/>
\define body(config-title)
\procedure set-previous-input-tab() <$transclude $variable="change-input-tab-before" stateTitle="$:/state/tab/search-results/sidebar" tag="$:/tags/SearchResults" defaultState={{$:/config/SearchResults/Default}} actions="<$action-setfield $tiddler='$:/state/search/currentTab' text=<<nextTab>>/>"/>
\procedure body(config-title)
\whitespace trim
''<<lingo Hint>>''
<$vars searchTiddler="""$config-title$/search""" linkTiddler="""$config-title$/link""" linktext="" searchListState=<<qualify "$:/temp/link-search/selected-item">> refreshTitle=<<qualify "$:/temp/link-search/refresh">> storeTitle=<<qualify "$:/temp/link-search/input">>>
<$vars searchTiddler={{{ [<config-title>addsuffix[/search]] }}} linkTiddler={{{ [<config-title>addsuffix[/link]] }}} linktext="" searchListState=<<qualify "$:/temp/link-search/selected-item">> refreshTitle=<<qualify "$:/temp/link-search/refresh">> storeTitle=<<qualify "$:/temp/link-search/input">>>
<$vars linkTiddler=<<searchTiddler>>>
<$keyboard key="((input-tab-right))" actions=<<set-next-input-tab>>>
<$keyboard key="((input-tab-left))" actions=<<set-next-input-tab "before">> class="tc-create-wikitext-link">
<$macrocall $name="keyboard-driven-input" tiddler=<<searchTiddler>> storeTitle=<<storeTitle>>
<$keyboard key="((input-tab-left))" actions=<<set-previous-input-tab>> class="tc-create-wikitext-link">
<$transclude $variable="keyboard-driven-input" tiddler=<<searchTiddler>> storeTitle=<<storeTitle>>
selectionStateTitle=<<searchListState>> refreshTitle=<<refreshTitle>> type="search" filterMinLength="1"
tag="input" focus="true" class="tc-popup-handle" inputCancelActions=<<cancel-search-actions>>
inputAcceptActions=<<add-link-actions>> placeholder={{$:/language/Search/Search}} default=""
configTiddlerFilter="[[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}]" />
configTiddlerFilter="[[$:/state/search/currentTab]!is[missing]get[text]] :else[{$:/config/SearchResults/Default}]" />
</$keyboard>
</$keyboard>
&#32;
@ -46,7 +51,7 @@ title: $:/core/ui/EditorToolbar/link-dropdown
<<external-link>>
&#32;
<$button class="tc-btn-invisible tc-btn-mini" style="width: auto; display: inline-block; background-colour: inherit;">
<<cancel-search-actions>><$set name="cssEscapedTitle" value={{{ [<storyTiddler>escapecss[]] }}}><$action-sendmessage $message="tm-focus-selector" $param=<<get-focus-selector>>/></$set>
<<cancel-search-actions>><$set name="cssEscapedTitle" value={{{ [<storyTiddler>escapecss[]] }}}><$action-sendmessage $message="tm-focus-selector" $param=<<tf.get-focus-selector>>/></$set>
{{$:/core/images/close-button}}
</$button>
</$reveal>
@ -56,7 +61,7 @@ title: $:/core/ui/EditorToolbar/link-dropdown
<$linkcatcher actions=<<add-link-actions>> to=<<linkTiddler>>>
<$vars userInput={{{ [<storeTitle>get[text]] }}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}] }}}>
<$vars userInput={{{ [<storeTitle>get[text]] }}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] :else[{$:/config/SearchResults/Default}] }}}>
{{$:/core/ui/SearchResults}}
@ -70,4 +75,4 @@ title: $:/core/ui/EditorToolbar/link-dropdown
\end
<$macrocall $name="body" config-title=<<qualify "$:/state/Link/">>/>
<$transclude $variable="body" config-title=<<qualify "$:/state/Link/">>/>

View File

@ -2,4 +2,4 @@ title: $:/core/ui/SideBar/Recent
tags: $:/tags/SideBar
caption: {{$:/language/SideBar/Recent/Caption}}
<$macrocall $name="timeline" format={{$:/language/RecentChanges/DateFormat}}/>
<$transclude $variable="timeline" format={{$:/language/RecentChanges/DateFormat}} limit={{$:/config/RecentLimit}}/>

View File

@ -3,12 +3,12 @@ tags: $:/tags/SideBarSegment
\whitespace trim
\define count-popup-button()
\procedure count-popup-button()
\whitespace trim
<$button popup=<<qualify "$:/state/popup/search-dropdown">> class="tc-btn-invisible">
{{$:/core/images/down-arrow}}
<$list filter="[{$(searchTiddler)$}minlength{$:/config/Search/MinLength}limit[1]]" variable="listItem">
<$vars userInput={{{ [<searchTiddler>get[text]] }}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}] }}} replaceRegexp="limit\[\d+\]">
<$list filter="[<searchTiddler>get[text]minlength{$:/config/Search/MinLength}limit[1]]" variable="listItem">
<$vars userInput={{{ [<searchTiddler>get[text]] }}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] :else[{$:/config/SearchResults/Default}] }}} replaceRegexp="limit\[\d+\]">
<$vars primaryListFilter={{{ [<configTiddler>get[first-search-filter]search-replace:g:regexp<replaceRegexp>,[]] }}} secondaryListFilter={{{ [<configTiddler>get[second-search-filter]search-replace:g:regexp<replaceRegexp>,[]] }}}>
<$set name="resultCount" value="""<$count filter="[subfilter<primaryListFilter>] [subfilter<secondaryListFilter>]"/>""">
{{$:/language/Search/Matches}}
@ -19,9 +19,9 @@ tags: $:/tags/SideBarSegment
</$button>
\end
\define search-results-list()
\procedure search-results-list()
\whitespace trim
<$vars userInput={{$(searchTiddler)$}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}] }}}>
<$vars userInput={{{ [<searchTiddler>get[text]] }}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] :else[{$:/config/SearchResults/Default}] }}}>
<$list filter="[<userInput>minlength{$:/config/Search/MinLength}limit[1]]" emptyMessage="""<div class="tc-search-results">{{$:/language/Search/Search/TooShort}}</div>""" variable="listItem">
<$tiddler tiddler=<<configTiddler>>>
@ -34,30 +34,32 @@ tags: $:/tags/SideBarSegment
</$vars>
\end
\define cancel-search-actions() <$list filter="[<searchTiddler>get[text]!match{$:/temp/search}]" emptyMessage="""<$action-deletetiddler $filter="[[$:/temp/search]] [<searchTiddler>] [<searchListState>]"/>"""><$action-setfield $tiddler="$:/temp/search" text={{{ [<searchTiddler>get[text]] }}}/><$action-setfield $tiddler="$:/temp/search/refresh" text="yes"/></$list>
\procedure cancel-search-actions() <$list filter="[<searchTiddler>get[text]!match{$:/temp/search}]" emptyMessage="""<$action-deletetiddler $filter="[[$:/temp/search]] [<searchTiddler>] [<searchListState>]"/>"""><$action-setfield $tiddler="$:/temp/search" text={{{ [<searchTiddler>get[text]] }}}/><$action-setfield $tiddler="$:/temp/search/refresh" text="yes"/></$list>
\define input-accept-actions() <$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>"""><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>
\procedure input-accept-actions() <$list filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]" emptyMessage="""<$list filter="[<tiddler>get[text]!is[missing]] :else[<tiddler>get[text]is[shadow]]"><$action-navigate $to={{{ [<tiddler>get[text]] }}}/></$list>"""><$action-navigate $to={{{ [<tiddler>get[text]] }}}/></$list>
\define input-accept-variant-actions() <$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="[<__tiddler__>get[text]minlength[1]]"><$action-sendmessage $message="tm-edit-tiddler" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>
\procedure input-accept-variant-actions() <$list filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]" emptyMessage="""<$list filter="[<tiddler>get[text]!is[missing]] :else[<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="[<tiddler>get[text]minlength[1]]"><$action-sendmessage $message="tm-edit-tiddler" $param={{{ [<tiddler>get[text]] }}}/></$list></$list>
\define set-next-input-tab(beforeafter:"after") <$macrocall $name="change-input-tab" stateTitle="$:/state/tab/search-results/sidebar" tag="$:/tags/SearchResults" beforeafter="$beforeafter$" defaultState={{$:/config/SearchResults/Default}} actions="""<$action-setfield $tiddler="$:/state/search/currentTab" text=<<nextTab>>/>"""/>
\procedure set-next-input-tab() <$transclude $variable="change-input-tab" stateTitle="$:/state/tab/search-results/sidebar" tag="$:/tags/SearchResults" beforeafter="after" defaultState={{$:/config/SearchResults/Default}} actions="""<$action-setfield $tiddler="$:/state/search/currentTab" text=<<nextTab>>/>"""/>
\define advanced-search-actions() <$action-setfield $tiddler="$:/temp/advancedsearch" text={{$:/temp/search/input}}/><$action-setfield $tiddler="$:/temp/advancedsearch/input" text={{$:/temp/search/input}}/><<delete-state-tiddlers>><$action-navigate $to="$:/AdvancedSearch"/><$action-setfield $tiddler="$:/temp/advancedsearch/refresh" text="yes"/><$action-sendmessage $message="tm-focus-selector" $param="""[data-tiddler-title="$:/AdvancedSearch"] .tc-search input""" preventScroll="true"/><$action-deletetiddler $filter="$:/temp/search $:/temp/search/input $:/temp/search/refresh [<searchListState>]"/>
\procedure set-previous-input-tab() <$transclude $variable="change-input-tab" stateTitle="$:/state/tab/search-results/sidebar" tag="$:/tags/SearchResults" beforeafter="before" defaultState={{$:/config/SearchResults/Default}} actions="""<$action-setfield $tiddler="$:/state/search/currentTab" text=<<nextTab>>/>"""/>
\procedure advanced-search-actions() <$action-setfield $tiddler="$:/temp/advancedsearch" text={{$:/temp/search/input}}/><$action-setfield $tiddler="$:/temp/advancedsearch/input" text={{$:/temp/search/input}}/><<delete-state-tiddlers>><$action-navigate $to="$:/AdvancedSearch"/><$action-setfield $tiddler="$:/temp/advancedsearch/refresh" text="yes"/><$action-sendmessage $message="tm-focus-selector" $param="""[data-tiddler-title="$:/AdvancedSearch"] .tc-search input""" preventScroll="true"/><$action-deletetiddler $filter="$:/temp/search $:/temp/search/input $:/temp/search/refresh [<searchListState>]"/>
<div class="tc-sidebar-lists tc-sidebar-search">
<$vars editTiddler="$:/temp/search" searchTiddler="$:/temp/search/input" searchListState=<<qualify "$:/state/search-list/selected-item">>>
<div class="tc-search">
<$keyboard key="((input-tab-right))" actions=<<set-next-input-tab>>>
<$keyboard key="((input-tab-left))" actions=<<set-next-input-tab "before">>>
<$keyboard key="((input-tab-left))" actions=<<set-previous-input-tab>>>
<$keyboard key="((advanced-search-sidebar))" actions=<<advanced-search-actions>>>
<form class="tc-form-inline">
<$macrocall $name="keyboard-driven-input" tiddler=<<editTiddler>> storeTitle=<<searchTiddler>>
<$transclude $variable="keyboard-driven-input" tiddler=<<editTiddler>> storeTitle=<<searchTiddler>>
selectionStateTitle=<<searchListState>> refreshTitle="$:/temp/search/refresh" type="search"
tag="input" focus={{$:/config/Search/AutoFocus}} focusPopup=<<qualify "$:/state/popup/search-dropdown">>
class="tc-tiny-gap-right tc-popup-handle" filterMinLength={{$:/config/Search/MinLength}} inputCancelActions=<<cancel-search-actions>>
inputAcceptActions=<<input-accept-actions>> inputAcceptVariantActions=<<input-accept-variant-actions>> cancelPopups="yes"
configTiddlerFilter="[[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}]"/>
configTiddlerFilter="[[$:/state/search/currentTab]!is[missing]get[text]] :else[{$:/config/SearchResults/Default}]"/>
</form>
</$keyboard>
</$keyboard>

View File

@ -62,7 +62,6 @@ color: #bbb
\end
\whitespace trim
<div class="tc-table-wrapper">
<table class="tc-tag-manager-table">
<tbody>
<tr>
@ -116,5 +115,4 @@ color: #bbb
<td></td>
</tr>
</tbody>
</table>
</div>
</table>

View File

@ -0,0 +1,3 @@
title: $:/config/RecentLimit
100

View File

@ -3,8 +3,8 @@ tags: $:/tags/ViewTemplateBodyFilter
testcase: [tag[$:/tags/wiki-test-spec]type[text/vnd.tiddlywiki-multiple]] [tag[$:/tags/wiki-test-spec-failing]type[text/vnd.tiddlywiki-multiple]] :then[[$:/core/ui/TestCaseTemplate]]
stylesheet: [tag[$:/tags/Stylesheet]then[$:/core/ui/ViewTemplate/body/rendered-plain-text]]
core-ui-tags: [tag[$:/tags/PageTemplate]] [tag[$:/tags/EditTemplate]] [tag[$:/tags/ViewTemplate]] [tag[$:/tags/KeyboardShortcut]] [tag[$:/tags/ImportPreview]] [tag[$:/tags/EditPreview]][tag[$:/tags/EditorToolbar]] [tag[$:/tags/Actions]] :then[[$:/core/ui/ViewTemplate/body/code]]
system: [prefix[$:/boot/]] [prefix[$:/core/macros]] [prefix[$:/core/save/]] [prefix[$:/core/templates/]] [prefix[$:/config/]] [prefix[$:/info/]] [prefix[$:/language/]] [prefix[$:/languages/]] [prefix[$:/snippets/]] [prefix[$:/info/]] [prefix[$:/state/]] [prefix[$:/status/]] [prefix[$:/temp/]] :and[!is[image]] :then[[$:/core/ui/ViewTemplate/body/code]]
core-ui-tags: [tag[$:/tags/PageTemplate]] [tag[$:/tags/EditTemplate]] [tag[$:/tags/ViewTemplate]] [tag[$:/tags/KeyboardShortcut]] [tag[$:/tags/ImportPreview]] [tag[$:/tags/EditPreview]] [tag[$:/tags/EditorToolbar]] [tag[$:/EditorTools]] [tag[$:/tags/Actions]] [tag[$:/tags/ToolbarButtonStyle]] :then[[$:/core/ui/ViewTemplate/body/code]]
system: [prefix[$:/boot/]] [prefix[$:/core/macros]] [prefix[$:/core/save/]] [prefix[$:/core/templates/]] [prefix[$:/config/]] [prefix[$:/core/config/]] [prefix[$:/info/]] [prefix[$:/language/]] [prefix[$:/languages/]] [prefix[$:/snippets/]] [prefix[$:/info/]] [prefix[$:/state/]] [prefix[$:/status/]] [prefix[$:/temp/]] :and[!is[image]] :then[[$:/core/ui/ViewTemplate/body/code]]
code-body: [field:code-body[yes]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]]

View File

@ -1,5 +1,5 @@
title: $:/core/macros/CSS
tags: $:/tags/Macro $:/tags/Global
tags: $:/tags/Macro
<!-- Needs to stay that way for backwards compatibility. See GH issue: #8326 -->
\define colour(name)
@ -13,42 +13,54 @@ tags: $:/tags/Macro $:/tags/Global
\define color(name) <<colour $name$>>
\function box-shadow(shadow)
[[ -webkit-box-shadow: $(shadow)$;
-moz-box-shadow: $(shadow)$;
box-shadow: $(shadow)$;]substitute[]]
\define box-shadow(shadow)
``
-webkit-box-shadow: $shadow$;
-moz-box-shadow: $shadow$;
box-shadow: $shadow$;
``
\end
\function filter(filter)
[[ -webkit-filter: $(filter)$;
-moz-filter: $(filter)$;
filter: $(filter)$;]substitute[]]
\define filter(filter)
``
-webkit-filter: $filter$;
-moz-filter: $filter$;
filter: $filter$;
``
\end
\function transition(transition)
[[ -webkit-transition: $(transition)$;
-moz-transition: $(transition)$;
transition: $(transition)$;]substitute[]]
\define transition(transition)
``
-webkit-transition: $transition$;
-moz-transition: $transition$;
transition: $transition$;
``
\end
\function transform-origin(origin)
[[ -webkit-transform-origin: $(origin)$;
-moz-transform-origin: $(origin)$;
transform-origin: $(origin)$;]substitute[]]
\define transform-origin(origin)
``
-webkit-transform-origin: $origin$;
-moz-transform-origin: $origin$;
transform-origin: $origin$;
``
\end
\function background-linear-gradient(gradient)
[[ background-image: linear-gradient($(gradient)$);
background-image: -o-linear-gradient($(gradient)$);
background-image: -moz-linear-gradient($(gradient)$);
background-image: -webkit-linear-gradient($(gradient)$);
background-image: -ms-linear-gradient($(gradient)$);]substitute[]]
\define background-linear-gradient(gradient)
``
background-image: linear-gradient($gradient$);
background-image: -o-linear-gradient($gradient$);
background-image: -moz-linear-gradient($gradient$);
background-image: -webkit-linear-gradient($gradient$);
background-image: -ms-linear-gradient($gradient$);
``
\end
\function column-count(columns)
[[-moz-column-count: $(columns)$;
-webkit-column-count: $(columns)$;
column-count: $(columns)$;]substitute[]]
\define column-count(columns)
``
-moz-column-count: $columns$;
-webkit-column-count: $columns$;
column-count: $columns$;
``
\end
\procedure datauri(title)

View File

@ -1,5 +1,5 @@
title: $:/core/macros/copy-to-clipboard
tags: $:/tags/Macro $:/tags/Global
tags: $:/tags/Macro
\whitespace trim

View File

@ -1,5 +1,5 @@
title: $:/core/macros/diff
tags: $:/tags/Macro $:/tags/Global
tags: $:/tags/Macro
\whitespace trim

View File

@ -1,5 +1,5 @@
title: $:/core/macros/export
tags: $:/tags/Macro $:/tags/Global
tags: $:/tags/Macro
\function exportButtonFilename(baseFilename)
[<baseFilename>] [<extension>] +[join[]]

View File

@ -1,105 +1,137 @@
title: $:/core/macros/keyboard-driven-input
tags: $:/tags/Macro
\define change-input-tab(stateTitle,tag,beforeafter,defaultState,actions)
\procedure prefix.bracket() [
\procedure suffix.bracket() ]
\function tf.change-input-tab.next-tab() [[all]addprefix<prefix.bracket>addsuffix<prefix.bracket>addsuffix[shadows+tiddlers]addsuffix<suffix.bracket>addsuffix[tag<tag>!has]addsuffix<prefix.bracket>addsuffix[draft.of]addsuffix<suffix.bracket>addsuffix<beforeafter>addsuffix[<currentState>]addsuffix<suffix.bracket>addsuffix[ :else]addsuffix<prefix.bracket>addsuffix<prefix.bracket>addsuffix<beforeafter>addsuffix<suffix.bracket>addsuffix[match]addsuffix<prefix.bracket>addsuffix[after]addsuffix<suffix.bracket>addsuffix[then<firstTab>]addsuffix<suffix.bracket>addsuffix[ :else]addsuffix<prefix.bracket>addsuffix<prefix.bracket>addsuffix<beforeafter>addsuffix<suffix.bracket>addsuffix[match]addsuffix<prefix.bracket>addsuffix[before]addsuffix<suffix.bracket>addsuffix[then<lastTab>]addsuffix<suffix.bracket>]
\procedure change-input-tab(stateTitle,tag,beforeafter,defaultState,actions)
\whitespace trim
<$set name="tabsList" filter="[all[shadows+tiddlers]tag<__tag__>!has[draft.of]]">
<$set name="tabsList" filter="[<explicitTabList>!is[blank]enlist-input[]] :else[all[shadows+tiddlers]tag<tag>!has[draft.of]]">
<$let
currentState={{{ [<__stateTitle__>!is[missing]get[text]] ~[<__defaultState__>] }}}
currentState={{{ [<stateTitle>!is[missing]get[text]] :else[<defaultState>] }}}
firstTab={{{ [enlist<tabsList>nth[1]] }}}
lastTab={{{ [enlist<tabsList>last[]] }}}
nextTab={{{ [all[shadows+tiddlers]tag<__tag__>!has[draft.of]$beforeafter$<currentState>] ~[[$beforeafter$]removeprefix[after]suffix[]addprefix<firstTab>] ~[[$beforeafter$]removeprefix[before]suffix[]addprefix<lastTab>] }}}
nextTabSubFilter=<<tf.change-input-tab.next-tab>>
nextTab={{{ [subfilter<nextTabSubFilter>] }}}
>
<$action-setfield $tiddler=<<__stateTitle__>> text=<<nextTab>>/>
$actions$
<$action-setfield $tiddler=<<stateTitle>> text=<<nextTab>>/>
<<actions>>
</$let>
</$set>
\end
\define keyboard-input-actions()
\procedure keyboard-input-actions()
\whitespace trim
<$list filter="[<__index__>match[]]">
<$action-setfield $tiddler=<<__storeTitle__>> text={{{ [<__tiddler__>get<__field__>] }}}/>
</$list>
<$list filter="[<__index__>!match[]]">
<$action-setfield $tiddler=<<__storeTitle__>> text={{{ [<__tiddler__>getindex<__index__>] }}}/>
</$list>
<%if [<index>match[]] %>
<$action-setfield $tiddler=<<storeTitle>> text={{{ [<tiddler>get<field>] }}}/>
<% endif %>
<%if [<index>!match[]] %>
<$action-setfield $tiddler=<<storeTitle>> text={{{ [<tiddler>getindex<index>] }}}/>
<% endif %>
\end
\define input-next-actions-inner()
\procedure input-next-actions-inner()
\whitespace trim
<$list filter="[<nextItem>minlength[1]]" variable="ignore">
<$action-setfield $tiddler=<<__selectionStateTitle__>> text=<<nextItem>>/>
<$list filter="[<__index__>match[]]">
<$action-setfield $tiddler=<<__tiddler__>> $field=<<__field__>> $value={{{ [<nextItem>] +[splitregexp[(?:.(?!-))+$]] }}}/>
</$list>
<$list filter="[<__index__>!match[]]">
<$action-setfield $tiddler=<<__tiddler__>> $index=<<__index__>> $value={{{ [<nextItem>] +[splitregexp[(?:.(?!-))+$]] }}}/>
</$list>
<$action-setfield $tiddler=<<__refreshTitle__>> text="yes"/>
</$list>
<%if [<nextItem>minlength[1]] %>
<$action-setfield $tiddler=<<selectionStateTitle>> text=<<nextItem>>/>
<%if [<index>match[]] %>
<$action-setfield $tiddler=<<tiddler>> $field=<<field>> $value={{{ [<nextItem>] :and[splitregexp[(?:.(?!-))+$]] }}}/>
<% endif %>
<%if [<index>!match[]] %>
<$action-setfield $tiddler=<<tiddler>> $index=<<index>> $value={{{ [<nextItem>] :and[splitregexp[(?:.(?!-))+$]] }}}/>
<% endif %>
<$action-setfield $tiddler=<<refreshTitle>> text="yes"/>
<% endif %>
\end
\define input-next-actions(afterOrBefore:"after",reverse:"")
\procedure input-next-actions-after()
\whitespace trim
<$list
filter="[<__storeTitle__>get[text]minlength<__filterMinLength__>] [<__filterMinLength__>match[0]] +[limit[1]]"
variable="ignore"
>
<%if [<storeTitle>get[text]minlength<filterMinLength>] [<filterMinLength>match[0]] %>
<$let
userInput={{{ [<__storeTitle__>get[text]] }}}
selectedItem={{{ [<__selectionStateTitle__>get[text]] }}}
configTiddler={{{ [subfilter<__configTiddlerFilter__>] }}}
primaryListFilter={{{ [<configTiddler>get<__firstSearchFilterField__>] }}}
secondaryListFilter={{{ [<configTiddler>get<__secondSearchFilterField__>] }}}
userInput={{{ [<storeTitle>get[text]] }}}
selectedItem={{{ [<selectionStateTitle>get[text]] }}}
configTiddler={{{ [subfilter<configTiddlerFilter>] }}}
primaryListFilter={{{ [<configTiddler>get<firstSearchFilterField>] }}}
secondaryListFilter={{{ [<configTiddler>get<secondSearchFilterField>] }}}
>
<$set
name="filteredList"
filter="[subfilter<primaryListFilter>addsuffix[-primaryList]] =[subfilter<secondaryListFilter>addsuffix[-secondaryList]]"
filter="[subfilter<primaryListFilter>addsuffix[-primaryList]] :all[subfilter<secondaryListFilter>addsuffix[-secondaryList]]"
>
<$let
nextItem={{{ [enlist<filteredList>$afterOrBefore$<selectedItem>] ~[enlist<filteredList>$reverse$nth[1]] }}}
nextItem={{{ [enlist<filteredList>after<selectedItem>] :else[enlist<filteredList>nth[1]] }}}
firstItem={{{ [enlist<filteredList>nth[1]] }}}
lastItem={{{ [enlist<filteredList>last[]] }}}
>
<$list filter="[<selectedItem>match<firstItem>!match<lastItem>]" variable="ignore">
<$set name="nextItem" value={{{ [[$afterOrBefore$]match[before]then<userInput>addsuffix[-userInput]] ~[<nextItem>] }}}>
<<input-next-actions-inner>>
</$set>
</$list>
<$list filter="[<selectedItem>match<lastItem>!match<firstItem>]" variable="ignore">
<$set name="nextItem" value={{{ [[$afterOrBefore$]match[after]then<userInput>addsuffix[-userInput]] ~[<nextItem>] }}}>
<<input-next-actions-inner>>
</$set>
</$list>
<$list filter="[<selectedItem>match<firstItem>match<lastItem>]" variable="ignore">
<%if [<selectedItem>match<firstItem>!match<lastItem>] [<selectedItem>!match<firstItem>!match<lastItem>] %>
<<input-next-actions-inner>>
<%elseif [<selectedItem>match<lastItem>!match<firstItem>] %>
<$set name="nextItem" value={{{ [<userInput>addsuffix[-userInput]] }}}>
<<input-next-actions-inner>>
</$set>
</$list>
<$list filter="[<selectedItem>!match<firstItem>!match<lastItem>]" variable="ignore">
<<input-next-actions-inner>>
</$list>
<%elseif [<selectedItem>match<firstItem>match<lastItem>] %>
<$set name="nextItem" value={{{ [<userInput>addsuffix[-userInput]] }}}>
<<input-next-actions-inner>>
</$set>
<% endif %>
</$let>
</$set>
</$let>
</$list>
<% endif %>
\end
\define keyboard-driven-input(tiddler,storeTitle,field:"text",index:"",tag:"input",type,focus:"",inputAcceptActions,inputAcceptVariantActions,inputCancelActions,placeholder:"",default:"",class,focusPopup,rows,minHeight,tabindex,size,autoHeight,filterMinLength:"0",refreshTitle,selectionStateTitle,cancelPopups:"",configTiddlerFilter,firstSearchFilterField:"first-search-filter",secondSearchFilterField:"second-search-filter")
\procedure input-next-actions-before()
\whitespace trim
<$keyboard key="((input-accept))" actions=<<__inputAcceptActions__>>>
<$keyboard key="((input-accept-variant))" actions=<<__inputAcceptVariantActions__>>>
<$keyboard key="((input-up))" actions=<<input-next-actions "before" "reverse[]">>>
<$keyboard key="((input-down))" actions=<<input-next-actions>>>
<$keyboard key="((input-cancel))" actions=<<__inputCancelActions__>>>
<%if [<storeTitle>get[text]minlength<filterMinLength>] [<filterMinLength>match[0]] %>
<$let
userInput={{{ [<storeTitle>get[text]] }}}
selectedItem={{{ [<selectionStateTitle>get[text]] }}}
configTiddler={{{ [subfilter<configTiddlerFilter>] }}}
primaryListFilter={{{ [<configTiddler>get<firstSearchFilterField>] }}}
secondaryListFilter={{{ [<configTiddler>get<secondSearchFilterField>] }}}
>
<$set
name="filteredList"
filter="[subfilter<primaryListFilter>addsuffix[-primaryList]] :all[subfilter<secondaryListFilter>addsuffix[-secondaryList]]"
>
<$let
nextItem={{{ [enlist<filteredList>before<selectedItem>] :else[enlist<filteredList>reverse[]nth[1]] }}}
firstItem={{{ [enlist<filteredList>nth[1]] }}}
lastItem={{{ [enlist<filteredList>last[]] }}}
>
<%if [<selectedItem>match<firstItem>!match<lastItem>] %>
<$set name="nextItem" value={{{ [<userInput>addsuffix[-userInput]] }}}>
<<input-next-actions-inner>>
</$set>
<%elseif [<selectedItem>match<lastItem>!match<firstItem>] [<selectedItem>!match<firstItem>!match<lastItem>] %>
<<input-next-actions-inner>>
<%elseif [<selectedItem>match<firstItem>match<lastItem>] %>
<$set name="nextItem" value={{{ [<userInput>addsuffix[-userInput]] }}}>
<<input-next-actions-inner>>
</$set>
<% endif %>
</$let>
</$set>
</$let>
<% endif %>
\end
\procedure keyboard-driven-input(tiddler,storeTitle,field:"text",index:"",tag:"input",type,focus:"",inputAcceptActions,inputAcceptVariantActions,inputCancelActions,placeholder:"",default:"",class,focusPopup,rows,minHeight,tabindex,size,autoHeight,filterMinLength:"0",refreshTitle,selectionStateTitle,cancelPopups:"",configTiddlerFilter,firstSearchFilterField:"first-search-filter",secondSearchFilterField:"second-search-filter")
\whitespace trim
<$keyboard key="((input-accept))" actions=<<inputAcceptActions>>>
<$keyboard key="((input-accept-variant))" actions=<<inputAcceptVariantActions>>>
<$keyboard key="((input-up))" actions=<<input-next-actions-before>>>
<$keyboard key="((input-down))" actions=<<input-next-actions-after>>>
<$keyboard key="((input-cancel))" actions=<<inputCancelActions>>>
<$edit-text
tiddler=<<__tiddler__>> field=<<__field__>> index=<<__index__>>
inputActions=<<keyboard-input-actions>> tag=<<__tag__>> class=<<__class__>>
placeholder=<<__placeholder__>> default=<<__default__>> focusPopup=<<__focusPopup__>>
focus=<<__focus__>> type=<<__type__>> rows=<<__rows__>> minHeight=<<__minHeight__>>
tabindex=<<__tabindex__>> size=<<__size__>> autoHeight=<<__autoHeight__>>
refreshTitle=<<__refreshTitle__>> cancelPopups=<<__cancelPopups__>>
tiddler=<<tiddler>> field=<<field>> index=<<index>>
inputActions=<<keyboard-input-actions>> tag=<<tag>> class=<<class>>
placeholder=<<placeholder>> default=<<default>> focusPopup=<<focusPopup>>
focus=<<focus>> type=<<type>> rows=<<rows>> minHeight=<<minHeight>>
tabindex=<<tabindex>> size=<<size>> autoHeight=<<autoHeight>>
refreshTitle=<<refreshTitle>> cancelPopups=<<cancelPopups>>
/>
</$keyboard>
</$keyboard>

View File

@ -1,5 +1,5 @@
title: $:/core/macros/show-filter-count
tags: $:/tags/Macro $:/tags/Global
tags: $:/tags/Macro
\whitespace trim

View File

@ -1,5 +1,5 @@
title: $:/core/macros/tag-picker
tags: $:/tags/Macro $:/tags/Global
tags: $:/tags/Macro
first-search-filter: [subfilter<tagListFilter>!is[system]search:title<userInput>]
second-search-filter: [subfilter<tagListFilter>is[system]search:title<userInput>]
@ -13,11 +13,11 @@ second-search-filter: [subfilter<tagListFilter>is[system]search:title<userInput>
<!-- tf.tagpicker-dropdown-id is needed if several tap-pickers are shown in one tiddler -->
\function tf.tagpicker-dropdown-id()
[<qualify $:/state/popup/tags-auto-complete>]
[[$(saveTiddler)$-[$(tagField)$-$(tagListFilter)$]substitute[]sha256[]] +[join[/]]
[[$(saveTiddler)$-[$(tagField)$-$(tagListFilter)$]substitute[]sha256[]] :and[join[/]]
\end
\function tf.tagpicker-dropdown-class() [<tf.tagpicker-dropdown-id>sha256[]addprefix[tc-]]
\function tf.get-tagpicker-focus-selector() [<tf.tagpicker-dropdown-class>addprefix[.]] .tc-popup-handle +[join[ ]]
\function tf.get-tagpicker-focus-selector() [<tf.tagpicker-dropdown-class>addprefix[.]] .tc-popup-handle :and[join[ ]]
<!-- clean up temporary tiddlers, so the next "pick" starts with a clean input -->
<!-- This could probably be optimized / removed if we would use different temp-tiddlers
@ -30,7 +30,7 @@ second-search-filter: [subfilter<tagListFilter>is[system]search:title<userInput>
<!-- trigger __toggle tag__ by keyboard -->
\procedure add-tag-actions()
<$let tag=<<_tf.getTag>> >
<$action-listops $tiddler=<<saveTiddler>> $field=<<tagField>> $subfilter='+[toggle<tag>trim[]]'/>
<$action-listops $tiddler=<<saveTiddler>> $field=<<tagField>> $subfilter=':and[toggle<tag>trim[]]'/>
<%if [<tag>] :intersection[<saveTiddler>get<tagField>enlist-input[]] %>
<!-- tag has been removed - do nothing -->
<%else%>
@ -46,7 +46,7 @@ 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]] :else[<newTagNameTiddler>has[text]] %>
<<delete-tag-state-tiddlers>>
<%else%>
<<cancel-delete-tiddler-actions "cancel">>
@ -90,7 +90,7 @@ The second ESC tries to close the "draft tiddler"
<!-- tf.get-tagpicker-focus-selector has to be resolved for $:/core/ui/TagPickerTagTemplate,
othwerwise qualify in tf.tagpicker-dropdown-id causes problems -->
<$let currentTiddler=<<tag>>
button-classes=`tc-btn-invisible ${[<tag>addsuffix<suffix>] -[<tagSelectionState>get[text]] :then[[]] ~tc-tag-button-selected }$`
button-classes=`tc-btn-invisible ${[<tag>addsuffix<suffix>] :except[<tagSelectionState>get[text]] :then[[]] ~tc-tag-button-selected }$`
get-tagpicker-focus-selector=`${[<tf.get-tagpicker-focus-selector>]}$`
>
{{||$:/core/ui/TagPickerTagTemplate}}
@ -102,10 +102,10 @@ The second ESC tries to close the "draft tiddler"
<!-- tag-picker-inner is the main function -->
\procedure tag-picker-inner()
<div class={{{ [[tc-edit-add-tag]] [<tf.tagpicker-dropdown-class>] +[join[ ]] }}}>
<div class={{{ [[tc-edit-add-tag]] [<tf.tagpicker-dropdown-class>] :and[join[ ]] }}}>
<div class="tc-edit-add-tag-ui">
<span class="tc-add-tag-name tc-small-gap-right">
<$macrocall $name="keyboard-driven-input"
<$transclude $variable="keyboard-driven-input"
tiddler=<<newTagNameTiddler>>
storeTitle=<<storeTitle>>
refreshTitle=<<refreshTitle>>
@ -117,7 +117,7 @@ The second ESC tries to close the "draft tiddler"
focusPopup=<<tf.tagpicker-dropdown-id>>
class="tc-edit-texteditor tc-popup-handle"
tabindex=<<tabIndex>>
focus={{{ [{$:/config/AutoFocus}match[tags]then[true]] ~[[false]] }}}
focus={{{ [{$:/config/AutoFocus}match[tags]then[true]] :else[[false]] }}}
filterMinLength={{$:/config/Tags/MinLength}}
cancelPopups=<<cancelPopups>>
configTiddlerFilter="[[$:/core/macros/tag-picker]]"
@ -146,9 +146,9 @@ The second ESC tries to close the "draft tiddler"
<div class="tc-block-dropdown-wrapper">
<%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" empty={{$:/language/EditTemplate/Tags/EmptyMessage}}/>
<$transclude $variable="tag-picker-listTags" filter=<<nonSystemTagsFilter>> suffix="-primaryList" empty={{$:/language/EditTemplate/Tags/EmptyMessage}}/>
<hr>
<$macrocall $name="tag-picker-listTags" filter=<<systemTagsFilter>> suffix="-secondaryList" empty={{$:/language/EditTemplate/Tags/EmptyMessage/System}}/>
<$transclude $variable="tag-picker-listTags" filter=<<systemTagsFilter>> suffix="-secondaryList" empty={{$:/language/EditTemplate/Tags/EmptyMessage/System}}/>
</div>
<%endif%>
</div>
@ -161,7 +161,7 @@ The second ESC tries to close the "draft tiddler"
\function _tf.getUserInput() [<storeTitle>get[text]]
\function _tf.getTag() [<newTagNameTiddler>get[text]]
<!-- Use this function if tag-picker is a stand alone macro. Otherwise use "newTagNameTiddler" defined for fieldmangler in EditTemplate -->
\function _tf.makeTagNameTiddler() [[$:/temp/NewTagName]] [<tagField>!match[tags]] +[join[/]] [<qualify>] +[join[]]
\function _tf.makeTagNameTiddler() [[$:/temp/NewTagName]] [<tagField>!match[tags]] :and[join[/]] [<qualify>] :and[join[]]
<!-- keep those variables because they may "bleed" into macros using old syntax -->
<!-- "nonSystemTagsFilter", "systemTagsFilter" __need to be the same__ as fields: "first-search-filter", "second-search-filter" -->
@ -174,10 +174,10 @@ The second ESC tries to close the "draft tiddler"
saveTiddler={{{ [<tiddler>is[blank]then<currentTiddler>else<tiddler>] }}}
newTagNameTiddler={{{ [[newTagNameTiddler]is[variable]then<newTagNameTiddler>] :else[<_tf.makeTagNameTiddler>] }}}
storeTitle={{{ [[$:/temp/NewTagName/input]] [<tagField>!match[tags]] +[join[/]] [<qualify>] +[join[]] }}}
storeTitle={{{ [[$:/temp/NewTagName/input]] [<tagField>!match[tags]] :and[join[/]] [<qualify>] :and[join[]] }}}
newTagNameSelectionTiddlerQualified=<<qualify "$:/temp/NewTagName/selected-item">>
tagSelectionState={{{ [<newTagNameSelectionTiddler>!match[]] ~[<newTagNameSelectionTiddlerQualified>] }}}
tagSelectionState={{{ [<newTagNameSelectionTiddler>!match[]] :else[<newTagNameSelectionTiddlerQualified>] }}}
refreshTitle=<<qualify "$:/temp/NewTagName/refresh">>
@ -186,6 +186,6 @@ The second ESC tries to close the "draft tiddler"
cancelPopups="yes"
>
<$macrocall $name="tag-picker-inner"/>
<$transclude $variable="tag-picker-inner"/>
</$let>
\end

View File

@ -1,5 +1,5 @@
title: $:/core/macros/testcase
tags: $:/tags/Macro $:/tags/Global
tags: $:/tags/Macro
\whitespace trim

View File

@ -1,25 +1,25 @@
created: 20141212105914482
modified: 20141212110330815
tags: $:/tags/Macro
title: $:/core/macros/timeline
<!-- Override one or both of the following two macros with a global or local macro of the same name
if you need to change how titles are displayed on a timeline -->
\define timeline-title() <$view field="title"/>
\define timeline-link() <$link to={{!!title}}><<timeline-title>></$link>
\define timeline(limit:"100",format:"DDth MMM YYYY",subfilter:"",dateField:"modified")
\procedure timeline-title() <$view field="title"/>
\procedure timeline-link() <$link to={{!!title}}><<timeline-title>></$link>
\procedure timeline(limit:"100",format:"DDth MMM YYYY",subfilter:"",dateField:"modified")
\whitespace trim
<div class="tc-timeline">
<$list filter="[!is[system]$subfilter$has[$dateField$]!sort[$dateField$]limit[$limit$]eachday[$dateField$]]">
<$set name="tv-tids" filter=`[!is[system]$(subfilter)$has<dateField>!sort<dateField>limit<limit>]`>
<$list filter="[enlist<tv-tids>eachday<dateField>]">
<div class="tc-menu-list-item">
<$view field="$dateField$" format="date" template="$format$"/>
<$list filter="[sameday:$dateField${!!$dateField$}!is[system]$subfilter$!sort[$dateField$]]">
<$view field=<<dateField>> format="date" template=<<format>>/>
<$list filter=`[enlist<tv-tids>sameday:$(dateField)${!!$(dateField)$}]`>
<div class="tc-menu-list-subitem">
<<timeline-link>>
</div>
</$list>
</div>
</$list>
</$set>
</div>
\end

View File

@ -37,7 +37,10 @@ tags: $:/tags/Macro
\end
\define toc(tag,sort:"",itemClassFilter:"", exclude)
<$macrocall $name="toc-body" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>>/>
\whitespace trim
<$let __tag__={{{ [<__tag__>is[blank]then<currentTiddler>else<__tag__>] }}} >
<$macrocall $name="toc-body" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>>/>
</$let>
\end
\define toc-linked-expandable-body(tag,sort:"",itemClassFilter,exclude,path)
@ -99,7 +102,7 @@ tags: $:/tags/Macro
\define toc-expandable(tag,sort:"",itemClassFilter:"",exclude,path)
\whitespace trim
<$let tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>
<$let __tag__={{{ [<__tag__>is[blank]then<currentTiddler>else<__tag__>] }}} tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>
<$set name="excluded" filter="[subfilter<__exclude__>] [<__tag__>]">
<ol class="tc-toc toc-expandable">
<$list filter="""[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[subfilter<__exclude__>]""">
@ -173,7 +176,7 @@ tags: $:/tags/Macro
\define toc-selective-expandable(tag,sort:"",itemClassFilter,exclude,path)
\whitespace trim
<$let tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>
<$let __tag__={{{ [<__tag__>is[blank]then<currentTiddler>else<__tag__>] }}} tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>
<$set name="excluded" filter="[subfilter<__exclude__>] [<__tag__>]">
<ol class="tc-toc toc-selective-expandable">
<$list filter="""[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[subfilter<__exclude__>]""">
@ -188,31 +191,35 @@ tags: $:/tags/Macro
\define toc-tabbed-external-nav(tag,sort:"",selectedTiddler:"$:/temp/toc/selectedTiddler",unselectedText,missingText,template:"",exclude)
\whitespace trim
<$tiddler tiddler={{{ [<__selectedTiddler__>get[text]] }}}>
<div class="tc-tabbed-table-of-contents">
<$linkcatcher to=<<__selectedTiddler__>>>
<div class="tc-table-of-contents">
<$macrocall $name="toc-selective-expandable" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter="[all[current]] -[<__selectedTiddler__>get[text]]" exclude=<<__exclude__>>/>
<$let __tag__={{{ [<__tag__>is[blank]then<currentTiddler>else<__tag__>] }}}>
<$tiddler tiddler={{{ [<__selectedTiddler__>get[text]] }}}>
<div class="tc-tabbed-table-of-contents">
<$linkcatcher to=<<__selectedTiddler__>>>
<div class="tc-table-of-contents">
<$macrocall $name="toc-selective-expandable" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter="[all[current]] -[<__selectedTiddler__>get[text]]" exclude=<<__exclude__>>/>
</div>
</$linkcatcher>
<div class="tc-tabbed-table-of-contents-content">
<$reveal stateTitle=<<__selectedTiddler__>> type="nomatch" text="">
<$transclude mode="block" tiddler=<<__template__>>>
<h1><<toc-caption>></h1>
<$transclude mode="block">$missingText$</$transclude>
</$transclude>
</$reveal>
<$reveal stateTitle=<<__selectedTiddler__>> type="match" text="">
$unselectedText$
</$reveal>
</div>
</$linkcatcher>
<div class="tc-tabbed-table-of-contents-content">
<$reveal stateTitle=<<__selectedTiddler__>> type="nomatch" text="">
<$transclude mode="block" tiddler=<<__template__>>>
<h1><<toc-caption>></h1>
<$transclude mode="block">$missingText$</$transclude>
</$transclude>
</$reveal>
<$reveal stateTitle=<<__selectedTiddler__>> type="match" text="">
$unselectedText$
</$reveal>
</div>
</div>
</$tiddler>
</$tiddler>
</$let>
\end
\define toc-tabbed-internal-nav(tag,sort:"",selectedTiddler:"$:/temp/toc/selectedTiddler",unselectedText,missingText,template:"",exclude)
\whitespace trim
<$linkcatcher to=<<__selectedTiddler__>>>
<$macrocall $name="toc-tabbed-external-nav" tag=<<__tag__>> sort=<<__sort__>> selectedTiddler=<<__selectedTiddler__>> unselectedText=<<__unselectedText__>> missingText=<<__missingText__>> template=<<__template__>> exclude=<<__exclude__>> />
</$linkcatcher>
<$let __tag__={{{ [<__tag__>is[blank]then<currentTiddler>else<__tag__>] }}}>
<$linkcatcher to=<<__selectedTiddler__>>>
<$macrocall $name="toc-tabbed-external-nav" tag=<<__tag__>> sort=<<__sort__>> selectedTiddler=<<__selectedTiddler__>> unselectedText=<<__unselectedText__>> missingText=<<__missingText__>> template=<<__template__>> exclude=<<__exclude__>> />
</$linkcatcher>
</$let>
\end

View File

@ -0,0 +1,13 @@
created: 20131128075743966
modified: 20241018104722786
original-modified: 20140919160655340
tags: Learning
title: Philosophy of Tiddlers
ja-title: Tiddlerの哲学
type: text/vnd.tiddlywiki
情報を記録して整理する目的は、情報を再利用できるようにすることです。記録された情報の価値は、再利用の容易さに直接比例します
[[Tiddler|Tiddlers]]の哲学は、情報を意味のある最小単位にスライスし、[[それらの間の関係を豊富にモデリングする|Structuring TiddlyWiki]]ことで、再利用の可能性を最大化することです。次に、集約と合成を使用して断片を織り合わせてストーリーを表現します
TiddlyWikiは、情報アイテム間の関係を表現し探索する簡潔な方法である、Tiddlerの代数を提供することを目指しています

View File

@ -17,7 +17,7 @@ type: text/vnd.tiddlywiki
! <$link><$view field="title"/></$link>
<div class="tc-subtitle"> <$view field="modified" format="relativedate"/> の投稿</div>
<div class="tc-subtitle"> <$view field="original-modified" format="relativedate"><$view field="modified" format="relativedate"/></$view> の投稿</div>
<$transclude/>

View File

@ -16,7 +16,7 @@ caption: エディション
! <$link><$view field="title"/></$link>
<div class="tc-subtitle"> <$view field="modified" format="relativedate"/> の投稿</div>
<div class="tc-subtitle"> <$view field="original-modified" format="relativedate"><$view field="modified" format="relativedate"/></$view> の投稿</div>
<$transclude/>

View File

@ -16,7 +16,7 @@ caption: パレット
! <$link><$view field="title"/></$link>
<div class="tc-subtitle"> <$view field="modified" format="relativedate"/> の投稿</div>
<div class="tc-subtitle"> <$view field="original-modified" format="relativedate"><$view field="modified" format="relativedate"/></$view> の投稿</div>
<$transclude/>

View File

@ -16,7 +16,7 @@ caption: プラグイン
! <$link><$view field="title"/></$link>
<div class="tc-subtitle"> <$view field="modified" format="relativedate"/> の投稿</div>
<div class="tc-subtitle"> <$view field="original-modified" format="relativedate"><$view field="modified" format="relativedate"/></$view> の投稿</div>
<$transclude/>

View File

@ -16,7 +16,7 @@ caption: テーマ
! <$link><$view field="title"/></$link>
<div class="tc-subtitle"> <$view field="modified" format="relativedate"/> の投稿</div>
<div class="tc-subtitle"> <$view field="original-modified" format="relativedate"><$view field="modified" format="relativedate"/></$view> の投稿</div>
<$transclude/>

View File

@ -17,7 +17,7 @@ type: text/vnd.tiddlywiki
! <$link><$view field="title"/></$link>
<div class="tc-subtitle"> <$view field="modified" format="relativedate"/> の投稿</div>
<div class="tc-subtitle"> <$view field="original-modified" format="relativedate"><$view field="modified" format="relativedate"/></$view> の投稿</div>
<$transclude/>

View File

@ -17,7 +17,7 @@ type: text/vnd.tiddlywiki
! <$link><$view field="title"/></$link>
<div class="tc-subtitle"> <$view field="modified" format="relativedate"/> の投稿</div>
<div class="tc-subtitle"> <$view field="original-modified" format="relativedate"><$view field="modified" format="relativedate"/></$view> の投稿</div>
<$transclude/>

View File

@ -0,0 +1,25 @@
created: 20140222133223882
modified: 20241016110202440
original-modified: 20140912150349097
tags: Meetups Videos
title: OXTWIG
ja-title: OXTWIG
type: text/vnd.tiddlywiki
''Oxford ~TiddlyWiki Interest Group''は毎月ミーティングを開き、TiddlyWikiに関する議論やデモンストレーションを行っています
次回のミーティングの詳細については、 https://oxtwig.eventbrite.co.uk/ をご覧ください
ディスカッションメーリングリストもあります: https://groups.google.com/forum/#!members/oxtwig
! OXTWIG #2
第2回OXTWIGミーティングは、2014年1月16日(木)に開催されました:
<iframe width="560" height="315" src="https://www.youtube.com/embed/WOK_nVBf_6U" frameborder="0" allowfullscreen></iframe>
! OXTWIG #1
最初のOXTWIGミーティングは2013年11月21日(木)に開催されました:
<iframe width="560" height="315" src="https://www.youtube.com/embed/tpNf_Dms_TE" frameborder="0" allowfullscreen></iframe>

View File

@ -16,7 +16,7 @@ caption: その他
! <$link><$view field="title"/></$link>
<div class="tc-subtitle"> <$view field="modified" format="relativedate"/> の投稿</div>
<div class="tc-subtitle"> <$view field="original-modified" format="relativedate"><$view field="modified" format="relativedate"/></$view> の投稿</div>
<$transclude/>

View File

@ -0,0 +1,13 @@
created: 20130823091700000
modified: 20241016110307487
original-modified: 20211124214214045
tags: Community Videos
title: TiddlyWiki Hangouts
ja-title: TiddlyWikiハングアウト
type: text/vnd.tiddlywiki
TiddlyWikiコミュニティは、長年にわたり多くのGoogleハングアウトを開催してきました。これらは、[[TiddlyWiki Googleグループ|https://groups.google.com/d/forum/tiddlywiki]]、および、[[TiddlyWiki Twitterアカウント|https://twitter.com/TiddlyWiki]]で発表されます。
過去のハングアウトは以下の~YouTubeプレイリストにアーカイブされています:
<iframe width="560" height="315" src="https://www.youtube.com/embed/videoseries?list=PLVT_2PPd-1p34gGCQ5qpwC8QdykxVAI3u" frameborder="0" allowfullscreen></iframe>

View File

@ -17,7 +17,7 @@ type: text/vnd.tiddlywiki
! <$link><$view field="title"/></$link>
<div class="tc-subtitle"> <$view field="modified" format="relativedate"/> の投稿</div>
<div class="tc-subtitle"> <$view field="original-modified" format="relativedate"><$view field="modified" format="relativedate"/></$view> の投稿</div>
<$transclude/>

View File

@ -0,0 +1,123 @@
created: 20210222140234737
modified: 20241019104919003
original-modified: 20211123034501278
tags: Learning KeyboardDrivenInput
title: Demonstration: keyboard-driven-input Macro
ja-title: デモ: キーボード入力マクロ
type: text/vnd.tiddlywiki
\define allshortcuts(descriptor)
<$wikify name=scutlist text=<<displayshortcuts (($descriptor$)) '' ' ' ''>> >
<$list filter="[<scutlist>split[ ]join[</kbd>や<kbd>]addprefix[<kbd>]addsuffix[</kbd>]]" variable=scts><<scts>></$list>
</$wikify>
\end
\define kdi-demo-textmacrocall()
```
<$macrocall $name=keyboard-driven-input
tiddler="$(tiddler)$"
storeTitle="$(storeTitle)$"
selectionStateTitle="$(selectionStateTitle)$"
configTiddlerFilter="$(configTiddlerFilter)$"
/>
```
\end
<$vars configTiddlerFilter="[[kdi-demo-configtid]]" tiddler="kdi-demo-tiddler" storeTitle="kdi-demo-storeTitle" selectionStateTitle="kdi-demo-selectionStateTitle" >
[[キーボード入力マクロ|keyboard-driven-input Macro]]は、ユーザーの入力に応じて更新されるフィルターされたリストを作成するために使用されます。また、キーボードを使用してリストをナビゲートしたり、リスト項目を使用してマクロを呼び出したりすることもできます。
これは、[[キーボードウィジェット|KeyboardWidget]]でラップされた''[[編集テキストウィジェット|EditTextWidget]]''で構成されています。`((input-accept))`、`((input-accept-variant))`、および`((input-cancel))`キーボードショートカットをリッスンする<<.def keyboard>>ウィジェットがありますが、これらのイベントに応答するデフォルトの動作はありません。マクロをユースケースに合わせて記述する必要があります。また、フィルターされたオプションリストのデフォルトの視覚化も定まっていません。
!!<<.var keyboard-driven-input>>マクロによって処理されるキーボード入力の種類:
!!!設定不可:
次のキーボードイベントは、[[$:/core/macros/keyboard-driven-input]]の<<.var keyboard-driven-input>>で定義されているマクロを呼び出します。
|入力 |目的 |マクロ |h
|タイプ入力 |リストフィルター内で使用される文字列を作成する |<<.var keyboard-input-actions>> |
|`((input-up))` (<<allshortcuts input-up>>) |フィルタリングされたリスト内の前の項目を一時的に選択する |パタメータ<<.param afterOrBefore>>=`"before"`、<<.param reverse>>=`"reverse[]"`付きの<<.var input-next-actions>> |
|`((input-down))` (<<allshortcuts input-down>>) |フィルタリングされたリスト内の次の項目を一時的に選択する |パラメータ<<.param afterOrBefore>>=`"after"`、<<.param reverse>>=`""`付きの<<.var input-next-actions>> |
上記のすべてのアクションは、<<.var keyboard-driven-input>>がマクロのパラメータを使用して指定されたTiddler内に保持されるデータを生成または変更します。その後、キーボードショートカットによって呼び出されるマクロだけでなく、例えばフィルタリングされたリストを表示するマクロなど、これらの外部もデータにアクセスできます。
!!!パラメータで設定可能:
次のキーボードイベントは、<<.var keyboard-driven-input>>にパラメータで名前が指定されているマクロを呼び出します。パラメータ名から目的が推測されますが、[[$:/core/macros/keyboard-driven-input]]内にはデフォルトのマクロは定義されていません。
|[[キーボードショートカット記述 |Keyboard Shortcut Descriptor]] |キーの組み合わせ |パタメーター |h
|`((input-accept))` |<<allshortcuts input-accept>> |<<.param inputAcceptActions>> |
|`((input-accept-variant))` |<<allshortcuts input-accept-variant>> |<<.param inputAcceptVariantActions>> |
|`((input-cancel))` |<<allshortcuts input-cancel>> |<<.param inputCancelActions>> |
<<.var keyboard-driven-input>> は、TiddlyWikiのさまざまなコア機能の一部として動作しているのを見ることができます。たとえば、[[検索機能|Searching in TiddlyWiki]]、[[tag-pickerマクロ|tag-picker Macro]]、[[リンクの挿入|Insert link]]のような[[エディターツールバー|Editor toolbar]]のドロップダウンインターフェースなどです。
!!デモに必要な最小限の材料
<<.var keyboard-driven-input>>マクロ自体はリストの結果を表示したり、選択されたオプションに対して何かを実行したりしないことを念頭に置いて、<<.var keyboard-driven-input>>マクロの最小限のデモンストレーションには以下が必要です:
# ユーザーのテキスト入力に応じて結果が変化する''フィルターを含むTiddler''は、ユーザーが選択できるオプションを生成すること
# ''いくつかのパラメータ:''
#*ステップ1で説明したフィルタが見つかるTiddlerのタイトルを返す''フィルタ''
#*入力イベントに応答して状態情報を格納するために使用する''Tiddler タイトル''。これらのTiddlerは既に存在している必要はありません。存在する場合は、<<.var keyboard-driven-input>>マクロによってその内容が変更されます。
!!検索フィルター
デフォルトでは、Tiddler(そのタイトルは、以下で説明するパラメータで指定されます)の<<.field first-search-filter>>と<<.field second-search-filter>>フィールドでフィルターを検索します。
このフィルタは、<<.var userInput>>と呼ばれる変数を参照できます。この変数は、最新の<kbd><<displayshortcuts ((input-up))>></kbd>や<kbd><<displayshortcuts ((input-down))>></kbd>イベントの発生時に、状態Tiddler(後述)に保存されている<<.def edit-text>>ウィジェットの内容を表示します。
''注:'' このフィルターが<<.var keyboard-driven-input>>マクロ(フィルターされたオプションを表示するポップアップなど)の外のコンテキストで参照される場合は、変数<<.var userInput>>もそれらのコンテキストで定義する必要があります(状態Tiddlerから読み取ることによって)。
!!最小限のパラメータ
|Parameter name |Notes |h
|<<.param configTiddlerFilter>> |これは、Tiddlerのタイトルではなく、条件付き動作(たとえば、アクティブなタブの確認やフォールバックで存在しないフィルターを選び出すなど)を可能にするフィルターです。<br>返されるタイトルは、<<.var keyboard-driven-input>>が結果リストを生成できる少なくとも1つのフィルターを含む既存のTiddlerに属している必要があります。 |
|<<.param tiddler>> |このTiddlerには、最新のイベントに応じて、入力された内容や即時の選択結果が含まれます。これは、''edit-text''ウィジェットでキーが押されるたびに、//また//、ユーザーが<kbd><<displayshortcuts ((input-up))>></kbd>や<kbd><<displayshortcuts ((input-down))>></kbd>キーを使用してフィルタリングされた結果を循環するときにも更新されます。 |
|<<.param storeTitle>> |このTiddlerは、常にユーザー入力を反映します(各キーストロークの後にTiddler<<.param tiddler>>から''edit-text''ウィジェットに転送されます)。 |
|<<.param selectionStateTitle>> |このTiddlerは、<kbd><<displayshortcuts ((input-up))>></kbd>や<kbd><<displayshortcuts ((input-down))>></kbd>イベントで更新され、最大2つのフィルタのどちらがリストを生成したかに応じて、サフィックス`-userInput`が付いたユーザー入力か、またはサフィックス`-primaryList`か`-secondaryList`が付いた瞬間的な選択のいずれかが含まれます。 |
!!デモのセットアップ
私は<$list filter=<<configTiddlerFilter>> />というTiddlerを作成し、その<<.field first-search-filter>>フィールドに次のフィルターを配置しました:
<code><$list filter=<<configTiddlerFilter>> ><$text text={{!!first-search-filter}}/></$list></code>.
これは、タイトルにユーザーが入力したテキストが含まれる非システムTiddlerをフィルターします。
上記の<<.var keyboard-driven-input>>を持つフィルターを使用するには、パラメーター<<.param configTiddlerFilter>>の値が<$list filter=<<configTiddlerFilter>> />を返すフィルターである必要があります。
<<.param tiddler>>、<<.param storeTitle>>、<<.param selectionStateTitle>>は、かなり任意に選択できます(変更したくないTiddlerのタイトルを使用しないように注意するだけです)。
このデモは、次のマクロ呼び出しで呼び出すことができます:
<<kdi-demo-textmacrocall>>
!!デモ
ここに入力してみてください: <$macrocall $name=keyboard-driven-input
tiddler=<<tiddler>>
storeTitle=<<storeTitle>>
selectionStateTitle=<<selectionStateTitle>>
configTiddlerFilter=<<configTiddlerFilter>>
/>
下の表のさまざまな状態Tiddlerの変化を観察してください。<kbd><<displayshortcuts ((input-up))>></kbd>や<kbd><<displayshortcuts ((input-down))>></kbd>キーを使用して、フィルター結果を移動します。何も変化がない場合は、入力を短くしてフィルターを広げてください。入力の長さが0の場合、リストにはシステム以外のTiddlerがすべて含まれます。
@@.tablestyle
|Parameter name |Tiddlerのタイトル |Tiddlerの<<.field text>>フィールドの内容 |h
|<<.param tiddler>> |{{{[<tiddler>]}}} |<pre><$text text={{{[<tiddler>get[text]]}}}/></pre>|
|<<.param storeTitle>> |{{{[<storeTitle>]}}} |<pre><$text text= {{{[<storeTitle>get[text]]}}}/></pre>|
|<<.param selectionStateTitle>> |{{{[<selectionStateTitle>]}}} |<pre><$text text={{{[<selectionStateTitle>get[text]]}}}/></pre>|
@@
<<.var keyboard-driven-input>>マクロには、囲まれた''edit-text''ウィジェットのすべての属性を含む多くのパラメーターが用意されており、その使用方法や結果の表示方法、操作方法が非常に柔軟です。
参照: [[検索結果のカスタマイズ|Customising search results]]と[[$:/core/ui/DefaultSearchResultList]]
<style>
.tablestyle {width:100%;}
.tablestyle td + td + td {width: 50%;}
</style>

View File

@ -0,0 +1,8 @@
created: 20130825143000000
modified: 20241017114535878
original-modified: 20211115013141494
tags: task TaskManagementExample
title: Compose ballad
ja-title: バラードを作曲する
//これは、[[タスク管理の例|TaskManagementExample]]のサンプルタスクです//

View File

@ -0,0 +1,8 @@
created: 20130825143100000
modified: 20241017115556461
original-modified: 20211115013240401
tags: task TaskManagementExample
title: Get the Ring
ja-title: 指輪を手に入れる
//これは、[[タスク管理の例|TaskManagementExample]]のサンプルタスクです//

View File

@ -0,0 +1,8 @@
created: 20130825143100000
modified: 20241017115219870
original-modified: 20211115181040966
tags: task done TaskManagementExample
title: Go to Mordor
ja-title: モルドールに行く
//これは、[[タスク管理の例|TaskManagementExample]]のサンプルタスクです//

View File

@ -0,0 +1,9 @@
created: 20130825143100000
list-before: Get the Ring
modified: 20241017115431750
original-modified: 20211115013217852
tags: task TaskManagementExample
title: Kill the Dragon
ja-title: ドラゴンを倒す
//これは、[[タスク管理の例|TaskManagementExample]]のサンプルタスクです//

View File

@ -0,0 +1,8 @@
created: 20130825143100000
modified: 20241017115742470
original-modified: 20211115013200231
tags: task TaskManagementExample
title: Make the beds
ja-title: ベッドを整える
//これは、[[タスク管理の例|TaskManagementExample]]のサンプルタスクです//

View File

@ -0,0 +1,27 @@
created: 20130825213300000
modified: 20241017114309207
original-modified: 20180307153530187
tags: Learning
title: TaskManagementExample
ja-title: タスク管理の例
type: text/vnd.tiddlywiki
TiddlyWiki5は、カスタマイズすることなく、シンプルなタスク管理システムとして使用できます。タスクに`task`タグを付け、完了したタスクに`done`タグも付けるというアイデアです。このようにして、タスクリストを簡単に作成できます。
<<.tip """タスクをドラッグアンドドロップして並べ替える機能が追加された[[このデモの拡張版|TaskManagementExample (Draggable)]]があります""">>
! 未完了のタスク
<$list filter="[!has[draft.of]tag[task]!tag[done]sort[created]]">
<$checkbox tag="done"> <$link/></$checkbox>
</$list>
! 完了したタスク
<$list filter="[!has[draft.of]tag[task]tag[done]sort[created]]">
<$checkbox tag="done"> ~~<$link/>~~</$checkbox>
</$list>

View File

@ -0,0 +1,25 @@
created: 20180307153530187
modified: 20241022104926750
original-modified: 20180307153530187
tags: Learning
title: TaskManagementExample (Draggable)
ja-title: タスク管理の例(ドラッグ可能)
type: text/vnd.tiddlywiki
これは[[タスク管理の例|TaskManagementExample]]のタスクリストをドラッグアンドドロップして並べ替える機能を付与した強化バージョンです
! 未完了のタスク
//タスクをドラッグして順序を変更できます//
<<list-tagged-draggable tag:"task" subFilter:"!has[draft.of]!tag[done]" itemTemplate:"TaskManagementExampleDraggableTemplate" emptyMessage:"アクティブなタスクはありません">>
! 完了したタスク
//(完了した逆順にリストされています)//
<$list filter="[!has[draft.of]tag[task]tag[done]sort[modified]]">
<div>
<$checkbox tag="done"> ~~<$link/>~~</$checkbox>
</div>
</$list>

View File

@ -0,0 +1,9 @@
created: 20180307153530187
modified: 20241022105026989
original-modified: 20180307153530187
tags: Learning
title: TaskManagementExampleDraggableTemplate
ja-title: タスク管理の例(ドラッグ可能)のテンプレート
type: text/vnd.tiddlywiki
<$checkbox tag="done"> <$link/></$checkbox>

View File

@ -0,0 +1,8 @@
color: #2dbe37
created: 20211115013354157
icon: $:/core/images/done-button
modified: 20241017115050246
original-modified: 20211115013357660
tags: TaskManagementExample
title: done
ja-title: 済み

View File

@ -0,0 +1,10 @@
color: #8d9ac3
created: 20130825213200000
list: [[Make the beds]]
modified: 20241017115926413
original-modified: 20211115013121643
tags: TaskManagementExample
title: task
ja-title: タスク
//このタグは、[[タスク管理の例|TaskManagementExample]]のタスクを識別します//

View File

@ -0,0 +1,97 @@
created: 20140410101941871
modified: 20241016110639693
original-modified: 20201103111438568
tags: Learning Filters
title: Introduction to filter notation
ja-title: フィルタ表記の紹介
type: text/vnd.tiddlywiki
<<.preamble """ここでは、Tiddlerのセットを選択する[[フィルタ|Filters]]の書き方の基本を説明しています。より技術的なプレゼンテーションについては、[[フィルタのシンタックス|Filter Syntax]]を参照してください""">>
<$macrocall $name=".tip" _="""フィルタを単独でTiddlerに入力するだけでは、フィルタは何も行いません。コンテキストが必要です。フィルタを試す簡単な方法は、[[詳細検索|$:/AdvancedSearch]]の<<.advancedsearch-tab Filter>>タブにフィルタを入力することです"""/>
最も単純なケースは、どのTiddlerが必要かすでに正確にわかっている場合です。各タイトルを二重角括弧で囲み、各タイトルと次のタイトルの間にスペースを入れて入力します:
> `[[Recipe book]] [[ScrambledEggs]] [[Mom's apple pie]]`
タイトルにスペースが含まれていない場合は、角括弧を省略できます:
> `[[Recipe book]] ScrambledEggs [[Mom's apple pie]]`
二重角括弧は実際には次の表記の短縮形です:
> `[title[ScrambledEggs]]`
... 任意のフィルタの<<.def "一般的なモデル">>は次のようになります:
> `[operator[parameter]]`
例えば、<<.tag Recipe>>でタグ付けされたすべてのTiddlerを選択する方法は次のとおりです:
> `[tag[Recipe]]`
演算子の直前に感嘆符`!`を追加すると、意味を逆にすることができます。例えば、<<.tag Recipe>>タグのない任意のTiddlerを選択できます:
> `[!tag[Recipe]]`
Tiddlerは、タイトルとタグ以外の他のフィールドでもフィルタリングできます:
> `[field:serving[4]]`
この例では、<<.field serving>>フィールドに、<<.value 4>>を持つすべてのTiddlerを選択します:
"serving"という単語は標準のフィルタ演算子ではない(また、標準のフィルタ演算子になる可能性も低い)ため、`field:`接頭辞を省略しても安全です:
> `[serving[4]]`
!組み合わせ
これまで見てきたフィルタには、それぞれ1つのステップしか含まれていません。でも、次のように複数のステップを一緒に<<.def ラン>>できます:
> `[tag[Vegetarian]!tag[soup]serving[4]]`
1組の角括弧内にラン全体がどのように含まれているかに注目してください
Tiddlerはランの中で<<.em すべて>>のステップを一致させなければなりません。したがって、上の例では、4人分のベジタリアンレシピ(スープ以外)を取得します
一連の個別のランにより、<<.em いずれか>>のランに一致するTiddlerが選択されます。これを使用して、3人分、または、4人分、5人分のレシピを見つけることができます:
> `[serving[3]] [serving[4]] [serving[5]]`
4人分のベジタリアンレシピを無視したい場合は、次のように言えます:
> `[serving[3]] [serving[4]!tag[Vegetarian]] [serving[5]]`
デフォルトでは、各ランではWiki内のすべてのTiddlerが考慮されます。ただし、`+`記号を使用して、前の実行で選択されたTiddlerのみを考慮するようにランを強制することができます:
> `[serving[3]] [serving[4]] [serving[5]] +[tag[Vegetarian]] +[sort[title]]`
これにより、3人分、または、4人分、5人分のレシピが選択され、次に<<.em それら>>がフィルタリングされてベジタリアンレシピのみが残り、最後に残ったレシピがタイトルのアルファベット順に並べ替えられます
同様の方法で、`-`符号を使用して、これまでの結果からランのTiddlerを<<.em 除外>>できます。次の表記では、2つを除くすべてのベジタリアンレシピを選択します:
> `[tag[Vegetarian]] -[title[ScrambledEggs]] -BeansOnToast`
!スペシャルパラメータ
これまで見てきた各ステップのパラメータは角括弧内にあります。これは、~TiddlyWikiが括弧内にある正確な文字列をフィルターすることを意味します。でも、他に2種類の括弧も使用できます:
<<.def "中括弧">>`{}`はパラメータはTextReferenceであり、別のTiddlerのコンテンツに置き換えられることを意味します。例えば、タイトルが<<.tid Preference>>であり、その内容が1つの単語<<.value Vegetarian>>であるTiddlerの場合、次のように言えます:
> `[tag{Preference}]`
この単純な形式では、TextReferenceはTiddlerの完全な内容(技術用語では、Tiddlerのテキストフィールド)を取得し、TextReferenceの代わりにそれを置き換えます。こうすることで、`[tag[Vegetarian]]`を記述した場合と同様に、Tiddlerの内容がフィルタパラメータになります。違いは、Preference Tiddlerの内容を変更することで、パラメータを変更する柔軟性が高まります
<<.def "山括弧">>`<>`は、パラメータが[[変数|Variables]]の名前であり、その値が代わりに使用されることを意味します。現在のタイトルをテキストに含むTiddlerを選択するフィルターとして、<<.vlink currentTiddler>>組込み変数を使用します:
山括弧は、パラメータが[[変数|Variables]]の名前であり、その値が代わりに使用されることを意味します。ここでは、テキストに現在のタイトルが含まれるTiddlerを選択するフィルタで、組込み変数<<.vlink currentTiddler>>を使用します:
> `[search<currentTiddler>]`
これらの特殊な括弧はネストできないことに注意してください。例えば、`[search{<currentTiddler>}]`と書くことはできません
!複数のパラメータ
<<.from-version "5.1.23">>一部のステップは、` , `文字で区切られた複数のパラメータを受け入れます
> Example: `[param1],[param2]` or `<param1>,{param2}`

View File

@ -3,7 +3,8 @@ ja-title: HelloThumbnail - Grok TiddlyWiki
tags: HelloThumbnail
color: #D5B7EA
image: Grok TiddlyWiki Banner
caption: Grok ~TiddlyWiki
caption: Grok ~TiddlyWiki 2.0
link: "Grok TiddlyWiki" by Soren Bjornstad
ribbon-text: NEW 2.0
~TiddlyWikiを最大限に活用するために知っておくべきこと
~TiddlyWikiの総合的なインタラクティブガイド。基礎から高度な概念までを網羅し、学習に役立つ演習やヒントも掲載しています

View File

@ -0,0 +1,24 @@
created: 20140103091348509
modified: 20241018104349502
original-modified: 20140919161534259
tags: Learning
title: Adding a Twitter Follow button
ja-title: Twitterのフォローボタンを追加する
type: text/vnd.tiddlywiki
以下は、特定のユーザー名のTwitterフォローボタンを提供するマクロです:
```
\define twitterFollowButton(username)
<iframe allowtransparency="true" frameborder="0" scrolling="no" src="//platform.twitter.com/widgets/follow_button.html?screen_name=$username$" style="width:300px; height:20px;"></iframe>
\end
```
https://dev.twitter.com/docs/follow-button で公開されているバージョンからの唯一の変更点は、新しい行が削除されたことです
src URLはプロトコル(つまり、"http"または"https")なしで指定されていることに注意してください。このようにして、サイトがHTTPドメインでホストされているかHTTPSドメインでホストされているかに関係なく機能するようにします。TiddlyWikiを"file://" URLでオフライン使用しているときにTwitterボタンを機能させたい場合は、プロトコルを手動で追加する必要があります。例えば:
```
<iframe allowtransparency="true" frameborder="0" scrolling="no" src="https://platform.twitter.com/widgets/follow_button.html?screen_name=jermolene" style="width:300px; height:20px;"></iframe>
```

View File

@ -0,0 +1,16 @@
created: 20130825103300000
modified: 20241018105028003
original-modified: 20140912150136251
tags: Learning
title: Adopt a Titles Policy
ja-title: タイトルポリシーを採用する
type: text/vnd.tiddlywiki
TiddlyWikiドキュメント内の構造が複雑になるにつれて、Tiddlerのタイトルの一貫性を保つのが難しくなることがあります。例えば、用語は複数形で定義すべきでしょうか、それとも単数形で定義すべきでしょうか?キャメルケースか、スペース区切りか?
正式にタイトル設定ポリシーを定めると、混乱を減らすことができます。例えば、このWikiのタイトルポリシーは、[[ドキュメントスタイルガイド|Documentation Style Guide]]に記録されています
! [[システムTiddler|SystemTiddler]] のタイトル
役にたつ規則は、作成するシステムTiddlerにはプレフィックス`$:/_`を使用することです。そうするとサイドバーのシステムTiddlerリストの先頭付近に表示されるようにできます

View File

@ -0,0 +1,61 @@
created: 20160424150551727
modified: 20241018105413659
original-modified: 20230615114519672
tags: Learning
title: Concatenating text and variables using macro substitution
ja-title: マクロ置換を使用してテキストと変数を連結する
type: text/vnd.tiddlywiki
!! 重要
<<.from-version "5.3.0">> テキストと変数を連結するには、[[置換された属性|Substituted Attribute Values]]や[[置換フィルター演算子|substitute Operator]]を使用することをお勧めします。
~TiddlyWikiでは、変数の値をさまざまなテキスト文字列と組み合わせることがよくあります。一部のプログラミング言語では、このプロセスはテキストの"連結"と呼ばれることがよくあります。
---
!! 何があったのか
例えば、顧客データベースのテンプレートを設定し、顧客に関する追加の連絡先情報をリンクによって自動的に参照するようにしたいとします。Tiddler内では、次のようなことを試すかもしれません:
<<.bad-example "`[[Additional Info|<<currentTiddler>>-Contact]]`">>
しかし、これは正しく機能しません。これを試すと、リンクは文字通りに解釈され、次の場所に移動しようとします:
```
<<currentTiddler>>-Contact
```
解決策は、マクロを使用して、`<<currentTiddler>>`がレンダリングされた値と、追加のテキスト`-Contact`とを組み合わせることです。
Tiddlerの冒頭で、次のようなマクロを作成します:
```
\define linkup(link) [[Additional Info|$link$-Contact]]
```
新しいマクロを次のように呼び出すること試すかもしれません:
<<.bad-example "`<<linkup <<currentTiddler>> >>`">>
しかし、そうすると、`<<currentTiddler>>`はレンダリングされずに、文字通り渡されることがわかります。
代わりに、次のように[[MacroCallWidget]]ウィジェットを使用できます:
```
<$macrocall $name="linkup" link=<<currentTiddler>> />
```
この場合、変数の値をマクロに直接渡しました。これは、このタスクを実行するための一般的な方法です。他の変数に基づいてさらにリンクを作成したい場合は、それぞれの状況でマクロを再利用できます。
この場合のように、使用している変数が`currentTiddler`だけであれば、次のように、簡単にマクロを記述できます:
```
\define linkup() [[Additional Info|$(currentTiddler)$-Contact]]
```
この場合、引数を渡さないことに注意してください。代わりに、特別な構文`$(variable)$`を使用して変数を参照します。引数を渡さないため、次のように`<$macrocall>`ウィジェットなしでより簡単に呼び出すことができます:
```
<<linkup>>
```

View File

@ -0,0 +1,18 @@
created: 20220427174702859
modified: 20241019104110533
original-modified: 20230922122551197
tags: [[JSON in TiddlyWiki]] Learning
title: Constructing JSON tiddlers
ja-title: JSON Tiddlerの構築
TiddlyWikiでのJSONの使い方の概要については、[[TiddlyWikiでのJSON|JSON in TiddlyWiki]]を参照してください
JSONデータは単なるプレーンテキストであるため、Wikiテキストで生成するためのさまざまな手法が存在します
高いレベルでは、TiddlyWiki独自のTiddler形式でJSONデータを生成する方法がいくつかあります:
* [[JSONTiddlerウィジェット|JSONTiddlerWidget]]
* [[jsontiddlerマクロ|jsontiddler Macro]]
* [[jsontiddlersマクロ|jsontiddlers Macro]]
JSONデータを手動で構築する場合、特殊文字が適切にエスケープされていることを確認するために[[jsonstringifyオペレーター|jsonstringify Operator]]が必要です

View File

@ -0,0 +1,34 @@
created: 20140214215718317
modified: 20241016112045089
original-modified: 20211127032217828
tags: Learning
title: Creating SubStories
ja-title: サブストーリーを作成する
type: text/vnd.tiddlywiki
この例では、メイン[[ストーリー|Story River]]から独立したTiddler内にサブストーリーを作成する方法を示します。NavigatorWidgetとListWidgetを連携します:
# リンクをクリックすると、[[ストーリー|Story River]]にTiddlerを追加します。リンクのクリックに対応するTiddlerに移動します(NavigatorWidgetの''story''属性)
# Tiddlerの閉じるボタンがクリックされたときに、[[ストーリー|Story River]]からTiddlerを削除します(NavigatorWidgetの''story''属性)
# Tiddlerの開閉をアニメーションします(ListWidgetの''storyview''属性)
# 開いているTiddlerのリストを表示します(ListWidgetの''filter''属性と''template''属性)
# Tiddlerを[[ドラフトモード|DraftMechanism]]で表示します(ListWidgetの''editTemplate''属性)
# [[ナビゲーション履歴|HistoryMechanism]]を追跡します(NavigatorWidgetとListWidgetの両方の''history''属性)
# そのほかいろいろ!
コード例は次のとおりです(関連する議論については、StateMechanismも参照してください):
<$macrocall $name='wikitext-example-without-html'
src='<$navigator story="$:/temp/DemoStoryList" history="$:/temp/DemoHistoryList">
{{$:/core/ui/SideBarSegments/search}}
<$list
filter="[list[$:/temp/DemoStoryList]]"
history="$:/temp/DemoHistoryList"
template={{$:/config/ui/ViewTemplate}}
editTemplate={{$:/config/ui/EditTemplate}}
storyview="classic"
emptyMessage="上の検索ボックスを使用してください。クリックした検索リンクは、メインストーリーではなくここで開きます<p>何を検索すればよいか浮かびませんか?では、このリンクをクリックしてください:[[こんにちは|HelloThere]]</p>"/>
</$navigator>'>

View File

@ -0,0 +1,40 @@
created: 20140406210404245
modified: 20241017113402647
original-modified: 20140919161501896
tags: Learning
title: Editing Tiddlers with Emacs
ja-title: TiddlerをEmacsで編集する
type: text/vnd.tiddlywiki
Michael Foglemanは、TiddlyWikiの.tidファイルを編集するための[[tid-mode|https://github.com/mwfogleman/tid-mode]]と呼ばれる[[Emacs|http://www.gnu.org/software/emacs/]]のメジャーモードを作成しました。これはtext-modeから派生し、便利なマイナーモードorg-structとsubwordを使用し、.tidファイルを保存するときに変更時刻を更新します
彼はまた、EmacsでTiddlyWikiを使用するための2つのヘルパー関数も作成しました。1つ目は、DiredでTiddlerディレクトリを開きます。2つ目はブラウザでTiddlyWikiを開きます
```
(defun open-wiki ()
"Opens a TiddlyWiki directory in Dired."
(interactive)
(dired "~/Dropbox/wiki/tiddlers/"))
```
```
(defun browse-wiki ()
"Opens TiddlyWiki in the browser."
(interactive)
(browse-url "127.0.0.1:8080/"))
```
後者の関数では、ブラウザの指定が必要になる場合があります:
```
(setq browse-url-browser-function 'browse-url-generic
browse-url-generic-program "chromium")
```
これらの関数をglobal-set-key関数でバインドできます:
```
(global-set-key (kbd "C-c w") 'open-wiki)
```
現時点では、これらはtid-modeに統合されていません

View File

@ -0,0 +1,11 @@
modified: 20241020104154015
original-modified: 20160111190002
created: 20140406210404245
tags: Learning
title: Editing Tiddlers with Vim
ja-title: TiddlerをVimで編集する
type: text/vnd.tiddlywiki
Devin Weaverは https://github.com/sukima/vim-tiddlywiki に[[Vim|http://www.vim.org/]]プラグインを作成しました
TiddlyWikiのシンタックスのほとんどをサポートしており、`modified`フィールドを自動更新するファイルタイププラグインが含まれています

View File

@ -0,0 +1,51 @@
created: 20161209172820513
modified: 20241020104954951
original-modified: 20161220161653258
tags: Learning
title: Formatting List Results as Tables with CSS - Specified Columns Methods
ja-title: CSSを使用してリスト結果を表フォーマットで出力する - 固定列メソッド
type: text/vnd.tiddlywiki
``<$list>``ウィジェットの結果を単純な1つのリストではなく、複数列の形式でフォーマットしたい場合があります。この方法では、~CSSを使用してリストを列として設定し、必要な列の数がわかっていることを前提としています。ここでの方法は、テーブルに含める列の数を反映するスタイルを作成し、そのスタイルを結果のリスト出力に適用することです
他のテーブル作成テクニックについては、以下も参照してください:
* [[CSSを使用してリスト結果を表フォーマットで出力する - 可変列メソッド|Formatting List Results as Tables with CSS - Variable Column Method]]
* [[リスト結果を表フォーマットで出力する(CSS無し)|Formatting List Results as Tables (no CSS)]]
!!! 1) `$:/tags/Stylesheet`でタグ付けされた列に対して、以下を含むTiddlerを作成します:
```
/* FOUR COLUMN MODE */
.fourcolumns {
display:block;
column-count:4;
column-gap:1em;
-moz-column-count:4;
-moz-column-gap:1em;
-webkit-column-count: 4;
-webkit-column-gap:1em;
}
```
列数を示す値がさまざまな場所に必要なことに注意してください
!!! 2) 次に、出力を次のようにフォーマットします:
```
@@.fourcolumns
<$list filter="[tag[Filter Operators]]" variable="foo">
<<foo>><br>
</$list>
@@
```
!! フィルター演算子の一部のリストを示す例
@@.fourcolumns
<$list filter="[tag[Filter Operators]limit[24]]" variable="foo">
<<foo>><br>
</$list>
@@

View File

@ -0,0 +1,85 @@
created: 20161209172820513
modified: 20241020105248614
original-modified: 20161220162845058
tags: Learning
title: Formatting List Results as Tables with CSS - Variable Column Method
ja-title: CSSを使用してリスト結果を表フォーマットで出力する - 可変列メソッド
type: text/vnd.tiddlywiki
``<$list>``ウィジェットの結果を単純な1つのリストではなく、複数列の形式でフォーマットしたい場合があります。この方法では、CSSを使用してリストを列として設定します。応答性が高く、ウィンドウが小さすぎる場合は、表示する列の数を減らすために改行位置を変更します
固定の列数を直接指定するのではなく、リストの最大幅(Tiddlerの幅をトランスクルージョンする可能性があります)と各項目の幅を指定します。左から右にリストされ、新しい行に折り返されます
他のテーブル作成テクニックについては、以下も参照してください:
* [[CSSを使用してリスト結果を表フォーマットで出力する - 固定列メソッド|Formatting List Results as Tables with CSS - Specified Columns Methods]]
* [[リスト結果を表フォーマットで出力する(CSS無し)|Formatting List Results as Tables (no CSS)]]
!! 既存の~TiddlyWikiタグ50個を使用したリストの例
```
<div class="dynamic-table">
<$list filter="[has[tags]tags[]sort[title]first[50]]">
<span class="item">
<$transclude tiddler="$:/core/ui/TagTemplate"/>
</span>
</$list>
</div>
```
!! リストで使用するスタイルシートの例
```
<style>
.dynamic-table {
max-width:700px; /* could transclude tiddler width instead */
-ms-box-orient: vertical; /* might be unnecessary */
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -moz-flex;
display: -webkit-flex;
display: inline-flex;
-webkit-flex-wrap: wrap;
flex-wrap: wrap;
flex-direction: row;
}
.item {
max-width:160px; min-width:160px;
flex: 0 0 2em; /* -grow, -shrink, -basis */
}
</style>
```
!! 結果
<div class="dynamic-table">
<$list filter="[has[tags]tags[]sort[title]first[50]]">
<span class="item">
<$transclude tiddler="$:/core/ui/TagTemplate"/>
</span>
</$list>
</div>
<style>
.dynamic-table {
max-width:700px; /* could transclude tiddler width instead */
-ms-box-orient: vertical;
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -moz-flex;
display: -webkit-flex;
display: inline-flex;
-webkit-flex-wrap: wrap;
flex-wrap: wrap;
flex-direction: row;
}
.item {
max-width:160px; min-width:160px;
flex: 0 0 2em; /* -grow, -shrink, -basis */
}
</style>

View File

@ -0,0 +1,51 @@
created: 20161220154952676
modified: 20241020104643991
original-modified: 20161220161706470
tags: Learning
title: Formatting List Results as Tables (no CSS)
ja-title: リスト結果を表フォーマットで出力する(CSS無し)
type: text/vnd.tiddlywiki
``<$list>``ウィジェットの結果を単純な1つのリストではなく、複数列の形式でフォーマットしたい場合があります。次のメソッドでは、実際のテーブル構造を作成し、[[n番目の演算子|nth Operator]]を使用して各行の改行を実現します。この方法では応答性はありません。つまり、ウィンドウが小さすぎる場合、表示する列を減らすための位置変更を行いません
一番外側のリスト構造では、項目番号に改行が発生することを示すカウントを指定する必要があります。したがって、次の例では、各行は4個の項目の後で区切られるため、順序は1、5、9、・・・になります。これには、存在する項目の最大数を事前に知っておく必要があることに注意してください。n-1個の項目に設定される内部制限もあります(nは必要な列の数です)
内側の`<$list>`ウィジェット内で駆動フィルター演算子を繰り返す必要があることにも注意してください。明らかに、このテクニックはマクロの実装に役立ちます
他のテーブル作成テクニックについては、以下も参照してください:
* [[CSSを使用してリスト結果を表フォーマットで出力する - 可変列メソッド|Formatting List Results as Tables with CSS - Variable Column Method]]
* [[CSSを使用してリスト結果を表フォーマットで出力する - 固定列メソッド|Formatting List Results as Tables with CSS - Specified Columns Methods]]
!! 項目数が70未満の4列テーブルのコード例
```
<table>
<$list filter="1 5 9 13 17 21 25 29 33 37 41 45 49 53 57 61 65" variable ="rows">
<$list filter="[tag[Filter Operators]limit[50]] +[nth<rows>]" variable="cell">
<tr>
<td> <<cell>> </td>
<$list filter="[tag[Filter Operators]limit[50]] +[allafter<cell>limit[3]]" variable="this">
<td> <<this>> </td>
</$list>
</tr>
</$list>
</$list>
</table>
```
!! 結果
<table>
<$list filter="1 5 9 13 17 21 25 29 33 37 41 45 49 53 57 61 65" variable ="rows">
<$list filter="[tag[Filter Operators]limit[50]] +[nth<rows>]" variable="cell">
<tr>
<td> <<cell>> </td>
<$list filter="[tag[Filter Operators]limit[50]] +[allafter<cell>limit[3]]" variable="this">
<td> <<this>> </td>
</$list>
</tr>
</$list>
</$list>
</table>

View File

@ -0,0 +1,22 @@
title: How to add a banner for GitHub contributions
ja-title: GitHub投稿のバナーを追加する方法
modified: 20241023113051454
original-modified: 20141123094403948
created: 20141123094403948
tags: Learning
https://tiddlywiki.com でTiddlerを編集すると、GitHubでTiddlerのソースを編集するように促す小さなリボンが表示されます。
Node.jsを使用している場合は、次のようにして、この機能を独自のTiddlyWikiベースのサイトに複製できます:
# [[Wikiフォルダー|TiddlyWikiFolders]]の<$link to="tiddlywiki.info Files">`tiddlywiki.info`</$link>ファイルに次の設定が含まれていることを確認してください:
#> <pre><code> "config": {
"retain-original-tiddler-path": true
}</code></pre>
# Wikiに[[$:/ContributionBanner]]Tiddlerをコピーします
# 次のように編集します:
## https://github.com/TiddlyWiki/TiddlyWiki5/edit/master/editions/tw5.com/tiddlers/ から、自分のGitHubリポジトリを指すように、GitHubリンクURLを修正します
## "Can you help us improve this documentation?"で始まるテキストの文言が訪問者にとって適切であることを確認してください
## [[Improving TiddlyWiki Documentation]]へのリンクを調整して、投稿の手順の説明が記載された独自のTiddlerを指すようにします。

View File

@ -0,0 +1,27 @@
created: 20161209172820513
modified: 20241020110058381
original-modified: 20190220000000000
tags: Learning
title: How to change the sort order of sub-branches in a TOC macro
ja-title: TOCマクロでのサブブランチのソート順を変更する方法
type: text/vnd.tiddlywiki
次のような[[目次|Table-of-Contents Macros]]マクロを使用していると想定します:
```
<<toc-selective-expandable "TableOfContents" "sort[title]">>
```
多くの場合、並び順は問題ありませんが、`Journal`タグ付けされたアイテムを`created`フィールドの順に並べ替えたいとします。`Journal`タグ付けされたサブ項目だけに別の並べ替え順を適用するにはどうすればよいでしょうか?
秘訣は、別の並べ替え基準を指すフィールドを、親のタグTiddler(つまり、`Journal`)に追加することです。そのフィールドを`fuzzy`と呼び、値`created`を入力します(`created `はTiddlerの作成日を持つフィールドの名前です)
次に、[[目次|Table-of-Contents Macros]]を次のように変更します:
```
<<toc-selective-expandable "TableOfContents" "sort{!!fuzzy}">>
```
これで、`created `の日付順に並べ替えられる`Journal`Tiddlerの子を除き、目次はどこでもタイトル順に並べ替えられるようになります
このトリックの欠点は、1つの特別なフィールドのみに逆順ソートを適用できないことです。並べ替え順序を逆順にすると、どこも逆になります

View File

@ -0,0 +1,42 @@
created: 20211204120244761
modified: 20241024105517309
original-modified: 20211206165108185
tags: Learning Cascades [[Story Tiddler Template]] [[Story Tiddler Template Cascade]] [[Customise TiddlyWiki]]
title: How to create a custom story tiddler template
ja-title: カスタムストーリーTiddlerテンプレートを作成する方法
type: text/vnd.tiddlywiki
ここでは、[[ストーリーTiddlerテンプレートカスケード|Story Tiddler Template Cascade]]にルールを追加して、<<tag "$:/tags/TiddlerList">>タグを付けたTiddlerをリストフィールドに名前が付けられたTiddlerのサムネイルを組み込んだカスタム外観で表示する方法を示します。
デモを表示するには、[[カスタムストーリーTiddlerテンプレートを含むデモTiddlerリスト|Demo Tiddler List with Custom Story Tiddler Template]]を開きます。
最初に、ストーリーTiddlerテンプレートカスケードに新しいステップを追加します。新しいフィルターステップは次のとおりです:
```
[tag[$:/tags/TiddlerList]then[$:/_tw5.com/CustomStoryTiddlerTemplateDemo/Template]]
```
次のように読むことができます:
```
Tiddlerが$:/tags/TiddlerListタグを持つなら、$:/_tw5.com/CustomStoryTiddlerTemplateDemo/Templateを返します
```
> テンプレート$:/_tw5.com/CustomStoryTiddlerTemplateDemo/Templateも、 [[$:/_tw5.com/CustomStoryTiddlerTemplateDemo/Styles]]で定義したスタイルに依存します。
ストーリーTiddlerテンプレートカスケードはタグ<<tag "$:/tags/StoryTiddlerTemplateFilter">>によって定義されます。そのため、そのタグを使用してTiddlerを作成する必要があります。
また、カスケード内の正しいポイントに挿入されていることを確認する必要があります:
* 新しいルールは、タグ$:/tags/TiddlerListが付いたドラフトTiddlerが編集できるようにするために、"draft"ルールの後に置く必要があります。
* 新しいルールは"default"ルールの前になければなりません。そうでないと実行されません。
コントロールパネルの"カスケード"タブには、`list-before`フィールドを使用してdefaultのステップの直前に新しいステップを挿入できることが示されています。
構成Tiddlerの完全なフィールドのリストは次のとおりです:
<<.tiddler-fields "$:/_tw5.com/CustomStoryTiddlerTemplateDemo/Filter">>
最後に、デモTiddlerを作成する必要があります:
<<.tiddler-fields "Demo Tiddler List with Custom Story Tiddler Template">>

View File

@ -0,0 +1,38 @@
created: 20211206114114698
modified: 20241020110542022
original-modified: 20211206165150302
tags: Learning Cascades [[Customise TiddlyWiki]]
title: How to create a custom tiddler colour rule
ja-title: カスタムのTiddlerカラールールを作成する方法
type: text/vnd.tiddlywiki
ここでは、[[Tiddlerカラーカスケード|Tiddler Colour Cascade]]に、<<tag "TableOfContents">>タグを持つTiddlerに明るい青色の着色を、<<tag "Working with TiddlyWiki">>タグを持つTiddlerに濃い紫色の着色を、付与するルールの追加方法を示します。
<<.tip "[[カスタムのTiddlerアイコンルールを作成する方法|How to create a custom tiddler icon rule]]では、同じTiddlerにカスタムアイコンを与える方法について説明します。">>
まず、Tiddlerカラーカスケードに新しいステップを追加します。新しいフィルターステップは次のとおりです。:
```
[tag[TableOfContents]then[#1e90ff]]
[tag[Working with TiddlyWiki]then[darkorchid]]
```
これは次のように読み取れます。:
```
もしTiddlerが"TableOfContents"タグを持つなら、カラー#1e90ffを返します
もしTiddlerが"Working with TiddlyWiki"タグを持つなら、カラーdarkorchidを返します
```
Tiddlerカラーカスケードは<<tag "$:/tags/TiddlerColourFilter">>タグによって定義されます。したがって、そのタグを使用して設定Tiddlerを作成する必要があります。
また、カスケード内の正しい位置に挿入されていることを確認する必要があります。:
* 新しいルールは、明示的な''color''フィールドを持つTiddlerがそのフィールドの値を確実に尊重するように、"colour-field"ルールの後に置く必要があります。
* 新しいルールは"default"カラーの前になければなりません。そうしないと、デフォルトのカラーが指定されていると、着色されることはありません。
コントロールパネルの"カスケード"タブには、`list-before`フィールドを使用してデフォルトステップの直前に新しいステップを挿入することでこれを実現できることが示されています。
設定Tiddlerの完全なフィールドリストは次のとおりです。:
<<.tiddler-fields "$:/_tw5.com/CustomTiddlerColourCascadeDemo">>

View File

@ -0,0 +1,38 @@
created: 20211204161649863
modified: 20241020111248598
original-modified: 20211206165129215
tags: Learning Cascades [[Tiddler Icon Cascade]] [[Customise TiddlyWiki]]
title: How to create a custom tiddler icon rule
ja-title: カスタムのTiddlerアイコンルールを作成する方法
type: text/vnd.tiddlywiki
ここでは、[[Tiddlerアイコンカスケード|Tiddler Icon Cascade]]に、<<tag "TableOfContents">>タグを持つTiddlerに"地球"アイコン<<.icon $:/core/images/globe>>を、<<tag "Working with TiddlyWiki">>タグを持つTiddlerに"ヘルプ"アイコン<<.icon $:/core/images/help>>を、付与するルールの追加方法を示します。
<<.tip "[[カスタムのTiddlerカラールールを作成する方法|How to create a custom tiddler colour rule]]では、同じTiddlerにカスタムカラーを与える方法について説明します。">>
まず、Tiddlerアイコンカスケードに新しいステップを追加します。新しいフィルターステップは次のとおりです。:
```
[tag[TableOfContents]then[$:/core/images/globe]]
[tag[Working with TiddlyWiki]then[$:/core/images/help]]
```
これは次のように読み取れます。:
```
もしTiddlerが"TableOfContents"タグを持つなら、$:/core/images/globeを返します
もしTiddlerが"Working with TiddlyWiki"タグを持つなら、$:/core/images/helpを返します
```
Tiddlerアイコンカスケードは<<tag "$:/tags/TiddlerIconFilter">>タグによって定義されます。したがって、そのタグを使用して設定Tiddlerを作成する必要があります。
また、カスケード内の正しい位置に挿入されていることを確認する必要があります。:
* 新しいルールは、明示的な''icon''フィールドを持つTiddlerがそのフィールドの値を確実に尊重するように、"icon-field"ルールの後に置く必要があります。
* 新しいルールは"default"アイコンの前になければなりません。そうしないと、デフォルトのアイコンが指定されていると、表示されることはありません。
コントロールパネルの"カスケード"タブには、`list-before`フィールドを使用してデフォルトステップの直前に新しいステップを挿入することでこれを実現できることが示されています。
設定Tiddlerの完全なフィールドリストは次のとおりです。:
<<.tiddler-fields "$:/_tw5.com/CustomTiddlerIconCascadeDemo">>

View File

@ -0,0 +1,107 @@
tags: [[Customise TiddlyWiki]] Learning
title: How to create keyboard shortcuts
ja-title: キーボードショートカットを作成する方法
type: text/vnd.tiddlywiki
<br>
<<.tip """[[TiddlyWiki]]は2種類のキーボードショートカットを区別します。<$macrocall $name=".tag" _="input"/>フィールド内や<$macrocall $name=".wlink" to="KeyboardWidget"/>ウィジェットによって処理される<$macrocall $name=".tag" _="textareas"/>でのみ機能するものと、またはグローバルに機能する、つまり、アクセスするのにページにフォーカスがあるだけでよいというキーボードショートカットです。後者は、Wikiが読み込まれたときに機能し始めるメカニズムによって処理されます""">>
!! 設定メカニズムは両方のショートカットタイプで同じです
<$vars tv-show-missing-links="no">
<<.def プレフィックス>> `$:/config/ShortcutInfo/`と`my-shortcut`のような''一意のサフィックス''が追加されたTiddlerは、新しいショートカットを$:/ControlPanelの[[キーボードショートカットタブ|$:/core/ui/ControlPanel/KeyboardShortcuts]]に表示します。オプションの説明をテキストフィールドに追加できます
[[キーボードショートカットタブ|$:/core/ui/ControlPanel/KeyboardShortcuts]]では、ショートカットをトリガーする''キーの組み合わせ''を設定できます:
> 新しいショートカットに定義された''一意のサフィックス''を探し、''キーの組み合わせ''を検出し、入力フィールドに検出された組み合わせを表示するポップアップを開くボタン<$button class="tc-btn-invisible"><<.icon $:/core/images/edit-button>><$action-sendmessage $message="tm-notify" $param="$:/core/images/edit-button"/></$button>をクリックします
>''ショートカットの追加''は、ショートカットにキーの組み合わせを割り当てます
!!! 選択したプラットフォームに応じて、構成メカニズムは特定の命名法を持つTiddlerを作成します
> $:/config/shortcuts/ + すべてのプラットフォーム(オペレーティングシステム)で機能するショートカットの''ショートカットサフィックス''
> $:/config/shortcuts-(mac/not-mac/windows/not-windows/linux/not-linux)/ + 選択したプラットフォームでのみ機能するショートカットや除外されたプラットフォームでは機能しないショートカットの''ショートカットサフィックス''
!!! 例
* $:/config/shortcuts/`my-shortcut`
* $:/config/shortcuts-mac/`my-shortcut`
* $:/config/shortcuts-windows/`my-shortcut`
* $:/config/shortcuts-linux/`my-shortcut`
* $:/config/shortcuts-not-mac/`my-shortcut`
* $:/config/shortcuts-not-windows/`my-shortcut`
* $:/config/shortcuts-not-linux/`my-shortcut`
<<.tip """上記の''ShortcutInfo''Tiddlerが最初に作成され、ショートカットが~ControlPanelで構成されている場合には、これらのプラットフォーム固有のTiddlerを手動で作成する必要がないことに注意してください""">>
<br>
!! この時点でショートカットが定義され、その''アクション''を設定できます
!! [[キーボードウィジェット|KeyboardWidget]]の使用
> <<.wlink "KeyboardWidget">>ウィジェットは、そのスコープ内の<<.tag input>>や<<.tag textarea>>フィールド内で押されたキーの組み合わせを検出します。<<.wlink "KeyboardWidget">>ウィジェットは、<<.tag input>>や<<.tag textarea>>フィールドを"包含"する必要があり、その<<.attr key>>属性は、[[キー記述子|Key Descriptor]]構文を使用して構成Tiddlerを指定するか、キーを明示的に含みます
```
<$keyboard key="((my-shortcut))" actions='<$action-setfield $tiddler="my-tiddler" $field="my-field" $value="my-value"/>'>
<$edit-text tag="input" tiddler="my-tiddler"/>
</$keyboard>
```
```
<$keyboard key="alt-shift-M" actions='<$action-setfield $tiddler="my-tiddler" $field="my-field" $value="my-value"/>'>
<$edit-text tag="input" tiddler="my-tiddler"/>
</$keyboard>
```
> アクションが定義されている場合、<<.wlink KeyboardWidget>>ウィジェットは、その<<.attr key>>属性で定義されたキーの組み合わせがそのスコープ内の
<<.tag input>>や<<.tag textarea>>フィールドで押されたことを検出すると、その<<.attr actions>>属性で定義されたアクションを呼び出します
<br>
!! グローバルなキーボードショートカットの使用
> 新しいグローバルキーボードショートカットの作成の詳細については、[[キーボードショートカットTiddler]]を参照してください。
> ''グローバル''キーボードショートカットのアクションは、<<tag $:/tags/KeyboardShortcut>>タグが付けられたTiddlerの''テキスト''フィールドに保存されます
> ''キーフィールド''は、[[キーボードショートカット記述子|Keyboard Shortcut Descriptor]]と呼ばれる`((my-shortcut))`構文を通じて、アクションTiddlerと対応するショートカットを結びつけます
:<h3> 構文: `((` + `選択したサフィックス` + `))` </h3>
> Tiddlerが<<tag $:/tags/KeyboardShortcut>>タグを持っている場合、''key''フィールドに[[キーボードショートカット記述子|Keyboard Shortcut Descriptor]]を値として設定し、テキストフィールドにアクションを設定すると、メカニズムが設定されたキーの組み合わせを検出するとアクションがトリガーされます
<br>
<$macrocall $name=".tip" _="""グローバルキーボードショートカットの''外部で''定義された''マクロ''(`$:/tags/Global`タグの付いたTiddler経由)は、アクセス可能にするために''インポートする''必要があります。
[[インポートプラグマ|Pragma]]は、そのために使用できます"""/>
<pre>
\import [subfilter{$:/core/config/GlobalImportFilter}]
</pre>
マクロ定義を含むTiddlerがわかっていて、例えばタイトルが`my-macro-tiddler`なら、
<pre>
\import [[my-macro-tiddler]]
</pre>
<br>
<$macrocall $name=".tip" _="""一部のアクションは<<.wlink NavigatorWidget>>ウィジェット内にラップする必要があります。これは、グローバルなキーボードショートカット内で使用される場合に、次のウィジェットとメッセージのリストが機能するために必要です"""/>
!!! ウィジェット
<<.wlink ActionNavigateWidget>> (ActionNavigateWidget)
!!! メッセージ
<$list filter="[tag[navigator-message]]">
<$link/><br>
</$list>
</$vars>

View File

@ -0,0 +1,34 @@
created: 20171118194518819
modified: 20241026104802213
original-modified: 20171118194518819
tags: Learning
title: How to Customize TiddlyDesktop
ja-title: TiddlyDesktopをカスタマイズする方法
type: text/vnd.tiddlywiki
!! 前置き/注意:
TiddlyDesktopの内部実装を実験する前に、“ユーザー構成フォルダ”の場所を見つける必要があります。それには、メインのTiddlyDesktopウィンドウの“Settings”ボタンをクリックし、“Open user config folder”ボタンをクリックします。次に、上へ移動して“TiddlyDesktop”という名前の親フォルダを見つけます。問題が発生した場合は、このフォルダ全体を削除してTiddlyDesktopを初期状態にリセットできます。
TiddlyDesktopメインウィンドウのBackstageボタンをクリックすると、バックステージWikiが開きます。これは、TiddlyDesktopのUIとロジックを実行する、TiddlyWikiの Node.jsのようなインスタンスです。
!! "Add a ~TiddlyWiki Folder"ボタンを削除する方法。
バックステージWiki内で、`WikiListToolbar`Tiddlerを見つけます(HelloThereにリンクがあります)。それをクリックして編集モードにすると、すべてのツールバーボタンのWikiテキストが表示されます。変更を加えて“done”をクリックすると、変更がTiddlyDesktopのメインウィンドウにすぐに反映されます。
!! "advanced"ボタンを"reveal backups"ボタンに変更する方法。
`$:/TiddlyDesktop/Settings`Tiddlerから“reveal backups”ボタンのコードをコピーして、`WikiListToolbar`にペーストします。
!! 色を変える方法。
TiddlyWikiと同様に、パレットを使用することも、独自のカスタムCSSを定義することもできます。
!! ティドラーがリストされる順序(アルファベット順)を変更する方法。
`WikiList`Tiddlerを開いて、編集にし、最後までスクロールします。次に、''wikilist''マクロの中を`<$list>`ウィジェットを変更します:
```
<$list filter="[tag[wikilist]sort[title]!has[draft.of]]" emptyMessage="開始するには、~TiddlyWikiファイルやフォルダーを追加してください。上のボタンをクリックして参照するか、ファイルエクスプローラー/ファインダーからドラッグアンドドロップします" storyview="pop">
```

View File

@ -0,0 +1,37 @@
created: 20141117000000000
modified: 20241026105359133
original-modified: 20230803051806817
tags: Learning
title: How to embed PDF and other documents
ja-title: PDFやその他のドキュメントを埋め込む方法
type: text/vnd.tiddlywiki
!!! 埋め込み vs 外部リンクに関する注意
''注:'' 特定の種類のファイルを埋め込む方法を説明する前に、埋め込まずに、次のように外部リソースにリンクすることを検討してください:
```
[ext[title|path/to/that.file]]
```
次に、ブラウザにリソースの処理方法を決定させます。この方法の利点は、シンプルで迅速であることです。欠点は、ファイルが実際にはTW5ファイルと一緒に移動せず、以下の方法#2でファイルパスをすばやく`node.js`を使用できないことです。
!! TW5ファイルにPDFを埋め込む2つの方法。
!!! 1. ドラッグアンドドロップによる埋め込み
1つは、ファイルをTW5ファイルにドラッグアンドドロップすることです。上部に緑色のバーが表示されるまで待ってからドロップし、インポートTiddlerからインポートします。これにより、インポートしたPDF(またはその他のファイル)の内容がTW5ファイルに実際に埋め込まれます。
PDFが大きすぎない限り、この方法はOKです。TW5ファイルが大きくなりすぎると問題が生じる可能性があります。
!!! 2. '_canonical_uri'による埋め込み
もう1つの方法は、外部ファイルへのTiddlerリンクを作成することです。この方法では、ファイルは実際にはTW5ファイルに組み込まれませんが、埋め込みファイルと同様に、`{{My Image File.jpg}}`トランスクルージョン構文を使用してアクセスできます。ファイルの場所アドレスは、[[Node.js]]で変更することもできます。node.jsで外部画像を使用する方法の詳細については、[[外部画像|ExternalImages]]を参照してください。
`_canonical_uri`フィールドを持つTiddlerを作成します。外部ファイルへのローカルアドレスを入力します。`type`フィールドに`application/pdf`を設定します。
どちらの方法でも、適切に設定されたブラウザを使用すれば、埋め込まれたPDFファイルが表示されます。
!!! 他のファイルの種類
TW5が認識できるファイル形式は限られています。[[コンテンツタイプ|ContentType]]にリストがあります。ブラウザやTW5が特定のファイル形式をどう処理すればよいか分からない場合は、2番目の方法を使用してファイルを埋め込んでからダウンロードするしかありません。Tiddlerを編集すると、リンクが表示されます。ファイルをダウンロードするには、リンクを右クリックできます。

View File

@ -0,0 +1,32 @@
created: 20151006145934884
modified: 20241020112248683
original-modified: 20160610084018658
tags: Learning
title: How to export tiddlers
ja-title: Tiddlerのエクスポート方法
type: text/vnd.tiddlywiki
! すべてのTiddlerをエクスポートする
''すべて''のTiddlerをエクスポートするには、サイドバーの"ツール"タブをクリックします。<<.icon $:/core/images/export-button>>''すべてエクスポート''ボタンを見つけてクリックします。ポップアップメニューで、Tiddlerをエクスポートする形式の選択がいくつか提供されます
! Tiddlerのエクスポート
特定のTiddlerをエクスポートする場合は、まずそのTiddlerに移動します。次に、Tiddler上部に表示される<<.icon $:/core/images/down-arrow>>''その他のコマンド''ボタンをクリックします。表示されるリストから<<.icon $:/core/images/export-button>>''Tiddlerをエクスポート''を選択します。ポップアップメニューでは、Tiddlerをエクスポートする形式を選択できます
! 条件に一致するTiddlerをエクスポートする(フィルター)
Tiddlerを選択してエクスポートするには、サイドバーの検索領域の横にある小さな虫眼鏡<<.icon $:/core/images/advanced-search-button>>をクリックします。これにより、[[Advanced Search|$:/AdvancedSearch]]Tiddlerが開きます。Advanced Search Tiddlerの"フィルタ"タブをクリックします。[[フィルタ|Filters]]タブのみで、選択したTiddlerをエクスポートできます。[[フィルタ|Filters]]は特定の構文に従います。フィルタの作成方法については、この[[フィルタ|Filters]]リンクをクリックしてください
フィルタを入力すると、そのフィルタに一致するTiddlerのリストが表示されます。これで、フィルタ入力フィールドの右側に、<<.icon $:/core/images/export-button>>''Tiddlerをエクスポート''ボタンをクリックできるようになります。ポップアップメニューでは、Tiddlerをエクスポートする形式を選択できます
! エクスポート形式
現在、利用可能なエクスポート形式は次のとおりです:
* CSVファイル形式
* JSONファイル形式
* 静的HTMLファイル
* ".tid"ファイル形式
この``".tid"``形式は、すべてのTiddlerまたは選択したTiddlerをエクスポートしようとしても、1つのTiddlerだけがエクスポートされるという点で他の形式とは異なります

View File

@ -0,0 +1,33 @@
created: 20180309232911422
modified: 20241020113622005
original-modified: 20180310201216266
tags: Learning
title: How to hide the author's and other fields with CSS
ja-title: CSSで作成者やその他フィールドを非表示にする方法
type: text/vnd.tiddlywiki
すべてのTiddlerで作成者の名前を非表示にして、画面スペースを節約したい場合があります。簡単な方法は次のとおりです:
* 任意のタイトルを付けて新しいTiddlerを作成します
* Tiddlerにタグ`$:/tags/Stylesheet`を付けます
* Tiddlerのテキストフィールドに次のように入力します:
```
.tc-subtitle .tc-tiddlylink {display:none;}
```
* Tiddlerを保存します。作成者名フィールドは表示されなくなります
同様に、作成者と日付を含むサブタイトルフィールド全体を削除するには:
```
.tc-subtitle {display:none;}
```
残念ながら、CSSを使用して作成者を非表示にせずに日付だけを非表示にすることはできません
最後に、本当に最小限の外観にするために、タイトルを削除するには:
```
h2.tc-title {display:none;)
```

View File

@ -0,0 +1,29 @@
created: 20141020111002211
modified: 20241021111644842
original-modified: 20160617125921235
tags: Learning
title: How to put the last modification date in a banner
ja-title: バナーに最終更新日を記載する方法
type: text/vnd.tiddlywiki
ウィンドウの角のバナーにWikiの最終更新日を表示する方法は次のとおりです
# ~TiddlyWikiに<<.def "Corner ribbon">>[[プラグインをインストールする|Installing a plugin from the plugin library]]
# Wikiを保存(<<.icon $:/core/images/save-button-dynamic>>)し、再読み込み(<<.icon $:/core/images/refresh-button>>)します
# [[$:/_MyRibbon]]という名の新しいTiddlerを作成し、[[$:/tags/PageControls]]のタグを付け、次の内容を含めます:<div>
```
<div class="github-fork-ribbon-wrapper right">
<div class="github-fork-ribbon" style="background-color:#DF4848;">
<$list filter="[!is[system]!has[draft.of]!sort[modified]limit[1]]">
<$link>
<$view field="modified" format="date" template="DD mmm YYYY at 0hh:0mm"/>
</$link>
</$list>
</div>
</div>
```
</div>
# 必要に応じて、背景色の値を好みに合わせて変更します
# 位置決めクラスを`right`から`right-bottom`に変更することもできます
## バナーを左上に表示するには、[[$:/tags/PageControls]]の代わりに、[[$:/tags/PageTemplate]]のタグを付け、位置決めクラスを`left`に変更します

View File

@ -0,0 +1,17 @@
created: 20161208000000000
modified: 20241021113311176
original-modified: 20161208000000000
tags: Learning [[Customise TiddlyWiki]]
title: How to widen tiddlers (aka storyriver)
ja-title: Tiddler(別名ストーリーリバー)を広げる方法
type: text/vnd.tiddlywiki
次の方法で、Tiddler(ストーリーリバーとも呼ばれる)のメイン列の幅を変更できます:
* 設定の歯車をクリックしてコントロールパネルを開きます
* コントロールパネルで "外観" を選択し、"Theme Tweaks"を選択します
* Theme tweaksで、下にスクロールします
`story right`と`story width`、`tiddler width`の設定が表示されます。これらの数値を、より大きな値に設定すると、Tiddlerの幅 を広げることができます。一般的に、`story right`と`story width`は、同じサイズか、`tiddler width`を少し小さくします。Tiddlerの幅にパーセンテージを使用することもできます。
サイドバーがページの上部に表示されても構わない場合を除き、サイドバーのブレークポイントをストーリーリバーよりも大きなものに変更することもできます

View File

@ -0,0 +1,17 @@
created: 20141117000000000
modified: 20241020105658198
original-modified: 20170204191253218
tags: Learning [[Customise TiddlyWiki]]
title: How to add a new tab to the sidebar
ja-title: サイドバーに新しいタブを追加する方法
type: text/vnd.tiddlywiki
サイドバーメニューに新しいタブを作成するには:
# Tiddlerを作成し、[[システムタグ|SystemTags]]の[[$:/tags/SideBar]]タグでタグ付けします
#* 目次を作成するには、[[目次マクロ|Table-of-Contents Macros]]を使用して新しいタブTiddlerを設定します。例えば、ここで使用している[[目次|TableOfContents]]を参照してください
# デフォルトでは、Tiddlerタイトルがタブのタイトルとして使用されますが、`caption`フィールドを使用してオーバーライドできます
# タブの順序を定義するには、[[タグ付け|Tagging]]で説明したように、`list-after`フィールドや`list-before`フィールドを使用します
#* 例: `list-after`に[[$:/core/ui/SideBar/Open]]をセットすると、"表示中"タブの直後にサイドバータブが配置されます
タグ`$:/tags/MoreSideBar`を使用すると、同様の方法で"詳しく"タブの下に新しいタブを作成できます

View File

@ -0,0 +1,27 @@
created: 20161209172820513
modified: 20241021112200962
original-modified: 20240923161828376
tags: [[Customise TiddlyWiki]] Learning
title: How to turn off camel case linking
ja-title: キャメルケースリンクをオフにする方法
type: text/vnd.tiddlywiki
[[キャメルケース|CamelCase]]は多くのWikiで使用されていますが、状況によってはテキスト表示に支障をきたす可能性があります。
!! キャメルケースを局所的にオフにする
特定の[[キャメルケース|CamelCase]]ワードがリンクされないようにするには、次のようにワードの前にチルダ(~)を書きます:
```
~CamelCase
```
Tiddler全体に対して[[キャメルケース|CamelCase]]を無効にする必要がある場合は、[[\rulesプラグマ|Pragma: \rules]]を使用できます:
```
\rules except wikilink
```
!! キャメルケースをグローバルにオフにする
すべてのTiddlerで[[キャメルケース|CamelCase]]をオフにするには、[[コントロールパネル|$:/ControlPanel]]に移動します。`設定`タブを選択し、``Camel Case Wiki リンク``セクションまでスクロールするか読み進み、``自動で CamelCase リンクを有効にする``の選択を解除します。

View File

@ -0,0 +1,28 @@
created: 20140324223413403
modified: 20240422111609609
original-modified: 20150505063713581
tags: Learning
title: Making curved text with SVG
ja-title: SVGでカーブしたテキストを作成する
type: text/vnd.tiddlywiki
\define textOnPath(text)
$$$.svg
<svg width="100%" height="100%" viewBox="0 0 1000 300" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="background:white;">
<defs>
<path id="MyPath" d="M 100 200 C 200 100 300 0 400 100 C 500 200 600 300 700 200 C 800 100 900 100 900 100"/>
</defs>
<use xlink:href="#MyPath" fill="none" stroke="#ddd"/>
<text font-family="'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif" font-size="42.5">
<textPath xlink:href="#MyPath">
$text$
</textPath>
</text>
</svg>
$$$
\end
このデモでは、SVGを使用してパスに沿ってトランスクルードされたテキストをレンダリングする方法を示します。下のテキストボックスにテキストを入力して試してください。[[ソースを表示|Making curved text with SVG]]して、それがどのように行われているかを確認してください
<$edit-text tiddler="$:/CurvedText" tag="input" placeholder="Type text here" default=""/>
<$macrocall $name="textOnPath" text={{$:/CurvedText}}/>

View File

@ -0,0 +1,20 @@
created: 20220427174702859
modified: 20241021114009394
original-modified: 20220427171707459
tags: [[JSON in TiddlyWiki]] Learning
title: Modifying JSON tiddlers
ja-title: JSON Tiddlerの修正
type: text/vnd.tiddlywiki
TiddlyWikiでのJSONの扱い方の概要については、[[TiddlyWikiでのJSON|JSON in TiddlyWiki]]を参照してください
注意
!! ActionSetFieldWidgetとActionListopsWidgetの使用について
ウィジェットActionSetFieldWidgetとActionListopsWidgetは、$index属性でプロパティの名前を指定することにより、データTiddlerの名前付きプロパティを操作できます
* ActionSetFieldWidgetを使用して名前付きプロパティを作成、変更するには、$value属性を指定します
* ActionSetFieldWidgetを使用して名前付きプロパティを削除するには、$value属性を省略します
ActionListopsWidgetは、$filter属性と$subfilter属性を通じて構築されたリストの名前付きプロパティを割り当てます

View File

@ -0,0 +1,36 @@
created: 20220427174702859
modified: 20241022103806366
original-modified: 20220611104737314
tags: [[JSON in TiddlyWiki]] Learning
title: Reading data from JSON tiddlers
ja-title: JSON Tiddlerからのデータの読み取り
type: text/vnd.tiddlywiki
TiddlyWikiでのJSONの扱い方の概要については、[[TiddlyWikiでのJSON|JSON in TiddlyWiki]]を参照してください
!! JSONデータにアクセスするためのフィルター演算子
次のフィルター演算子を使用すると、JSONデータから値を読み取ることができます:
* <<.olink jsonget>>は、JSONデータ内のプロパティの値を取得します
* <<.olink jsontype>>は、JSONの値の型を取得します
* <<.olink jsonindexes>>は、JSONオブジェクトのフィールドの名前やJSON配列のインデックスを取得します
* <<.olink jsonextract>>は、JSONの値をJSONの文字列として取得します
!! JSONデータにアクセスするためのテキスト参照
[[テキスト参照|TextReference]]は、名前付きプロパティの値を検索するための単純なショートカット構文です。例えば、`MonthDays`という[[DictionaryTiddler|DictionaryTiddlers]]に次を含む場合:
```
oct:31
nov:30
dec:31
```
... `{{MonthDays##nov}}`は、値`30`となります
`MonthDays`が次の内容を含む[[JSONTiddler|JSONTiddlers]]の場合も同様です:
```
{"oct":31,"nov":30,"dec":31}
```

View File

@ -0,0 +1,27 @@
created: 20140122085818089
modified: 20241016110752969
original-modified: 20150608032039504
tags: Learning
title: Sharing a TiddlyWiki on Dropbox
ja-title: TiddlyWikiをDropboxで共有する
type: text/vnd.tiddlywiki
DropboxでTiddlyWikiファイルを操作し、誰でもファイルの読み取り専用ビューを表示できるURLを公開できます
# TiddlyWikiファイルをDropboxのフォルダ内に保存します
# Dropboxの"リンクを共有"オプションを選択して、ファイルのパブリックURLを取得します
#* Dropbox Webインターフェイスでは、ファイルの上にマウスを置くと表示されるリンクアイコンをクリックします。Dropboxは、OS XのFinderとWindowsのExplorerのファイルコンテキストメニューに"リンクを共有"項目も追加します
# Dropboxによって生成されるURLは次の形式になります:
#> `https://www.dropbox.com/s/<gobbledegook>/mywiki.html`
# gobbledegookを変更しないように注意しながら、URLを次のように変更します
#> `https://dl.dropboxusercontent.com/s/<gobbledegook>/mywiki.html`
その結果、他の人にWikiを表示できるようにするための"秘密"のURLが作成できます
----
生成されたURLをここに入力すると、秘密のURLをコピーして貼り付けることができます:
<$edit-text tiddler="$:/temp/dropboxurl" default="https://www.dropbox.com/s/<gobbledegook>/mywiki.html" tag="input" type="text" size="60"/>
<$macrocall $name="dropbox-url" url={{$:/temp/dropboxurl}}/>

View File

@ -0,0 +1,32 @@
created: 20180310002601813
modified: 20241022104217783
original-modified: 20211106021629911
tags: Learning [[How to apply custom styles]]
title: Simple ways to write protect tiddlers
ja-title: TIddlerの書き込み保護するための簡単な方法
type: text/vnd.tiddlywiki
自分自身やゲストによるTiddlyWikiファイルへの意図しない変更からTiddlerを保護したい場合があります。ここでは簡単なアプローチをいくつか紹介します。これらは意図的な攻撃に対する強化された保護を提供するものではないことに注意してください
!! スタイルシートを使用してタグ名指定でTiddlerをロックする
次の内容でTiddlerを作成し、次のように`$:/tags/Stylesheet`のタグ付けをします:
```css
[data-tags*="Locked"] button[title="このTIddlerを編集します"] {display: none;}
```
TWの言語が英語ではない場合は、'title="...."'内のテキストを編集ボタンの上にカーソルを置いたときに表示されるテキストに変更する必要があります
これで、"Locked"とタグ付けしたすべてのTiddlerの編集ボタンが非表示になります。これを元に戻すには、スタイルシートTiddlerを開いて、"none"を"inline"に変更します
!! トランスクルージョンを使用してシステムTiddler内にTiddlerを非表示にする
* 編集のためにTiddlerを開きます
* タイトルを選択してコピーします
* すべてのTiddlerテキストを選択します
* 切り出しツールをクリックします
* タイトル ボックスに、`$:/`を入力し、元のタイトルをペーストします
* デフォルトを使用してテキストを新しいTiddlerに切り出し、トランスクルージョンに置き換えます
これで、元のTiddlerの内容を表示できますが、それらを編集するには、プレフィックス`$:/`が付いたTiddlerを見つける必要があります

View File

@ -0,0 +1,16 @@
created: 20220909111836951
modified: 20241022105614479
original-modified: 20230419103154329
tags: Learning
title: Visible Transclusions
ja-title: トランスクルージョンの可視化
type: text/vnd.tiddlywiki
!! トランスクルージョンの可視化
ブロックのトランスクルージョンは赤で表示され、インラインのトランスクルージョンは緑で表示されます
<$button>
<$action-setfield $tiddler="$:/temp/VisibleTransclusions" tags="$:/tags/Macro/View/Body" text={{$:/core/ui/VisibleTransclude}}/>
ここをクリックすると、ストーリーリバー内のTiddlerでトランクスージョンが表示されるようになります
</$button>

View File

@ -0,0 +1,16 @@
created: 20211013132515594
modified: 20241021113650824
original-modified: 20211018102307833
tags: Learning [[Core Icons]]
title: Icon Gallery
ja-title: アイコンギャラリー
type: text/vnd.tiddlywiki
\define copyActions() <$action-sendmessage $message="tm-copy-to-clipboard" $param=<<imageTitle>>/>
<<.tip "アイコンをクリックすると、タイトルをクリップボードにコピーします">>
<div class="tc-image-chooser">
<$macrocall $name="image-picker-list" filter="[all[shadows+tiddlers]tag[$:/tags/Image]]" actions=<<copyActions>> />
</div>

View File

@ -0,0 +1,11 @@
created: 20140908131700000
modified: 20241016111747713
original-modified: 20140919161524603
tags: Learning
title: Copying tiddlers between TiddlyWiki files
ja-title: TiddlyWikiファイル間でTiddlerをコピーする
type: text/vnd.tiddlywiki
ブラウザウィンドウから別のブラウザウィンドウへTiddlerへのリンクをドラッグすることで、個々のTiddlerを1つのTiddlyWikiファイルから別のTiddlyWikiファイルにコピーできます
リンクをドラッグする場合は、まず垂直方向に移動します。水平方向の移動はブラウザがテキストの選択として認識するためです

View File

@ -0,0 +1,59 @@
created: 20171212175130471
modified: 20241026112227533
original-modified: 20171212175139631
tags: Learning
title: Introduction to Lists
ja-title: リストの紹介
type: text/vnd.tiddlywiki
アイテムのリストを作成することは、TiddlyWikiでの作業において中心的な役割を果たします。以下は、一般的なテクニックのいくつかを簡単に説明したものです。
~TiddlyWikiは[[内部的に|ListField]]さまざまな目的でリストを[[使用する|Extended Listops Filters]]ため、この単語には複数の意味があります。ここでは、一連の項目を表示することに重点が置かれていますが、必ずしも従来の箇条書きリストとして表示されるわけではありません。
! 手動で入力したリスト
!! ~WikiText
WikiTextリストは、特殊文字を使用してリストの種類と表示方法を指定する、手動で入力されたリストです。
例としては、アスタリスク(*)で作成された箇条書きリストや番号付きリスト(#)などがあります。内部的には、~WikiTextリストは標準のHTML要素`<ul>`と`<li>`に基づいています。詳細については、[[WikiTextのリスト|Lists in WikiText]]を参照してください。
WikiTextで入力されたリストの例:
<<wikitext-example-without-html """* 史上最高の映画
** カサブランカ
** 高慢と偏見とゾンビ""">>
! 生成されたリスト
リストは、[[フィルター演算子|Filter Operators]]が出力したいTiddlerを選択するための基準を指定する[[フィルター|Filters]]を使用して、ListWidgetで自動的に生成できます。いくつかの一般的なリストタイプには、ショートカットマクロが用意されています。
!! ~ListWidget
ListWidgetは、リストを作成するための最も強力なツールです。これを使用すると、フィルタリングされた出力を操作して、例えば表や複雑なテキストなど、リストにはまったく似ていないフォームにスタイルを設定できます。詳細については、[[ListWidget]]を参照してください。
"HelloThere"タグが付いたすべてのTiddlerを表示する例は次のようになります:
<<wikitext-example-without-html """<$list filter="[tag[HelloThere]]"><$view field="title"/><br/></$list>""">>
<<.tip """Tiddler自体も~ListWidgetを使用して作成されます。[[ViewTemplate|$:/core/ui/ViewTemplate]]はListWidgetを使用して、Tiddlerのタイトル、タグ、テキストなどを表示するために使用される指定されたすべてのテンプレートを取得します。""">>
!! フィルタリングされたトランスクルージョン
フィルターされたトランスクルージョンの`{{{...}}}`構文は、入力としてフィルターを受け取り、一致するタイトルのリンクリストを出力します。[[テンプレート|Transclusion with Templates]]を適用することもできます。例:
<<wikitext-example-without-html """{{{ [tag[HelloThere]] || $:/core/ui/TagTemplate }}}""">>
!! list-linksマクロ
[[list-links|list-links Macro]]マクロは、 ListWidgetを使用するよりも簡単な方法で、事前にフォーマットされたリスト(通常は箇条書きリスト)を提供します。内部的には、各リスト項目にデフォルトのテンプレートを適用しているのはListWidgetです。
<$macrocall $name="wikitext-example-without-html" src="""<<list-links "[tag[HelloThere]]">>"""/>
!“リスト関連”のその他の機能
[[list|ListField]]、[[list-before|Order of Tagged Tiddlers]]、[[list-after|Order of Tagged Tiddlers]]はすべて、リスト内のTiddlerの位置を制御するフィールド名です。[[フィールド|TiddlerFields]]は、日付、数量、カテゴリなどの構造化された情報の追加ビットをTiddlerに追加する方法です。
[[list|list Operator]] and [[listed|listed Operator]] are //filter operators// to, respectively, select and find titles in lists.
[[list|list Operator]]と[[listed|listed Operator]]は、それぞれリスト内のタイトルを選択および検索するための//フィルター演算子//です。

View File

@ -0,0 +1,14 @@
created: 20140912140047779
list: Videos [[Introduction to filter notation]] [[Sharing a TiddlyWiki on Dropbox]] [[Sharing your tiddlers with others]] [[Copying tiddlers between TiddlyWiki files]] [[Creating SubStories]] [[Editing Tiddlers with Emacs]] [[ImageGallery Example]] [[Making curved text with SVG]] TaskManagementExample [[Adding a Twitter Follow button]] [[Philosophy of Tiddlers]] [[Adopt a Titles Policy]]
modified: 20241016110508522
original-modified: 20140919161721584
tags: TableOfContents
title: Learning
ja-title: 学習
type: text/vnd.tiddlywiki
TiddlyWikiの使い方について詳しくは、こちらをご覧ください:
<<list-links "[tag[Learning]]">>
高度なWikiText、マクロ、ウィジェット、フィルターなどの完全な[[リファレンス|Reference]]も参照してください

View File

@ -1,13 +1,13 @@
created: 20140104134911101
modified: 20241010115857934
modified: 20241016105446426
original-modified: 20140919161039197
tags: Videos [[Working with TiddlyWiki]] [[Quick Start]]
title: Getting Started Video
ja-title: 入門動画
type: text/vnd.tiddlywiki
この簡単なチュートリアルでは、スタンドアロンTiddlyWikiファイルを使用して変更を保存する基本について説明します。
この短いチュートリアルでは、スタンドアロンTiddlyWikiファイルを使用して変更を保存する基本説明します。
//このビデオは少し古いものですが、近日中に更新される予定です!//
//(注意)この動画は少し古いので、すぐに更新されるでしょう!//
<iframe width="560" height="315" src="https://www.youtube.com/embed/1g66s7UbyuU" frameborder="0" allowfullscreen></iframe>

View File

@ -0,0 +1,11 @@
created: 20140126124827076
modified: 20241016105645695
original-modified: 20140912150423506
tags: Videos TiddlyDesktop
title: Introducing TiddlyDesktop Video
ja-title: TiddlyDesktopの紹介動画
type: text/vnd.tiddlywiki
この簡単な紹介では、TiddlyDesktopをインストールして使用する方法を示します:
<iframe width="560" height="315" src="https://www.youtube.com/embed/i3Bggkm7paA" frameborder="0" allowfullscreen></iframe>

View File

@ -0,0 +1,15 @@
created: 20141126153016142
modified: 20241016105546203
original-modified: 20141126153016142
tags: Videos [[Working with TiddlyWiki]]
title: Introduction Video
ja-title: 紹介動画
type: text/vnd.tiddlywiki
この短いプレゼンテーションでは、TiddlyWikiの基本原則を説明します
<iframe width="560" height="315" src="https://www.youtube.com/embed/KtCUr83XgyE" frameborder="0" allowfullscreen></iframe>
動画の作成に使用されたTiddlyWikiは以下にあります:
https://tiddlywiki.com/editions/introduction/

View File

@ -0,0 +1,11 @@
created: 20140104134947485
modified: 20241016105931213
original-modified: 20140912150329611
tags: Videos [[Saving with TiddlyFox]]
title: TiddlyWiki on Firefox for Android Video
ja-title: Android版FirefoxでのTiddlyWiki動画
type: text/vnd.tiddlywiki
この簡単なスクリーンキャストは、TiddlyWikiに変更を保存できるようにAndroid版Firefoxをセットアップする方法を示しています:
<iframe width="560" height="315" src="https://www.youtube.com/embed/iikkv9orGGI" frameborder="0" allowfullscreen></iframe>

View File

@ -0,0 +1,13 @@
created: 20140912150153512
modified: 20241016105319031
original-modified: 20140919161220608
tags: Learning
title: Videos
ja-title: 動画
type: text/vnd.tiddlywiki
次のTiddlyWiki動画が利用可能です
<<list-links "[tag[Videos]]">>
目的は、TiddlyWikiを立ち上げて実行する方法を人々にガイドする一連の動画を厳選することです。[[貢献|Contributing]]は大歓迎です

View File

@ -0,0 +1,11 @@
created: 20140920133836765
modified: 20241016110052423
original-modified: 20140920134005568
tags: [[Working with the TiddlyWiki5 repository]]
title: Working with the TiddlyWiki5 repository video
ja-title: TiddlyWiki5リポジトリの操作に関する動画
type: text/vnd.tiddlywiki
Mario Pietschは、[[TiddlyWiki5 GitHubリポジトリの操作|Working with the TiddlyWiki5 repository]]に関する短いチュートリアル動画を作成しました
<iframe width="560" height="315" src="https://www.youtube.com/embed/6ElUruH92tc" frameborder="0" allowfullscreen></iframe>

View File

@ -0,0 +1,19 @@
created: 20140908163900000
modified: 20241016111248572
original-modified: 20201228143412000
tags: Learning
title: Sharing your tiddlers with others
ja-title: Tiddlerを他の人と共有する
type: text/vnd.tiddlywiki
[[Tiddler|Tiddlers]]やTiddlyWiki全体を共有するには、いくつかの方法があります:
* ~TiddlyWikiをeメールに添付できます
* ~TiddlyWikiをオンラインで公開し、リンクを取得して他の人に送信、または、伝言できます:
** ~TiddlyWikiファイル全体のWebアドレスへのリンク
** 特定のTiddlerへの[[パーマリンク|PermaLinks]](<<.icon $:/core/images/permalink-button>>)
** 現在開いているすべてのTiddlerの[[パーマビュー|PermaViews]](<<.icon $:/core/images/permaview-button>>)リンク
* [[TiddlyWikiへのDropboxリンクを共有|Sharing a TiddlyWiki on Dropbox]]できます
* テキスト、静的HTML、カンマ区切り値(つまり、スプレッドシート互換)などのさまざまな形式で[[Tiddlerをエクスポート|How to export tiddlers]](<<.icon $:/core/images/export-button>>)できます
* また、~TiddlyWikiを他の人がアクセスできるようにするだけで、例えば、オンラインで公開して、そこから[[Tiddlerをインポート|Importing Tiddlers]]できるようにするだけで、Tiddlerを共有できます
* URLロケーションハッシュを介してTiddlerを共有するために使用できる実験的な[[共有プラグイン|Share Plugin]]があります

Some files were not shown because too many files have changed in this diff Show More