mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2026-01-28 13:51:25 +00:00
Compare commits
48 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
165538180e | ||
|
|
42060acb43 | ||
|
|
978d52f3e8 | ||
|
|
b8129b6e36 | ||
|
|
b5e4cc0cc8 | ||
|
|
3732c83ad4 | ||
|
|
ff6070f033 | ||
|
|
fb12807a33 | ||
|
|
953038f0b2 | ||
|
|
f74e4c520d | ||
|
|
85da202cca | ||
|
|
00fb4190f2 | ||
|
|
19d2aab6b9 | ||
|
|
fff97e7326 | ||
|
|
996ee52cf9 | ||
|
|
bb036ced93 | ||
|
|
ef5c53bf9a | ||
|
|
6899be59e2 | ||
|
|
9e67be5b6c | ||
|
|
7f5a5dbe09 | ||
|
|
6fb2a33847 | ||
|
|
9305881efb | ||
|
|
6496107a32 | ||
|
|
0610a7b1eb | ||
|
|
16652f926f | ||
|
|
dd09266b46 | ||
|
|
27858625df | ||
|
|
ab24d58b11 | ||
|
|
ba7e7fd649 | ||
|
|
1873785ef6 | ||
|
|
2008a617b5 | ||
|
|
8053cf1806 | ||
|
|
c81bf49704 | ||
|
|
1c5b3e3d8d | ||
|
|
82d18ad1fa | ||
|
|
4ef9ccbab9 | ||
|
|
83386f34b5 | ||
|
|
b88812233c | ||
|
|
471b73158a | ||
|
|
990619b634 | ||
|
|
8d3dfdebe3 | ||
|
|
654eda02c6 | ||
|
|
a170210069 | ||
|
|
67066fe86e | ||
|
|
fada96651e | ||
|
|
0402dbd48d | ||
|
|
bab1bca485 | ||
|
|
a986e4f7d6 |
@@ -5,7 +5,7 @@
|
||||
# Default to the current version number for building the plugin library
|
||||
|
||||
if [ -z "$TW5_BUILD_VERSION" ]; then
|
||||
TW5_BUILD_VERSION=v5.1.19
|
||||
TW5_BUILD_VERSION=v5.1.20
|
||||
fi
|
||||
|
||||
echo "Using TW5_BUILD_VERSION as [$TW5_BUILD_VERSION]"
|
||||
|
||||
@@ -314,13 +314,13 @@ $tw.utils.parseDate = function(value) {
|
||||
// Stringify an array of tiddler titles into a list string
|
||||
$tw.utils.stringifyList = function(value) {
|
||||
if($tw.utils.isArray(value)) {
|
||||
var result = [];
|
||||
for(var t=0; t<value.length; t++) {
|
||||
var result = new Array(value.length);
|
||||
for(var t=0, l=value.length; t<l; t++) {
|
||||
var entry = value[t] || "";
|
||||
if(entry.indexOf(" ") !== -1) {
|
||||
result.push("[[" + entry + "]]");
|
||||
result[t] = "[[" + entry + "]]";
|
||||
} else {
|
||||
result.push(entry);
|
||||
result[t] = entry;
|
||||
}
|
||||
}
|
||||
return result.join(" ");
|
||||
|
||||
@@ -53,7 +53,7 @@ exports.field = function(source,operator,options) {
|
||||
}
|
||||
});
|
||||
} else {
|
||||
if(source.byField) {
|
||||
if(source.byField && operator.operand) {
|
||||
indexedResults = source.byField(fieldname,operator.operand);
|
||||
if(indexedResults) {
|
||||
return indexedResults
|
||||
|
||||
@@ -27,8 +27,6 @@ exports.init = function(parser) {
|
||||
};
|
||||
|
||||
exports.parse = function() {
|
||||
// Move past the match
|
||||
this.parser.pos = this.matchRegExp.lastIndex;
|
||||
// Move past the match
|
||||
this.parser.pos = this.matchRegExp.lastIndex;
|
||||
// Get the match details
|
||||
|
||||
@@ -71,7 +71,7 @@ GitLabSaver.prototype.save = function(text,method,callback) {
|
||||
}
|
||||
var data = {
|
||||
commit_message: $tw.language.getRawString("ControlPanel/Saving/GitService/CommitMessage"),
|
||||
content: $tw.utils.base64Encode(text),
|
||||
content: text,
|
||||
branch: branch,
|
||||
sha: sha
|
||||
};
|
||||
|
||||
@@ -12,22 +12,21 @@ GET /
|
||||
/*global $tw: false */
|
||||
"use strict";
|
||||
|
||||
var zlib = require('zlib');
|
||||
var zlib = require("zlib");
|
||||
|
||||
exports.method = "GET";
|
||||
|
||||
exports.path = /^\/$/;
|
||||
|
||||
exports.handler = function(request,response,state) {
|
||||
var acceptEncoding = request.headers['accept-encoding'];
|
||||
if (!acceptEncoding) { acceptEncoding = ''; }
|
||||
|
||||
var text = state.wiki.renderTiddler(state.server.get("root-render-type"),state.server.get("root-tiddler"));
|
||||
|
||||
var responseHeaders = {
|
||||
var acceptEncoding = request.headers["accept-encoding"];
|
||||
if(!acceptEncoding) {
|
||||
acceptEncoding = "";
|
||||
}
|
||||
var text = state.wiki.renderTiddler(state.server.get("root-render-type"),state.server.get("root-tiddler")),
|
||||
responseHeaders = {
|
||||
"Content-Type": state.server.get("root-serve-type")
|
||||
};
|
||||
|
||||
/*
|
||||
If the gzip=yes flag for `listen` is set, check if the user agent permits
|
||||
compression. If so, compress our response. Note that we use the synchronous
|
||||
@@ -36,15 +35,14 @@ exports.handler = function(request,response,state) {
|
||||
*/
|
||||
if(state.server.enableGzip) {
|
||||
if (/\bdeflate\b/.test(acceptEncoding)) {
|
||||
responseHeaders['Content-Encoding'] = 'deflate';
|
||||
responseHeaders["Content-Encoding"] = "deflate";
|
||||
text = zlib.deflateSync(text);
|
||||
} else if (/\bgzip\b/.test(acceptEncoding)) {
|
||||
responseHeaders['Content-Encoding'] = 'gzip';
|
||||
responseHeaders["Content-Encoding"] = "gzip";
|
||||
text = zlib.gzipSync(text);
|
||||
}
|
||||
}
|
||||
|
||||
response.writeHead(200, responseHeaders);
|
||||
response.writeHead(200,responseHeaders);
|
||||
response.end(text);
|
||||
};
|
||||
|
||||
|
||||
@@ -35,17 +35,17 @@ exports.upgrade = function(wiki,titles,tiddlers) {
|
||||
}
|
||||
for(var t=0; t<WARN_IMPORT_PREFIX_LIST.length; t++) {
|
||||
var prefix = WARN_IMPORT_PREFIX_LIST[t];
|
||||
if(title.substr(0,prefix.length) === prefix) {
|
||||
if(title.substr(0,prefix.length) === prefix && wiki.isShadowTiddler(title)) {
|
||||
showAlert = true;
|
||||
messages[title] = $tw.language.getString("Import/Upgrader/System/Warning");
|
||||
}
|
||||
}
|
||||
}
|
||||
if(showAlert) {
|
||||
var logger = new $tw.utils.Logger("import");
|
||||
logger.alert($tw.language.getString("Import/Upgrader/System/Alert"));
|
||||
}
|
||||
});
|
||||
if(showAlert) {
|
||||
var logger = new $tw.utils.Logger("import");
|
||||
logger.alert($tw.language.getString("Import/Upgrader/System/Alert"));
|
||||
}
|
||||
return messages;
|
||||
};
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@ DeleteFieldWidget.prototype.invokeAction = function(triggeringWidget,event) {
|
||||
tiddler = this.wiki.getTiddler(self.actionTiddler),
|
||||
removeFields = {},
|
||||
hasChanged = false;
|
||||
if(this.actionField) {
|
||||
if(this.actionField && tiddler) {
|
||||
removeFields[this.actionField] = undefined;
|
||||
if(this.actionField in tiddler.fields) {
|
||||
hasChanged = true;
|
||||
|
||||
@@ -58,12 +58,12 @@ $value={{$:/temp/newfieldvalue}}/>
|
||||
<$fieldmangler>
|
||||
<div class="tc-edit-field-add">
|
||||
<em class="tc-edit">
|
||||
<<lingo Fields/Add/Prompt>>
|
||||
<<lingo Fields/Add/Prompt>>
|
||||
</em>
|
||||
<span class="tc-edit-field-add-name">
|
||||
<$edit-text tiddler="$:/temp/newfieldname" 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}}/>
|
||||
</span>
|
||||
<$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>
|
||||
</span>
|
||||
<$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>
|
||||
<$reveal state=<<qualify "$:/state/popup/field-dropdown">> type="nomatch" text="" default="">
|
||||
<div class="tc-block-dropdown tc-edit-type-dropdown">
|
||||
<$set name="tv-show-missing-links" value="yes">
|
||||
@@ -73,7 +73,7 @@ $value={{$:/temp/newfieldvalue}}/>
|
||||
</div>
|
||||
<$list filter="[!is[shadow]!is[system]fields[]search:title{$:/temp/newfieldname}sort[]] -created -creator -draft.of -draft.title -modified -modifier -tags -text -title -type" variable="currentField">
|
||||
<$link to=<<currentField>>>
|
||||
<<currentField>>
|
||||
<$text text=<<currentField>>/>
|
||||
</$link>
|
||||
</$list>
|
||||
<div class="tc-dropdown-item">
|
||||
@@ -81,7 +81,7 @@ $value={{$:/temp/newfieldvalue}}/>
|
||||
</div>
|
||||
<$list filter="[fields[]search:title{$:/temp/newfieldname}sort[]] -[!is[shadow]!is[system]fields[]]" variable="currentField">
|
||||
<$link to=<<currentField>>>
|
||||
<<currentField>>
|
||||
<$text text=<<currentField>>/>
|
||||
</$link>
|
||||
</$list>
|
||||
</$linkcatcher>
|
||||
@@ -90,7 +90,7 @@ $value={{$:/temp/newfieldvalue}}/>
|
||||
</$reveal>
|
||||
<span class="tc-edit-field-add-value">
|
||||
<$edit-text tiddler="$:/temp/newfieldvalue" tag="input" default="" placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} class="tc-edit-texteditor" tabindex={{$:/config/EditTabIndex}}/>
|
||||
</span>
|
||||
</span>
|
||||
<span class="tc-edit-field-add-button">
|
||||
<$macrocall $name="new-field"/>
|
||||
</span>
|
||||
|
||||
@@ -6,7 +6,7 @@ caption: {{$:/language/SideBar/Open/Caption}}
|
||||
\define lingo-base() $:/language/CloseAll/
|
||||
|
||||
\define drop-actions()
|
||||
<$action-listops $tiddler="$:/StoryList" $subfilter="+[insertbefore:currentTiddler<actionTiddler>]"/>
|
||||
<$action-listops $tiddler=<<tv-story-list>> $subfilter="+[insertbefore:currentTiddler<actionTiddler>]"/>
|
||||
\end
|
||||
|
||||
\define placeholder()
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
title: $:/config/OfficialPluginLibrary
|
||||
tags: $:/tags/PluginLibrary
|
||||
url: https://tiddlywiki.com/library/v5.1.20/index.html
|
||||
url: https://tiddlywiki.com/library/v5.1.21/index.html
|
||||
caption: {{$:/language/OfficialPluginLibrary}}
|
||||
|
||||
{{$:/language/OfficialPluginLibrary/Hint}}
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
title: $:/config/Performance/Instrumentation
|
||||
text: yes
|
||||
text: no
|
||||
|
||||
@@ -28,7 +28,7 @@ tags: $:/tags/Macro
|
||||
</ol>
|
||||
\end
|
||||
|
||||
\define toc(tag,sort:"",itemClassFilter:" ")
|
||||
\define toc(tag,sort:"",itemClassFilter:"")
|
||||
<$macrocall $name="toc-body" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> />
|
||||
\end
|
||||
|
||||
@@ -87,7 +87,7 @@ tags: $:/tags/Macro
|
||||
<$macrocall $name="toc-linked-expandable-body" tag=<<tag>> sort=<<sort>> itemClassFilter=<<itemClassFilter>> exclude=<<excluded>> path=<<path>>/>
|
||||
\end
|
||||
|
||||
\define toc-expandable(tag,sort:"",itemClassFilter:" ",exclude,path)
|
||||
\define toc-expandable(tag,sort:"",itemClassFilter:"",exclude,path)
|
||||
<$vars tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>
|
||||
<$set name="excluded" filter="""[enlist<__exclude__>] [<__tag__>]""">
|
||||
<ol class="tc-toc toc-expandable">
|
||||
|
||||
@@ -5,6 +5,7 @@ type: text/vnd.tiddlywiki
|
||||
|
||||
!! Preparation on master
|
||||
|
||||
# Ensure the new release banner image is up to date
|
||||
# Update ''master'' with changes from ''tiddlywiki-com''
|
||||
# Verify the version numbers in [[$:/config/OfficialPluginLibrary]] in `editions/tw5.com`
|
||||
# Move the latest release note from the prerelease edition into the tw5.com edition
|
||||
@@ -39,6 +40,7 @@ type: text/vnd.tiddlywiki
|
||||
# Adjust version number in `package.json`
|
||||
# Adjust version number in `bin/build-site.sh`
|
||||
# Adjust version number in [[$:/config/OfficialPluginLibrary]] (both in `editions/tw5.com` and `editions/prerelease/tiddlers/system`) and [[$:/config/LocalPluginLibrary]]
|
||||
# Adjust new release banner
|
||||
# Create the release note for the new release
|
||||
# Adjust version number in https://github.com/Jermolene/build.jermolene.github.io in `prerelease-bld.sh`, `bld.sh` and `make-library-bld.sh`
|
||||
# Commit changes to ''master'' and push to ~GitHub
|
||||
|
||||
@@ -7,4 +7,4 @@ title: Syncadaptor
|
||||
|
||||
A module with ``module-type: syncadaptor`` provides functionality to get a list of tiddlers (this list is provided as ~SkinnyTiddlers, which are normal tiddlers without the text field) and to load, save and delete single tiddlers. A syncadaptor can also provide functions to login and logout so that syncadaptor modules can be used to synchronize tiddlers with a remote server.
|
||||
|
||||
The syncer module only uses one syncadaptor and honours a special [[system tiddler|System Tiddlers]] [[$:/config/SyncFilter]] containing a [[filter string|Tags and Filter Mechanism]]. Tiddlers matching this filter string are not synced with a syncadapter.
|
||||
The syncer module only uses one syncadaptor and honours a special [[system tiddler|System Tiddlers]] [[$:/config/SyncFilter]] containing a [[filter string|Tags and Filter Mechanism]]. Tiddlers matching this filter string are not saved to the server with a syncadapter. It uses the [[WebServer API|https://tiddlywiki.com/#WebServer%20API%3A%20Get%20All%20Tiddlers]] to load modified tiddlers from the server, which returns only non-system tiddlers.
|
||||
14
editions/prerelease/tiddlers/Release 5.1.22.tid
Normal file
14
editions/prerelease/tiddlers/Release 5.1.22.tid
Normal file
@@ -0,0 +1,14 @@
|
||||
caption: 5.1.22
|
||||
created: 20190910152413608
|
||||
modified: 20190910152413608
|
||||
tags: ReleaseNotes
|
||||
title: Release 5.1.22
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.1.21...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:
|
||||
|
||||
*
|
||||
@@ -1,6 +1,6 @@
|
||||
title: $:/config/LocalPluginLibrary
|
||||
tags: $:/tags/PluginLibrary
|
||||
url: http://127.0.0.1:8080/prerelease/library/v5.1.20/index.html
|
||||
url: http://127.0.0.1:8080/prerelease/library/v5.1.21/index.html
|
||||
caption: {{$:/language/OfficialPluginLibrary}} (Prerelease Local)
|
||||
|
||||
A locally installed version of the official ~TiddlyWiki plugin library at tiddlywiki.com for testing and debugging. //Requires a local web server to share the library//
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
title: $:/config/OfficialPluginLibrary
|
||||
tags: $:/tags/PluginLibrary
|
||||
url: https://tiddlywiki.com/prerelease/library/v5.1.20/index.html
|
||||
url: https://tiddlywiki.com/prerelease/library/v5.1.21/index.html
|
||||
caption: {{$:/language/OfficialPluginLibrary}} (Prerelease)
|
||||
|
||||
The prerelease version of the official ~TiddlyWiki plugin library at tiddlywiki.com. Plugins, themes and language packs are maintained by the core team.
|
||||
|
||||
@@ -7,15 +7,3 @@ This is a pre-release build of TiddlyWiki, [[also available in empty form|https:
|
||||
<h1><$text text=<<currentTiddler>>/></h1>
|
||||
<$transclude mode="block"/>
|
||||
</$list>
|
||||
|
||||
! Features held back for later release
|
||||
|
||||
These unfinished features are included in this prerelease build, but are not planned for inclusion in the next release.
|
||||
|
||||
* <$button>
|
||||
<$action-setfield $tiddler="$:/view" text="stacked"/>
|
||||
Set "Stacked" story view
|
||||
</$button> <$button>
|
||||
<$action-setfield $tiddler="$:/view" text="classic"/>
|
||||
Revert
|
||||
</$button>
|
||||
|
||||
@@ -25,6 +25,26 @@ describe("Utility tests", function() {
|
||||
expect(psa(" [[Tidd\u00a0ler8]] two ")).toEqual(["Tidd\u00a0ler8","two"]);
|
||||
});
|
||||
|
||||
it("should handle stringifying a string array", function() {
|
||||
var str = $tw.utils.stringifyList;
|
||||
expect(str([])).toEqual("");
|
||||
expect(str(["Tiddler8"])).toEqual("Tiddler8");
|
||||
expect(str(["Tiddler8 "])).toEqual("[[Tiddler8 ]]");
|
||||
expect(str(["A+B", "A-B", "A=B"])).toEqual("A+B A-B A=B");
|
||||
expect(str(["A B"])).toEqual("[[A B]]");
|
||||
// Starting special characters aren't treated specially,
|
||||
// even though this makes a list incompatible with a filter parser.
|
||||
expect(str(["+T", "-T", "~T", "=T", "$T"])).toEqual("+T -T ~T =T $T");
|
||||
expect(str(["A", "", "B"])).toEqual("A B");
|
||||
});
|
||||
|
||||
it("stringifyList shouldn't interfere with setting variables to negative numbers", function() {
|
||||
var wiki = new $tw.Wiki();
|
||||
wiki.addTiddler({title: "test", text: "<$set name=X filter='\"-7\"'>{{{ [<X>add[2]] }}}</$set>"});
|
||||
// X shouldn't be wrapped in brackets. If it is, math filters will treat it as zero.
|
||||
expect(wiki.renderTiddler("text/plain","test")).toBe("-5");
|
||||
});
|
||||
|
||||
it("should handle formatting a date string", function() {
|
||||
var fds = $tw.utils.formatDateString,
|
||||
// nov is month: 10!
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
created: 20130822170200000
|
||||
list: [[A Gentle Guide to TiddlyWiki]] [[Discover TiddlyWiki]] [[Some of the things you can do with TiddlyWiki]] [[Ten reasons to switch to TiddlyWiki]] Examples [[What happened to the original TiddlyWiki?]] [[HelloThumbnail - TWEUM2017]]
|
||||
modified: 20190809141328809
|
||||
modified: 20190910152313608
|
||||
tags: TableOfContents
|
||||
title: HelloThere
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
created: 20190903192324700
|
||||
modified: 20190903192324700
|
||||
tags: [[Hidden Settings]]
|
||||
title: Hidden Setting: Sync Polling Interval
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
Specifies the interval at which [[Syncadaptor|https://tiddlywiki.com/dev/#Syncadaptor]] synchronizes tiddlers between the server and the browser.
|
||||
|
||||
Defaults to "60000" (60 * 1000 ms = 1 min).
|
||||
|
||||
Changing needs restart to take effect.
|
||||
|
||||
$:/config/SyncPollingInterval
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 29 KiB |
@@ -0,0 +1,14 @@
|
||||
caption: tm-rename-tiddler
|
||||
created: 20190909133618113
|
||||
modified: 20190909133618113
|
||||
tags: Messages navigator-message
|
||||
title: WidgetMessage: tm-rename-tiddler
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
The `tm-rename-tiddler` message renames a tiddler by deleting it and recreating it with a new title. The rename tiddler message requires the following properties on the `event` object:
|
||||
|
||||
|!Name |!Description |
|
||||
|from |Current title of tiddler |
|
||||
|to |New title of tiddler |
|
||||
|
||||
The rename tiddler message is usually generated with the ButtonWidget and is handled by the NavigatorWidget.
|
||||
46
editions/tw5.com/tiddlers/releasenotes/Release 5.1.21.tid
Normal file
46
editions/tw5.com/tiddlers/releasenotes/Release 5.1.21.tid
Normal file
@@ -0,0 +1,46 @@
|
||||
caption: 5.1.21
|
||||
created: 20190910152313608
|
||||
modified: 20190910152313608
|
||||
released: 20190910152313608
|
||||
tags: ReleaseNotes
|
||||
title: Release 5.1.21
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.1.20...v5.1.21]]//
|
||||
|
||||
This is a bug fix release that resolves issues introduced in the recent [[Release 5.1.20]].
|
||||
|
||||
!! Bug Fixes
|
||||
|
||||
* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/a170210069bbec265992b365a61e0722b480ab1d]] crash with ActionDeleteFieldWidget and a missing ''tiddler'' attribute
|
||||
* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/4087]] edge cases where some tiddler lists were not valid when interpreted as a filter
|
||||
* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/471b73158a887d2f060194741739c1da8b5d44d8]] problem with too many alerts when upgrading a wiki containing an overwritten core module
|
||||
* [[Reverted|https://github.com/Jermolene/TiddlyWiki5/commit/83386f34b50a9d93171df133957d489b5de629ef]] inadvertently switching on performance instrumentation
|
||||
* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/4218]] bug with WikiText within field names
|
||||
* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/dd09266b467173e45d75c172b2e82fd542f682fe]] problem with classes in the [[Table-of-Contents Macros]]
|
||||
* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/4203]] missing foreground colour for buttons with class `tc-btn-invisible`
|
||||
* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/4227]] whitespace around field editor inputs
|
||||
* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/bb036ced933ecb36f5d93693fb4f6e7aa2748df7]] layout problems with the [[translators edition|Translate TiddlyWiki into your language]]
|
||||
* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/996ee52cf9f5e15d95deaf0acf4206959d34432a]] crash with the [[External Attachments Plugin]] on Windows
|
||||
* [[Removed|https://github.com/Jermolene/TiddlyWiki5/pull/4245]] inconsistent shadow for tag pills in the sidebar
|
||||
* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/4247]] regression with the [[field Operator]] and blank operands
|
||||
* [[Reverted|https://github.com/Jermolene/TiddlyWiki5/pull/4249]] erroneous change in v5.1.20 in the way that lists are stringified
|
||||
* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/4189]] the ''Open'' sidebar tab to use the `tv-story-list` variable
|
||||
* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/4255]] problem [[saving to GitLab|Saving to a Git service]]
|
||||
|
||||
!! Node.js Bug Fixes
|
||||
|
||||
* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/4174]] bug with [[customised tiddler file naming|Customising Tiddler File Naming]]
|
||||
|
||||
! 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:
|
||||
|
||||
* [[@bimlas|https://github.com/bimlas]]
|
||||
* [[@BurningTreeC|https://github.com/BurningTreeC]]
|
||||
* [[@flibbles|https://github.com/flibbles]]
|
||||
* [[@heronils|https://github.com/heronils]]
|
||||
* [[@hoelzro|https://github.com/hoelzro]]
|
||||
* [[@markstegeman|https://github.com/markstegeman]]
|
||||
* [[@StefanSTFG|https://github.com/StefanSTFG]]
|
||||
* [[@xcazin|https://github.com/xcazin]]
|
||||
@@ -1,10 +1,10 @@
|
||||
created: 20181002131215403
|
||||
modified: 20181003174025431
|
||||
modified: 20190903094711346
|
||||
tags: [[WebServer API]]
|
||||
title: WebServer API: Get All Tiddlers
|
||||
type: text/vnd.tiddlywiki
|
||||
|
||||
Gets an array of all raw tiddlers, excluding the ''text'' field.
|
||||
Gets an array of all raw non-system tiddlers, excluding the ''text'' field.
|
||||
|
||||
```
|
||||
GET /recipes/default/tiddlers.json
|
||||
@@ -19,4 +19,4 @@ Response:
|
||||
|
||||
* 200 OK
|
||||
*> `Content-Type: application/json`
|
||||
*> Body: array of tiddlers in [[TiddlyWeb JSON tiddler format]]
|
||||
*> Body: array of all non-system tiddlers in [[TiddlyWeb JSON tiddler format]]
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
caption: reveal
|
||||
created: 20131024141900000
|
||||
jeremy: tiddlywiki
|
||||
modified: 20190704145627537
|
||||
modified: 20190910150520583
|
||||
tags: Widgets
|
||||
title: RevealWidget
|
||||
type: text/vnd.tiddlywiki
|
||||
@@ -36,13 +36,13 @@ The content of the `<$reveal>` widget is displayed according to the rules given
|
||||
|position |The position used for the popup when the type is ''popup''. Can be ''left'', ''above'', ''aboveright'', ''right'', ''belowleft'' or ''below'' |
|
||||
|positionAllowNegative |Set to "yes" to prevent computed popup positions from being clamped to be above zero |
|
||||
|default |Default value to use when the state tiddler is missing |
|
||||
|animate |Set to "yes" to animate opening and closure (defaults to "no") |
|
||||
|animate |Set to "yes" to animate opening and closure (defaults to "no"; requires "retain" to be set to "yes") |
|
||||
|retain |Set to "yes" to force the content to be retained even when hidden (defaults to "no") |
|
||||
|
||||
<<.tip """<$macrocall $name=".from-version" version="5.1.18"/> <$macrocall $name=".attr" _="stateTitle"/>, <$macrocall $name=".attr" _="stateField"/> and <$macrocall $name=".attr" _="stateIndex"/> attributes allow specifying Tiddler states ''directly'', without interpreting them as [[TextReferences|TextReference]].
|
||||
This is useful for edge-cases where titles may contain characters that are used to denote Tiddler fields or indices (`!!`, `##`)""">>
|
||||
|
||||
<<.tip """Retaining the content when hidden can give poor performance since the hidden content requires refresh processing even though it is not displayed. On the other hand, the content can be revealed much more quickly. Note that setting ''animate="yes"'' will also force ''retain="yes"''""">>
|
||||
<<.tip """Retaining the content when hidden can give poor performance since the hidden content requires refresh processing even though it is not displayed. On the other hand, the content can be revealed much more quickly. Note that setting ''animate="yes"'' will also require ''retain="yes"''""">>
|
||||
|
||||
! Examples
|
||||
|
||||
|
||||
@@ -85,6 +85,6 @@ Filtered attribute values are indicated with triple curly braces around a [[Filt
|
||||
This example shows how to add a prefix to a value:
|
||||
|
||||
```
|
||||
<$text text={{{ [<currentTiddler>]addPrefix[$:/myprefix/]] }}}>
|
||||
<$text text={{{ [<currentTiddler>addprefix[$:/myprefix/]] }}} />
|
||||
```
|
||||
|
||||
|
||||
@@ -68,6 +68,6 @@ TagManager/Count/Heading: Total
|
||||
TagManager/Icon/Heading: Icône
|
||||
TagManager/Info/Heading: Info
|
||||
TagManager/Tag/Heading: Tag
|
||||
Tiddler/DateFormat: DD MMM YYYY à 0hhhmm
|
||||
Tiddler/DateFormat: DD MMM YYYY à hhh0mm
|
||||
UnsavedChangesWarning: Vos dernières modifications n'ont pas été sauvegardées dans votre TiddlyWiki
|
||||
Yes: Oui
|
||||
|
||||
@@ -363,3 +363,13 @@ Dong Zhihong, @donmor, 2019/05/29
|
||||
Joshua Stubbs, @LordRatte, 2019/05/31
|
||||
|
||||
Robin Munn, @rmunn, 2019/06/16
|
||||
|
||||
Mark Kerrigan, @markkerrigan, 2019/08/24
|
||||
|
||||
Stefan Schuster-Teupke, @StefanSTFG, 2019/08/26
|
||||
|
||||
Nils-Hero Lindemann, @heronils, 2019/08/26
|
||||
|
||||
Mark Stegeman, @markstegeman, 2019/08/31
|
||||
|
||||
Jan-Oliver Kaiser, @janno, 2019/09/06
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "tiddlywiki",
|
||||
"preferGlobal": "true",
|
||||
"version": "5.1.20",
|
||||
"version": "5.1.21",
|
||||
"author": "Jeremy Ruston <jeremy@jermolene.com>",
|
||||
"description": "a non-linear personal web notebook",
|
||||
"contributors": [
|
||||
|
||||
@@ -26,15 +26,15 @@ exports.startup = function() {
|
||||
test_makePathRelative();
|
||||
$tw.hooks.addHook("th-importing-file",function(info) {
|
||||
if(document.location.protocol === "file:" && info.isBinary && info.file.path && $tw.wiki.getTiddlerText(ENABLE_EXTERNAL_ATTACHMENTS_TITLE,"") === "yes") {
|
||||
var locationPathParts = document.location.pathname.split("/").slice(0,-1),
|
||||
filePathParts = info.file.path.split(/[\\\/]/mg).map(encodeURIComponent);
|
||||
console.log("Wiki location",document.location.pathname)
|
||||
console.log("File location",info.file.path)
|
||||
info.callback([
|
||||
{
|
||||
title: info.file.name,
|
||||
type: info.type,
|
||||
"_canonical_uri": makePathRelative(
|
||||
filePathParts.join("/"),
|
||||
locationPathParts.join("/"),
|
||||
info.file.path,
|
||||
document.location.pathname,
|
||||
{
|
||||
useAbsoluteForNonDescendents: $tw.wiki.getTiddlerText(USE_ABSOLUTE_FOR_NON_DESCENDENTS_TITLE,"") === "yes",
|
||||
useAbsoluteForDescendents: $tw.wiki.getTiddlerText(USE_ABSOLUTE_FOR_DESCENDENTS_TITLE,"") === "yes"
|
||||
@@ -50,29 +50,47 @@ exports.startup = function() {
|
||||
};
|
||||
|
||||
/*
|
||||
Given a source absolute path and a root absolute path, returns the source path expressed as a relative path from the root path.
|
||||
Given a source absolute filepath and a root absolute path, returns the source filepath expressed as a relative filepath from the root path.
|
||||
|
||||
sourcepath comes from the "path" property of the file object, with the following patterns:
|
||||
/path/to/file.png for Unix systems
|
||||
C:\path\to\file.png for local files on Windows
|
||||
\\sharename\path\to\file.png for network shares on Windows
|
||||
rootpath comes from document.location.pathname with urlencode applied with the following patterns:
|
||||
/path/to/file.html for Unix systems
|
||||
/C:/path/to/file.html for local files on Windows
|
||||
/sharename/path/to/file.html for network shares on Windows
|
||||
*/
|
||||
function makePathRelative(sourcepath,rootpath,options) {
|
||||
options = options || {};
|
||||
// First we convert the source path from OS-dependent format to generic file:// format
|
||||
if(options.isWindows || $tw.platform.isWindows) {
|
||||
sourcepath = sourcepath.replace(/\\/g,"/");
|
||||
// If it's a local file like C:/path/to/file.ext then add a leading slash
|
||||
if(sourcepath.charAt(0) !== "/") {
|
||||
sourcepath = "/" + sourcepath;
|
||||
}
|
||||
// If it's a network share then remove one of the leading slashes
|
||||
if(sourcepath.substring(0,2) === "//") {
|
||||
sourcepath = sourcepath.substring(1);
|
||||
}
|
||||
}
|
||||
// Split the path into parts
|
||||
var sourceParts = sourcepath.split("/"),
|
||||
rootParts = rootpath.split("/"),
|
||||
outputParts = [];
|
||||
// Check that each path started with a slash
|
||||
if(sourceParts[0] || rootParts[0]) {
|
||||
throw "makePathRelative: both paths must be absolute";
|
||||
}
|
||||
// urlencode the parts of the sourcepath
|
||||
$tw.utils.each(sourceParts,function(part,index) {
|
||||
sourceParts[index] = encodeURI(part);
|
||||
});
|
||||
// Identify any common portion from the start
|
||||
var c = 1,
|
||||
var c = 0,
|
||||
p;
|
||||
while(c < sourceParts.length && c < rootParts.length && sourceParts[c] === rootParts[c]) {
|
||||
c += 1;
|
||||
}
|
||||
// Return "." if there's nothing left
|
||||
if(c === sourceParts.length && c === rootParts.length ) {
|
||||
return "."
|
||||
}
|
||||
// Use an absolute path if required
|
||||
if((options.useAbsoluteForNonDescendents && c < rootParts.length) || (options.useAbsoluteForDescendents && c === rootParts.length)) {
|
||||
// Use an absolute path if there's no common portion, or if specifically requested
|
||||
if(c === 1 || (options.useAbsoluteForNonDescendents && c < rootParts.length) || (options.useAbsoluteForDescendents && c === rootParts.length)) {
|
||||
return sourcepath;
|
||||
}
|
||||
// Move up a directory for each directory left in the root
|
||||
@@ -87,25 +105,21 @@ function makePathRelative(sourcepath,rootpath,options) {
|
||||
}
|
||||
|
||||
function test_makePathRelative() {
|
||||
var msg = "makePathRelative test failed";
|
||||
if(makePathRelative("/Users/me/something","/Users/you/something") !== "../../me/something") {
|
||||
throw msg;
|
||||
}
|
||||
if(makePathRelative("/Users/me/something","/Users/you/something",{useAbsoluteForNonDescendents: true}) !== "/Users/me/something") {
|
||||
throw msg;
|
||||
}
|
||||
if(makePathRelative("/Users/me/something/else","/Users/me/something") !== "else") {
|
||||
throw msg;
|
||||
}
|
||||
if(makePathRelative("/Users/me/something","/Users/me/something/new") !== "..") {
|
||||
throw msg;
|
||||
}
|
||||
if(makePathRelative("/Users/me/something","/Users/me/something/new",{useAbsoluteForNonDescendents: true}) !== "/Users/me/something") {
|
||||
throw msg;
|
||||
}
|
||||
if(makePathRelative("/Users/me/something","/Users/me/something") !== ".") {
|
||||
throw msg;
|
||||
}
|
||||
var test = function(sourcepath,rootpath,result,options) {
|
||||
if(makePathRelative(sourcepath,rootpath,options) !== result) {
|
||||
throw "makePathRelative test failed: makePathRelative(" + sourcepath + "," + rootpath + "," + JSON.stringify(options) + ") is not equal to " + result;
|
||||
}
|
||||
};
|
||||
test("/Users/me/something/file.png","/Users/you/something","../../me/something/file.png");
|
||||
test("/Users/me/something/file.png","/Users/you/something","/Users/me/something/file.png",{useAbsoluteForNonDescendents: true});
|
||||
test("/Users/me/something/else/file.png","/Users/me/something","else/file.png");
|
||||
test("/Users/me/something/file.png","/Users/me/something/new","../file.png");
|
||||
test("/Users/me/something/file.png","/Users/me/something/new","/Users/me/something/file.png",{useAbsoluteForNonDescendents: true});
|
||||
test("/Users/me/something/file.png","/Users/me/something","file.png");
|
||||
test("C:\\Users\\me\\something\\file.png","/C:/Users/me/something","file.png",{isWindows: true});
|
||||
test("\\\\SHARE\\Users\\me\\something\\file.png","/SHARE/Users/me/somethingelse","../something/file.png",{isWindows: true});
|
||||
test("\\\\SHARE\\Users\\me\\something\\file.png","/C:/Users/me/something","/SHARE/Users/me/something/file.png",{isWindows: true});
|
||||
}
|
||||
|
||||
|
||||
})();
|
||||
|
||||
@@ -53,7 +53,7 @@ FileSystemAdaptor.prototype.getTiddlerFileInfo = function(tiddler,callback) {
|
||||
// Otherwise, we'll need to generate it
|
||||
fileInfo = $tw.utils.generateTiddlerFileInfo(tiddler,{
|
||||
directory: $tw.boot.wikiTiddlersPath,
|
||||
pathFilters: this.wiki.getTiddlerText("$:/config/FileSystemPaths"),
|
||||
pathFilters: this.wiki.getTiddlerText("$:/config/FileSystemPaths","").split("\n"),
|
||||
wiki: this.wiki
|
||||
});
|
||||
$tw.boot.files[title] = fileInfo;
|
||||
|
||||
@@ -3,20 +3,20 @@ tags: $:/tags/Macro
|
||||
|
||||
\define translatableStringEditorInner(tiddlerTitle)
|
||||
<tr>
|
||||
<td width="1px">
|
||||
<td width="250px">
|
||||
<$link><$list filter=<<shortenTitle>>><$text text=<<currentTiddler>>/></$list></$link>
|
||||
</td>
|
||||
<td width="100%">
|
||||
<td>
|
||||
<$list filter="""$(editFieldsFilter)$""" variable="editorField">
|
||||
<$edit-text tag="$(editorTagName)$" field=<<editorField>> type="text" class="tc-edit-texteditor" minHeight="10px"/>
|
||||
</$list>
|
||||
</td>
|
||||
<td width="1px">
|
||||
<td width="20px">
|
||||
<div class="tc-drop-down-wrapper">
|
||||
<$button class="tc-btn-invisible" popup=<<qualify "$:/state/popup/translationInfo/$tiddlerTitle$">>>
|
||||
{{$:/core/images/down-arrow}}
|
||||
</$button>
|
||||
<$reveal state=<<qualify "$:/state/popup/translationInfo/$tiddlerTitle$">> type="popup" position="belowleft" text="" default="">
|
||||
<$reveal state=<<qualify "$:/state/popup/translationInfo/$tiddlerTitle$">> type="popup" position="belowleft" positionAllowNegative="yes" text="" default="">
|
||||
<div class="tc-drop-down">
|
||||
<p>
|
||||
Original en-GB text:
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<p>Welcome to <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a>, a non-linear personal web notebook that anyone can use and keep forever, independently of any corporation.</p><p><a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> is a complete interactive wiki in <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/JavaScript.html">JavaScript</a>. It can be used as a single HTML file in the browser or as a powerful Node.js application. It is highly customisable: the entire user interface is itself implemented in hackable <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/WikiText.html">WikiText</a>.</p><p>Learn more and see it in action at <a class="tc-tiddlylink-external" href="https://tiddlywiki.com/" rel="noopener noreferrer" target="_blank">https://tiddlywiki.com/</a></p><p>Developer documentation is in progress at <a class="tc-tiddlylink-external" href="https://tiddlywiki.com/dev/" rel="noopener noreferrer" target="_blank">https://tiddlywiki.com/dev/</a></p><h1 class="">Join the Community</h1><p>
|
||||
<h2 class="">Users</h2><p>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.</p><ul><li>The main TiddlyWiki group: <a class="tc-tiddlylink-external" href="http://groups.google.com/group/TiddlyWiki" rel="noopener noreferrer" target="_blank">http://groups.google.com/group/TiddlyWiki</a><blockquote><p>Note that you do not need a Google Account to join the discussion groups. Subscribe by sending an email to <a class="tc-tiddlylink-external" href="mailto:tiddlywiki+subscribe@googlegroups.com" rel="noopener noreferrer" target="_blank">mailto:tiddlywiki+subscribe@googlegroups.com</a> or <a class="tc-tiddlylink-external" href="mailto:tiddlywikidev+subscribe@googlegroups.com" rel="noopener noreferrer" target="_blank">mailto:tiddlywikidev+subscribe@googlegroups.com</a>.</p></blockquote><ul><li>An enhanced group search facility is available on <a class="tc-tiddlylink-external" href="https://www.mail-archive.com/tiddlywiki@googlegroups.com/" rel="noopener noreferrer" target="_blank">mail-archive.com</a></li></ul></li><li>Watch recordings of our regular <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki%2520Hangouts.html">TiddlyWiki Hangouts</a></li><li>Follow <a class="tc-tiddlylink-external" href="http://twitter.com/TiddlyWiki" rel="noopener noreferrer" target="_blank">@TiddlyWiki on Twitter</a> for the latest news</li><li><strong>New: Join us on our live chat at <a class="tc-tiddlylink-external" href="https://gitter.im/TiddlyWiki/public" rel="noopener noreferrer" target="_blank">https://gitter.im/TiddlyWiki/public</a> !</strong></li></ul><h2 class="">Developers</h2><ul><li>The <a class="tc-tiddlylink tc-tiddlylink-missing" href="https://tiddlywiki.com/static/TiddlyWikiDev.html">TiddlyWikiDev</a> group for developers: <a class="tc-tiddlylink-external" href="http://groups.google.com/group/TiddlyWikiDev" rel="noopener noreferrer" target="_blank">http://groups.google.com/group/TiddlyWikiDev</a><blockquote><p>Note that you do not need a Google Account to join the discussion groups. Subscribe by sending an email to <a class="tc-tiddlylink-external" href="mailto:tiddlywiki+subscribe@googlegroups.com" rel="noopener noreferrer" target="_blank">mailto:tiddlywiki+subscribe@googlegroups.com</a> or <a class="tc-tiddlylink-external" href="mailto:tiddlywikidev+subscribe@googlegroups.com" rel="noopener noreferrer" target="_blank">mailto:tiddlywikidev+subscribe@googlegroups.com</a>.</p></blockquote><ul><li>An enhanced group search facility is available on <a class="tc-tiddlylink-external" href="https://www.mail-archive.com/tiddlywikidev@googlegroups.com/" rel="noopener noreferrer" target="_blank">mail-archive.com</a></li></ul></li><li>Follow <a class="tc-tiddlylink-external" href="http://twitter.com/#!/TiddlyWiki" rel="noopener noreferrer" target="_blank">@TiddlyWiki on Twitter</a> for the latest news</li><li>Get involved in the <a class="tc-tiddlylink-external" href="https://github.com/Jermolene/TiddlyWiki5" rel="noopener noreferrer" target="_blank">development on GitHub</a></li><li>Chat at <a class="tc-tiddlylink-external" href="https://gitter.im/TiddlyWiki/public" rel="noopener noreferrer" target="_blank">https://gitter.im/TiddlyWiki/public</a> (development room coming soon)</li></ul><p>New releases of <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a>, <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyDesktop.html">TiddlyDesktop</a> and <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyFox.html">TiddlyFox</a> are announced via the discussion groups and <a class="tc-tiddlylink-external" href="https://twitter.com/TiddlyWiki" rel="noopener noreferrer" target="_blank">Twitter</a> (you can also subscribe to an Atom/RSS feed of <a class="tc-tiddlylink-external" href="https://github.com/jermolene/tiddlywiki5/releases.atom" rel="noopener noreferrer" target="_blank">TiddlyWiki releases from GitHub</a>)</p><h2 class="">Documentation</h2><p>There is also a discussion group specifically for discussing <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> documentation improvement initiatives: <a class="tc-tiddlylink-external" href="http://groups.google.com/group/tiddlywikidocs" rel="noopener noreferrer" target="_blank">http://groups.google.com/group/tiddlywikidocs</a>
|
||||
</p>
|
||||
</p><h1 class="">Installing <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> on Node.js</h1><ol><li>Install <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/Node.js.html">Node.js</a><ul><li>either from your favourite package manager: typically <code>apt-get install nodejs</code> on Debian/Ubuntu Linux or <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/Serving%2520TW5%2520from%2520Android.html">Termux for Android</a>, or <code>brew install node</code> on a Mac</li><li>or directly from <a class="tc-tiddlylink-external" href="http://nodejs.org" rel="noopener noreferrer" target="_blank">http://nodejs.org</a></li></ul></li><li>Open a command line terminal and type:<blockquote><p><code>npm install -g tiddlywiki</code></p><p>If it fails with an error you may need to re-run the command as an administrator:</p><p><code>sudo npm install -g tiddlywiki</code> (Mac/Linux)</p></blockquote></li><li>Check <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> is installed by typing:<blockquote><p><code>tiddlywiki --version</code></p></blockquote></li><li>In response, you should see <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> report its current version (eg "5.1.20"; you may also see other debugging information reported)</li><li>Try it out:<ol><li><code>tiddlywiki mynewwiki --init server</code> to create a folder for a new wiki that includes server-related components</li><li><code>tiddlywiki mynewwiki --listen</code> to start <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a></li><li>Visit <a class="tc-tiddlylink-external" href="http://127.0.0.1:8080/" rel="noopener noreferrer" target="_blank">http://127.0.0.1:8080/</a> in your browser</li><li>Try editing and creating tiddlers</li></ol></li><li>Optionally, make an offline copy:<ul><li>click the <svg class="tc-image-save-button tc-image-button" height="22pt" viewBox="0 0 128 128" width="22pt">
|
||||
</p><h1 class="">Installing <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> on Node.js</h1><ol><li>Install <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/Node.js.html">Node.js</a><ul><li>either from your favourite package manager: typically <code>apt-get install nodejs</code> on Debian/Ubuntu Linux or <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/Serving%2520TW5%2520from%2520Android.html">Termux for Android</a>, or <code>brew install node</code> on a Mac</li><li>or directly from <a class="tc-tiddlylink-external" href="http://nodejs.org" rel="noopener noreferrer" target="_blank">http://nodejs.org</a></li></ul></li><li>Open a command line terminal and type:<blockquote><p><code>npm install -g tiddlywiki</code></p><p>If it fails with an error you may need to re-run the command as an administrator:</p><p><code>sudo npm install -g tiddlywiki</code> (Mac/Linux)</p></blockquote></li><li>Check <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> is installed by typing:<blockquote><p><code>tiddlywiki --version</code></p></blockquote></li><li>In response, you should see <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> report its current version (eg "5.1.21"; you may also see other debugging information reported)</li><li>Try it out:<ol><li><code>tiddlywiki mynewwiki --init server</code> to create a folder for a new wiki that includes server-related components</li><li><code>tiddlywiki mynewwiki --listen</code> to start <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a></li><li>Visit <a class="tc-tiddlylink-external" href="http://127.0.0.1:8080/" rel="noopener noreferrer" target="_blank">http://127.0.0.1:8080/</a> in your browser</li><li>Try editing and creating tiddlers</li></ol></li><li>Optionally, make an offline copy:<ul><li>click the <svg class="tc-image-save-button tc-image-button" height="22pt" viewBox="0 0 128 128" width="22pt">
|
||||
<g fill-rule="evenodd">
|
||||
<path d="M120.78304,34.329058 C125.424287,43.1924006 128.049406,53.2778608 128.049406,63.9764502 C128.049406,99.3226742 99.3956295,127.97645 64.0494055,127.97645 C28.7031816,127.97645 0.0494055385,99.3226742 0.0494055385,63.9764502 C0.0494055385,28.6302262 28.7031816,-0.0235498012 64.0494055,-0.0235498012 C82.8568763,-0.0235498012 99.769563,8.08898558 111.479045,21.0056358 L114.159581,18.3250998 C117.289194,15.1954866 122.356036,15.1939641 125.480231,18.3181584 C128.598068,21.4359957 128.601317,26.5107804 125.473289,29.6388083 L120.78304,34.329058 Z M108.72451,46.3875877 C110.870571,51.8341374 112.049406,57.767628 112.049406,63.9764502 C112.049406,90.4861182 90.5590735,111.97645 64.0494055,111.97645 C37.5397375,111.97645 16.0494055,90.4861182 16.0494055,63.9764502 C16.0494055,37.4667822 37.5397375,15.9764502 64.0494055,15.9764502 C78.438886,15.9764502 91.3495036,22.308215 100.147097,32.3375836 L58.9411255,73.5435552 L41.975581,56.5780107 C38.8486152,53.4510448 33.7746915,53.4551552 30.6568542,56.5729924 C27.5326599,59.6971868 27.5372202,64.7670668 30.6618725,67.8917192 L53.279253,90.5090997 C54.8435723,92.073419 56.8951519,92.8541315 58.9380216,92.8558261 C60.987971,92.8559239 63.0389578,92.0731398 64.6049211,90.5071765 L108.72451,46.3875877 Z"></path>
|
||||
</g>
|
||||
|
||||
@@ -431,7 +431,8 @@ button svg, button img, label svg, label img {
|
||||
margin: 0;
|
||||
background: none;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
cursor: pointer;
|
||||
color: <<colour foreground>>;
|
||||
}
|
||||
|
||||
.tc-btn-boxed {
|
||||
@@ -648,6 +649,10 @@ button.tc-tag-label, span.tc-tag-label {
|
||||
border-radius: 1em;
|
||||
}
|
||||
|
||||
.tc-sidebar-scrollable .tc-tag-label {
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
.tc-untagged-separator {
|
||||
width: 10em;
|
||||
left: 0;
|
||||
|
||||
Reference in New Issue
Block a user