1
0
mirror of https://github.com/Jermolene/TiddlyWiki5 synced 2025-09-13 00:06:04 +00:00

Merge pull request #4 from Jermolene/master

sync upstream
This commit is contained in:
saqimtiaz
2020-06-13 13:06:37 +02:00
committed by GitHub
120 changed files with 903 additions and 378 deletions

View File

@@ -6,13 +6,13 @@ description: Render tiddlers matching a filter to a specified ContentType
Render a set of tiddlers matching a filter to separate files of a specified ContentType (defaults to `text/html`) and extension (defaults to `.html`).
```
--rendertiddlers <filter> <template> <pathname> [<type>] [<extension>] ["noclean"]
--rendertiddlers '<filter>' <template> <pathname> [<type>] [<extension>] ["noclean"]
```
For example:
```
--rendertiddlers [!is[system]] $:/core/templates/static.tiddler.html ./static text/plain
--rendertiddlers '[!is[system]]' $:/core/templates/static.tiddler.html ./static text/plain
```
By default, the pathname is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.

View File

@@ -71,7 +71,7 @@ Command.prototype.fetchFiles = function(options) {
if(options.url) {
urls = [options.url]
} else if(options.urlFilter) {
urls = $tw.wiki.filterTiddlers(options.urlFilter);
urls = this.commander.wiki.filterTiddlers(options.urlFilter);
} else {
return "Missing URL";
}

View File

@@ -69,7 +69,7 @@ Command.prototype.execute = function() {
// Collect the skinny list data
var pluginTiddlers = JSON.parse(tiddler.text),
readmeContent = (pluginTiddlers.tiddlers[title + "/readme"] || {}).text,
doesRequireReload = !!$tw.wiki.doesPluginInfoRequireReload(pluginTiddlers),
doesRequireReload = !!self.commander.wiki.doesPluginInfoRequireReload(pluginTiddlers),
iconTiddler = pluginTiddlers.tiddlers[title + "/icon"] || {},
iconType = iconTiddler.type,
iconText = iconTiddler.text,

View File

@@ -80,7 +80,8 @@ function FramedEngine(options) {
$tw.utils.addEventListeners(this.domNode,[
{name: "click",handlerObject: this,handlerMethod: "handleClickEvent"},
{name: "input",handlerObject: this,handlerMethod: "handleInputEvent"},
{name: "keydown",handlerObject: this.widget,handlerMethod: "handleKeydownEvent"}
{name: "keydown",handlerObject: this.widget,handlerMethod: "handleKeydownEvent"},
{name: "focus",handlerObject: this,handlerMethod: "handleFocusEvent"},
]);
// Insert the element into the DOM
this.iframeDoc.body.appendChild(this.domNode);
@@ -153,6 +154,15 @@ FramedEngine.prototype.focus = function() {
}
};
/*
Handle a focus event
*/
FramedEngine.prototype.handleFocusEvent = function(event) {
if(this.widget.editCancelPopups) {
$tw.popup.cancel(0);
}
};
/*
Handle a click
*/

View File

@@ -122,6 +122,9 @@ SimpleEngine.prototype.handleInputEvent = function(event) {
Handle a dom "focus" event
*/
SimpleEngine.prototype.handleFocusEvent = function(event) {
if(this.widget.editCancelPopups) {
$tw.popup.cancel(0);
}
if(this.widget.editFocusPopup) {
$tw.popup.triggerPopup({
domNode: this.domNode,

View File

@@ -177,6 +177,7 @@ function editTextWidgetFactory(toolbarEngine,nonToolbarEngine) {
this.editFocusPopup = this.getAttribute("focusPopup");
this.editFocus = this.getAttribute("focus");
this.editTabIndex = this.getAttribute("tabindex");
this.editCancelPopups = this.getAttribute("cancelPopups","") === "yes";
// Get the default editor element tag and type
var tag,type;
if(this.editField === "text") {
@@ -208,7 +209,7 @@ function editTextWidgetFactory(toolbarEngine,nonToolbarEngine) {
EditTextWidget.prototype.refresh = function(changedTiddlers) {
var changedAttributes = this.computeAttributes();
// Completely rerender if any of our attributes have changed
if(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes["default"] || changedAttributes["class"] || changedAttributes.placeholder || changedAttributes.size || changedAttributes.autoHeight || changedAttributes.minHeight || changedAttributes.focusPopup || changedAttributes.rows || changedAttributes.tabindex || changedTiddlers[HEIGHT_MODE_TITLE] || changedTiddlers[ENABLE_TOOLBAR_TITLE]) {
if(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes["default"] || changedAttributes["class"] || changedAttributes.placeholder || changedAttributes.size || changedAttributes.autoHeight || changedAttributes.minHeight || changedAttributes.focusPopup || changedAttributes.rows || changedAttributes.tabindex || changedAttributes.cancelPopups || changedTiddlers[HEIGHT_MODE_TITLE] || changedTiddlers[ENABLE_TOOLBAR_TITLE]) {
this.refreshSelf();
return true;
} else if(changedTiddlers[this.editTitle]) {

View File

@@ -0,0 +1,36 @@
/*\
title: $:/core/modules/filters/duplicateslugs.js
type: application/javascript
module-type: filteroperator
Filter function for [duplicateslugs[]]
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
/*
Export our filter function
*/
exports.duplicateslugs = function(source,operator,options) {
var slugs = Object.create(null), // Hashmap by slug of title, replaced with "true" if the duplicate title has already been output
results = [];
source(function(tiddler,title) {
var slug = options.wiki.slugify(title);
if(slug in slugs) {
if(slugs[slug] !== true) {
results.push(slugs[slug]);
slugs[slug] = true;
}
results.push(title);
} else {
slugs[slug] = title;
}
});
return results;
};
})();

View File

@@ -37,13 +37,13 @@ exports.has = function(source,operator,options) {
else if(operator.suffix === "index") {
if(invert) {
source(function(tiddler,title) {
if(!tiddler || (tiddler && (!$tw.utils.hop($tw.wiki.getTiddlerDataCached(tiddler,Object.create(null)),operator.operand)))) {
if(!tiddler || (tiddler && (!$tw.utils.hop(options.wiki.getTiddlerDataCached(tiddler,Object.create(null)),operator.operand)))) {
results.push(title);
}
});
} else {
source(function(tiddler,title) {
if(tiddler && $tw.utils.hop($tw.wiki.getTiddlerDataCached(tiddler,Object.create(null)),operator.operand)) {
if(tiddler && $tw.utils.hop(options.wiki.getTiddlerDataCached(tiddler,Object.create(null)),operator.operand)) {
results.push(title);
}
});
@@ -52,13 +52,13 @@ exports.has = function(source,operator,options) {
else {
if(invert) {
source(function(tiddler,title) {
if(!tiddler || !$tw.utils.hop(tiddler.fields,operator.operand) || (tiddler.fields[operator.operand] === "")) {
if(!tiddler || !$tw.utils.hop(tiddler.fields,operator.operand) || (tiddler.fields[operator.operand].length === 0)) {
results.push(title);
}
});
} else {
source(function(tiddler,title) {
if(tiddler && $tw.utils.hop(tiddler.fields,operator.operand) && !(tiddler.fields[operator.operand] === "" || tiddler.fields[operator.operand].length === 0)) {
if(tiddler && $tw.utils.hop(tiddler.fields,operator.operand) && (tiddler.fields[operator.operand].length !== 0)) {
results.push(title);
}
});

View File

@@ -0,0 +1,23 @@
/*\
title: $:/core/modules/filters/slugify.js
type: application/javascript
module-type: filteroperator
Filter operator for slugifying a tiddler title
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
exports.slugify = function(source,operator,options) {
var results = [];
source(function(tiddler,title) {
results.push(options.wiki.slugify(title));
});
return results;
};
})();

View File

@@ -18,6 +18,7 @@ exports.getInfoTiddlerFields = function() {
// Basics
infoTiddlerFields.push({title: "$:/info/browser", text: mapBoolean(!!$tw.browser)});
infoTiddlerFields.push({title: "$:/info/node", text: mapBoolean(!!$tw.node)});
infoTiddlerFields.push({title: "$:/info/startup-timestamp", text: $tw.utils.stringifyDate(new Date())});
if($tw.browser) {
// Document location
var setLocationProperty = function(name,value) {

View File

@@ -31,7 +31,7 @@ BasicAuthenticator.prototype.init = function() {
// Read the credentials data
this.credentialsFilepath = this.server.get("credentials");
if(this.credentialsFilepath) {
var resolveCredentialsFilepath = path.resolve($tw.boot.wikiPath,this.credentialsFilepath);
var resolveCredentialsFilepath = path.resolve(this.server.boot.wikiPath,this.credentialsFilepath);
if(fs.existsSync(resolveCredentialsFilepath) && !fs.statSync(resolveCredentialsFilepath).isDirectory()) {
var credentialsText = fs.readFileSync(resolveCredentialsFilepath,"utf8"),
credentialsData = $tw.utils.parseCsvStringWithHeader(credentialsText);

View File

@@ -21,7 +21,7 @@ exports.handler = function(request,response,state) {
fs = require("fs"),
util = require("util"),
suppliedFilename = decodeURIComponent(state.params[0]),
filename = path.resolve($tw.boot.wikiPath,"files",suppliedFilename),
filename = path.resolve(state.boot.wikiPath,"files",suppliedFilename),
extension = path.extname(filename);
fs.readFile(filename,function(err,content) {
var status,content,type = "text/plain";

View File

@@ -20,8 +20,8 @@ exports.path = /^\/recipes\/default\/tiddlers.json$/;
exports.handler = function(request,response,state) {
var filter = state.queryParameters.filter || DEFAULT_FILTER;
if($tw.wiki.getTiddlerText("$:/config/Server/AllowAllExternalFilters") !== "yes") {
if($tw.wiki.getTiddlerText("$:/config/Server/ExternalFilters/" + filter) !== "yes") {
if(state.wiki.getTiddlerText("$:/config/Server/AllowAllExternalFilters") !== "yes") {
if(state.wiki.getTiddlerText("$:/config/Server/ExternalFilters/" + filter) !== "yes") {
console.log("Blocked attempt to GET /recipes/default/tiddlers.json with filter: " + filter);
response.writeHead(403);
response.end();

View File

@@ -31,6 +31,7 @@ function Server(options) {
this.routes = options.routes || [];
this.authenticators = options.authenticators || [];
this.wiki = options.wiki;
this.boot = options.boot || $tw.boot;
this.servername = $tw.utils.transliterateToSafeASCII(this.wiki.getTiddlerText("$:/SiteTitle") || "TiddlyWiki5");
// Initialise the variables
this.variables = $tw.utils.extend({},this.defaultVariables);
@@ -69,8 +70,8 @@ function Server(options) {
tlsCertFilepath = this.get("tls-cert");
if(tlsCertFilepath && tlsKeyFilepath) {
this.listenOptions = {
key: fs.readFileSync(path.resolve($tw.boot.wikiPath,tlsKeyFilepath),"utf8"),
cert: fs.readFileSync(path.resolve($tw.boot.wikiPath,tlsCertFilepath),"utf8")
key: fs.readFileSync(path.resolve(this.boot.wikiPath,tlsKeyFilepath),"utf8"),
cert: fs.readFileSync(path.resolve(this.boot.wikiPath,tlsCertFilepath),"utf8")
};
this.protocol = "https";
}
@@ -112,15 +113,14 @@ Server.prototype.addAuthenticator = function(AuthenticatorClass) {
};
Server.prototype.findMatchingRoute = function(request,state) {
var pathprefix = this.get("path-prefix") || "";
for(var t=0; t<this.routes.length; t++) {
var potentialRoute = this.routes[t],
pathRegExp = potentialRoute.path,
pathname = state.urlInfo.pathname,
match;
if(pathprefix) {
if(pathname.substr(0,pathprefix.length) === pathprefix) {
pathname = pathname.substr(pathprefix.length) || "/";
if(state.pathPrefix) {
if(pathname.substr(0,state.pathPrefix.length) === state.pathPrefix) {
pathname = pathname.substr(state.pathPrefix.length) || "/";
match = potentialRoute.path.exec(pathname);
} else {
match = false;
@@ -156,14 +156,17 @@ Server.prototype.isAuthorized = function(authorizationType,username) {
return principals.indexOf("(anon)") !== -1 || (username && (principals.indexOf("(authenticated)") !== -1 || principals.indexOf(username) !== -1));
}
Server.prototype.requestHandler = function(request,response) {
Server.prototype.requestHandler = function(request,response,options) {
options = options || {};
// Compose the state object
var self = this;
var state = {};
state.wiki = self.wiki;
state.wiki = options.wiki || self.wiki;
state.boot = options.boot || self.boot;
state.server = self;
state.urlInfo = url.parse(request.url);
state.queryParameters = querystring.parse(state.urlInfo.query);
state.pathPrefix = options.pathPrefix || this.get("path-prefix") || "";
// Get the principals authorized to access this resource
var authorizationType = this.methodMappings[request.method] || "readers";
// Check for the CSRF header if this is a write
@@ -248,7 +251,7 @@ Server.prototype.listen = function(port,host,prefix) {
port = process.env[port] || 8080;
}
// Warn if required plugins are missing
if(!$tw.wiki.getTiddler("$:/plugins/tiddlywiki/tiddlyweb") || !$tw.wiki.getTiddler("$:/plugins/tiddlywiki/filesystem")) {
if(!this.wiki.getTiddler("$:/plugins/tiddlywiki/tiddlyweb") || !this.wiki.getTiddler("$:/plugins/tiddlywiki/filesystem")) {
$tw.utils.warning("Warning: Plugins required for client-server operation (\"tiddlywiki/filesystem\" and \"tiddlywiki/tiddlyweb\") are missing from tiddlywiki.info file");
}
// Create the server

View File

@@ -36,11 +36,7 @@ function setFavicon() {
var tiddler = $tw.wiki.getTiddler(FAVICON_TITLE);
if(tiddler) {
var faviconLink = document.getElementById("faviconLink");
if(tiddler.fields._canonical_uri) {
faviconLink.setAttribute("href",tiddler.fields._canonical_uri);
} else {
faviconLink.setAttribute("href","data:" + tiddler.fields.type + ";base64," + tiddler.fields.text);
}
faviconLink.setAttribute("href",$tw.utils.makeDataUri(tiddler.fields.text,tiddler.fields.type,tiddler.fields._canonical_uri));
}
}

View File

@@ -127,7 +127,7 @@ function Syncer(options) {
});
}
// Listen out for lazyLoad events
if(!this.disableUI && $tw.wiki.getTiddlerText(this.titleSyncDisableLazyLoading) !== "yes") {
if(!this.disableUI && this.wiki.getTiddlerText(this.titleSyncDisableLazyLoading) !== "yes") {
this.wiki.addEventListener("lazyLoad",function(title) {
self.handleLazyLoadEvent(title);
});
@@ -204,7 +204,7 @@ Syncer.prototype.isDirty = function() {
if(this.wiki.tiddlerExists(title)) {
if(tiddlerInfo) {
// If the tiddler is known on the server and has been modified locally then it needs to be saved to the server
if($tw.wiki.getChangeCount(title) > tiddlerInfo.changeCount) {
if(this.wiki.getChangeCount(title) > tiddlerInfo.changeCount) {
return true;
}
} else {
@@ -526,7 +526,7 @@ Syncer.prototype.chooseNextTask = function() {
tiddlerInfo = this.tiddlerInfo[title];
if(tiddler) {
// If the tiddler is not known on the server, or has been modified locally no more recently than the threshold then it needs to be saved to the server
var hasChanged = !tiddlerInfo || $tw.wiki.getChangeCount(title) > tiddlerInfo.changeCount,
var hasChanged = !tiddlerInfo || this.wiki.getChangeCount(title) > tiddlerInfo.changeCount,
isReadyToSave = !tiddlerInfo || !tiddlerInfo.timestampLastSaved || tiddlerInfo.timestampLastSaved < thresholdLastSaved;
if(hasChanged) {
if(isReadyToSave) {

View File

@@ -41,7 +41,7 @@ exports.upgrade = function(wiki,titles,tiddlers) {
// Check if we're dealing with a plugin
if(incomingTiddler && incomingTiddler["plugin-type"]) {
// Check whether the plugin contains JS modules
var requiresReload = $tw.wiki.doesPluginInfoRequireReload(JSON.parse(incomingTiddler.text)) ? ($tw.wiki.getTiddlerText("$:/language/ControlPanel/Plugins/PluginWillRequireReload") + " ") : "";
var requiresReload = wiki.doesPluginInfoRequireReload(JSON.parse(incomingTiddler.text)) ? (wiki.getTiddlerText("$:/language/ControlPanel/Plugins/PluginWillRequireReload") + " ") : "";
messages[title] = requiresReload;
if(incomingTiddler.version) {
// Upgrade the incoming plugin if it is in the upgrade library

View File

@@ -39,7 +39,7 @@ DroppableWidget.prototype.render = function(parent,nextSibling) {
}
// Create element and assign classes
var domNode = this.document.createElement(tag),
classes = (this["class"] || "").split(" ");
classes = (this.droppableClass || "").split(" ");
classes.push("tc-droppable");
domNode.className = classes.join(" ");
// Add event handlers
@@ -75,7 +75,9 @@ DroppableWidget.prototype.leaveDrag = function(event) {
// Remove highlighting if we're leaving externally. The hacky second condition is to resolve a problem with Firefox whereby there is an erroneous dragenter event if the node being dragged is within the dropzone
if(this.currentlyEntered.length === 0 || (this.currentlyEntered.length === 1 && this.currentlyEntered[0] === $tw.dragInProgress)) {
this.currentlyEntered = [];
$tw.utils.removeClass(this.domNodes[0],"tc-dragover");
if(this.domNodes[0]) {
$tw.utils.removeClass(this.domNodes[0],"tc-dragover");
}
}
};

View File

@@ -48,6 +48,7 @@ EditWidget.prototype.execute = function() {
this.editPlaceholder = this.getAttribute("placeholder");
this.editTabIndex = this.getAttribute("tabindex");
this.editFocus = this.getAttribute("focus","");
this.editCancelPopups = this.getAttribute("cancelPopups","");
// Choose the appropriate edit widget
this.editorType = this.getEditorType();
// Make the child widgets
@@ -60,7 +61,8 @@ EditWidget.prototype.execute = function() {
"class": {type: "string", value: this.editClass},
"placeholder": {type: "string", value: this.editPlaceholder},
"tabindex": {type: "string", value: this.editTabIndex},
"focus": {type: "string", value: this.editFocus}
"focus": {type: "string", value: this.editFocus},
"cancelPopups": {type: "string", value: this.editCancelPopups}
},
children: this.parseTreeNode.children
}]);
@@ -94,7 +96,7 @@ Selectively refreshes the widget if needed. Returns true if the widget or any of
EditWidget.prototype.refresh = function(changedTiddlers) {
var changedAttributes = this.computeAttributes();
// Refresh if an attribute has changed, or the type associated with the target tiddler has changed
if(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.tabindex || (changedTiddlers[this.editTitle] && this.getEditorType() !== this.editorType)) {
if(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.tabindex || changedAttributes.cancelPopups || (changedTiddlers[this.editTitle] && this.getEditorType() !== this.editorType)) {
this.refreshSelf();
return true;
} else {

View File

@@ -66,7 +66,8 @@ ScrollableWidget.prototype.handleScrollEvent = function(event) {
Scroll an element into view
*/
ScrollableWidget.prototype.scrollIntoView = function(element) {
var duration = $tw.utils.getAnimationDuration();
var duration = $tw.utils.getAnimationDuration(),
srcWindow = element ? element.ownerDocument.defaultView : window;
this.cancelScroll();
this.startTime = Date.now();
var scrollPosition = {
@@ -122,7 +123,7 @@ ScrollableWidget.prototype.scrollIntoView = function(element) {
self.outerDomNode.scrollLeft = scrollPosition.x + (endX - scrollPosition.x) * t;
self.outerDomNode.scrollTop = scrollPosition.y + (endY - scrollPosition.y) * t;
if(t < 1) {
self.idRequestFrame = self.requestAnimationFrame.call(window,drawFrame);
self.idRequestFrame = self.requestAnimationFrame.call(srcWindow,drawFrame);
}
};
drawFrame();

View File

@@ -421,6 +421,7 @@ Widget.prototype.addEventListener = function(type,handler) {
Dispatch an event to a widget. If the widget doesn't handle the event then it is also dispatched to the parent widget
*/
Widget.prototype.dispatchEvent = function(event) {
event.widget = event.widget || this;
// Dispatch the event if this widget handles it
var listener = this.eventListeners[event.type];
if(listener) {

View File

@@ -1052,7 +1052,7 @@ exports.makeTranscludeWidget = function(title,options) {
if(options.children) {
parseTreeTransclude.children = options.children;
}
return $tw.wiki.makeWidget(parseTreeDiv,options);
return this.makeWidget(parseTreeDiv,options);
};
/*
@@ -1503,5 +1503,30 @@ exports.doesPluginInfoRequireReload = function(pluginInfo) {
}
};
exports.slugify = function(title,options) {
var tiddler = this.getTiddler(title),
slug;
if(tiddler && tiddler.fields.slug) {
slug = tiddler.fields.slug;
} else {
slug = $tw.utils.transliterate(title.toString().toLowerCase()) // Replace diacritics with basic lowercase ASCII
.replace(/\s+/g,"-") // Replace spaces with -
.replace(/[^\w\-\.]+/g,"") // Remove all non-word chars except dash and dot
.replace(/\-\-+/g,"-") // Replace multiple - with single -
.replace(/^-+/,"") // Trim - from start of text
.replace(/-+$/,""); // Trim - from end of text
}
// If the resulting slug is blank (eg because the title is just punctuation characters)
if(!slug) {
// ...then just use the character codes of the title
var result = [];
$tw.utils.each(title.split(""),function(char) {
result.push(char.charCodeAt(0).toString());
});
slug = result.join("-");
}
return slug;
};
})();

View File

@@ -7,6 +7,7 @@ title: $:/core/ui/EditTemplate/body/editor
placeholder={{$:/language/EditTemplate/Body/Placeholder}}
tabindex={{$:/config/EditTabIndex}}
focus={{{ [{$:/config/AutoFocus}match[text]then[true]] ~[[false]] }}}
cancelPopups="yes"
><$set

View File

@@ -13,7 +13,7 @@ $:/config/EditorToolbarButtons/Visibility/$(currentTiddler)$
<a href={{!!_canonical_uri}}><$text text={{!!_canonical_uri}}/></a>
<$edit-text field="_canonical_uri" class="tc-edit-fields" tabindex={{$:/config/EditTabIndex}}></$edit-text>
<$edit-text field="_canonical_uri" class="tc-edit-fields" tabindex={{$:/config/EditTabIndex}} cancelPopups="yes"></$edit-text>
</div>

View File

@@ -51,7 +51,7 @@ $value={{{ [<newFieldValueTiddler>get[text]] }}}/>
<td class="tc-edit-field-name">
<$text text=<<currentField>>/>:</td>
<td class="tc-edit-field-value">
<$edit-text tiddler=<<currentTiddler>> field=<<currentField>> placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} tabindex={{$:/config/EditTabIndex}}/>
<$edit-text tiddler=<<currentTiddler>> field=<<currentField>> placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} tabindex={{$:/config/EditTabIndex}} cancelPopups="yes"/>
</td>
<td class="tc-edit-field-remove">
<$button class="tc-btn-invisible" tooltip={{$:/language/EditTemplate/Field/Remove/Hint}} aria-label={{$:/language/EditTemplate/Field/Remove/Caption}}>
@@ -71,9 +71,9 @@ $value={{{ [<newFieldValueTiddler>get[text]] }}}/>
<em class="tc-edit">
<<lingo Fields/Add/Prompt>>&nbsp;&nbsp;
</em>
<span class="tc-edit-field-add-name">
<$edit-text tiddler=<<newFieldNameTiddler>> 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]] }}}/>
</span>&nbsp;
<div class="tc-edit-field-add-name-wrapper">
<$edit-text tiddler=<<newFieldNameTiddler>> 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"/>
&nbsp;
<$button popup=<<qualify "$:/state/popup/field-dropdown">> class="tc-btn-invisible tc-btn-dropdown" tooltip={{$:/language/EditTemplate/Field/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Field/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button>&nbsp;
<$reveal state=<<qualify "$:/state/popup/field-dropdown">> type="nomatch" text="" default="">
<div class="tc-block-dropdown tc-edit-type-dropdown">
@@ -101,10 +101,11 @@ $value={{{ [<newFieldValueTiddler>get[text]] }}}/>
</$set>
</div>
</$reveal>
</div>
<span class="tc-edit-field-add-value">
<$set name="currentTiddlerCSSescaped" value={{{ [<currentTiddler>escapecss[]] }}}>
<$keyboard key="((add-field))" actions=<<new-field-actions>>>
<$edit-text tiddler=<<newFieldValueTiddler>> tag="input" default="" placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} class="tc-edit-texteditor" tabindex={{$:/config/EditTabIndex}}/>
<$edit-text tiddler=<<newFieldValueTiddler>> tag="input" default="" placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} class="tc-edit-texteditor" tabindex={{$:/config/EditTabIndex}} cancelPopups="yes"/>
</$keyboard>
</$set>
</span>&nbsp;

View File

@@ -30,8 +30,8 @@ color:$(foregroundColor)$;
<$list filter="[all[current]tags[]sort[title]]" storyview="pop">
<$macrocall $name="tag-body" colour={{!!color}} palette={{$:/palette}} icon={{!!icon}}/>
</$list>
<$set name="tabIndex" value={{$:/config/EditTabIndex}}>
<$vars tabIndex={{$:/config/EditTabIndex}} cancelPopups="yes">
<$macrocall $name="tag-picker"/>
</$set>
</$vars>
</$fieldmangler>
</div>

View File

@@ -1,7 +1,7 @@
title: $:/core/ui/EditTemplate/title
tags: $:/tags/EditTemplate
<$edit-text field="draft.title" class="tc-titlebar tc-edit-texteditor" focus={{{ [{$:/config/AutoFocus}match[title]then[true]] ~[[false]] }}} tabindex={{$:/config/EditTabIndex}}/>
<$edit-text field="draft.title" class="tc-titlebar tc-edit-texteditor" focus={{{ [{$:/config/AutoFocus}match[title]then[true]] ~[[false]] }}} tabindex={{$:/config/EditTabIndex}} cancelPopups="yes"/>
<$vars pattern="""[\|\[\]{}]""" bad-chars="""`| [ ] { }`""">

View File

@@ -3,8 +3,10 @@ tags: $:/tags/EditTemplate
\define lingo-base() $:/language/EditTemplate/
\whitespace trim
<em class="tc-edit"><<lingo Type/Prompt>></em>&nbsp;&nbsp;
<div class="tc-type-selector-wrapper">
<div class="tc-type-selector"><$fieldmangler>
<em class="tc-edit"><<lingo Type/Prompt>></em>&nbsp;&nbsp;<$edit-text 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]] }}}/>&nbsp;<$button popup=<<qualify "$:/state/popup/type-dropdown">> class="tc-btn-invisible tc-btn-dropdown" tooltip={{$:/language/EditTemplate/Type/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Type/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button>&nbsp;<$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}}</$button>
<$edit-text 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"/>&nbsp;<$button popup=<<qualify "$:/state/popup/type-dropdown">> class="tc-btn-invisible tc-btn-dropdown" tooltip={{$:/language/EditTemplate/Type/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Type/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button>&nbsp;<$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}}</$button>
</$fieldmangler></div>
<div class="tc-block-dropdown-wrapper">
@@ -24,3 +26,4 @@ tags: $:/tags/EditTemplate
</$reveal>
</$set>
</div>
</div>

View File

@@ -41,13 +41,13 @@ $(currentTiddler)$!!popup-$(payloadTiddler)$
<$checkbox field=<<selectionField>> checked="checked" unchecked="unchecked" default="checked"/>
</td>
<td>
<$reveal type="nomatch" stateTitle=<<previewPopupState>> text="yes" tag="div">
<$button class="tc-btn-invisible tc-btn-dropdown" setTitle=<<previewPopupState>> setTo="yes">
<$reveal type="nomatch" state=<<previewPopupState>> text="yes" tag="div">
<$button class="tc-btn-invisible tc-btn-dropdown" set=<<previewPopupState>> setTo="yes">
{{$:/core/images/right-arrow}}&nbsp;<$text text=<<payloadTiddler>>/>
</$button>
</$reveal>
<$reveal type="match" stateTitle=<<previewPopupState>> text="yes" tag="div">
<$button class="tc-btn-invisible tc-btn-dropdown" setTitle=<<previewPopupState>> setTo="no">
<$reveal type="match" state=<<previewPopupState>> text="yes" tag="div">
<$button class="tc-btn-invisible tc-btn-dropdown" set=<<previewPopupState>> setTo="no">
{{$:/core/images/down-arrow}}&nbsp;<$text text=<<payloadTiddler>>/>
</$button>
</$reveal>
@@ -58,7 +58,7 @@ $(currentTiddler)$!!popup-$(payloadTiddler)$
</tr>
<tr>
<td colspan="3">
<$reveal type="match" text="yes" stateTitle=<<previewPopupState>> tag="div">
<$reveal type="match" text="yes" state=<<previewPopupState>> tag="div">
<$list filter="[{$:/state/importpreviewtype}has[text]]" variable="listItem" emptyMessage={{$:/core/ui/ImportPreviews/Text}}>
<$transclude tiddler={{$:/state/importpreviewtype}}/>
</$list>

View File

@@ -11,11 +11,6 @@ caption: {{$:/language/Manager/Item/Tags}}
\define tag-picker-actions()
<<tag-checkbox-actions>>
<$action-listops
$tiddler=<<currentTiddler>>
$field="tags"
$subfilter="[<tag>] [all[current]tags[]]"
/>
\end
<p>
@@ -28,5 +23,7 @@ caption: {{$:/language/Manager/Item/Tags}}
</$list>
</p>
<p>
<$fieldmangler>
<$macrocall $name="tag-picker" actions=<<tag-picker-actions>>/>
</$fieldmangler>
</p>

View File

@@ -6,7 +6,7 @@ tags: $:/tags/SideBarSegment
<$set name="searchTiddler" value="$:/temp/search">
<div class="tc-search">
<$edit-text tiddler="$:/temp/search" type="search" tag="input" focus={{$:/config/Search/AutoFocus}} focusPopup=<<qualify "$:/state/popup/search-dropdown">> class="tc-popup-handle"/>
<$edit-text tiddler="$:/temp/search" type="search" tag="input" focus={{$:/config/Search/AutoFocus}} focusPopup=<<qualify "$:/state/popup/search-dropdown">> class="tc-popup-handle" cancelPopups="yes"/>
<$reveal state="$:/temp/search" type="nomatch" text="">
<$button tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class="tc-btn-invisible">
<$action-setfield $tiddler="$:/temp/advancedsearch" text={{$:/temp/search}}/>

View File

@@ -13,6 +13,7 @@ heading-5: {{$:/language/Buttons/Heading5/Hint}}
heading-6: {{$:/language/Buttons/Heading6/Hint}}
italic: {{$:/language/Buttons/Italic/Hint}}
link: {{$:/language/Buttons/Link/Hint}}
linkify: {{$:/language/Buttons/Linkify/Hint}}
list-bullet: {{$:/language/Buttons/ListBullet/Hint}}
list-number: {{$:/language/Buttons/ListNumber/Hint}}
mono-block: {{$:/language/Buttons/MonoBlock/Hint}}
@@ -30,4 +31,5 @@ strikethrough: {{$:/language/Buttons/Strikethrough/Hint}}
subscript: {{$:/language/Buttons/Subscript/Hint}}
superscript: {{$:/language/Buttons/Superscript/Hint}}
toggle-sidebar: {{$:/language/Buttons/ToggleSidebar/Hint}}
transcludify: {{$:/language/Buttons/Transcludify/Hint}}
underline: {{$:/language/Buttons/Underline/Hint}}

View File

@@ -1,30 +1,35 @@
title: $:/core/macros/tag-picker
tags: $:/tags/Macro
\define add-tag-actions()
<$action-sendmessage $message="tm-add-tag" $param={{{ [<newTagNameTiddler>get[text]] }}}/>
\define add-tag-actions(actions)
<$set name="tag" value={{{ [<newTagNameTiddler>get[text]] }}}>
<$action-sendmessage $message="tm-add-tag" $param=<<tag>>/>
<$action-deletetiddler $tiddler=<<newTagNameTiddler>>/>
$actions$
</$set>
\end
\define tag-button()
\define tag-button(actions)
<$button class="tc-btn-invisible" tag="a" tooltip={{$:/language/EditTemplate/Tags/Add/Button/Hint}}>
<$action-sendmessage $message="tm-add-tag" $param=<<tag>>/>
<$action-deletetiddler $tiddler=<<newTagNameTiddler>>/>
$actions$
<$macrocall $name="tag-pill" tag=<<tag>>/>
</$button>
\end
\define tag-picker-inner()
\define tag-picker-inner(actions)
\whitespace trim
<div class="tc-edit-add-tag">
<div>
<span class="tc-add-tag-name">
<$keyboard key="ENTER" actions=<<add-tag-actions>>>
<$edit-text tiddler=<<newTagNameTiddler>> tag="input" default="" placeholder={{$:/language/EditTemplate/Tags/Add/Placeholder}} focusPopup=<<qualify "$:/state/popup/tags-auto-complete">> class="tc-edit-texteditor tc-popup-handle" tabindex=<<tabIndex>> focus={{{ [{$:/config/AutoFocus}match[tags]then[true]] ~[[false]] }}}/>
<$keyboard key="ENTER" actions="""<$macrocall $name="add-tag-actions" actions=<<__actions__>>/>""">
<$edit-text tiddler=<<newTagNameTiddler>> tag="input" default="" placeholder={{$:/language/EditTemplate/Tags/Add/Placeholder}} focusPopup=<<qualify "$:/state/popup/tags-auto-complete">> class="tc-edit-texteditor tc-popup-handle" tabindex=<<tabIndex>> focus={{{ [{$:/config/AutoFocus}match[tags]then[true]] ~[[false]] }}} cancelPopups="yes"/>
</$keyboard>
</span>&nbsp;<$button popup=<<qualify "$:/state/popup/tags-auto-complete">> class="tc-btn-invisible" tooltip={{$:/language/EditTemplate/Tags/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Tags/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button>&nbsp;<span class="tc-add-tag-button">
</span>&nbsp;<$button popup=<<qualify "$:/state/popup/tags-auto-complete">> class="tc-btn-invisible tc-btn-dropdown" tooltip={{$:/language/EditTemplate/Tags/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Tags/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button>&nbsp;<span class="tc-add-tag-button">
<$set name="tag" value={{{ [<newTagNameTiddler>get[text]] }}}>
<$button set="$:/temp/NewTagName" setTo="" class="">
<<add-tag-actions>>
<$macrocall $name="add-tag-actions" actions=<<__actions__>>/>
<$action-deletetiddler $tiddler=<<newTagNameTiddler>>/>
{{$:/language/EditTemplate/Tags/Add/Button}}
</$button>
@@ -37,23 +42,24 @@ tags: $:/tags/Macro
<$set name="newTagName" value={{{ [<newTagNameTiddler>get[text]] }}}>
<$list filter="[<newTagName>minlength{$:/config/Tags/MinLength}limit[1]]" emptyMessage="""<div class="tc-search-results">{{$:/language/Search/Search/TooShort}}</div>""" variable="listItem">
<$list filter="[tags[]!is[system]search:title<newTagName>sort[]]" variable="tag">
<<tag-button>>
<$macrocall $name="tag-button" actions=<<__actions__>>/>
</$list></$list>
<hr>
<$list filter="[<newTagName>minlength{$:/config/Tags/MinLength}limit[1]]" emptyMessage="""<div class="tc-search-results">{{$:/language/Search/Search/TooShort}}</div>""" variable="listItem">
<$list filter="[tags[]is[system]search:title<newTagName>sort[]]" variable="tag">
<<tag-button>>
<$macrocall $name="tag-button" actions=<<__actions__>>/>
</$list></$list>
</$set>
</div>
</$reveal>
</div>
</div>
\end
\define tag-picker()
\define tag-picker(actions)
\whitespace trim
<$list filter="[<newTagNameTiddler>match[]]" emptyMessage=<<tag-picker-inner>>>
<$list filter="[<newTagNameTiddler>match[]]" emptyMessage="""<$macrocall $name="tag-picker-inner" actions=<<__actions__>>/>""">
<$set name="newTagNameTiddler" value=<<qualify "$:/temp/NewTagName">>>
<<tag-picker-inner>>
<$macrocall $name="tag-picker-inner" actions=<<__actions__>>/>
</$set>
</$list>
\end

View File

@@ -1,6 +1,6 @@
caption: 5.1.23
created: 20200422173236649
modified: 20200422173236649
created: 2020061111252696
modified: 2020061111252696
tags: ReleaseNotes
title: Release 5.1.23
type: text/vnd.tiddlywiki
@@ -12,14 +12,19 @@ type: text/vnd.tiddlywiki
! Translation Improvements
*
* Catalan
! Plugin Improvements
* JSZip Plugin
** [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/6a0ff7db1807f45b73061ced82f5a85f1a529bbf]] ability to dynamically create Zip files, giving TiddlyWiki the ability to build static sites within the browser
* Freelinks Plugin
** [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/1f354a972e0217e034d1f59d31577c1fd6b186f3]] (and [[here|https://gitxhub.com/Jermolene/TiddlyWiki5/commit/c9692d7a508cfdb0446e67061201961dca64d8dd]]) support for ignoring case when matching titles
** [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/05e6c1bf62cd51df6aa025d0ad07f7959cde6fa0]] bug with autolinking within HTML `<a>` elements
* Twitter Plugin
** [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/3a20fb1e3a41a032574d227a8c770a11ae0a5d58]] warning if wiki needs to be saved and reloaded
* [[Dynaview Plugin]]
** [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/b0e40e86413c1769c8be8a84652b66ef6ac8b997]] examples
! Performance Improvements
@@ -30,27 +35,44 @@ type: text/vnd.tiddlywiki
* [[Updated|https://github.com/Jermolene/TiddlyWiki5/pull/4590]] Vanilla theme to use palette colours for the [[browser selection outline|https://developer.mozilla.org/en-US/docs/Web/CSS/::selection]]
* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/1546a4a1895b93a47b79c9d37b94be039604443a]] warning message about using the online plugin library with the client-server configuration
* [[Improved|https://github.com/Jermolene/TiddlyWiki5/pull/4585]] Gruvbox palette readability of toolbar buttons
* [[Changed|https://github.com/Jermolene/TiddlyWiki5/commit/9cd5415dfe54b47819920aa3cf6ac2d5e3a9188e]] favicon for the prerelease edition
! Hackability Improvements
* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/4966f6ab625c8ce2c9f0812a726ba928d68ea00b]] new [[slugify Operator]] and [[duplicateslugs Operator]] for generating human readable filenames/URLs
* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/619c0752bd3c6e71d1fcdb74daa03cfe8257afe4]] new [[sortsub Operator]] for sorting by a user defined subfilter
* [[Updated|https://github.com/Jermolene/TiddlyWiki5/commit/e71a27ac2d71f2e48f9e4e9156b59bb3ecc2a105]] LinkWidget to work within SVG elements
* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/c86a621d5d205e1ae0ce999b90ebe09addc45a9f]] ''accept'' attribute to the BrowseWidget
* [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/77a929faa3a33768e52cf2a34ecbef9c554a6a7b]] ActionPopupWidget to allow popups to be dismissed
* [[Extended|https://github.com/Jermolene/TiddlyWiki5/commit/2a8f7a9c503c9a6e4ea1bcd116be31ab6e90cf52]] [[favicon mechanism|Setting a favicon]] to support ''_canonical_uri'' images
* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/48dfadd85b8ebd788b44ed2c46108720742546df]] support for recording the startup timestamp in $:/info/startup-timestamp (see [[InfoMechanism]])
* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/bf6735420d2f8191f658c556910e7d73c681d5fe]] support for SVG favicons
! Bug Fixes
* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/4632]] hover effect for search dropdown items
* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/4584]] restored missing parameter to `saveTiddler()` method sync adaptors
* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/678e25f510786fbc38f505f8b594f57f39e33a04]] MakeLibraryCommand to skip non-directories
* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/4601]] erroneous use of `$tw.wiki`
* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/4647]] ''class'' attribute of DroppableWidget
* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/6570561d4ec31d9e64c3021bb69c20daec8c9eac]] [[has Operator]] when used with the ''tags'' field
* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/4634]] high CPU usage with animated syncing icon introduced in v5.1.22
! Contributors
[[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki:
* [[@Arlen22|https://github.com/Arlen22]]
* [[@bimlas|https://github.com/bimlas]]
* [[@BramChen|https://github.com/BramChen]]
* [[@BurningTreeC|https://github.com/BurningTreeC]]
* [[@danielo515|https://github.com/danielo515]]
* [[@flibbles|https://github.com/flibbles]]
* [[@ibnishak|https://github.com/ibnishak]]
* [[@idotobi|https://github.com/idotobi]]
* [[@Marxsal|https://github.com/Marxsal]]
* [[@mocsa|https://github.com/mocsa]]
* [[@NicolasPeton|https://github.com/NicolasPeton]]
* [[@passuf|https://github.com/passuf]]
* [[@pmario|https://github.com/pmario]]

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

View File

@@ -0,0 +1,2 @@
title: $:/favicon.ico
type: image/x-icon

View File

@@ -15,7 +15,8 @@
"tiddlywiki/dynannotate",
"tiddlywiki/codemirror",
"tiddlywiki/comments",
"tiddlywiki/menubar"
"tiddlywiki/menubar",
"tiddlywiki/jszip"
],
"themes": [
"tiddlywiki/vanilla",

View File

@@ -18,4 +18,4 @@
"--rendertiddlers","[!is[system]]","$:/core/templates/static.tiddler.html","static","text/plain",
"--rendertiddler","$:/core/templates/static.template.css","static/static.css","text/plain"]
}
}
}

View File

@@ -11,4 +11,4 @@
"share": [
"--rendertiddler","$:/core/save/all","share.html","text/plain"]
}
}
}

View File

@@ -94,6 +94,7 @@ function setupWiki(wikiOptions) {
tags: ["one"],
cost: "123",
value: "120",
slug: "tiddler-one",
authors: "Joe Bloggs",
modifier: "JoeBloggs",
modified: "201304152222"});
@@ -103,6 +104,7 @@ function setupWiki(wikiOptions) {
tags: ["two"],
cost: "42",
value: "190",
slug: "tiddler-two",
authors: "[[John Doe]]",
modifier: "John",
modified: "201304152211"});
@@ -315,6 +317,8 @@ function runTests(wiki) {
it("should handle the has operator", function() {
expect(wiki.filterTiddlers("[has[modified]sort[title]]").join(",")).toBe("$:/TiddlerTwo,Tiddler Three,TiddlerOne");
expect(wiki.filterTiddlers("[!has[modified]sort[title]]").join(",")).toBe("$:/ShadowPlugin,a fourth tiddler,filter regexp test,has filter,hasList,one");
expect(wiki.filterTiddlers("[has[tags]sort[title]]").join(",")).toBe("$:/TiddlerTwo,Tiddler Three,TiddlerOne");
expect(wiki.filterTiddlers("[!has[tags]sort[title]]").join(",")).toBe("$:/ShadowPlugin,a fourth tiddler,filter regexp test,has filter,hasList,one");
});
it("should handle the has:field operator", function() {
@@ -669,6 +673,14 @@ function runTests(wiki) {
expect(wiki.filterTiddlers("b a b c +[sortby[b a c b]]").join(",")).toBe("b,a,c");
});
it("should handle the slugify operator", function() {
expect(wiki.filterTiddlers("[[Joe Bloggs]slugify[]]").join(",")).toBe("joe-bloggs");
expect(wiki.filterTiddlers("[[Joe Bloggs2]slugify[]]").join(",")).toBe("joe-bloggs2");
expect(wiki.filterTiddlers("[[@£$%^&*((]slugify[]]").join(",")).toBe("64-163-36-37-94-38-42-40-40");
expect(wiki.filterTiddlers("One one ONE O!N!E +[slugify[]]").join(",")).toBe("one,one,one,one");
expect(wiki.filterTiddlers("TiddlerOne $:/TiddlerTwo +[slugify[]]").join(",")).toBe("tiddler-one,tiddler-two");
});
it("should handle the sortsub operator", function() {
var widget = require("$:/core/modules/widgets/widget.js");
var rootWidget = new widget.widget({ type:"widget", children:[ {type:"widget", children:[]} ] },

View File

@@ -1,5 +0,0 @@
created: 20191004112211823
list: [[WidgetMessage: tm-unload-plugin-library]] [[WidgetMessage: tm-load-plugin-library]] [[WidgetMessage: tm-load-plugin-from-library]] HelloThere GettingStarted Community
modified: 20191004113621710
title: $:/StoryList
type: text/vnd.tiddlywiki

View File

@@ -7,5 +7,5 @@ type: text/vnd.tiddlywiki
There are several resources for developers to learn more about TiddlyWiki and to discuss and contribute to its development.
* [[tiddlywiki.com/dev|https://tiddlywiki.com/dev]] is the official developer documentation
* [[TiddlyWikiDev group|http://groups.google.com/group/TiddlyWikiDev]] for discussions about TiddlyWiki development
* [[TiddlyWikiDev group|https://groups.google.com/group/TiddlyWikiDev]] for discussions about TiddlyWiki development
* https://github.com/Jermolene/TiddlyWiki5 for the source code and development activity

View File

@@ -8,8 +8,8 @@ type: text/vnd.tiddlywiki
The ~TiddlyWiki discussion groups are mailing lists for talking about ~TiddlyWiki: requests for help, announcements of new releases and plugins, debating new features, or just sharing experiences. You can participate via the associated website, or subscribe via email.
* The main ~TiddlyWiki group: http://groups.google.com/group/TiddlyWiki
*> Note that you do not need a Google Account to join the discussion groups. Subscribe by sending an email to mailto:tiddlywiki+subscribe@googlegroups.com or mailto:tiddlywikidev+subscribe@googlegroups.com.
* The main ~TiddlyWiki group: https://groups.google.com/group/TiddlyWiki
*> Note that you do not need a Google Account to join the discussion groups. Subscribe by sending an email to mailto:tiddlywiki+subscribe@googlegroups.com.
** An enhanced group search facility is available on [[mail-archive.com|https://www.mail-archive.com/tiddlywiki@googlegroups.com/]]
* Watch recordings of our regular [[TiddlyWiki Hangouts]]
* Follow [[@TiddlyWiki on Twitter|http://twitter.com/TiddlyWiki]] for the latest news
@@ -19,8 +19,8 @@ The ~TiddlyWiki discussion groups are mailing lists for talking about ~TiddlyWik
! Developers
* The TiddlyWikiDev group for developers: http://groups.google.com/group/TiddlyWikiDev
*> Note that you do not need a Google Account to join the discussion groups. Subscribe by sending an email to mailto:tiddlywiki+subscribe@googlegroups.com or mailto:tiddlywikidev+subscribe@googlegroups.com.
* The TiddlyWikiDev group for developers: https://groups.google.com/group/TiddlyWikiDev
*> Note that you do not need a Google Account to join the discussion groups. Subscribe by sending an email to mailto:tiddlywikidev+subscribe@googlegroups.com.
** An enhanced group search facility is available on [[mail-archive.com|https://www.mail-archive.com/tiddlywikidev@googlegroups.com/]]
* Follow [[@TiddlyWiki on Twitter|http://twitter.com/#!/TiddlyWiki]] for the latest news
* Get involved in the [[development on GitHub|https://github.com/Jermolene/TiddlyWiki5]]
@@ -30,4 +30,4 @@ New releases of TiddlyWiki, TiddlyDesktop and TiddlyFox are announced via the di
! Documentation
There is also a discussion group specifically for discussing TiddlyWiki documentation improvement initiatives: http://groups.google.com/group/tiddlywikidocs
There is also a discussion group specifically for discussing TiddlyWiki documentation improvement initiatives: https://groups.google.com/group/tiddlywikidocs

View File

@@ -5,7 +5,7 @@ title: "PETTIL - Forth for the Commodore PET" by Charlie Hitselberger
type: text/vnd.tiddlywiki
url: http://chitselb.com/files/tiddlypettil.html
A fast Forth interpreter for the [[Commodore PET|http://en.wikipedia.org/wiki/Commodore_PET]], written in 6502 assembly language. The TiddlyWiki containing program documentation is automatically generated from the source code: see https://github.com/chitselb/pettil.
A fast Forth interpreter for the [[Commodore PET|https://en.wikipedia.org/wiki/Commodore_PET]], written in 6502 assembly language. The TiddlyWiki containing program documentation is automatically generated from the source code: see https://github.com/chitselb/pettil.
{{!!url}}

View File

@@ -3,7 +3,7 @@ modified: 20180309164105386
tags: Resources
title: Widdly by Opennota
type: text/vnd.tiddlywiki
url: https://github.com/opennota/widdly
url: https://gitlab.com/opennota/widdly
A cross platform server application that can save tiddlers to a local database

View File

@@ -3,7 +3,7 @@ modified: 20161224181607230
tags: Resources
title: "Lucky Sushi" online shop by sini-Kit
type: text/vnd.tiddlywiki
url: http://luckysushi.ru/habarovsk/heeg35.html#index
url: http://luckysushi.ru/habarovsk/heeg.html#index
A complete online shop made in ~TiddlyWiki!

View File

@@ -1,16 +1,30 @@
caption: Timimi
created: 20180830194141190
delivery: Browser Extension & Executable
description: Browser extension & executable for desktops
delivery: Browser Extension & Native host
description: Browser extension & native host for desktops
method: save
modified: 20181012165153986
tags: Windows Linux Chrome Firefox Saving Resources plugins
title: "Timimi" Extension and executable by Riz
modified: 20200501092235061
tags: Windows Linux Chrome Firefox Saving Resources plugins Mac Opera
title: Timimi: WebExtension and Native Host by Riz
type: text/vnd.tiddlywiki
url: https://github.com/ibnishak/Timimi
url: https://ibnishak.github.io/Timimi/
`Timimi` is a Web Extension and executable for Firefox, Chrome and Chromium that allows it to save standalone ~TiddlyWiki files.
Timimi is a web-extension accompanied by a native host that allows you to save and backup your standalone HTML tiddlywiki files ''anywhere in your hard-drive''. Once installed, you can save the tiddlywiki files without any extra steps, like the original Tiddlyfox addon.
{{!!url}}
This is an addon using native messaging, essentially handing over the contents to a webextension host (executable) which does the actual saving. Once installed, you can save the standalone TW from anywhere in your hard drive without any more interactions, like the original Tiddlyfox addon.
As of version 2.1, Timimi supports the following browsers
* Chrome/Chromium
* Firefox
* Opera
* Microsoft Edge (Chromium)
It is also reported to work seamlessly in chrome based browsers like Brave and Vivaldi.
Timimi also provides users with 4 backup strategies, viz:
* Create a backup Every n^^th^^ save
* Create a backup every n^^th^^ minute
* Customised Tower of Hanoi
* First in First Out

View File

@@ -18,7 +18,7 @@ Values of date fields are 17-character strings:
* 2 digits for the second
* 3 digits for the millisecond
To avoid problems arising from differences of time zone, TiddlyWiki always uses [[UTC|http://en.wikipedia.org/wiki/Coordinated_Universal_Time]].
To avoid problems arising from differences of time zone, TiddlyWiki always uses [[UTC|https://en.wikipedia.org/wiki/Coordinated_Universal_Time]].
As an example, the <<.field created>> field of this tiddler has the value <<.value """<$view field="created"/>""">>.

View File

@@ -3,7 +3,7 @@ modified: 20141130195444237
tags: Concepts
title: Transclusion
[[Transclusion|http://en.wikipedia.org/wiki/Transclusion]] is the process of referencing one tiddler "A" from another tiddler "B" such that the content of "A" appears to be a part of "B".
[[Transclusion|https://en.wikipedia.org/wiki/Transclusion]] is the process of referencing one tiddler "A" from another tiddler "B" such that the content of "A" appears to be a part of "B".
Copying and pasting content creates multiple copies of the same content in several different places. With transclusion, there can be a single copy and a special instruction in "B" which indicates the point at which content should be inserted from tiddler "A".

View File

@@ -4,4 +4,4 @@ tags: Definitions
title: Base64
type: text/vnd.tiddlywiki
<<.dlink-ex Base64 "http://en.wikipedia.org/wiki/Base64">> is a way of representing binary data, such an image, as a string of text.
<<.dlink-ex Base64 "https://en.wikipedia.org/wiki/Base64">> is a way of representing binary data, such an image, as a string of text.

View File

@@ -4,4 +4,4 @@ tags: Definitions
title: Cascading Style Sheets
type: text/vnd.tiddlywiki
<<.dlink-ex CSS "http://en.wikipedia.org/wiki/Cascading_Style_Sheets">> is a standard plain-text format used for defining the presentational style of the various elements on a web page.
<<.dlink-ex CSS "https://en.wikipedia.org/wiki/Cascading_Style_Sheets">> is a standard plain-text format used for defining the presentational style of the various elements on a web page.

View File

@@ -4,7 +4,7 @@ tags: Definitions
title: Comma-Separated Values
type: text/vnd.tiddlywiki
<<.dlink-ex CSV "http://en.wikipedia.org/wiki/Comma-separated_values">> is a standard plain-text format for storing a table of data.
<<.dlink-ex CSV "https://en.wikipedia.org/wiki/Comma-separated_values">> is a standard plain-text format for storing a table of data.
Each row of the table is called a <<.def record>> and occupies one line.

View File

@@ -4,6 +4,6 @@ tags: Definitions
title: Data URI
type: text/vnd.tiddlywiki
A <<.dlink-ex "data URI" "http://en.wikipedia.org/wiki/Data_URI_scheme">> is a way of storing data (such as an image) in a way that is compatible with the addresses used by web pages and [[stylesheets|Cascading Style Sheets]] to access external resources.
A <<.dlink-ex "data URI" "https://en.wikipedia.org/wiki/Data_URI_scheme">> is a way of storing data (such as an image) in a way that is compatible with the addresses used by web pages and [[stylesheets|Cascading Style Sheets]] to access external resources.
The <<.mlink datauri>> macro can be used to generate data URIs within ~TiddlyWiki.

View File

@@ -4,7 +4,7 @@ tags: Definitions
title: Document Object Model
type: text/vnd.tiddlywiki
The <<.dlink-ex DOM "http://en.wikipedia.org/wiki/Document_Object_Model">> of a web page is a tree-shaped model of its content, maintained internally by the web browser as the user interacts with that content. Each point in the tree is called a <<.def node>>.
The <<.dlink-ex DOM "https://en.wikipedia.org/wiki/Document_Object_Model">> of a web page is a tree-shaped model of its content, maintained internally by the web browser as the user interacts with that content. Each point in the tree is called a <<.def node>>.
When ~TiddlyWiki is running in a web browser, its [[widgets|Widgets]] are rendered into DOM nodes for display.

View File

@@ -4,7 +4,7 @@ tags: Definitions
title: HyperText Markup Language
type: text/vnd.tiddlywiki
<<.dlink-ex HTML "http://en.wikipedia.org/wiki/HTML">> is a standard plain-text format used for defining the content of a web page.
<<.dlink-ex HTML "https://en.wikipedia.org/wiki/HTML">> is a standard plain-text format used for defining the content of a web page.
It consists of a tree of elements expressed using a system of special <<.def tags>> enclosed in angle brackets.

View File

@@ -4,7 +4,7 @@ tags: Definitions
title: JavaScript Object Notation
type: text/vnd.tiddlywiki
<<.dlink-ex JSON "http://en.wikipedia.org/wiki/JSON">> is a standard plain-text format used for modelling hierarchical structures of objects that contain named fields.
<<.dlink-ex JSON "https://en.wikipedia.org/wiki/JSON">> is a standard plain-text format used for modelling hierarchical structures of objects that contain named fields.
DataTiddlers can have JSON content.

View File

@@ -3,5 +3,5 @@ modified: 201308251307
tags: Definitions
title: OpenSource
OpenSource is [[defined by Wikipedia|http://en.wikipedia.org/wiki/Open_source]] as //a philosophy, or pragmatic methodology that promotes free redistribution and access to an end product's design and implementation details//.
OpenSource is [[defined by Wikipedia|https://en.wikipedia.org/wiki/Open_source]] as //a philosophy, or pragmatic methodology that promotes free redistribution and access to an end product's design and implementation details//.

View File

@@ -4,7 +4,7 @@ tags: Definitions
title: Percent Encoding
type: text/vnd.tiddlywiki
<<.dlink-ex "Percent encoding" "http://en.wikipedia.org/wiki/Percent-encoding">> is a notation that allows otherwise invalid characters to be included in a [[URI]].
<<.dlink-ex "Percent encoding" "https://en.wikipedia.org/wiki/Percent-encoding">> is a notation that allows otherwise invalid characters to be included in a [[URI]].
Such characters are represented as a percent sign `%` followed by two additional characters.

View File

@@ -4,7 +4,7 @@ tags: Definitions
title: Quine
type: text/vnd.tiddlywiki
Wikipedia [[defines a Quine|http://en.wikipedia.org/wiki/Quine_(computing)]] as //a computer program which takes no input and produces a copy of its own source code as its only output//.
Wikipedia [[defines a Quine|https://en.wikipedia.org/wiki/Quine_(computing)]] as //a computer program which takes no input and produces a copy of its own source code as its only output//.
TiddlyWiki is an unusual example of a practical quine: it is this ability to produce a copy of its own source code that lies at the heart of TiddlyWiki's ability to independently save changes to itself.

View File

@@ -4,4 +4,4 @@ tags: Definitions
title: URI
type: text/vnd.tiddlywiki
A <<.dlink-ex "URI" "http://en.wikipedia.org/wiki/Uniform_resource_identifier">> (also often known as a <<.def URL>>) is a string of characters used to specify the location of a resource such as a web page.
A <<.dlink-ex "URI" "https://en.wikipedia.org/wiki/Uniform_resource_identifier">> (also often known as a <<.def URL>>) is a string of characters used to specify the location of a resource such as a web page.

View File

@@ -72,13 +72,13 @@ In a similar way, we can use a `-` sign to <<.em remove>> a run's tiddlers from
!Special parameters
The parameter of each step we've seen so far has been in square brackets, meaning that ~TiddlyWiki treats it literally. But two other kinds of bracket are possible:
The parameter of each step we've seen so far has been in square brackets. It means that ~TiddlyWiki will filter for the exact string found between the brackets. But two other kinds of bracket are possible:
<<.def "Curly brackets">> `{}` mean that the parameter is a TextReference, and that its value is to be looked up in a specified tiddler. For example, if we have a tiddler called <<.tid Preference>> whose text happens to be the word <<.value Vegetarian>>, we can say
<<.def "Curly brackets">> `{}` mean that the parameter is a TextReference, and it will be replaced with content from another tiddler. For example, if we have a tiddler with the title <<.tid Preference>> whose content is the single word <<.value Vegetarian>>, we can say
> `[tag{Preference}]`
as an alternative to `[tag[Vegetarian]]`. This allows the preference to change over time.
In this simplest form the TextReference will take the full content of the tiddler (in technical terms, the text field of the tiddler) and substitute it in place of the TextReference. This way the tiddler's content will become the filter parameter, just like if you have written `[tag[Vegetarian]]`. But it gives you the added flexibility to change the parameter by changing the content of the Preference tiddler.
<<.def "Angle brackets">> `<>` mean that the parameter is the name of a [[variable|Variables]] whose value is to be used instead. Here we use the built-in <<.vlink currentTiddler>> variable in a filter that selects any tiddlers whose text contains the title of the current one:

View File

@@ -0,0 +1,22 @@
caption: duplicateslugs
created: 20200509141702846
modified: 20200509141702846
op-input: a [[selection of titles|Title Selection]]
op-output: the input titles transformed so that they only contain lower case letters, numbers, periods, dashes and underscores
op-purpose: returns each item in the list in a human-readable form for use in URLs or filenames
tags: [[Filter Operators]]
title: duplicateslugs Operator
type: text/vnd.tiddlywiki
<<.from-version "5.1.23">> The <<.olink slugify>> can be used to transform arbitrary tiddler titles into human readable strings suitable for use in URLs or filenames. However, itis possible for multiple different titles to slugify to the same string. The <<.olink duplicateslugs>> operator can be used to display a warning. For example:
<$macrocall $name='wikitext-example-without-html'
src='<$list filter="[!is[system]duplicateslugs[]limit[1]]" emptyMessage="There are no duplicate slugs">
The following tiddlers have duplicate slugs:
<ul>
<$list filter="[!is[system]duplicateslugs[]]">
<li><$link><$text text=<<currentTiddler>>/></$link></li>
</$list>
</ul>
</$list>'/>

View File

@@ -0,0 +1,24 @@
caption: slugify
created: 20200509141702846
modified: 20200509141702846
op-input: a [[selection of titles|Title Selection]]
op-output: the input titles transformed so that they only contain lower case letters, numbers, periods, dashes and underscores
op-purpose: returns each item in the list in a human-readable form for use in URLs or filenames
tags: [[Filter Operators]]
title: slugify Operator
type: text/vnd.tiddlywiki
<<.from-version "5.1.23">> The transformation applied by the slugify operator follows these steps:
* If there is a tiddler with the same title that has a ''slug'' field, then return that field instead of running the following steps
* Replace uppercase letters with lowercase equivalents
* Transliterate diacritics to their basic lowercase ASCII equivalents (for example, "Æ" is transliterated to "AE")
* Replace spaces with dashes
* Remove all non-word characters except dashes and periods
* Replace multiple sequential dashes with a single dash
* Trim dashes from start and end
* If the result is the empty string then character codes are used instead (eg. "&£@" transforms to "38-163-64")
Note that it is possible for more than one title to slugify to the same string. The <<.olink duplicateslugs>> can be used to alert authors to any clashes.
<<.operator-examples "slugify">>

View File

@@ -18,7 +18,7 @@ Use it to keep your [[to-do list|TaskManagementExample]], to plan an [[essay or
Unlike conventional online services, TiddlyWiki lets you choose where to keep your data, guaranteeing that in the decades to come you will [[still be able to use|Future Proof]] the notes you take today.
<div style="font-size:0.7em;text-align:center;margin:3em auto;">
<a href="http://groups.google.com/group/TiddlyWiki" class="tc-btn-big-green" style="border-radius:4px;background-color:#FF8C19;" target="_blank" rel="noopener noreferrer">
<a href="https://groups.google.com/group/TiddlyWiki" class="tc-btn-big-green" style="border-radius:4px;background-color:#FF8C19;" target="_blank" rel="noopener noreferrer">
{{$:/core/images/help}} Forum
</a>
<a href="https://www.youtube.com/c/JeremyRuston" class="tc-btn-big-green" style="border-radius:4px;background-color:#e52d27;" target="_blank" rel="noopener noreferrer">
@@ -46,3 +46,7 @@ It's well worth spending an hour or so playing with it to see how it can help yo
Finding code that works flawlessly after just two or three years is magical enough but after seven years?!
<<< [[Mark Gibbs, Network World|http://www.networkworld.com/article/3028098/open-source-tools/tiddlywiki-a-free-open-source-wiki-revisited.html]]
<div style="font-size:0.7em;text-align:center;margin:3em auto;">
<a href="https://www.producthunt.com/posts/tiddlywiki-2?utm_source=badge-top-post-badge&utm_medium=badge&utm_souce=badge-tiddlywiki-2" target="_blank" rel="noopener noreferrer"><img src="https://api.producthunt.com/widgets/embed-image/v1/top-post-badge.svg?post_id=193414&theme=dark&period=daily" alt="TiddlyWiki - The open source non-linear notebook | Product Hunt Embed" style="width: 250px; height: 54px;" width="250px" height="54px" /></a>
</div>

View File

@@ -1,23 +1,25 @@
created: 20130828190200000
modified: 20160622111343603
modified: 20200421003440463
tags: [[TiddlyWiki on Node.js]]
title: Generating Static Sites with TiddlyWiki
type: text/vnd.tiddlywiki
TiddlyWiki5 can be used to generate static HTML representations of a TiddlyWiki that doesn't need JavaScript.
This process requires that TiddlyWiki be installed on Node.js on your local system. See [[Installing TiddlyWiki on Node.js]] for
details.
There is much flexibility in how the static HTML is generated. The following scenarios are all illustrated on https://tiddlywiki.com.
! Wiki Snapshots and Tiddler Snapshots
You can explore a static representation of this TiddlyWiki at [ext[static.html]]. That file is a static snapshot of the current DefaultTiddlers. Any tiddlers that it links to are referred to via URLs of the form `/static/HelloThere.html` that point to static snapshots of individual tiddlers. The tiddler HTML files reference a `static.css` stylesheet file.
You can explore a static representation of the main TiddlyWiki site at https://tiddlywiki.com/static.html. That file is a static snapshot of the current DefaultTiddlers. Any tiddlers that it links to are referred to via URLs of the form `/static/HelloThere.html` that point to static snapshots of individual tiddlers. The tiddler HTML files reference a `static.css` stylesheet file.
The following commands are used to generate the sample static version of the TiddlyWiki5 site:
```
--rendertiddlers [!is[system]] $:/core/templates/static.tiddler.html static text/plain
--rendertiddler $:/core/templates/static.template.html static.html text/plain
--rendertiddler $:/core/templates/static.template.css static/static.css text/plain
tiddlywiki wikipath --rendertiddlers '[!is[system]]' $:/core/templates/static.tiddler.html static text/plain
tiddlywiki wikipath --rendertiddler $:/core/templates/static.template.html static.html text/plain
tiddlywiki wikipath --rendertiddler $:/core/templates/static.template.css static/static.css text/plain
```
The first RenderTiddlersCommand generates the HTML representations of individual tiddlers, the second RenderTiddlerCommand saves the static version of the DefaultTiddlers, and the final RenderTiddlerCommand saves the stylesheet. (All the files are placed in the `output` folder of the wiki folder).
@@ -26,7 +28,7 @@ The first RenderTiddlersCommand generates the HTML representations of individual
It is also possible to produce a single HTML file that contains static representations of tiddlers, and uses standard HTML anchor links to jump between them.
For example: [ext[alltiddlers.html]]
For example: https://tiddlywiki.com/alltiddlers.html
The example is built by the following commands:

View File

@@ -1,10 +1,10 @@
created: 20131224074240979
modified: 20200422163752597
modified: 20200510115704738
tags: [[Customise TiddlyWiki]]
title: Setting a favicon
type: text/vnd.tiddlywiki
"favicons" are small icons that most browsers display to help users identify websites.
"favicons" are small icons that most browsers display to help users identify websites. Note that all browsers support bitmap images, but only certain modern browsers support SVG format icons.
! favicons in the Browser

View File

@@ -12,4 +12,4 @@ Under Windows it is possible to convert TiddlyWiki into a true local application
Note that one disadvantage of this approach is that the TiddlyWiki file is saved in UTF-16 format, making it up to twice as large as it would be with the usual UTF-8 encoding. However, opening and saving the file via another saving method will re-encode the file to UTF-8.
See Wikipedia for more details: http://en.wikipedia.org/wiki/HTML_Application
See Wikipedia for more details: https://en.wikipedia.org/wiki/HTML_Application

View File

@@ -1,5 +1,5 @@
created: 20140720164948099
modified: 20190307175403915
modified: 20200506110435897
tags: Mechanisms
title: InfoMechanism
type: text/vnd.tiddlywiki
@@ -13,6 +13,7 @@ System tiddlers in the namespace `$:/info/` are used to expose information about
! Information Tiddlers
|!Title |!Description |
|[[$:/info/startup-timestamp]] |<<.from-version "5.1.23">> Startup timestamp in TiddlyWiki date format |
|[[$:/info/browser]] |Running in the browser? ("yes" or "no") |
|[[$:/info/browser/language]] |<<.from-version "5.1.20">> Language as reported by browser (note that some browsers report two character codes such as `en` while others report full codes such as `en-GB`) |
|[[$:/info/browser/screen/width]] |Screen width in pixels |

View File

@@ -7,10 +7,10 @@ type: text/vnd.tiddlywiki
<<.from-version "5.1.14">>
The `tm-open-external-window` message opens an external link eg: "http://tiddlywiki.com" in a new //browser// window. If no parameters are specified, it opens the help tiddler. Any additional parameters passed via the <<.param "paramObject">> are being provided as variables to the new window.
The `tm-open-external-window` message opens an external link eg: "https://tiddlywiki.com" in a new //browser// window. If no parameters are specified, it opens the help tiddler. Any additional parameters passed via the <<.param "paramObject">> are being provided as variables to the new window.
|!Name |!Description |
|param |URL of the tiddler to be opened in a new browser window, defaults to the [[TiddlyWiki help|http://tiddlywiki.com/#WidgetMessage%3A%20tm-open-external-window if empty]] |
|param |URL of the tiddler to be opened in a new browser window, defaults to the [[TiddlyWiki help|https://tiddlywiki.com/#WidgetMessage%3A%20tm-open-external-window if empty]] |
|paramObject |Optional: Hashmap of variables that will be provided to the window. see below |
''parmObject''
@@ -25,7 +25,7 @@ The `tm-open-external-window` message is usually generated with the ButtonWidget
<$macrocall $name='wikitext-example-without-html'
src='<$button>
<$action-sendmessage $message="tm-open-external-window" $param="http://tiddlywiki.com" windowName="_tiddlywiki" windowFeatures="height=500, width=900"/>
<$action-sendmessage $message="tm-open-external-window" $param="https://tiddlywiki.com" windowName="_tiddlywiki" windowFeatures="height=500, width=900"/>
Open ~TiddlyWiki - Action
</$button>
@@ -34,6 +34,6 @@ Open ~TiddlyWiki - Action
Open Mozilla Help - Action
</$button>
<$button message="tm-open-external-window" param="http://tiddlywiki.com" >
<$button message="tm-open-external-window" param="https://tiddlywiki.com" >
Open ~TiddlyWiki - Button
</$button>'/>

View File

@@ -1,13 +1,46 @@
created: 20160602043529506
modified: 20160602043531313
tags: [[TiddlyWiki on Node.js]]
caption: Node.js on Termux
created: 20200501120322327
delivery: App with DIY steps
description: Using Node.js to serve/create flatfile wikis
method: sync
modified: 20200501120801899
tags: Saving [[TiddlyWiki on Node.js]] Android
title: Serving TW5 from Android
type: text/vnd.tiddlywiki
[[Termux|https://termux.com/]] is an open source Android application that combines a Linux system and a terminal.
[[Termux|https://termux.com/]] is and open source android application providing limited Unix environment enabling users to install [[Node.js]] and npm modules in android. Users can install and run [[TiddlyWiki on Node.js]] using [[Termux|https://termux.com/]].
Once you open //Termux// on your Android system, it is straightforward to [[install|Installing TiddlyWiki on Node.js]] and [[run|Using TiddlyWiki on Node.js]] the [[Node.js flavour of TiddlyWiki|TiddlyWiki on Node.js]] from the command line.
!! Instructions
From then on, as long as //Termux// is not closed, you may access your wiki anytime from your favourite Web browser pointing on the expected address and port.
* Download and install Termux from [[Google Play Store|https://play.google.com/store/apps/details?id=com.termux]] or [[Fdroid|https://f-droid.org/en/packages/com.termux/]]
* Open termux and run the following commands one by one
> __note to contributors__: in //Termux//, you may as well install //git//, //emacs// or //vi//, in order to edit and maintain individual tiddler files. This would probably require that you also attach a more powerful keyboard to your Android, like the [[Hacker's Keyboard|https://github.com/klausw/hackerskeyboard/]] application or a Bluetooth external device.
```bash
apt update
apt upgrade
apt install nodejs
npm install -g tiddlywiki
```
* If you need to create/serve ''~TiddlyWiki on Node.js'' from the internal storage, you need to give termux storage permission by running the following command in termux
```
termux-setup-storage
```
* Now you can create and serve ''~TiddlyWiki on Node.js'' from internal storage. In the example given below, user is creating a new wiki called "mynewwiki" in his internal folder.
```
cd storage/shared
tiddlywiki mynewwiki --init server
tiddlywiki mynewwiki --listen
```
* Visit http://127.0.0.1:8080/ in your browser
* From then on, as long as //Termux// is not closed, you may access your wiki anytime from your favourite Web browser pointing on the expected address and port.
---
* For more information regarding ~TiddlyWiki on Node.js, please see [[Installing TiddlyWiki on Node.js]]
* For more information and tips regarding termux, please refer to [[Termux wiki|https://wiki.termux.com/wiki/Main_Page]]
<<.tip "In //Termux//, you may as well install //git//, //emacs// or //vi//, in order to edit and maintain individual tiddler files. This would probably require that you also attach a more powerful keyboard to your Android, like the [[Hacker's Keyboard|https://github.com/klausw/hackerskeyboard/]] application or a Bluetooth external device.">>

View File

@@ -1,5 +1,5 @@
created: 20131219100520659
modified: $tw.loadPluginFolder(name.substring(1));
modified: 20200523092939199
tags: [[TiddlyWiki on Node.js]]
title: Using TiddlyWiki on Node.js
type: text/vnd.tiddlywiki

View File

@@ -15,7 +15,7 @@ This release includes many improvements to the documentation for TiddlyWiki. Man
* Improvements to French, Danish, Chinese and Japanese translations
* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/cb8caf6a01aeeac480bf28661888961657b0dbd8]] Czech translation
* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/d6918d737f5d1b663346ad9a35421a5ae0ffb9a7]] [[Interlingua|http://en.wikipedia.org/wiki/Interlingua]] translation
* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/d6918d737f5d1b663346ad9a35421a5ae0ffb9a7]] [[Interlingua|https://en.wikipedia.org/wiki/Interlingua]] translation
* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/6721a5eb1b77935226ccc8559008af3a0a05d0cb]] Portuguese translation
* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/b845751d3c549366adb2f6e5c58b0114fa95ba30]] Punjabi and Hindu translations
* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/49a9a2c44ca3a71fff3062709f06940aaca4a574]] Slovak translation

View File

@@ -1,17 +1,10 @@
created: 20130823203800000
modified: 20160418123722695
modified: 2020051619421803
tags: About
title: RoadMap
type: text/vnd.tiddlywiki
There are still some areas of TiddlyWiki that have not been fully developed beyond the experimental stage:
TiddlyWiki 5 is now a mature, stable project that is relied upon by many people. Simultaneously, it is rapidly evolving in many directions thanks to the broad community of developers and users. This paradoxical situation is possible because the project strictly maintains backwards compatibility, adding new features alongside the existing ones.
* Multiple users with the client-server configuration
* Smartphone user experience
* New tiddler manager, including bulk operations like search and replace
* Federation that can run in the browser or under Node.js
* Improved editions
* Improved support for third party plugin libraries
Also see the issues list on GitHub: https://github.com/Jermolene/TiddlyWiki5
There is no formal roadmap, but quite a few areas that have yet to be fully implemented, such as search and replace, and rich text editing. Current work can be found on ~GitHub at https://github.com/Jermolene/TiddlyWiki5/

View File

@@ -3,25 +3,30 @@ created: 20130825161400000
delivery: App
description: Android app for saving changes locally to device storage
method: save
modified: 20191013145728306
modified: 20200501103500478
tags: Saving Android
title: Saving on Android
type: text/vnd.tiddlywiki
url: https://github.com/donmor/Tiddloid
The Tiddloid or Tiddloid Lite app for Android devices makes it possible to edit and save changes to TiddlyWiki. Get it from GitHub: [[Tiddloid|https://github.com/donmor/Tiddloid]] [[Tiddloid Lite|https://github.com/donmor/TiddloidLite]].
The Tiddloid and Tiddloid Lite app are Android apps that makes it possible to edit and save changes to TiddlyWiki HTML files.
''Instructions for use:''
* For more information: [[Tiddloid|https://github.com/donmor/Tiddloid]] [[Tiddloid Lite|https://github.com/donmor/TiddloidLite]].
* Download apks: [[Tiddloid|https://github.com/donmor/Tiddloid/releases]], [[TiddloidLite|https://github.com/donmor/TiddloidLite/releases]]
# [[Download]] an empty TiddlyWiki on another web browser
# Move the file you just downloaded to the directory `/sdcard/andtidwiki`
#* You may rename it, but be sure to keep the `.html` or `.htm` extension
# Open AndTidWiki
#* Don't use ''Menu''/''new ~TiddlyWiki'' menu option (it only supports the older TiddlyWikiClassic)
# Open the file by touching its filename
# Try creating a new tiddler using the ''new tiddler'' <<.icon $:/core/images/new-button>> button in the sidebar. Type some content for the tiddler, and click the <<.icon $:/core/images/done-button>> ''ok'' button
#* The wiki will be saved, and a confirmation message should appear at the top right of the window
''Note:'' You can save your changes by clicking the <<.icon $:/core/images/save-button>> ''save changes'' button in the sidebar even if you have not clicked the <<.icon $:/core/images/done-button>> ''ok'' button to complete editing a tiddler
!!! Features
* Tiddloid Lite supports new devices better. It also supports files on clouds like GDrive and ~OneDrive, while Tiddloid keeps the compatibility to TiddlyWikiClassic. For more difference between Tiddloid and Tiddloid Lite, please visit [[Tiddloid's homepage|https://github.com/donmor/Tiddloid]].
* You should keep the `.html` or `.htm` extension of the files to be imported.
* Create new ~TiddlyWiki importing latest edition from internet
* Import existing ~TiddlyWikis stored on device/internal storage. ([[TiddloidLite|https://github.com/donmor/TiddloidLite/releases]] supports external SD card too)
* Fork interesting ~Tiddlywikis from internet (Supports TW5 only)
* TiddlyWiki detection
* Locally stored ~Tiddlywikis are updated simultaneously on saving changes to ~TiddlyWikis imported to the app
* Backup system that is compatible with TiddlyDesktop, the desktop TiddlyWiki saver
* Creating shortcuts to existing ~TiddlyWiki on Android Homepage
* [[TiddloidLite|https://github.com/donmor/TiddloidLite/releases]] supports cloud storages like GDrive and ~OneDrive
!!! Please note
* Tiddloid Lite feature better support for devices running Android Q or later. It also supports cloud storages like GDrive and ~OneDrive, while Tiddloid keeps the compatibility to TiddlyWikiClassic. To know more about differences between Tiddloid and Tiddloid Lite, please visit [[Tiddloid's homepage|https://github.com/donmor/Tiddloid]].
* You should keep the `.html` or `.htm` extension of the files to be imported.

View File

@@ -10,11 +10,11 @@ description: Free online service for hosting TiddlyWiki files
[[TiddlySpot|http://tiddlyspot.com]] is a free hosting service for TiddlyWiki documents from Simon Baird and Daniel Baird.
! Setting up a TiddlyWiki on TiddlySpot
! Setting up a TiddlyWiki on ~TiddlySpot
To set up a [[TiddlyWiki Classic|TiddlyWikiClassic]], you merely create a new wiki at http://tiddlyspot.com
!!TiddlyWiki5 on TiddlySpot
~TiddlyWiki5 also functions well on ~TiddlySpot but this version is not offered directly in the TiddlySpot set-up.
!!TiddlyWiki5 on ~TiddlySpot
~TiddlyWiki5 also functions well on ~TiddlySpot but this version is not offered directly in the ~TiddlySpot set-up.
The simplest way to create a new ~TiddlySpot with ~TiddlyWiki5 is probably through the community created site http://tiddlywiki5.tiddlyspot.com
@@ -22,11 +22,11 @@ Alternatively, you can upload an existing ~TiddlyWiki5 document from your local
# Sign up for a new wiki at http://tiddlyspot.com/, and remember the wiki name and password
# Open your locally stored TiddlyWiki document in your browser
# Fill in the TiddlySpot wikiname and password in ''Saving'' tab of the ''control panel'' <<.icon $:/core/images/options-button>>
# Fill in the ~TiddlySpot wikiname and password in ''Saving'' tab of the ''control panel'' <<.icon $:/core/images/options-button>>
# Click the <<.icon $:/core/images/save-button>> ''save changes'' button. You should get a confirmation notification at the top right saying ''Saved wiki''. Saving can take several seconds if you're on a slow connection or working with a large wiki.
# Navigate to your TiddlySpot URL at http://{wikiname}.tiddlyspot.com/
# Navigate to your ~TiddlySpot URL at http://{wikiname}.tiddlyspot.com/
Note that your password is sent unencrypted when using TiddlySpot. From http://faq.tiddlyspot.com/:
Note that your password is sent unencrypted when using ~TiddlySpot. From http://faq.tiddlyspot.com/:
<<<
''Is Tiddlyspot secure?''
@@ -34,9 +34,9 @@ Note that your password is sent unencrypted when using TiddlySpot. From http://f
No. Tiddlyspot does not use SSL/https. Your password is sent in clear text when uploading and when authenticating to access a private site. This means that your Tiddlyspot is vulnerable to packet sniffing and your password could be discovered by a malicious third party. Also your data is transmitted unencrypted when you view your site, even if it is a private site. For this reason please don't put sensitive information such as banking details in your Tiddlyspot and don't use a password that you use for other high security sites.
<<<
! Problems with saving on TiddlySpot
! Problems with saving on ~TiddlySpot
In case you run into this error when uploading a new or freshly upgraded local TiddlyWiki to TiddlySpot :
In case you run into this error when uploading a new or freshly upgraded local TiddlyWiki to ~TiddlySpot :
<<<
Error while saving:
@@ -46,9 +46,9 @@ Error:NS_ERROR_DOM_BAD_URI: Access to restricted URI denied
The upgrade operation falls foul of a security restriction in Firefox. Until this can be resolved, we suggest using Chrome.
*# Use Chrome to open the local TiddlyWiki document you want to upload to TiddlySpot and follow the steps 1 through 5 described above
*# Once you've checked the TiddlySpot-hosted TiddlyWiki loads properly in Chrome, you should be able to access, edit and [[save using TiddlyFox|Saving with TiddlyFox]] again
* After you've uploaded your local document once, further editing and saving of the online version hosted on TiddlySpot should work with any modern browser of your choice.
** Don't forget to fill in the TiddlySpot wikiname and password in your TiddlySpot TiddlyWiki control panel for any new browser you want to use for saving changes
*# Use Chrome to open the local TiddlyWiki document you want to upload to ~TiddlySpot and follow the steps 1 through 5 described above
*# Once you've checked the ~TiddlySpot-hosted TiddlyWiki loads properly in Chrome, you should be able to access, edit and [[save using TiddlyFox|Saving with TiddlyFox]] again
* After you've uploaded your local document once, further editing and saving of the online version hosted on ~TiddlySpot should work with any modern browser of your choice.
** Don't forget to fill in the ~TiddlySpot wikiname and password in your ~TiddlySpot TiddlyWiki control panel for any new browser you want to use for saving changes
* //See also : [[Upgrading]]//

View File

@@ -3,28 +3,25 @@ created: 20131129101027725
delivery: App
description: iPad/iPhone app for working with TiddlyWiki
method: save
modified: 20171113105954683
modified: 20200428224059031
tags: Saving iOS
title: Saving on iPad/iPhone
type: text/vnd.tiddlywiki
The iPad/iPhone app ''Quine'' makes it possible to edit and save changes to TiddlyWiki5, including working offline without a network connection. [[Download it here|https://itunes.apple.com/us/app/quine/id1228682923?mt=8]].
The iPad/iPhone app ''Quine 2'' makes it possible to view, edit and then save changes to TiddlyWiki5 on iOS. [[Download it here|https://itunes.apple.com/us/app/quine/id1228682923?mt=8]].
Instructions for use:
# Open Quine
# On iPad
#* Touch the file button (<) or swipe from the left of the screen to open the file list
# On iPhone
#* The file list will show automatically unless a wiki is already open
# Touch the new file button (+) in the file list window to create a new TiddlyWiki5 file
# Swipe any file item from the right to see a list of additional "actions" possible for that file
# Touch any listed file item or folder to open it - wikis will open in Quine's custom browser
# When you have an open TiddlyWiki5:
# Try creating a new tiddler using the ''new tiddler'' <<.icon $:/core/images/new-button>> button in the sidebar
# Type some content for the tiddler, and click the <<.icon $:/core/images/done-button>> ''ok'' button
# Save your changes by clicking the <<.icon $:/core/images/save-button>> ''save changes'' button in the sidebar
#* A confirmation message should appear at the top right of the window
# Touch "Done" when done editing a wiki
# Open Quine 2
# Tap the + toolbar button to create and open a new TiddlyWiki
# From the file list tap an existing TiddlyWiki file to open it
# Edit the TiddlyWiki as normal, and save as normal using either Autosave or the TiddlyWiki save button <<.icon $:/core/images/save-button>>
# Tap the left hand "Documents" toolbar button to close an open TiddlyWiki
*Quine 2 works natively in iOS with the local file system and the iCloud file system
*Quine 2 also allows you to open, edit and save TiddlyWiki files stored with cloud file providers
*Quine 2 allows you to follow embedded WikiText links and canonical links to external files for cloud-like file providers which support "folder level sharing".
**This includes the apps "Secure Shellfish" and "Working Copy". Most providers, though, do not allow apps like Quine 2 to access linked files this way.
** If you wish to enable such links for "well behaved" file providers, toggle "on" the "Enable folder selection for out-of-sandbox links" setting in iOS Settings for Quine 2
//Note that Quine is published independently of TiddlyWiki//

View File

@@ -3,7 +3,7 @@ modified: 20150117152553000
title: Spelling
tags: [[Improving TiddlyWiki Documentation]]
Because ~TiddlyWiki is of British origin, its English documentation uses [[British spelling in preference to US spelling|http://en.wikipedia.org/wiki/American_and_British_English_spelling_differences]].
Because ~TiddlyWiki is of British origin, its English documentation uses [[British spelling in preference to US spelling|https://en.wikipedia.org/wiki/American_and_British_English_spelling_differences]].
Words like <<.word customise>> are spelled <<.word -ise>>, not <<.word -ize>>. Words like <<.word colour>> will also be spelled using UK English unless they are being used for reserved words in code, such as in CSS or JavaScript.

View File

@@ -31,6 +31,7 @@ The content of the `<$edit-text>` widget is ignored.
|autoHeight |Either "yes" or "no" to specify whether to automatically resize `textarea` editors to fit their content (defaults to "yes") |
|minHeight |Minimum height for automatically resized `textarea` editors, specified in CSS length units such as "px", "em" or "%" |
|rows|Sets the rows attribute of a generated textarea |
|cancelPopups |<<.from-version "5.1.23">> if set to "yes", cancels all popups when the input gets focus |
! Notes

View File

@@ -18,3 +18,4 @@ The content of the `<$edit>` widget is ignored.
|index |The index to edit |
|class |A CSS class to be added the generated editing widget |
|tabindex |Sets the `tabindex` attribute of the input or textarea to the given value |
|cancelPopups |<<.from-version "5.1.23">> if set to "yes", cancels all popups when the input gets focus |

View File

@@ -40,5 +40,5 @@ This will be monospaced
&#96;&#96;&#96;
</pre>
Note that some keyboard layouts treat the backtick as a [[dead key|http://en.wikipedia.org/wiki/Dead_key]], making it hard to type. The trick is to type three backticks followed by a space. Alternatively, type all six backticks in one go, then a space, and then move the cursor back three characters to type or paste the content.
Note that some keyboard layouts treat the backtick as a [[dead key|https://en.wikipedia.org/wiki/Dead_key]], making it hard to type. The trick is to type three backticks followed by a space. Alternatively, type all six backticks in one go, then a space, and then move the cursor back three characters to type or paste the content.

View File

@@ -85,7 +85,7 @@ Info/Hint: Mostra la informació d'aquest tiddler
Italic/Caption: cursiva
Italic/Hint: Aplica el format de cursiva a la selecció
Language/Caption: idioma
Language/Hint: Trieu l'idioma de la interfície
Language/Hint: Trieu l'idioma
LineWidth/Caption: amplada de la línia
LineWidth/Hint: Trieu l'amplada de la línia per pintar
Link/Caption: enllaç
@@ -127,7 +127,7 @@ Palette/Hint: Trieu el color de la paleta
Permalink/Caption: enllaç permanent
Permalink/Hint: Fés que la barra d'adreces del navegador mostri un enllaç directe cap aquest tiddler
Permaview/Caption: vista permanent
Permaview/Hint: Fés que la barra d'adreces del navegador mostri un enllaç directe cap a tots els tiddlers d'aquesta història
Permaview/Hint: Fés que la barra d'adreces del navegador mostri un enllaç directe cap a tots els tiddlers de la cronologia
Picture/Caption: imatge
Picture/Hint: Inserta una imatge
Preview/Caption: previsualització
@@ -154,11 +154,11 @@ Size/Caption/Height: Alçada:
Size/Caption/Resize: Mida de la imatge
Size/Caption/Width: Amplada:
Size/Hint: Trieu la mida de la imatge
Stamp/Caption: marca
Stamp/Caption/New: Afegiu la vostra pròpia
Stamp/Hint: Inserta un fragment de text
Stamp/New/Text: Fragment de text. (Recordeu afegir un títol descriptiu al camp de la llegenda).
Stamp/New/Title: Es mostra el nom al menú
Stamp/Caption: Plantilla
Stamp/Caption/New: Afegeix una nova plantilla
Stamp/Hint: Inserta una plantilla de text
Stamp/New/Text: Plantilla de text. (Recordeu afegir un text descriptiu al camp //caption//).
Stamp/New/Title: Nom que es mostra al menú d'afegir una plantilla
StoryView/Caption: visualització de la cronologia
StoryView/Hint: Trieu la visualització de la cronologia
Strikethrough/Caption: ratllat

View File

@@ -9,10 +9,11 @@ Basics/Caption: Bàsic
Basics/DefaultTiddlers/BottomHint: Useu &#91;&#91;claudàtors dobles&#93;&#93; per als títols amb espais. O podeu triar <$button set="$:/DefaultTiddlers" setTo="[list[$:/StoryList]]">mantenir l'ordre de la cronologia</$button>
Basics/DefaultTiddlers/Prompt: Tiddlers per omissió:
Basics/DefaultTiddlers/TopHint: Trieu quins tiddlers s'han de mostrar a l'inici:
Basics/Language/Prompt: Hola! Idioma actual:
Basics/Language/Prompt: Bon dia! Trieu l'idioma:
Basics/NewJournal/Tags/Prompt: Etiquetes per als nous tiddlers del diari
Basics/NewJournal/Text/Prompt: Text dels nous tiddlers del diari
Basics/NewJournal/Title/Prompt: Títol dels nous tiddlers del diari
Basics/NewTiddler/Tags/Prompt: Etiquetes dels nous tiddlers
Basics/NewTiddler/Title/Prompt: Títol dels nous tiddlers
Basics/OverriddenShadowTiddlers/Prompt: Número de tiddlers ombra sobreescrits:
Basics/ShadowTiddlers/Prompt: Número de tiddlers ombra:
@@ -45,7 +46,7 @@ KeyboardShortcuts/Remove/Hint: suprimeix la drecera del teclat
LoadedModules/Caption: Mòduls carregats
LoadedModules/Hint: Aquests són els mòduls tiddlers enllaçats als seus tiddlers font. Els mòduls indicats en cursiva no disposen de tiddler font, sovint per que s'han configurat a l'arrencada.
Palette/Caption: Paleta
Palette/Editor/Clone/Caption: clona paquets de connectors
Palette/Editor/Clone/Caption: clona
Palette/Editor/Clone/Prompt: Es recomana que cloneu aquesta paleta ombra abans d'editar-la
Palette/Editor/Delete/Hint: suprimeix aquesta entrada de la paleta actual
Palette/Editor/Names/External/Show: Mostra el noms dels colors que no formen part de la paleta actual
@@ -63,11 +64,13 @@ Parsing/Pragma/Caption: Regles d'anàlisi Pragma
Plugins/Add/Caption: Obtingueu més connectors
Plugins/Add/Hint: Instal·leu connectors de la biblioteca oficial
Plugins/AlreadyInstalled/Hint: Aquest connector ja té instal·lada la versió <$text text=<<installedVersion>>/>
Plugins/AlsoRequires: També necessita:
Plugins/Caption: Connectors
Plugins/ClosePluginLibrary: tanca la biblioteca de connectors
Plugins/Disable/Caption: desactiva
Plugins/Disable/Hint: Desactiva aquest connector quan la pàgina es torni a carregar
Plugins/Disabled/Status: (desactivat)
Plugins/Downgrade/Caption: seactualitza
Plugins/Empty/Hint: Cap
Plugins/Enable/Caption: activa
Plugins/Enable/Hint: Activa aquest connector quan la pàgina es torni a carregar
@@ -80,9 +83,15 @@ Plugins/NotInstalled/Hint: Aquest connector no està instal·lat
Plugins/OpenPluginLibrary: obre la biblioteca de connectors
Plugins/Plugins/Caption: Connectors
Plugins/Plugins/Hint: Connectors
Plugins/PluginWillRequireReload: (cal tornar-ho a carregar)
Plugins/Reinstall/Caption: torna a instal·lar
Plugins/SubPluginPrompt: Amb <<count>> sub-connectors disponibles
Plugins/Themes/Caption: Temes
Plugins/Themes/Hint: Connectors del tema
Plugins/Update/Caption: actualització
Plugins/Updates/Caption: Actualitzacions
Plugins/Updates/Hint: Actualitzacions disponibles dels connectors instal·lats
Plugins/Updates/UpdateAll/Caption: Actualitza <<update-count>> connectors
Saving/Caption: Desa
Saving/DownloadSaver/AutoSave/Description: Permet que el gestor de baixades desi automàticament
Saving/DownloadSaver/AutoSave/Hint: Activa el desat automàtic pel gestor de baixades
@@ -102,6 +111,8 @@ Saving/GitService/Branch: Branca destinació a on desar
Saving/GitService/CommitMessage: Desat per TiddlyWiki
Saving/GitService/Description: Aquests paràmetres només s'utilitzen quan es desa a <<service-name>>
Saving/GitService/Filename: Nom del fitxer destinació (per exemple `index.html`)
Saving/GitService/Gitea/Caption: Gestor de baixades Gitea
Saving/GitService/Gitea/Password: Testimoni d'accès personal de l'API (via la interfície web de Gitea: `Paràmetres | Aplicacions | Genera un Nou Testimoni`)
Saving/GitService/GitHub/Caption: Gestor de baixades de ~GitHub
Saving/GitService/GitHub/Password: Contrasenya, clau OAUTH o clau d'accés personal (veieu els detalls a la [[pàgina d'ajuda del GitHub|https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line]] )
Saving/GitService/GitLab/Caption: Gestor de baixades de ~GitLab
@@ -128,13 +139,13 @@ Settings/AutoSave/Disabled/Description: No desis els canvis de forma automàtica
Settings/AutoSave/Enabled/Description: Desa els canvis de forma automàtica
Settings/AutoSave/Hint: Desa els canvis de forma automàtica mentre s'està editant
Settings/CamelCase/Caption: Enllaços wiki tipus CamelCase
Settings/CamelCase/Description: Activa l'enllaç automàtic de ~CamelCase
Settings/CamelCase/Hint: Podeu desactivar lenllaç automàtic de les frases ~CamelCase globalment. Cal que es torni a carregar per tenir efecte
Settings/CamelCase/Description: Activa l'enllaç automàtic tipus ~CamelCase
Settings/CamelCase/Hint: Podeu desactivar globalment lenllaç automàtic de les frases ~CamelCase. Cal que es torni a carregar per tenir efecte
Settings/Caption: Paràmetres
Settings/DefaultMoreSidebarTab/Caption: Pestanya Més de la barra lateral per omissió
Settings/DefaultMoreSidebarTab/Hint: Indiqueu quina pestanya Més de la barra lateral es mostra per omissió
Settings/DefaultMoreSidebarTab/Hint: Indiqueu la pestanya Més de la barra lateral que es mostra per omissió
Settings/DefaultSidebarTab/Caption: Pestanya de la barra lateral que es mostra per omissió
Settings/DefaultSidebarTab/Hint: Indica quina pestanya de la barra lateral es mostra per omissió
Settings/DefaultSidebarTab/Hint: Indiqueu la pestanya de la barra lateral que es mostra per omissió
Settings/EditorToolbar/Caption: Barra d'eines de l'editor
Settings/EditorToolbar/Description: Mostra la barra d'eines de l'editor
Settings/EditorToolbar/Hint: Activa o desactiva la barra d'eines de l'editor:
@@ -144,12 +155,12 @@ Settings/InfoPanelMode/Hint: Controla quan es tanca el tauler d'informació del
Settings/InfoPanelMode/Popup/Description: El tauler dinformació del Tiddler es tanca automàticament
Settings/InfoPanelMode/Sticky/Description: El tauler dinformació del Tiddler roman obert fins que es tanqui explícitament
Settings/LinkToBehaviour/Caption: Comportament d'obertura del tiddler
Settings/LinkToBehaviour/InsideRiver/Hint: Navegació des de //dins de// la cronologia
Settings/LinkToBehaviour/InsideRiver/Hint: Navegació des de //dins// de la cronologia
Settings/LinkToBehaviour/OpenAbove: Obre per sobre del tiddler actual
Settings/LinkToBehaviour/OpenAtBottom: Obre a la part inferior de la cronologia
Settings/LinkToBehaviour/OpenAtTop: Obre a la part superior de la cronologia
Settings/LinkToBehaviour/OpenBelow: Obre per sota del tiddler actual
Settings/LinkToBehaviour/OutsideRiver/Hint: Navegació des de //fora de//la cronologia
Settings/LinkToBehaviour/OutsideRiver/Hint: Navegació des de //fora// de la cronologia
Settings/MissingLinks/Caption: Enllaços Wiki
Settings/MissingLinks/Description: Activa els enllaços als tiddlers que falten
Settings/MissingLinks/Hint: Escolliu si voleu enllaçar els tiddlers que encara no existeixen
@@ -157,11 +168,11 @@ Settings/NavigationAddressBar/Caption: Barra d'adreces de navegació
Settings/NavigationAddressBar/Hint: Comportament de la barra d'adreces en navegar cap a un tiddler:
Settings/NavigationAddressBar/No/Description: No actualitzis la barra d'adreces
Settings/NavigationAddressBar/Permalink/Description: Inclou el tiddler destinació
Settings/NavigationAddressBar/Permaview/Description: Inclou el tiddler destinació i la seqùència actual
Settings/NavigationAddressBar/Permaview/Description: Inclou el tiddler destinació i la cronologia actual
Settings/NavigationHistory/Caption: Històrial de navegació
Settings/NavigationHistory/Hint: Actualitza l'històrial del navegador en navegar cap a un tiddler:
Settings/NavigationHistory/No/Description: No actualitzis la cronologia
Settings/NavigationHistory/Yes/Description: Actualitza la cronologia
Settings/NavigationHistory/No/Description: No actualitzis l'històrial
Settings/NavigationHistory/Yes/Description: Actualitza l'històrial
Settings/NavigationPermalinkviewMode/Caption: Mode enllaç permanent/vista permanent
Settings/NavigationPermalinkviewMode/CopyToClipboard/Description: Copia lURL de l'enllaç permanent/vista permanent al portapapers
Settings/NavigationPermalinkviewMode/Hint: Trieu com es gestiona l'enllaç permanent/vista permanent

View File

@@ -1,36 +1,36 @@
title: $:/language/
Date/DaySuffix/1: r
Date/DaySuffix/10: é
Date/DaySuffix/11: é
Date/DaySuffix/12: é
Date/DaySuffix/13: é
Date/DaySuffix/14: é
Date/DaySuffix/15: é
Date/DaySuffix/16: é
Date/DaySuffix/17: é
Date/DaySuffix/18: é
Date/DaySuffix/19: é
Date/DaySuffix/2: n
Date/DaySuffix/20: é
Date/DaySuffix/21: é
Date/DaySuffix/22: é
Date/DaySuffix/23: r
Date/DaySuffix/24: é
Date/DaySuffix/25: é
Date/DaySuffix/26: é
Date/DaySuffix/27: é
Date/DaySuffix/28: é
Date/DaySuffix/29: é
Date/DaySuffix/3: r
Date/DaySuffix/30: é
Date/DaySuffix/31: é
Date/DaySuffix/4: t
Date/DaySuffix/5: é
Date/DaySuffix/6: é
Date/DaySuffix/7: é
Date/DaySuffix/8: é
Date/DaySuffix/9: é
Date/DaySuffix/10:
Date/DaySuffix/11:
Date/DaySuffix/12:
Date/DaySuffix/13:
Date/DaySuffix/14:
Date/DaySuffix/15:
Date/DaySuffix/16:
Date/DaySuffix/17:
Date/DaySuffix/18:
Date/DaySuffix/19:
Date/DaySuffix/2:
Date/DaySuffix/20:
Date/DaySuffix/21:
Date/DaySuffix/22:
Date/DaySuffix/23:
Date/DaySuffix/24:
Date/DaySuffix/25:
Date/DaySuffix/26:
Date/DaySuffix/27:
Date/DaySuffix/28:
Date/DaySuffix/29:
Date/DaySuffix/3:
Date/DaySuffix/30:
Date/DaySuffix/31:
Date/DaySuffix/4:
Date/DaySuffix/5:
Date/DaySuffix/6:
Date/DaySuffix/7:
Date/DaySuffix/8:
Date/DaySuffix/9:
Date/Long/Day/0: Diumenge
Date/Long/Day/1: Dilluns
Date/Long/Day/2: Dimarts
@@ -39,16 +39,16 @@ Date/Long/Day/4: Dijous
Date/Long/Day/5: Divendres
Date/Long/Day/6: Dissabte
Date/Long/Month/1: de gener de
Date/Long/Month/10: d'octubre de
Date/Long/Month/10: octubre de
Date/Long/Month/11: de novembre de
Date/Long/Month/12: de desembre de
Date/Long/Month/2: de febrer de
Date/Long/Month/3: de març de
Date/Long/Month/4: d'abril de
Date/Long/Month/4: abril de
Date/Long/Month/5: de maig de
Date/Long/Month/6: de juny de
Date/Long/Month/7: de juliol de
Date/Long/Month/8: d'agost de
Date/Long/Month/8: agost de
Date/Long/Month/9: de septembre de
Date/Short/Day/0: Diu
Date/Short/Day/1: Dil
@@ -62,8 +62,8 @@ Date/Short/Month/12: Des
Date/Short/Month/4: Abr
Date/Short/Month/5: Mai
Date/Short/Month/8: Ago
Date/Period/am: m.
Date/Period/pm: t.
Date/Period/am: del matí
Date/Period/pm: de la tarda
RelativeDate/Future/Days: <<period>> dies des d'ara
RelativeDate/Future/Hours: <<period>> hores des d'ara
RelativeDate/Future/Minutes: <<period>> minuts des d'ara

View File

@@ -14,7 +14,7 @@ library: Tipus de mòdul genèric per a mòduls JavaScript de propòsit general.
macro: Definicions de macros JavaScript.
parser: Analitzadors sintàctics per a diferents tipus de continguts.
route: Defineix com el servidor HTTP integrat gestiona els patrons dURL individuals.
saver: Gestionen diferents mètodes per a desar fitxers des del navegador.
saver: Els gestors de baixades (saver) ofereixen diferents mètodes per a desar fitxers des del navegador.
startup: Funcions de l'inici
storyview: Les vistes de la cronologia personalitzen l'animació i el comportament dels widgets llista.
texteditoroperation: Una operació de la barra d'eines de l'editor de text.

View File

@@ -29,6 +29,8 @@ external-link-foreground: Primer plà de l'enllaç extern
external-link-foreground-hover: Primer plà de la bafarada de l'enllaç extern
external-link-foreground-visited: Primer plà de l'enllaç extern visitat
foreground: Primer plà general
menubar-background: Fons de la barra de menús
menubar-foreground: Primer plà de la barra de menús
message-background: Fons de la capsa de text
message-border: Vora de la capsa de text
message-foreground: Primer plà de la capsa de text

View File

@@ -8,6 +8,7 @@ Field/Dropdown/Hint: Mostra la llista de camps
Field/Remove/Caption: suprimeix el camp
Field/Remove/Hint: Suprimeix el camp
Fields/Add/Button: afegeix
Fields/Add/Button/Hint: Afegeix un camp nou al tiddler
Fields/Add/Dropdown/System: Camps del sistema
Fields/Add/Dropdown/User: Camps de l'usuari
Fields/Add/Name/Placeholder: nom del camp
@@ -16,6 +17,7 @@ Fields/Add/Value/Placeholder: valors del camp
Shadow/OverriddenWarning: Aquest és un tiddler ombra modificat. Podeu restablir la versió per omisió suprimint aquest tiddler
Shadow/Warning: Aquest és un tiddler ombra. Qualsevol canvi sobreescriurà la versió per omisió
Tags/Add/Button: afegeix
Tags/Add/Button/Hint: afegeix una etiqueta
Tags/Add/Placeholder: nom de l'etiqueta
Tags/Dropdown/Caption: llista d'etiquetes
Tags/Dropdown/Hint: Mostra la llista d'etiquetes

View File

@@ -1,13 +1,14 @@
title: $:/language/Docs/Fields/
_canonical_uri: La URI sencera d'una imatge externa al tiddler
_is_skinny: Si està present, indica que el camp de text del tiddler s'ha de carregar des del servidor
bag: El nom de la bossa de la que va venir un tiddler
caption: El text que es mostrarà en una pestanya o botó
color: El valor del color CSS associat amb un tiddler
component: El nom del component responsable d'un [[tiddler d'avís|AlertMechanism]]
created: La data en que es va generar el tiddler
creator: El nom de la persona que va generar el tiddler
current-tiddler: Utilitzat per desar la darrera còpia del tiddler a una [[cronologia|HistoryMechanism]]
current-tiddler: Utilitzat per desar la darrera còpia del tiddler de l'[[històrial|HistoryMechanism]]
dependents: Per a un connector, llista els títols que depenen del connector
description: El text que descriu un connector, o un diàleg modal
draft.of: Per als tiddlers esborranys, conté el títol del tiddler del qual és un esborrany
@@ -15,7 +16,7 @@ draft.title: Per als tiddlers esborranys, conté el títol proposat per al tiddl
footer: El text del peu d'un assistent
hide-body: El valor de la plantilla de vista amaga el cos dels tiddlers és: ''sí''
icon: El títol del tiddler que conté la icona associada amb el tiddler
library: Si està a "si" indica que un tiddler s'ha de sar com una biblioteca de JavaScript
library: Si està a "si" indica que un tiddler s'ha desar com una biblioteca de JavaScript
list: Una llista ordenada de títols de tiddlers associats amb un tiddler
list-after: Si està activat, el títol del tiddler després del qual aquest tiddler s'hauria d'afegir a la llista ordenada de títols de tiddler
list-before: Si està activat, el títol del tiddler abans del qual aquest tiddler s'hauria d'afegir a la llista ordenada de títols de tiddler, o a l'inici de la llista si aquest camp hi és però està buit
@@ -30,7 +31,8 @@ source: La URL orígen associada a un tiddler
subtitle: El text del subtítol d'un assistent
tags: Una llista d'etiquetes associades a un tiddler
text: El text del cos d'un tiddler
throttle.refresh: Si està present, lacceleració actualitza aquest tiddler
title: El nom únic d'un tiddler
toc-link: El valor de Suprimeix l'enllaç del tiddler a la Taula de Continguts està a: ''no''
toc-link: El valor de Suprimeix l'enllaç del tiddler a l'Índex està a: ''no''
type: El tipus de contingut d'un tiddler
version: Informació de la versió d'un connector

View File

@@ -10,7 +10,7 @@ RecentSystemTiddlers: Tiddlers que s'han modificat recentment, inclós els tiddl
RecentTiddlers: Tiddlers que s'han modificat recentment
SessionTiddlers: Tiddlers modificats des que es va carregar el wiki
ShadowTiddlers: Tiddlers amb ombra predefinits
StoryList: Tiddlers al riu de la història, a excepció de <$text text="$:/AdvancedSearch"/>
StoryList: Els tiddlers de la cronologia, a excepció de <$text text="$:/AdvancedSearch"/>
SystemTags: Etiquetes del sistema
SystemTiddlers: Tiddlers del sistema
TypedTiddlers: Tiddlers amb text que no és wiki

View File

@@ -27,6 +27,7 @@ Error/Filter: S'ha produït un error del filtre
Error/FilterSyntax: S'ha produït un error de sintaxi en l'expressió del filtre
Error/IsFilterOperator: S'ha produït un error del filtre: operant desconegut per a loperador de filtre "is"
Error/LoadingPluginLibrary: S'ha produït un error en carregar la biblioteca del connector
Error/NetworkErrorAlert: `<h2>''Error de la xarxa''</h2>Sembla que s'ha perdut la connexió amb el servidor. Això pot indicar un problema amb la vostra connexió de la xarxa. Intenteu restaurar la connectivitat de xarxa abans de continuar.<br><br>' Qualsevol canvi no guardat es sincronitzarà automàticament quan es restableixi la connectivitat''.'
Error/RecursiveTransclusion: S'ha produït un error de transclusió recursiva en el widget de transclusió
Error/RetrievingSkinny: S'ha produït un error en recuperar la llista de tiddler parcials
Error/SavingToTWEdit: S'ha produït un error en desar a TWEdit
@@ -63,8 +64,9 @@ SystemTiddlers/Include/Prompt: Inclou els tiddlers del sistema
TagManager/Colour/Heading: Color
TagManager/Count/Heading: Compte
TagManager/Icon/Heading: Icona
TagManager/Icons/None: Cap
TagManager/Info/Heading: Informació
TagManager/Tag/Heading: Etiqueta
Tiddler/DateFormat: DDth de MMM de YYYY a les hh12:0mmam
Tiddler/DateFormat: DD MMM YYYY a les hh12:0mm am
UnsavedChangesWarning: Teniu canvis sense desar al TiddlyWiki
Yes: Sí

View File

@@ -2,7 +2,7 @@ title: $:/language/Search/
DefaultResults/Caption: Llista
Filter/Caption: Filtre
Filter/Hint: Cerca amb una [[filter expression|https://tiddlywiki.com/static/Filters.html]]
Filter/Hint: Cerca amb una [[expressió de filtre|https://tiddlywiki.com/static/Filters.html]]
Filter/Matches: //<small><<resultCount>> coincidències</small>//
Matches: //<small><<resultCount>> coincidències</small>//
Matches/All: Totes les coincidències:

View File

@@ -1,9 +1,9 @@
title: $:/language/Snippets/TableOfContents
tags: $:/tags/TextEditor/Snippet
caption: Taula de continguts
caption: Índex
<div class="tc-table-of-contents">
<<toc-selective-expandable 'TableOfContents'>>
<<toc-selective-expandable 'Índex'>>
</div>

View File

@@ -5,37 +5,37 @@ Metrics/BodyFontSize: Mida del tipus de lletra per al cos de tiddler
Metrics/BodyLineHeight: Alçada de la línia per al cos de tiddler
Metrics/FontSize: Mida del tipus de lletra
Metrics/LineHeight: Alçada de la línia
Metrics/SidebarBreakpoint: Punt dinterrupció de la barra lateral
Metrics/SidebarBreakpoint/Hint: lamplada mínima de la pàgina en què apareixeran la cronologia i la barra lateral costat a costat
Metrics/SidebarBreakpoint: Punt de baixada de la cronologia
Metrics/SidebarBreakpoint/Hint: lamplada mínima de la pàgina en que la cronologia i la barra lateral es mostren una al costat de l'altre
Metrics/SidebarWidth: Amplada de la barra lateral
Metrics/SidebarWidth/Hint: l'amplada de la barra lateral amb una disposició fluida fixe
Metrics/StoryLeft: Posició esquerra de la cronologia
Metrics/StoryLeft/Hint: distància entre el marge esquerre de la cronologia<br>(àrea del tiddler) fins a lesquerra de la pàgina
Metrics/StoryRight: Dreta de la cronologia
Metrics/StoryRight/Hint: distància entre el marge esquerre de la barra lateral<br>fins a lesquerra de la pàgina
Metrics/StoryTop: Posició de la cronologia
Metrics/StoryTop/Hint: distància del marge superior de la cronologia<br>fins a la part superior de la pàgina
Metrics/StoryLeft: Marge esquerra de la cronologia
Metrics/StoryLeft/Hint: marge esquerre entre la cronologia<br>(zona dels tiddlers) i la vora esquerra de la pàgina
Metrics/StoryRight: Marge dret de la cronologia
Metrics/StoryRight/Hint: distància entre el marge esquerre entre la barra lateral<br>i la vora esquerra de la pàgina
Metrics/StoryTop: Posició vertical de la cronologia
Metrics/StoryTop/Hint: distància del marge superior de la cronologia<br>fins a la vora superior de la pàgina
Metrics/StoryWidth: Amplada de la cronologia
Metrics/StoryWidth/Hint: l'amplada global de la cronologia
Metrics/TiddlerWidth: Amplada del tiddler
Metrics/TiddlerWidth/Hint: dins de la cronologia
Metrics/TiddlerWidth: Amplada dels tiddlers
Metrics/TiddlerWidth/Hint: a la cronologia
Options: Opcions
Options/CodeWrapping: Enganxa línies llargues en blocs de codi
Options/CodeWrapping: Divideix les línies llargues dels blocs de codi
Options/SidebarLayout: Disposició de la barra lateral
Options/SidebarLayout/Fixed-Fluid: Cronologia fixe, barra lateral fluida
Options/SidebarLayout/Fluid-Fixed: Cronologia fluida, barra lateral fixe
Options/SidebarLayout/Fixed-Fluid: Cronologia fixa, barra lateral fluida
Options/SidebarLayout/Fluid-Fixed: Cronologia fluida, barra lateral fixa
Options/StickyTitles: Títols enganxosos
Options/StickyTitles/Hint: Fa que els títols del tiddler "s'enganxin" a la part superior de la finestra del navegador
Settings: Paràmetres
Settings/BackgroundImage: Imatge de fons de la pàgina
Settings/BackgroundImageAttachment: Adjunt de la imatge de fons de la pàgina
Settings/BackgroundImageAttachment/Fixed: Fixe a la finestra
Settings/BackgroundImageAttachment/Fixed: Fixa-ho a la finestra
Settings/BackgroundImageAttachment/Scroll: Desplaça-ho amb els tiddlers
Settings/BackgroundImageSize: Mida de la imatge de fons de la pàgina
Settings/BackgroundImageSize/Contain: Conté
Settings/BackgroundImageSize/Cover: Coberta
Settings/BackgroundImageSize/Contain: Omple
Settings/BackgroundImageSize/Cover: Retalla
Settings/CodeFontFamily: Família del tipus de lletra del codi
Settings/EditorFontFamily: Família del tipus de lletra de l'editor
Settings/FontFamily: Família del tipus de lletra
ThemeTweaks: Retocs del tema
ThemeTweaks: Personalitza el tema
ThemeTweaks/Hint: Podeu modificar alguns aspectes del tema ''Vainilla''.

View File

@@ -6,13 +6,13 @@ description: 呈现符合筛选条件的条目为指定的内容类型
呈现符合筛选条的条目为指定的[[内容类型|ContentType]] (默认为 `text/html`) 与扩展名 (默认为 `.html`).
```
--rendertiddlers <filter> <template> <pathname> [<type>] [<extension>] ["noclean"]
--rendertiddlers '<filter>' <template> <pathname> [<type>] [<extension>] ["noclean"]
```
例如:
```
--rendertiddlers [!is[system]] $:/core/templates/static.tiddler.html ./static text/plain
--rendertiddlers '[!is[system]]' $:/core/templates/static.tiddler.html ./static text/plain
```
默认情况下,路径名被解析为相对于版本文件夹的 `output` 子文件夹。 `--output` 命令可以用于将输出指定到一个不同的文件。

View File

@@ -6,13 +6,13 @@ description: 呈現符合篩選條件的條目為指定的內容類型
呈現符合篩選條的條目為指定的[[內容類型|ContentType]] (預設為 `text/html`) 與副檔名 (預設為 `.html`).
```
--rendertiddlers <filter> <template> <pathname> [<type>] [<extension>] ["noclean"]
--rendertiddlers '<filter>' <template> <pathname> [<type>] [<extension>] ["noclean"]
```
例如:
```
--rendertiddlers [!is[system]] $:/core/templates/static.tiddler.html ./static text/plain
--rendertiddlers '[!is[system]]' $:/core/templates/static.tiddler.html ./static text/plain
```
預設情況下,路徑名被解析為相對於發行版資料夾的 `output` 子資料夾。 `--output` 命令可以用於將輸出指定到一個不同的資料夾。

View File

@@ -395,3 +395,11 @@ Matthias Bilger, @m42e, 2020/03/11
Mandar Vaze, @mandarvaze, 2020/04/08
Lin Dongwu, @linonetwo, 2020/04/15
Tobias Hermann, @idotobi, 2020/04/19
Nicolas Petton, @NicolasPetton, 2020/04/30
Csaba Molnar, @mocsa, 2020/04/29
Jonas Passerini, @passuf, 2020/05/14

View File

@@ -0,0 +1,4 @@
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: https://codemirror.net/LICENSE
!function(e){"object"==typeof exports&&"object"==typeof module?e(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],e):e(CodeMirror)}(function(e){"use strict";var y={},E=/[^\s\u00a0]/,M=e.Pos;function s(e){var n=e.search(E);return-1==n?0:n}function S(e,n){var t=e.getMode();return!1!==t.useInnerComments&&t.innerMode?e.getModeAt(n):t}e.commands.toggleComment=function(e){e.toggleComment()},e.defineExtension("toggleComment",function(e){e=e||y;for(var n=this,t=1/0,i=this.listSelections(),l=null,o=i.length-1;0<=o;o--){var r=i[o].from(),m=i[o].to();r.line>=t||(m.line>=t&&(m=M(t,0)),t=r.line,null==l?l=n.uncomment(r,m,e)?"un":(n.lineComment(r,m,e),"line"):"un"==l?n.uncomment(r,m,e):n.lineComment(r,m,e))}}),e.defineExtension("lineComment",function(o,e,r){r=r||y;var n,t,m,a,c,g,f=this,i=S(f,o),l=f.getLine(o.line);null!=l&&(n=o,t=l,!/\bstring\b/.test(f.getTokenTypeAt(M(n.line,0)))||/^[\'\"\`]/.test(t))&&((m=r.lineComment||i.lineComment)?(a=Math.min(0!=e.ch||e.line==o.line?e.line+1:e.line,f.lastLine()+1),c=null==r.padding?" ":r.padding,g=r.commentBlankLines||o.line==e.line,f.operation(function(){if(r.indent){for(var e=null,n=o.line;n<a;++n){var t=(i=f.getLine(n)).slice(0,s(i));(null==e||e.length>t.length)&&(e=t)}for(n=o.line;n<a;++n){var i=f.getLine(n),l=e.length;(g||E.test(i))&&(i.slice(0,l)!=e&&(l=s(i)),f.replaceRange(e+m+c,M(n,0),M(n,l)))}}else for(n=o.line;n<a;++n)(g||E.test(f.getLine(n)))&&f.replaceRange(m+c,M(n,0))})):(r.blockCommentStart||i.blockCommentStart)&&(r.fullLines=!0,f.blockComment(o,e,r)))}),e.defineExtension("blockComment",function(i,l,o){o=o||y;var r,m,a=this,c=S(a,i),g=o.blockCommentStart||c.blockCommentStart,f=o.blockCommentEnd||c.blockCommentEnd;g&&f?/\bcomment\b/.test(a.getTokenTypeAt(M(i.line,0)))||((r=Math.min(l.line,a.lastLine()))!=i.line&&0==l.ch&&E.test(a.getLine(r))&&--r,m=null==o.padding?" ":o.padding,i.line>r||a.operation(function(){if(0!=o.fullLines){var e=E.test(a.getLine(r));a.replaceRange(m+f,M(r)),a.replaceRange(g+m,M(i.line,0));var n=o.blockCommentLead||c.blockCommentLead;if(null!=n)for(var t=i.line+1;t<=r;++t)t==r&&!e||a.replaceRange(n+m,M(t,0))}else a.replaceRange(f,l),a.replaceRange(g,i)})):(o.lineComment||c.lineComment)&&0!=o.fullLines&&a.lineComment(i,l,o)}),e.defineExtension("uncomment",function(e,n,t){t=t||y;var l,o=this,i=S(o,e),r=Math.min(0!=n.ch||n.line==e.line?n.line:n.line-1,o.lastLine()),m=Math.min(e.line,r),a=t.lineComment||i.lineComment,c=[],g=null==t.padding?" ":t.padding;e:if(a){for(var f=m;f<=r;++f){var s=o.getLine(f),d=s.indexOf(a);if(-1<d&&!/comment/.test(o.getTokenTypeAt(M(f,d+1)))&&(d=-1),-1==d&&E.test(s))break e;if(-1<d&&E.test(s.slice(0,d)))break e;c.push(s)}if(o.operation(function(){for(var e=m;e<=r;++e){var n=c[e-m],t=n.indexOf(a),i=t+a.length;t<0||(n.slice(i,i+g.length)==g&&(i+=g.length),l=!0,o.replaceRange("",M(e,t),M(e,i)))}}),l)return!0}var u=t.blockCommentStart||i.blockCommentStart,h=t.blockCommentEnd||i.blockCommentEnd;if(!u||!h)return!1;var p=t.blockCommentLead||i.blockCommentLead,C=o.getLine(m),b=C.indexOf(u);if(-1==b)return!1;var v=r==m?C:o.getLine(r),k=v.indexOf(h,r==m?b+u.length:0),L=M(m,b+1),x=M(r,k+1);if(-1==k||!/comment/.test(o.getTokenTypeAt(L))||!/comment/.test(o.getTokenTypeAt(x))||-1<o.getRange(L,x,"\n").indexOf(h))return!1;var R=-1==(T=C.lastIndexOf(u,e.ch))?-1:C.slice(0,e.ch).indexOf(h,T+u.length);if(-1!=T&&-1!=R&&R+h.length!=e.ch)return!1;R=v.indexOf(h,n.ch);var O=v.slice(n.ch).lastIndexOf(u,R-n.ch),T=-1==R||-1==O?-1:n.ch+O;return(-1==R||-1==T||T==n.ch)&&(o.operation(function(){o.replaceRange("",M(r,k-(g&&v.slice(k-g.length,k)==g?g.length:0)),M(r,k+h.length));var e=b+u.length;if(g&&C.slice(e,e+g.length)==g&&(e+=g.length),o.replaceRange("",M(m,b),M(m,e)),p)for(var n=m+1;n<=r;++n){var t,i=o.getLine(n),l=i.indexOf(p);-1==l||E.test(i.slice(0,l))||(t=l+p.length,g&&i.slice(t,t+g.length)==g&&(t+=g.length),o.replaceRange("",M(n,l),M(n,t)))}}),!0)})});

View File

@@ -7,6 +7,13 @@
"title": "$:/plugins/tiddlywiki/codemirror/keymap/sublime.js",
"module-type": "codemirror"
}
},{
"file": "addons/comment/comment.js",
"fields": {
"type": "application/javascript",
"title": "$:/plugins/tiddlywiki/codemirror/addons/comment/comment.js",
"module-type": "codemirror"
}
}
]
}

View File

@@ -128,6 +128,11 @@ function CodeMirrorEngine(options) {
this.cm.on("keydown",function(cm,event) {
return self.widget.handleKeydownEvent.call(self.widget,event);
});
this.cm.on("focus",function(cm,event) {
if(self.widget.editCancelPopups) {
$tw.popup.cancel(0);
}
});
}
/*

View File

@@ -3,21 +3,21 @@ tags: $:/tags/dynaviewExamples
caption: Reveal on Scroll
\define indicator(index)
<$reveal state="$:/state/unreveal-on-scroll/example$index$" type="match" text="yes">
<$reveal state="$:/state/unreveal-on-scroll/example$index$" type="nomatch" text="">
$index$
</$reveal>
\end
\define lorem-ipsum(index)
<div class="tc-dynaview-set-tiddler-when-visible" style="min-height: 75px;" data-dynaview-set-tiddler="$:/state/unreveal-on-scroll/example$index$" data-dynaview-set-value="yes">
<div class="tc-dynaview-track-tiddler-when-visible" style="min-height: 75px;" data-dynaview-track-tiddler="$:/state/unreveal-on-scroll/example$index$">
<h1>Heading $index$</h1>
<$reveal state="$:/state/unreveal-on-scroll/example$index$" type="match" text="yes">
<$reveal state="$:/state/unreveal-on-scroll/example$index$" type="nomatch" text="">
(Rendered at <<now "[UTC]YYYY-0MM-0DD 0hh:0mm:0ss.XXX">>) Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</$reveal>
</div>
\end
This example renders tiddlers as they are scrolled into view.
This example renders tiddlers as they are scrolled into view, and hides them when they scroll out of view again.
Visible: <$list filter="1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16">
<$macrocall $name="indicator" index=<<currentTiddler>>/>

View File

@@ -1,28 +0,0 @@
title: $:/plugins/tiddlywiki/dynaview/examples/unreveal-on-scroll
tags: $:/tags/dynaviewExamples
caption: Unreveal on Scroll
\define indicator(index)
<$reveal state="$:/state/reveal-on-scroll/example$index$" type="match" text="yes">
$index$
</$reveal>
\end
\define lorem-ipsum(index)
<div class="tc-dynaview-set-tiddler-when-visible" style="min-height: 75px;" data-dynaview-set-tiddler="$:/state/reveal-on-scroll/example$index$" data-dynaview-set-value="yes" data-dynaview-unset-tiddler="$:/state/reveal-on-scroll/example$index$" data-dynaview-unset-value="no">
<h1>Heading $index$</h1>
<$reveal state="$:/state/reveal-on-scroll/example$index$" type="match" text="yes">
(Rendered at <<now "[UTC]YYYY-0MM-0DD 0hh:0mm:0ss.XXX">>) Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</$reveal>
</div>
\end
This example renders tiddlers as they are scrolled into view, and hides them when they scroll out of view again.
Visible: <$list filter="1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16">
<$macrocall $name="indicator" index=<<currentTiddler>>/>
</$list>
<$list filter="1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16">
<$macrocall $name="lorem-ipsum" index=<<currentTiddler>>/>
</$list>

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