>/>
- <%if [match[draft.title]] :filter[has[draft.of]] %>
- <$edit class="tc-edit-texteditor tc-max-width-80" tiddler=<> field=<>/>
- <$macrocall $name="saveButton" navTitle={{{ [get[draft.title]] }}} title=<>/>
+ <%if [match[draft.title]] %>
+ <$edit-text class="tc-edit-texteditor tc-max-width-80" tiddler=<> focus="yes" tag="input"/>
+ <$macrocall $name="saveButton" newTitle={{{ [get[text]] }}} title=<>/>
<%else%>
<$view tiddler=<> field=<>/>
<%endif%>
diff --git a/core/ui/TestCases/actions/Export.tid b/core/ui/TestCases/actions/Export.tid
index 0c9ee03ec..79c6eb93a 100644
--- a/core/ui/TestCases/actions/Export.tid
+++ b/core/ui/TestCases/actions/Export.tid
@@ -1,4 +1,4 @@
title: $:/core/ui/testcases/actions/Export
tags: $:/tags/TestCase/Actions
-<$macrocall $name="exportButton" exportFilter="[all[tiddlers]sort[]] -[prefix[$:/state/]] -[prefix[$:/HistoryList]] -[prefix[$:/StoryList]] -[[$:/temp/testcase/draft-title]] -Description -Narrative -ExpectedResult -Output Output +[putfirst[]] -[has[plugin-type]]" lingoBase="$:/language/Buttons/ExportTiddlers/"/>
\ No newline at end of file
+<$macrocall $name="exportButton" exportFilter="[all[tiddlers]sort[]] -[prefix[$:/state/]] -Description -Narrative -ExpectedResult -[has[plugin-type]]" lingoBase="$:/language/Buttons/ExportTiddlers/"/>
\ No newline at end of file
diff --git a/core/ui/ViewTemplate/subtitle.tid b/core/ui/ViewTemplate/subtitle.tid
index a7c010287..013f0266b 100644
--- a/core/ui/ViewTemplate/subtitle.tid
+++ b/core/ui/ViewTemplate/subtitle.tid
@@ -2,10 +2,4 @@ title: $:/core/ui/ViewTemplate/subtitle
tags: $:/tags/ViewTemplate
\whitespace trim
-<$reveal type="nomatch" stateTitle=<> text="hide" tag="div" retain="yes" animate="yes">
-
-<$list filter="[all[shadows+tiddlers]tag[$:/tags/ViewTemplate/Subtitle]!has[draft.of]]" variable="subtitleTiddler">
-<$transclude tiddler=<> mode="inline"/><$list-join> $list-join>
-$list>
-
-$reveal>
+<$transclude tiddler={{{ [] :cascade[all[shadows+tiddlers]tag[$:/tags/ViewTemplateSubtitleFilter]!is[draft]get[text]] :and[!is[blank]else[$:/core/ui/ViewTemplate/subtitle/default]] }}} />
\ No newline at end of file
diff --git a/core/ui/ViewTemplate/subtitle/default.tid b/core/ui/ViewTemplate/subtitle/default.tid
new file mode 100644
index 000000000..3885dc779
--- /dev/null
+++ b/core/ui/ViewTemplate/subtitle/default.tid
@@ -0,0 +1,10 @@
+title: $:/core/ui/ViewTemplate/subtitle/default
+
+\whitespace trim
+<$reveal type="nomatch" stateTitle=<> text="hide" tag="div" retain="yes" animate="yes">
+
+<$list filter="[all[shadows+tiddlers]tag[$:/tags/ViewTemplate/Subtitle]!has[draft.of]]" variable="subtitleTiddler">
+<$transclude tiddler=<> mode="inline"/><$list-join> $list-join>
+$list>
+
+$reveal>
diff --git a/core/ui/ViewTemplate/tags.tid b/core/ui/ViewTemplate/tags.tid
index d1f4e55c9..fc09c571a 100644
--- a/core/ui/ViewTemplate/tags.tid
+++ b/core/ui/ViewTemplate/tags.tid
@@ -2,6 +2,4 @@ title: $:/core/ui/ViewTemplate/tags
tags: $:/tags/ViewTemplate
\whitespace trim
-<$reveal type="nomatch" stateTitle=<> text="hide" tag="div" retain="yes" animate="yes">
-<$list filter="[all[current]tags[]sort[title]]" template="$:/core/ui/TagTemplate" storyview="pop"/>
-$reveal>
+<$transclude tiddler={{{ [] :cascade[all[shadows+tiddlers]tag[$:/tags/ViewTemplateTagsFilter]!is[draft]get[text]] :and[!is[blank]else[$:/core/ui/ViewTemplate/tags/default]] }}} />
\ No newline at end of file
diff --git a/core/ui/ViewTemplate/tags/default.tid b/core/ui/ViewTemplate/tags/default.tid
new file mode 100644
index 000000000..d524bfccd
--- /dev/null
+++ b/core/ui/ViewTemplate/tags/default.tid
@@ -0,0 +1,11 @@
+title: $:/core/ui/ViewTemplate/tags/default
+
+\whitespace trim
+<$reveal type="nomatch" stateTitle=<> text="hide" tag="div" retain="yes" animate="yes">
+
+ <$list filter="[all[current]tags[]sort[title]]" template="$:/core/ui/TagTemplate" storyview="pop"/>
+ <$list filter="[all[shadows+tiddlers]tag[$:/tags/ViewTemplate/Tags]!has[draft.of]]">
+ <$transclude mode="inline"/>
+ $list>
+
+$reveal>
diff --git a/core/wiki/config/ViewTemplateSubtitleFilters.multids b/core/wiki/config/ViewTemplateSubtitleFilters.multids
new file mode 100644
index 000000000..dd673b673
--- /dev/null
+++ b/core/wiki/config/ViewTemplateSubtitleFilters.multids
@@ -0,0 +1,4 @@
+title: $:/config/ViewTemplateSubtitleFilters/
+tags: $:/tags/ViewTemplateSubtitleFilter
+
+default: [[$:/core/ui/ViewTemplate/subtitle/default]]
diff --git a/core/wiki/config/ViewTemplateTagsFilters.multids b/core/wiki/config/ViewTemplateTagsFilters.multids
new file mode 100644
index 000000000..2f6c13051
--- /dev/null
+++ b/core/wiki/config/ViewTemplateTagsFilters.multids
@@ -0,0 +1,4 @@
+title: $:/config/ViewTemplateTagsFilters/
+tags: $:/tags/ViewTemplateTagsFilter
+
+default: [[$:/core/ui/ViewTemplate/tags/default]]
diff --git a/core/wiki/tags/ViewTemplateBodyFilter.tid b/core/wiki/tags/ViewTemplateBodyFilter.tid
index 0143c1f88..c7510cb09 100644
--- a/core/wiki/tags/ViewTemplateBodyFilter.tid
+++ b/core/wiki/tags/ViewTemplateBodyFilter.tid
@@ -1,2 +1,2 @@
title: $:/tags/ViewTemplateBodyFilter
-list: $:/config/ViewTemplateBodyFilters/testcase $:/config/ViewTemplateBodyFilters/hide-body $:/config/ViewTemplateBodyFilters/code-body $:/config/ViewTemplateBodyFilters/stylesheet $:/config/ViewTemplateBodyFilters/core-ui-advanced-search $:/config/ViewTemplateBodyFilters/core-ui-tags $:/config/ViewTemplateBodyFilters/system $:/config/ViewTemplateBodyFilters/import $:/config/ViewTemplateBodyFilters/plugin $:/config/ViewTemplateBodyFilters/default
\ No newline at end of file
+list: $:/config/ViewTemplateBodyFilters/testcase $:/config/ViewTemplateBodyFilters/hide-body $:/config/ViewTemplateBodyFilters/code-body $:/config/ViewTemplateBodyFilters/stylesheet $:/config/ViewTemplateBodyFilters/core-ui-advanced-search $:/config/ViewTemplateBodyFilters/core-ui-tags $:/config/ViewTemplateBodyFilters/import $:/config/ViewTemplateBodyFilters/plugin $:/config/ViewTemplateBodyFilters/system $:/config/ViewTemplateBodyFilters/default
diff --git a/editions/full/tiddlywiki.info b/editions/full/tiddlywiki.info
index 130d61dfe..b12834645 100644
--- a/editions/full/tiddlywiki.info
+++ b/editions/full/tiddlywiki.info
@@ -57,7 +57,8 @@
"sl-SI",
"sv-SE",
"zh-Hans",
- "zh-Hant"
+ "zh-Hant",
+ "zh-HK"
],
"themes": [
"tiddlywiki/centralised",
diff --git a/editions/pluginlibrary/tiddlers/GettingStarted.tid b/editions/pluginlibrary/tiddlers/GettingStarted.tid
index 53c35cf11..3ab0fe415 100644
--- a/editions/pluginlibrary/tiddlers/GettingStarted.tid
+++ b/editions/pluginlibrary/tiddlers/GettingStarted.tid
@@ -15,8 +15,8 @@ Import the configuration tiddler: $:/config/LocalPluginLibrary to your "test wik
The following commands will create the library files and start a test server at http://localhost:8888
```
-cd /your/path/to/TiddlyWiki5/editions/pluginlibrary
-tiddlywiki --build test-server
+cd /your/path/to/TiddlyWiki5
+node ./tiddlywiki.js ./editions/pluginlibrary --build test-server
```
!! Test the Library with a Single File Wiki
diff --git a/editions/pluginlibrary/tiddlywiki.info b/editions/pluginlibrary/tiddlywiki.info
index ba18ff0a2..cf6df6f8b 100644
--- a/editions/pluginlibrary/tiddlywiki.info
+++ b/editions/pluginlibrary/tiddlywiki.info
@@ -11,7 +11,7 @@
],
"build": {
"test-server": [
- "--output", "./files/local/library/tmp",
+ "--output", "./editions/pluginlibrary/files/local/library/tmp",
"--build", "library",
"--listen", "port=8888"
],
diff --git a/editions/test/tiddlers/tests/data/data-widget/ImportCustomTitle.tid b/editions/test/tiddlers/tests/data/data-widget/ImportCustomTitle.tid
new file mode 100644
index 000000000..34029ae32
--- /dev/null
+++ b/editions/test/tiddlers/tests/data/data-widget/ImportCustomTitle.tid
@@ -0,0 +1,23 @@
+title: Data/ImportCustomTitle
+type: text/vnd.tiddlywiki-multiple
+tags: [[$:/tags/wiki-test-spec]]
+description: Importing a payload tiddler and overwriting the title
+
+title: Description
+text: Importing a payload tiddler and overwriting the title
++
+title: Output
+
+\whitespace trim
+<$testcase template="$:/core/ui/testcases/RawJSONTemplate">
+<$data $tiddler="HelloThere" title="RealTitle"/>
+$testcase>
++
+title: HelloThere
+tags: Definitions
+
+This is the tiddler HelloThere
++
+title: ExpectedResult
+
+[{"title":"RealTitle","tags":"Definitions","text":"This is the tiddler HelloThere"}]
\ No newline at end of file
diff --git a/editions/test/tiddlers/tests/data/reserved-wikitext/ReservedWikiText.tid b/editions/test/tiddlers/tests/data/reserved-wikitext/ReservedWikiText.tid
new file mode 100644
index 000000000..b9b77f160
--- /dev/null
+++ b/editions/test/tiddlers/tests/data/reserved-wikitext/ReservedWikiText.tid
@@ -0,0 +1,54 @@
+title: ReservedWikiText
+description: Verify that reserved wikitext constructions are not parsed
+type: text/vnd.tiddlywiki-multiple
+tags: [[$:/tags/wiki-test-spec]]
+
+title: Narrative
+
+Verifies that certain wikitext constructions that are reserved for use by other tools are not parsed by TiddlyWiki.
++
+title: TestTiddler
+
+{%%}
+(==)
+{% %}
+(= =)
+{% something %}
+(= something =)
+Inline {% something %} substitution
+Inline (= something =) substitution
+Prefix-{%
+Prefix-(=
+%}-Postfix
+=)-Postfix
+ {%
+ (=
+ %}
+ =)
++
+title: Output
+
+<$wikify name="parsetree" text={{TestTiddler}} output="parsetree">
+<$text text={{{ [jsonget[0],[children],[0],[text]] }}}/>
+$wikify>
++
+title: ExpectedResult
+
+
+{%%}
+(==)
+{% %}
+(= =)
+{% something %}
+(= something =)
+Inline {% something %} substitution
+Inline (= something =) substitution
+Prefix-{%
+Prefix-(=
+%}-Postfix
+=)-Postfix
+ {%
+ (=
+ %}
+ =)
+
\ No newline at end of file
diff --git a/editions/test/tiddlers/tests/test-wikitext-parser.js b/editions/test/tiddlers/tests/test-wikitext-parser.js
index 04d041ec9..a488ff030 100644
--- a/editions/test/tiddlers/tests/test-wikitext-parser.js
+++ b/editions/test/tiddlers/tests/test-wikitext-parser.js
@@ -324,6 +324,100 @@ describe("WikiText parser tests", function() {
});
+ it("should parse tables", function() {
+ let wikitext = `
+|!Cell1 |!Cell2 |
+|Cell3 |Cell4 |`.trim();
+
+ let expectedParseTree = [{
+ type: 'element',
+ tag: 'table',
+ start: 0,
+ end: 33,
+ rule: 'table',
+ children: [{
+ type: 'element',
+ tag: 'tbody',
+ start: 0,
+ end: 33,
+ children: [{
+ type: 'element',
+ tag: 'tr',
+ attributes: {
+ 'class': { name: 'class', type: 'string', value: 'evenRow' },
+ },
+ orderedAttributes: [
+ { name: 'class', type: 'string', value: 'evenRow' },
+ ],
+ start: 0,
+ end: 18,
+ children: [{
+ type: 'element',
+ tag: 'th',
+ attributes: {
+ 'align': { name: 'align', type: 'string', value: 'left' },
+ },
+ orderedAttributes: [
+ { name: 'align', type: 'string', value: 'left' },
+ ],
+ start: 1,
+ end: 8,
+ children: [{type: 'text', text: 'Cell1', start: 2, end: 7}],
+ }, {
+ type: 'element',
+ tag: 'th',
+ attributes: {
+ 'align': { name: 'align', type: 'string', value: 'left' },
+ },
+ orderedAttributes: [
+ { name: 'align', type: 'string', value: 'left' },
+ ],
+ start: 9,
+ end: 16,
+ children: [{type: 'text', text: 'Cell2', start: 10, end: 15}],
+ }],
+ }, {
+ type: 'element',
+ tag: 'tr',
+ attributes: {
+ 'class': { name: 'class', type: 'string', value: 'oddRow' },
+ },
+ orderedAttributes: [
+ { name: 'class', type: 'string', value: 'oddRow' },
+ ],
+ start: 18,
+ end: 33,
+ children: [{
+ type: 'element',
+ tag: 'td',
+ attributes: {
+ 'align': { name: 'align', type: 'string', value: 'left' },
+ },
+ orderedAttributes: [
+ { name: 'align', type: 'string', value: 'left' },
+ ],
+ start: 19,
+ end: 25,
+ children: [{type: 'text', text: 'Cell3', start: 19, end: 24}],
+ }, {
+ type: 'element',
+ tag: 'td',
+ attributes: {
+ 'align': { name: 'align', type: 'string', value: 'left' },
+ },
+ orderedAttributes: [
+ { name: 'align', type: 'string', value: 'left' },
+ ],
+ start: 26,
+ end: 32,
+ children: [{type: 'text', text: 'Cell4', start: 26, end: 31}],
+ }],
+ }],
+ }],
+ }];
+
+ expect(parse(wikitext)).toEqual(expectedParseTree);
+ });
});
})();
diff --git a/editions/tw.org/tiddlywiki.info b/editions/tw.org/tiddlywiki.info
index 5e4202ccc..3dbd86516 100644
--- a/editions/tw.org/tiddlywiki.info
+++ b/editions/tw.org/tiddlywiki.info
@@ -16,6 +16,8 @@
"--setfield","[tag[external-image]]","_canonical_uri","$:/core/templates/canonical-uri-external-image","text/plain",
"--setfield","[tag[external-image]]","text","","text/plain",
"--render","$:/core/save/all","index.html","text/plain"],
+ "readmes": [
+ "--render","[[Code of Conduct]]","code-of-conduct.md","text/html"],
"favicon": [
"--savetiddler","$:/favicon.ico","favicon.ico"],
"static": [
diff --git a/editions/tw5.com/tiddlers/concepts/Railroad Diagrams.tid b/editions/tw5.com/tiddlers/concepts/Railroad Diagrams.tid
index 04b83d6fb..5ffa0187b 100644
--- a/editions/tw5.com/tiddlers/concepts/Railroad Diagrams.tid
+++ b/editions/tw5.com/tiddlers/concepts/Railroad Diagrams.tid
@@ -15,4 +15,6 @@ In the example above, a comma appears between each occurrence of the `repeated`
Characters in round boxes are literal, i.e. they denote themselves. A name in a rectangular box denotes a further railroad diagram.
+The TW [[Filter Syntax]] documentation makes extensive use of railroad diagrams.
+
The railroad diagrams in ~TiddlyWiki's documentation are generated with the [[Railroad Plugin]].
diff --git a/editions/tw5.com/tiddlers/definitions/Intertwingled Innovations.tid b/editions/tw5.com/tiddlers/definitions/Intertwingled Innovations.tid
index 02f177082..07576617b 100644
--- a/editions/tw5.com/tiddlers/definitions/Intertwingled Innovations.tid
+++ b/editions/tw5.com/tiddlers/definitions/Intertwingled Innovations.tid
@@ -4,6 +4,6 @@ tags: Definitions
title: Intertwingled Innovations
type: text/vnd.tiddlywiki
-Intertwingled Innovations Limited is the company through which [[JeremyRuston]] performs commercial consultancy work helping companies and individuals release the businesss value of TiddlyWiki.
+Intertwingled Innovations Limited is the company through which [[JeremyRuston]] performs commercial consultancy work helping companies and individuals release the business value of TiddlyWiki.
See https://intertwingledinnovations.com/ for more information.
diff --git a/editions/tw5.com/tiddlers/nodejs/Customising Tiddler File Naming.tid b/editions/tw5.com/tiddlers/nodejs/Customising Tiddler File Naming.tid
index 084586e77..14e324456 100644
--- a/editions/tw5.com/tiddlers/nodejs/Customising Tiddler File Naming.tid
+++ b/editions/tw5.com/tiddlers/nodejs/Customising Tiddler File Naming.tid
@@ -6,7 +6,7 @@ type: text/vnd.tiddlywiki
By default, a [[TiddlyWiki on Node.js]] instance using a [[wiki folder|TiddlyWikiFolders]] will create new tiddler files by using the sanitised and disambiguated title as filename. All filepath operations are relative to a `default-tiddler-location` which defaults to the wiki folder's `tiddlers/` directory. This can be overridden by mapping a path in the wiki's tiddlywiki.info file, by using a `default-tiddler-location` property in the `config` object.
-The default file extension of `.tid` is used for tiddlers that are missing the `type` field, or for tiddlers of type "text/vnd.tiddlywiki". Tidders of other types are saved according to their MIME types (defined at boot startup).
+The default file extension of `.tid` is used for tiddlers that are missing the `type` field, or for tiddlers of type "text/vnd.tiddlywiki". Tiddlers of other types are saved according to their MIME types (defined at boot startup).
Both the logical path (directory and file name) and the file extension can be customised independently by creating optional tiddlers [[$:/config/FileSystemPaths]] and [[$:/config/FileSystemExtensions]].
@@ -29,7 +29,7 @@ Logical paths do not include the file-on-disk's extension (see below), and they
<<.note "All paths are relative to the wiki's `default-tiddler-location`.">>
-This will store newly created system tiddlers that are not drafts of other tiddlers in `./_system/` (after stripping the `$:/` prefix). Next, all drafts have the path separator characters in their titles replaced by "_" and are stored in `./drafts/`. Then tiddlers tagged [[task]] are stored in a subdirectory `./mytasks/`. Finally, all tidders not tagged with "externalnote" will match the final `[!tag[externalnote]addprefix[wiki/]]` storing these in `./wiki/`. In this example, tiddlers tagged with "externalnote" have been imported using [[tiddlywiki.files Files]] with an "isEditableFile" flag set to true, causing the server to remember their original file path in the $:/config/OriginalTiddlerPaths tiddler.
+This will store newly created system tiddlers that are not drafts of other tiddlers in `./_system/` (after stripping the `$:/` prefix). Next, all drafts have the path separator characters in their titles replaced by "_" and are stored in `./drafts/`. Then tiddlers tagged [[task]] are stored in a subdirectory `./mytasks/`. Finally, all tiddlers not tagged with "externalnote" will match the final `[!tag[externalnote]addprefix[wiki/]]` storing these in `./wiki/`. In this example, tiddlers tagged with "externalnote" have been imported using [[tiddlywiki.files Files]] with an "isEditableFile" flag set to true, causing the server to remember their original file path in the $:/config/OriginalTiddlerPaths tiddler.
Whenever a tiddler generates a $:/config/FileSystemPaths filter match, any `/` or `\` in the tiddler title is mapped to a path separator. With the above filters, the non-system, non-draft tiddler titled `some/thing/entirely/new` (with no tags) will be saved to `./wiki/some/thing/entirely/new.tid` (ie, the file `new.tid` in a directory called `entirely/`). Thus, $:/config/FileSystemPaths itself will end up in `./_system/config/FileSystemPaths.tid` or `.\_system\config\FileSystemPaths.tid`, depending on the platform.
@@ -39,7 +39,7 @@ Normally, the file system extension of a tiddler on disk is determined by the pr
If the tiddler does not have such field values, then the `type` field is referenced to find a matching file-type, with `.tid` used for tiddlers without a type value. The boot engine defines a set of these tiddler-type to file-type relationships in the [[$:/boot/boot.js]] tiddler. Search for `// Add file extension information` to find the section of code that defines these relationships.
-The file extension of individual tidders can be customised by creating a tiddler [[$:/config/FileSystemExtensions]] containing one or more [[filter expressions|Filter Syntax]], each on a line of its own. Every time a tiddler is saved to disk it is tested against these filters, and the first output of the first filter to produce any output is taken as the file extension to be used for the tiddler file. Extensions should always start with a leading dot (see example). If no filter matches, the default extension is used. If the extension has changed a new file is created and the old file is deleted.
+The file extension of individual tiddlers can be customised by creating a tiddler [[$:/config/FileSystemExtensions]] containing one or more [[filter expressions|Filter Syntax]], each on a line of its own. Every time a tiddler is saved to disk it is tested against these filters, and the first output of the first filter to produce any output is taken as the file extension to be used for the tiddler file. Extensions should always start with a leading dot (see example). If no filter matches, the default extension is used. If the extension has changed a new file is created and the old file is deleted.
<<.note """A result of ".tid" will force the tiddler to be written to disk as a single-file text tiddler. A result of ".json" will force the tiddler to be written to disk as a single file tiddler in json-format (a single tiddler fields object in an array), NOT as a tiddler of type "application/json". All other recognised file-types will be saved using their defined extension along with an accompanying *.meta file of the same name which describes all fields but the "text" field.""">>
@@ -51,6 +51,6 @@ The file extension of individual tidders can be customised by creating a tiddler
[tag[.tid]then[.tid]]
```
-This will cause all tidders that have the tag ".txt" to be saved at the filepath determined by the File System Paths filters, but with their text field saved as a *.txt file, and all other fields saved as a *.txt.meta file.
+This will cause all tiddlers that have the tag ".txt" to be saved at the filepath determined by the File System Paths filters, but with their text field saved as a *.txt file, and all other fields saved as a *.txt.meta file.
Next, all tiddlers that have the ".json" tag are saved as *.json files. Finally, all tiddlers that have tag ".tid" are saved as single files. If a tiddler matches none of the filters, the default extension determined by the tiddlers `type` field would be used.
\ No newline at end of file
diff --git a/editions/tw5.com/tiddlers/plugins/Railroad Plugin.tid b/editions/tw5.com/tiddlers/plugins/Railroad Plugin.tid
index a08a7b8c3..03913a820 100644
--- a/editions/tw5.com/tiddlers/plugins/Railroad Plugin.tid
+++ b/editions/tw5.com/tiddlers/plugins/Railroad Plugin.tid
@@ -5,6 +5,12 @@ tags: OfficialPlugins [[Plugin Editions]]
title: Railroad Plugin
type: text/vnd.tiddlywiki
+!! Railroad Diagrams
+
+{{Railroad Diagrams}}
+
+!! Plugin
+
{{$:/plugins/tiddlywiki/railroad/readme}}
-{{$:/plugins/tiddlywiki/railroad/syntax}}
\ No newline at end of file
+Learn more about the [[Railroad Plguin Syntax Description|$:/plugins/tiddlywiki/railroad/syntax]]
diff --git a/editions/tw5.com/tiddlers/releasenotes/Releases.tid b/editions/tw5.com/tiddlers/releasenotes/Releases.tid
index 57e5d3fd4..bd68f1ac6 100644
--- a/editions/tw5.com/tiddlers/releasenotes/Releases.tid
+++ b/editions/tw5.com/tiddlers/releasenotes/Releases.tid
@@ -6,6 +6,8 @@ type: text/vnd.tiddlywiki
New releases of TiddlyWiki and TiddlyDesktop are announced via the [[official discussion groups|Forums]] and [[Twitter|https://twitter.com/TiddlyWiki]]
+The prerelease of the next version of TiddlyWiki can be found at https://tiddlywiki.com/prerelease for testing and review purposes.
+
See the [[TiddlyWiki Archive]] to download older versions.
<>
diff --git a/editions/tw5.com/tiddlers/testcases/DataWidget/ImportCustomTitle.tid b/editions/tw5.com/tiddlers/testcases/DataWidget/ImportCustomTitle.tid
new file mode 100644
index 000000000..5eb48cde4
--- /dev/null
+++ b/editions/tw5.com/tiddlers/testcases/DataWidget/ImportCustomTitle.tid
@@ -0,0 +1,29 @@
+title: TestCases/DataWidget/ImportCustomTitle
+type: text/vnd.tiddlywiki-multiple
+tags: [[$:/tags/wiki-test-spec]]
+description: Importing a payload tiddler and overwriting the title
+display-format: plaintext
+
+title: Narrative
+
+Importing a payload tiddler and overwriting the title
++
+title: Output
+
+\whitespace trim
+<$data $tiddler="HelloThere" title="RealTitle"/>
++
+title: HelloThere
+tags: Definitions
+
+This is the tiddler HelloThere
++
+title: ExpectedResult
+
+[
+ {
+ "title": "RealTitle",
+ "tags": "Definitions",
+ "text": "This is the tiddler HelloThere"
+ }
+]
\ No newline at end of file
diff --git a/editions/tw5.com/tiddlers/widgets/LinkWidget.tid b/editions/tw5.com/tiddlers/widgets/LinkWidget.tid
index 000b3219f..8daf3f4e1 100644
--- a/editions/tw5.com/tiddlers/widgets/LinkWidget.tid
+++ b/editions/tw5.com/tiddlers/widgets/LinkWidget.tid
@@ -1,6 +1,6 @@
caption: link
created: 20131024141900000
-modified: 20231113093304323
+modified: 20240730065043721
tags: Widgets
title: LinkWidget
type: text/vnd.tiddlywiki
@@ -69,11 +69,13 @@ This causes the tooltip to be the ''tooltip'' field of the target tiddler. If th
The link widget automatically determines and applies the following classes to links:
-* `tc-tiddlylink` - applied to all links
+* `tc-tiddlylink` - applied to ''all'' links
* `tc-tiddlylink-external` - applied to external, non-tiddler links
* `tc-tiddlylink-internal` - applied to tiddler links
* `tc-tiddlylink-missing` - applied to tiddler links where the target tiddler doesn't exist
* `tc-tiddlylink-resolves` - applied to tiddler links when the target tiddler does exist
+* `tc-tiddlylink-shadow` - applied to tiddler links when the target is a shadow tiddler
+** `tc-tiddlylink-shadow tc-tiddlylink-resolves` - applied to ''overwritten'' shadow tiddlers
Use the `class` attribute to specify additional css classes, or `overrideClass` to apply only that but not the above defaults, e.g. when used in a LinkCatcherWidget:
diff --git a/editions/tw5.com/tiddlywiki.info b/editions/tw5.com/tiddlywiki.info
index 504abac5c..2f3ddade8 100644
--- a/editions/tw5.com/tiddlywiki.info
+++ b/editions/tw5.com/tiddlywiki.info
@@ -1,16 +1,13 @@
{
"description": "Documentation from https://tiddlywiki.com",
"plugins": [
- "tiddlywiki/nodewebkitsaver",
"tiddlywiki/browser-sniff",
"tiddlywiki/railroad",
- "tiddlywiki/evernote",
"tiddlywiki/internals",
"tiddlywiki/menubar",
"tiddlywiki/confetti",
"tiddlywiki/dynannotate",
- "tiddlywiki/tour",
- "tiddlywiki/qrcode"
+ "tiddlywiki/tour"
],
"themes": [
"tiddlywiki/vanilla",
diff --git a/languages/ar-PS/plugin.info b/languages/ar-PS/plugin.info
index 7ffe34e88..b524a1c5a 100644
--- a/languages/ar-PS/plugin.info
+++ b/languages/ar-PS/plugin.info
@@ -2,7 +2,7 @@
"title": "$:/languages/ar-PS",
"name": "ar-PS",
"plugin-type": "language",
- "description": "Arabic (Palestine)",
+ "description": "العربية (فلسطين)",
"author": "Kamal-Habash",
"core-version": ">=5.1.23",
"text-direction": "rtl"
diff --git a/languages/ca-ES/plugin.info b/languages/ca-ES/plugin.info
index dd05d365a..0538a67f2 100644
--- a/languages/ca-ES/plugin.info
+++ b/languages/ca-ES/plugin.info
@@ -2,7 +2,7 @@
"title": "$:/languages/ca-ES",
"name": "ca-ES",
"plugin-type": "language",
- "description": "Catalan (Spain)",
+ "description": "Català (Espanya)",
"author": "Paco Rivière",
"core-version": ">=5.0.0"
}
\ No newline at end of file
diff --git a/languages/cs-CZ/plugin.info b/languages/cs-CZ/plugin.info
index 14f574556..9991bfb84 100644
--- a/languages/cs-CZ/plugin.info
+++ b/languages/cs-CZ/plugin.info
@@ -2,7 +2,7 @@
"title": "$:/languages/cs-CZ",
"name": "cs-CZ",
"plugin-type": "language",
- "description": "Česky (Czech Republic)",
+ "description": "Čeština (Česká republika)",
"author": "Zdeněk Jašek",
"core-version": ">=5.0.0"
}
\ No newline at end of file
diff --git a/languages/da-DK/plugin.info b/languages/da-DK/plugin.info
index 48a2b7c1e..a1f0a863c 100644
--- a/languages/da-DK/plugin.info
+++ b/languages/da-DK/plugin.info
@@ -2,7 +2,7 @@
"title": "$:/languages/da-DK",
"name": "da-DK",
"plugin-type": "language",
- "description": "Danish (Denmark)",
+ "description": "Dansk (Danmark)",
"author": "Birthe C",
"core-version": ">=5.0.8"
}
diff --git a/languages/de-DE/Types/text_vnd.tiddlywiki_multiple.tid b/languages/de-DE/Types/text_vnd.tiddlywiki_multiple.tid
index 2c192f96f..ab32b262c 100644
--- a/languages/de-DE/Types/text_vnd.tiddlywiki_multiple.tid
+++ b/languages/de-DE/Types/text_vnd.tiddlywiki_multiple.tid
@@ -1,5 +1,5 @@
title: $:/language/Docs/Types/text/vnd.tiddlywiki-multiple
-description: TW5 - TiddlyWiki Wikitext Verbund Tiddler
+description: Verbund Tiddler
name: text/vnd.tiddlywiki-multiple
group: Entwickler
group-sort: 2
diff --git a/languages/el-GR/plugin.info b/languages/el-GR/plugin.info
index 89c3f5e56..726ba71cd 100644
--- a/languages/el-GR/plugin.info
+++ b/languages/el-GR/plugin.info
@@ -2,7 +2,7 @@
"title": "$:/languages/el-GR",
"name": "el-GR",
"plugin-type": "language",
- "description": "Greek (Greece)",
+ "description": "Ελληνικά (Ελλάδα)",
"author": "Stratis Aravias@ΓΕΛ Σαμοθράκης",
"core-version": ">=5.0.0"
}
\ No newline at end of file
diff --git a/languages/es-ES/plugin.info b/languages/es-ES/plugin.info
index b144f8fdf..7b982c127 100644
--- a/languages/es-ES/plugin.info
+++ b/languages/es-ES/plugin.info
@@ -2,7 +2,7 @@
"title": "$:/languages/es-ES",
"name": "es-ES",
"plugin-type": "language",
- "description": "Castellano. (Spain)",
+ "description": "Castellano. (España)",
"author": "Pau DeLuca,Joe Bordes",
"core-version": ">=5.1.23"
}
diff --git a/languages/fa-IR/plugin.info b/languages/fa-IR/plugin.info
index 0a433da5f..a5d5d0cad 100644
--- a/languages/fa-IR/plugin.info
+++ b/languages/fa-IR/plugin.info
@@ -2,7 +2,7 @@
"title": "$:/languages/fa-IR",
"name": "fa",
"plugin-type": "language",
- "description": "Persian (Iran)",
+ "description": "فارسی (ایران)",
"author": "amirography",
"core-version": ">=5.0.0",
"text-direction": "rtl"
diff --git a/languages/he-IL/plugin.info b/languages/he-IL/plugin.info
index 61e6be6cd..214cd6c9d 100644
--- a/languages/he-IL/plugin.info
+++ b/languages/he-IL/plugin.info
@@ -2,7 +2,7 @@
"title": "$:/languages/he-IL",
"name": "he-IL",
"plugin-type": "language",
- "description": "Hebrew (Israel)",
+ "description": "עברית (ישראל)",
"author": "DoronTzur",
"core-version": ">=5.0.0",
"text-direction": "rtl"
diff --git a/languages/hi-IN/plugin.info b/languages/hi-IN/plugin.info
index 68b1df604..d83425cf7 100644
--- a/languages/hi-IN/plugin.info
+++ b/languages/hi-IN/plugin.info
@@ -2,7 +2,7 @@
"title": "$:/languages/hi-IN",
"name": "hi-IN",
"plugin-type": "language",
- "description": "Hindi (India)",
+ "description": "हिन्दी (भारत)",
"author": "Atul Grover",
"core-version": ">=5.0.8"
}
diff --git a/languages/it-IT/plugin.info b/languages/it-IT/plugin.info
index 6a39281ba..f4b7a7384 100644
--- a/languages/it-IT/plugin.info
+++ b/languages/it-IT/plugin.info
@@ -2,7 +2,7 @@
"title": "$:/languages/it-IT",
"name": "it-IT",
"plugin-type": "language",
- "description": "Italian (Italy)",
+ "description": "Italiano (Italia)",
"author": "MaurizioPollio",
"core-version": ">=5.0.8"
}
diff --git a/languages/ja-JP/plugin.info b/languages/ja-JP/plugin.info
index 521d420cd..2a2854c17 100644
--- a/languages/ja-JP/plugin.info
+++ b/languages/ja-JP/plugin.info
@@ -2,7 +2,7 @@
"title": "$:/languages/ja-JP",
"name": "ja-JP",
"plugin-type": "language",
- "description": "Japanese (Japan)",
+ "description": "日本語 (日本)",
"author": "Makoto Hirohashi, OGOSHI Masayuki, pekopeko1, dajya-ranger.com, BALLOON | FU-SEN (Keiichi Shiga)",
"core-version": ">=5.1.4"
}
diff --git a/languages/ko-KR/plugin.info b/languages/ko-KR/plugin.info
index 28e153aaf..5b2a1549e 100644
--- a/languages/ko-KR/plugin.info
+++ b/languages/ko-KR/plugin.info
@@ -2,7 +2,7 @@
"title": "$:/languages/ko-KR",
"name": "ko-KR",
"plugin-type": "language",
- "description": "Korean (Korea Republic)",
+ "description": "한국어 (대한민국)",
"author": "Myeongjin",
"core-version": ">=5.1.4"
}
diff --git a/languages/mk-MK/plugin.info b/languages/mk-MK/plugin.info
index 1e96fe2e1..8c6481dd0 100644
--- a/languages/mk-MK/plugin.info
+++ b/languages/mk-MK/plugin.info
@@ -2,7 +2,7 @@
"title": "$:/languages/mk-MK",
"name": "mk-MK",
"plugin-type": "language",
- "description": "Macedonian (North Macedonia)",
+ "description": "Македонски (Македонија)",
"author": "Nikola Dio Petkovski",
"core-version": ">=5.1.4"
}
diff --git a/languages/nl-NL/plugin.info b/languages/nl-NL/plugin.info
index 98bed8d9d..328d2c5f8 100644
--- a/languages/nl-NL/plugin.info
+++ b/languages/nl-NL/plugin.info
@@ -2,7 +2,7 @@
"title": "$:/languages/nl-NL",
"name": "nl-NL",
"plugin-type": "language",
- "description": "Dutch (The Netherlands)",
+ "description": "Nederlands (Nederland)",
"author": "gernert",
"core-version": ">=5.1.5"
}
diff --git a/languages/pa-IN/plugin.info b/languages/pa-IN/plugin.info
index cf5f15dd2..0e23c51a8 100644
--- a/languages/pa-IN/plugin.info
+++ b/languages/pa-IN/plugin.info
@@ -2,7 +2,7 @@
"title": "$:/languages/pa-IN",
"name": "pa-IN",
"plugin-type": "language",
- "description": "Punjabi (India)",
+ "description": "ਪੰਜਾਬੀ (ਭਾਰਤ)",
"author": "Atul Grover",
"core-version": ">=5.0.8"
}
diff --git a/languages/pl-PL/plugin.info b/languages/pl-PL/plugin.info
index 823c3333d..8e9ae2649 100644
--- a/languages/pl-PL/plugin.info
+++ b/languages/pl-PL/plugin.info
@@ -2,7 +2,7 @@
"title": "$:/languages/pl-PL",
"name": "pl-PL",
"plugin-type": "language",
- "description": "Polish (Poland)",
+ "description": "Polski (Polska)",
"author": "Maurycy Zarzycki (Evidently Cube)",
"core-version": ">=5.2.0"
}
\ No newline at end of file
diff --git a/languages/pt-PT/plugin.info b/languages/pt-PT/plugin.info
index 972d0237c..87bb748c7 100644
--- a/languages/pt-PT/plugin.info
+++ b/languages/pt-PT/plugin.info
@@ -2,7 +2,7 @@
"title": "$:/languages/pt-PT",
"name": "pt-PT",
"plugin-type": "language",
- "description": "Portuguese (Portugal)",
+ "description": "Português (Portugal)",
"author": "Duarte Farrajota Ramos",
"core-version": ">=5.0.8"
}
diff --git a/languages/ru-RU/plugin.info b/languages/ru-RU/plugin.info
index 46bb50ab3..cfe3a7d15 100644
--- a/languages/ru-RU/plugin.info
+++ b/languages/ru-RU/plugin.info
@@ -2,7 +2,7 @@
"title": "$:/languages/ru-RU",
"name": "ru-RU",
"plugin-type": "language",
- "description": "Russian (Russia)",
+ "description": "Русский (Россия)",
"author": "AndreyYankin aka andrey013, Глеб Прохожев ",
"core-version": ">=5.0.0"
}
diff --git a/languages/sk-SK/plugin.info b/languages/sk-SK/plugin.info
index 525d86122..03d8c375c 100644
--- a/languages/sk-SK/plugin.info
+++ b/languages/sk-SK/plugin.info
@@ -2,7 +2,7 @@
"title": "$:/languages/sk-SK",
"name": "sk-SK",
"plugin-type": "language",
- "description": "Slovak (Slovakia)",
+ "description": "Slovenčina (Slovensko)",
"author": "Vlado Luknar",
"core-version": ">=5.0.0"
}
\ No newline at end of file
diff --git a/languages/sl-SI/plugin.info b/languages/sl-SI/plugin.info
index c002c5abe..04036bae1 100644
--- a/languages/sl-SI/plugin.info
+++ b/languages/sl-SI/plugin.info
@@ -2,7 +2,7 @@
"title": "$:/languages/sl-SI",
"name": "sl-SI",
"plugin-type": "language",
- "description": "Solvenian (Slovenia)",
+ "description": "Slovenščina (Slovenija)",
"author": "Tomaž Ficko",
"core-version": ">=5.0.0"
}
\ No newline at end of file
diff --git a/languages/sv-SE/plugin.info b/languages/sv-SE/plugin.info
index cec1b2a52..d278a54b6 100755
--- a/languages/sv-SE/plugin.info
+++ b/languages/sv-SE/plugin.info
@@ -2,7 +2,7 @@
"title": "$:/languages/sv-SE",
"name": "sv-SE",
"plugin-type": "language",
- "description": "Swedish (Sweden)",
+ "description": "Svenska (Sverige)",
"author": "SuperDOS",
"core-version": ">=5.1.0"
}
\ No newline at end of file
diff --git a/languages/zh-CN/plugin.info b/languages/zh-CN/plugin.info
index aff7a8c6c..cbd8e3588 100644
--- a/languages/zh-CN/plugin.info
+++ b/languages/zh-CN/plugin.info
@@ -2,7 +2,7 @@
"title": "$:/languages/zh-CN",
"name": "zh-CN",
"plugin-type": "language",
- "description": "Chinese (China)",
+ "description": "简体中文 (中国)",
"author": "BramChen",
"core-version": ">=5.0.8",
"dependents": ["$:/languages/zh-Hans"],
diff --git a/languages/zh-HK/Buttons.multids b/languages/zh-HK/Buttons.multids
new file mode 100644
index 000000000..4ec7a7628
--- /dev/null
+++ b/languages/zh-HK/Buttons.multids
@@ -0,0 +1,17 @@
+title: $:/language/Buttons/
+
+ControlPanel/Hint: 開啓控制台
+FoldOthers/Hint: 收合其他已開啓條目的內容
+FoldAll/Hint: 收合所有已開啓條目的內容
+UnfoldAll/Hint: 展開所有已開啓條目的內容
+Help/Caption: 説明
+Help/Hint: 顯示説明中心
+Home/Hint: 開啓首頁條目
+LayoutSwitcher/Hint: 開啓版面切換器
+Manager/Hint: 開啓條目管理器
+OpenControlPanel/Hint: 開啓控制台
+OpenWindow/Caption: 開啓於新視窗
+OpenWindow/Hint: 在新視窗中開啓條目
+Permaview/Hint: 設定瀏覽器網址列為直接連結到當前所有已開啓條目
+Timestamp/On/Caption: 時間戳記開啓
+Stamp/New/Text: 片段的文字。(記得在 `caption` 欄位中新增一個説明性的標題)。
diff --git a/languages/zh-HK/ControlPanel.multids b/languages/zh-HK/ControlPanel.multids
new file mode 100644
index 000000000..44e43bcac
--- /dev/null
+++ b/languages/zh-HK/ControlPanel.multids
@@ -0,0 +1,31 @@
+title: $:/language/ControlPanel/
+
+Basics/DefaultTiddlers/BottomHint: 標題含空白時請使用 [[雙中括弧]],或者您可用 {{保留開啓中的條目順序||$:/snippets/retain-story-ordering-button}}
+Basics/DefaultTiddlers/TopHint: 預設開啓的條目
+KeyboardShortcuts/Platform/All: 所有平台
+KeyboardShortcuts/Platform/Mac: 僅 Macintosh 平台
+KeyboardShortcuts/Platform/NonMac: 僅非 Macintosh 平台
+KeyboardShortcuts/Platform/Linux: 僅 Linux 平台
+KeyboardShortcuts/Platform/NonLinux: 僅非 Linux 平台
+KeyboardShortcuts/Platform/Windows: 僅 Windows 平台
+KeyboardShortcuts/Platform/NonWindows: 僅非 Windows 平台
+Plugins/Enable/Caption: 啓用
+Plugins/Enable/Hint: 重新載入頁面時啓用此插件
+Plugins/OpenPluginLibrary: 開啓插件程式庫
+Parsing/Hint: 在此您可以全域停用或啓用維基解析規則。要使更改生效,請儲存並重新載入您的維基。停用某些解析規則,會妨礙 <$text text="TiddlyWiki"/> 正常運作。可使用[[安全模式|https://tiddlywiki.com/#SafeMode]]恢復正常操作。
+Saving/DownloadSaver/AutoSave/Hint: 啓用下載儲存模組的自動儲存
+Saving/GitService/GitHub/Password: 密碼、OAUTH 權杖,或個人存取權杖 (詳見 [[GitHub 説明頁面|https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line]])
+Saving/GitService/GitLab/Password: 個人存取權杖的 API (詳見 [[GitLab 説明頁面|https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html]])
+Settings/CamelCase/Caption: 駝峯式維基鏈接
+Settings/CamelCase/Hint: 您可以全域停用駝峯式短語自動鏈接。須儲存後重新載入,方才生效。
+Settings/CamelCase/Description: 啓用自動駝峯式鏈接
+Settings/EditorToolbar/Hint: 啓用或停用編輯器工具列︰
+Settings/InfoPanelMode/Sticky/Description: 條目資訊面板保持開啓狀態,直到明確關閉
+Settings/LinkToBehaviour/Caption: 條目開啓行為
+Settings/LinkToBehaviour/OpenAbove: 開啓於當前條目之上
+Settings/LinkToBehaviour/OpenBelow: 開啓於當前條目之下
+Settings/LinkToBehaviour/OpenAtTop: 開啓於故事河的頂端
+Settings/LinkToBehaviour/OpenAtBottom: 開啓於故事河的底部
+Settings/MissingLinks/Description: 啓用鏈接到佚失條目
+Settings/NavigationAddressBar/Permaview/Description: 包括目標條目和當前已開啓的條目序列
+Settings/PerformanceInstrumentation/Description: 啓用效能檢測
\ No newline at end of file
diff --git a/languages/zh-HK/Docs/ModuleTypes.multids b/languages/zh-HK/Docs/ModuleTypes.multids
new file mode 100644
index 000000000..c7915f3aa
--- /dev/null
+++ b/languages/zh-HK/Docs/ModuleTypes.multids
@@ -0,0 +1,3 @@
+title: $:/language/Docs/ModuleTypes/
+
+startup: 啓動時期的功能函數。
diff --git a/languages/zh-HK/Fields.multids b/languages/zh-HK/Fields.multids
new file mode 100644
index 000000000..002a625a5
--- /dev/null
+++ b/languages/zh-HK/Fields.multids
@@ -0,0 +1,5 @@
+title: $:/language/Docs/Fields/
+
+class: 渲染條目時,套用到條目的 CSS 類別 - 請參閲[[依自訂類別的自訂樣式|Custom styles by user-class]]。也適用於[[互動視窗|Modals]]
+description: 插件的説明、描述
+toc-link: 若設定為 ''no'',則抑制目錄樹中的條目鏈接。
\ No newline at end of file
diff --git a/languages/zh-HK/GettingStarted.tid b/languages/zh-HK/GettingStarted.tid
new file mode 100644
index 000000000..1988e17de
--- /dev/null
+++ b/languages/zh-HK/GettingStarted.tid
@@ -0,0 +1,18 @@
+title: GettingStarted
+
+\define lingo-base() $:/language/ControlPanel/Basics/
+歡迎使用 ~TiddlyWiki 及參與 ~TiddlyWiki 社羣
+
+開始將重要資訊存放於 ~TiddlyWiki 之前,確認您可以可靠地儲存變更是很重要的。詳細資訊請參閲 https://tiddlywiki.com/#GettingStarted
+
+!! 設定此 ~TiddlyWiki
+
+
+
+|tc-table-no-border tc-first-col-min-width tc-first-link-nowrap|k
+| <$link to="$:/SiteTitle"><>$link>|<$edit-text tiddler="$:/SiteTitle" default="" tag="input"/> |
+| <$link to="$:/SiteSubtitle"><>$link>|<$edit-text tiddler="$:/SiteSubtitle" default="" tag="input"/> |
+|^ <$link to="$:/DefaultTiddlers"><>$link> <>|<$edit tag="textarea" tiddler="$:/DefaultTiddlers"/> //<>// |
+
+
+請參閲[[控制枱|$:/ControlPanel]]查看更多選項。
\ No newline at end of file
diff --git a/languages/zh-HK/Help/listen.tid b/languages/zh-HK/Help/listen.tid
new file mode 100644
index 000000000..f3ad22e92
--- /dev/null
+++ b/languages/zh-HK/Help/listen.tid
@@ -0,0 +1,35 @@
+title: $:/language/Help/listen
+description: 為 TiddlyWiki 提供一個 HTTP 伺服器介面
+
+通過 HTTP 提供一個維基服務。
+
+listen 命令使用[[命名的命令參數|NamedCommandParameters]]:
+
+```
+--listen [=]...
+```
+
+所有參數都是可選的, 具有安全的預設值, 可以按任意順序指定。認可的參數有:
+
+* ''host'' - 可選的主機名稱, (預設為 "127.0.0.1" 或名為 "localhost")
+* ''path-prefix'' - 可選的路徑前綴
+* ''port'' - 偵聽的埠號;非數值會被解譯為一個系統環境變數,從其中提取埠號 (預設為 "8080")
+* ''credentials'' - 憑證 CSV 檔案的路徑名(相對於維基資料夾)
+* ''anon-username'' - 匿名使用者的編輯署名
+* ''username'' - 可選的基本驗證使用者名稱
+* ''password'' - 可選的基本驗證密碼
+* ''authenticated-user-header'' - 可選的 HTTP 請求功能參數名稱,用於受信任身份驗證
+* ''readers'' - 允許讀取此維基,以逗號分隔的使用者名稱的清單
+* ''writers'' - 允許寫入此維基,以逗號分隔的使用者名稱的清單
+* ''csrf-disable'' - 設定為 "yes" 以停用 CSRF 檢查 (預設為 "no")
+* ''sse-enabled'' - 設定為 "yes" 以啟用伺服器傳送的事件 (預設為 "no")
+* ''root-tiddler'' - 服務的基本條目 (預設為 "$:/core/save/all")
+* ''root-render-type'' - 呈現的基本條目的內容類型 (預設為 "text/plain")
+* ''root-serve-type'' - 服務的基本條目的內容類型 (預設為 "text/html")
+* ''tls-cert'' - TLS 證書檔案的路徑名(相對於維基資料夾)
+* ''tls-key'' - TLS 密鑰檔案的路徑名(相對於維基資料夾)
+* ''debug-level'' - 可選的偵錯層級;設定為 "debug" 來檢視請求的詳細資訊;(預設為 "none")
+* ''gzip'' - 設為 "yes" 以啟用某些 http 端點的 gzip 壓縮 (預設為 "no")
+* ''use-browser-cache'' - 設定為 "yes" ,允許瀏覽器快取回應,以節省頻寬(預設值為 "no")
+
+有關向整個本地網路開啟實例的資訊,以及可能的安全問題,請參閲 TiddlyWiki.com 的 WebServer 條目。
diff --git a/languages/zh-HK/Help/notfound.tid b/languages/zh-HK/Help/notfound.tid
new file mode 100644
index 000000000..52bf9bd25
--- /dev/null
+++ b/languages/zh-HK/Help/notfound.tid
@@ -0,0 +1,3 @@
+title: $:/language/Help/notfound
+
+無此項目説明
\ No newline at end of file
diff --git a/languages/zh-HK/Help/password.tid b/languages/zh-HK/Help/password.tid
new file mode 100644
index 000000000..1560ef72c
--- /dev/null
+++ b/languages/zh-HK/Help/password.tid
@@ -0,0 +1,10 @@
+title: $:/language/Help/password
+description: 設定用以加密的密碼
+
+設定用以加密的密碼
+
+```
+--password
+```
+
+''請注意'':這不是用於提供 TiddlyWiki 具有密碼保護功能。相反地,請看 [[ServerCommand]] 的密碼選項説明。
diff --git a/languages/zh-HK/Help/render.tid b/languages/zh-HK/Help/render.tid
new file mode 100644
index 000000000..bcc924113
--- /dev/null
+++ b/languages/zh-HK/Help/render.tid
@@ -0,0 +1,34 @@
+title: $:/language/Help/render
+description: 呈現個別條目到檔案
+
+呈現由篩選器標識的個別條目,並將結果儲存到指定的檔案。
+
+可選擇性地指定範本條目名稱。在此情況下,不是直接呈現每個條目,而是使用設為正在呈現的條目名稱的 "currentTiddler" 變數,來呈現範本條目。
+
+也可以選擇性地指定附加變數的名稱和值。
+
+```
+--render [] [] [] [ [] [] ]*
+```
+
+* ''tiddler-filter'': 標識要呈現的條目的篩選器
+* ''filename-filter'': 可選的篩選器,轉換條目名稱至路徑名。如果省略,預設為 `[is[tiddler]addsuffix[.html]]`,其使用未改變的條目名稱為檔名
+* ''template'': 可選的範本,用於呈現每個條目
+* ''render-type'': 可選的呈現類型:`text/html` (預設值) 會傳回完整的 HTML 文字,而 `text/plain` 只會傳迴文字內容 (即其忽略 HTML 標記與其他不可印出的資料)
+* ''name'': 可選的變數名稱
+* ''value'': 可選的變數值
+
+預設情況下,檔名被解析為相對於發行版資料夾的 `output` 子資料夾。`--output` 命令可用於將輸出指到一個不同的資料夾。
+
+附註:
+
+* 輸出資料夾不清除任何現有的檔案
+* 檔名的路徑中,任何不存在的資料夾,將自動建立。
+* 當正呈現的條目名稱中帶有空格,請注意同時使用命令列介面所要求的引號,與 TiddlyWiki 的雙重方括號:`--render "[[Motovun Jack.jpg]]"`
+* 所選的項目被設定為當前正在呈現的條目名稱,以此評估檔名篩選器,允條目名稱用作基礎計算的檔名。例如,`[encodeuricomponent[]addprefix[static/]]` 為每個條目名稱套用 URI 編碼,然後增加首碼 `static/`
+* `--render` 命令是已棄用的 `--rendertiddler` 和 `--rendertiddlers` 的一個更靈活的替代命令。
+
+範例:
+
+* `--render "[!is[system]]" "[encodeuricomponent[]addprefix[tiddlers/]addsuffix[.html]]"` -- 呈現所有非系統條目為 "tiddlers" 子資料夾中的檔案,檔名為 URL 編碼的條目名稱和副檔名 HTML
+* `--render '.' 'tiddlers.json' 'text/plain' '$:/core/templates/exporters/JsonFile' 'exportFilter' '[tag[HelloThere]]'` -- 將標籤為 "HelloThere" 的條目渲染到名為 "tiddlers.json" 的 JSON 檔案
\ No newline at end of file
diff --git a/languages/zh-HK/Help/savetiddlers.tid b/languages/zh-HK/Help/savetiddlers.tid
new file mode 100644
index 000000000..57231bee6
--- /dev/null
+++ b/languages/zh-HK/Help/savetiddlers.tid
@@ -0,0 +1,16 @@
+title: $:/language/Help/savetiddlers
+description: 將一羣條目的原始內容儲存到一個資料夾
+
+(請注意:`--savetiddlers` 命令已被棄用,而支援新的、更靈活得 `--save` 命令)
+
+儲存一羣條目的原始文字或二進位格式到指定的資料夾。
+
+```
+--savetiddlers [noclean]
+```
+
+預設情況下,路徑名被解析為相對於發行版資料夾的 `output` 子資料夾。 `--output` 命令可以用於將輸出指定到一個不同的資料夾。
+
+儲存指定的檔案之前,會先清除輸出目錄的現有檔案。可藉由指定 ''noclean'' 旗標,停用該刪除動作。
+
+自動建立在路徑中任何缺少的資料夾。
diff --git a/languages/zh-HK/Help/server.tid b/languages/zh-HK/Help/server.tid
new file mode 100644
index 000000000..d42d7fd59
--- /dev/null
+++ b/languages/zh-HK/Help/server.tid
@@ -0,0 +1,44 @@
+title: $:/language/Help/server
+description: (已棄用:請參閲 'listen' 命令)提供一個 HTTP 伺服器介面到 TiddlyWiki
+
+在伺服器中內建 TiddlyWiki5 是非常簡單。雖與 TiddlyWeb 相容,但不支援許多健全網際網路面向的使用方式所需的功能。
+
+提供呈現一個指定條目,也可將個別條目編碼成 JSON,且支援基本的 HTTP 操作 `GET`、`PUT` 及 `DELETE`.
+
+```
+--server
+```
+
+參數説明:
+
+* ''port'' - 要偵聽的埠號;非數值會被解譯為一個系統環境變數,從其中提取埠號 (預設為 "8080")
+* ''root-tiddler'' - 服務的基本條目 (預設為 "$:/core/save/all")
+* ''root-render-type'' - 呈現的基本條目的內容類型 (預設為 "text/plain")
+* ''root-serve-type'' - 服務的基本條目的內容類型 (預設為 "text/html")
+* ''username'' - 預設的編輯者署名
+* ''password'' - 可選的基本驗證密碼
+* ''host'' - 可選的主機名稱, (預設為 "127.0.0.1" 或名為 "localhost")
+* ''path-prefix'' - 可選的的路徑前綴
+* ''debug-level'' - 可選的偵錯層級;設定為 "debug" 來檢視請求的詳細資訊;(預設為 "none")
+
+若指定密碼參數,瀏覽器將提示使用者輸入帳號與密碼。注意,密碼係以明碼方式傳遞,應只在受信任的網路或 HTTPS 上使用。
+
+例如:
+
+```
+--server 8080 $:/core/save/all text/plain text/html MyUserName passw0rd
+```
+
+若您需要設定主機名稱或路徑前綴,而不要求輸入密碼,則可以指定空字串的使用者名和密碼。
+
+```
+--server 8080 $:/core/save/all text/plain text/html "" "" 192.168.0.245
+```
+
+使用這樣的位址,會將您的系統暴露給本地網路。有關向整個本地網路開啟實例的資訊,以及可能的安全問題,請參閲 TiddlyWiki.com 的 WebServer 條目。
+
+同時執行多個 TiddlyWiki 伺服器,須分別指定不同的埠號。使用環境變數,有助於將埠號傳遞給 Node.js 進程。本示例引用一個名為 "MY_PORT_NUMBER" 的環境變數:
+
+```
+--server MY_PORT_NUMBER $:/core/save/all text/plain text/html MyUserName passw0rd
+```
\ No newline at end of file
diff --git a/languages/zh-HK/Help/setfield.tid b/languages/zh-HK/Help/setfield.tid
new file mode 100644
index 000000000..8526688d7
--- /dev/null
+++ b/languages/zh-HK/Help/setfield.tid
@@ -0,0 +1,17 @@
+title: $:/language/Help/setfield
+description: 準備用於外部條目
+
+//請注意此命令是試驗性的,且可能會更改或在最終定稿前被替換//
+
+設定一羣條目的指定欄位到 wikifying 範本條目的結果,其中的 `currentTiddler` 變數設定為各該條目。
+
+```
+--setfield
+```
+
+參數説明:
+
+* ''filter'' - 受影響的辨識條目的篩選條件
+* ''fieldname'' - 要修改的欄位(預設為 "text")
+* ''templatetitle'' - 該條目 wikify 到指定欄位。若為空白或丟失,則刪除指定的欄位
+* ''rendertype'' - 要呈現的文本類型(預設為 "text/plain"; "text/html" 可以用於包含 HTML 標記))
diff --git a/languages/zh-HK/Misc.multids b/languages/zh-HK/Misc.multids
new file mode 100644
index 000000000..7bed3c70e
--- /dev/null
+++ b/languages/zh-HK/Misc.multids
@@ -0,0 +1,5 @@
+title: $:/language/
+
+InternalJavaScriptError/Hint: 喔,真是令人尷尬。建議刷新您的瀏覽器,重新啓動 TiddlyWiki
+LayoutSwitcher/Description: 開啓版面切換器
+Shortcuts/Input/AdvancedSearch/Hint: 從側邊欄搜尋欄位內開啓[[進階搜尋|$:/AdvancedSearch]]面板
diff --git a/languages/zh-HK/SideBar.multids b/languages/zh-HK/SideBar.multids
new file mode 100644
index 000000000..450d9cb87
--- /dev/null
+++ b/languages/zh-HK/SideBar.multids
@@ -0,0 +1,3 @@
+title: $:/language/SideBar/
+
+Open/Caption: 開啓
diff --git a/languages/zh-HK/Snippets/ProcedureDefinition.tid b/languages/zh-HK/Snippets/ProcedureDefinition.tid
new file mode 100644
index 000000000..94e8a6b3c
--- /dev/null
+++ b/languages/zh-HK/Snippets/ProcedureDefinition.tid
@@ -0,0 +1,7 @@
+title: $:/language/Snippets/ProcedureDefinition
+tags: $:/tags/TextEditor/Snippet
+caption: 程序定義
+
+\procedure procName(param1:"預設值",param2)
+這裏就是您的文字了。
+\end
diff --git a/languages/zh-HK/ThemeTweaks.multids b/languages/zh-HK/ThemeTweaks.multids
new file mode 100644
index 000000000..aa26be97a
--- /dev/null
+++ b/languages/zh-HK/ThemeTweaks.multids
@@ -0,0 +1,3 @@
+title: $:/language/ThemeTweaks/
+
+Options/StickyTitles/Hint: 使條目名稱"黏着"於瀏覽器視窗的頂端
diff --git a/languages/zh-HK/plugin.info b/languages/zh-HK/plugin.info
index ab9b8b39b..1849f7ea9 100644
--- a/languages/zh-HK/plugin.info
+++ b/languages/zh-HK/plugin.info
@@ -2,7 +2,7 @@
"title": "$:/languages/zh-HK",
"name": "zh-HK",
"plugin-type": "language",
- "description": "Chinese (Hong Kong)",
+ "description": "繁體中文 (香港)",
"author": "BramChen",
"core-version": ">=5.0.8",
"dependents": ["$:/languages/zh-Hant"],
diff --git a/languages/zh-Hans/ControlPanel.multids b/languages/zh-Hans/ControlPanel.multids
index 258c051ad..33bc5e9ce 100644
--- a/languages/zh-Hans/ControlPanel.multids
+++ b/languages/zh-Hans/ControlPanel.multids
@@ -236,3 +236,7 @@ ViewTemplateBody/Caption: 查看模板主体
ViewTemplateBody/Hint: 默认的查看模板使用此规则级联,动态选择模板以显示条目的主体。
ViewTemplateTitle/Caption: 查看模板标题
ViewTemplateTitle/Hint: 默认的查看模板使用此规则级联,动态选择模板以显示条目的标题。
+ViewTemplateSubtitle/Caption: 查看模板副标题
+ViewTemplateSubtitle/Hint: 默认的查看模板使用此规则级联,动态选择模板以显示条目的副标题。
+ViewTemplateTags/Caption: 查看模板标签区
+ViewTemplateTags/Hint: 默认的查看模板使用此规则级联,动态选择模板以显示条目的标签区域。
diff --git a/languages/zh-Hans/Snippets/ProcedureDefinition.tid b/languages/zh-Hans/Snippets/ProcedureDefinition.tid
index d6445349b..3b4f60212 100644
--- a/languages/zh-Hans/Snippets/ProcedureDefinition.tid
+++ b/languages/zh-Hans/Snippets/ProcedureDefinition.tid
@@ -2,6 +2,6 @@ title: $:/language/Snippets/ProcedureDefinition
tags: $:/tags/TextEditor/Snippet
caption: 程序定义
-\procedure procName(param1:"预设值",param2)
-这里就是您的文字了。
+\procedure procName(param1:"默认值",param2)
+这里就是您的文本了。
\end
diff --git a/languages/zh-Hans/Types/text_vnd.tiddlywiki_multiple.tid b/languages/zh-Hans/Types/text_vnd.tiddlywiki_multiple.tid
new file mode 100644
index 000000000..c38ddf015
--- /dev/null
+++ b/languages/zh-Hans/Types/text_vnd.tiddlywiki_multiple.tid
@@ -0,0 +1,5 @@
+title: $:/language/Docs/Types/text/vnd.tiddlywiki-multiple
+description: 复合条目
+name: text/vnd.tiddlywiki-multiple
+group: 开发者
+group-sort: 2
diff --git a/languages/zh-Hans/plugin.info b/languages/zh-Hans/plugin.info
index 37532db38..4c66c6186 100644
--- a/languages/zh-Hans/plugin.info
+++ b/languages/zh-Hans/plugin.info
@@ -2,7 +2,7 @@
"title": "$:/languages/zh-Hans",
"name": "zh-Hans",
"plugin-type": "language",
- "description": "Chinese (Simplified)",
+ "description": "简体中文",
"author": "BramChen",
"core-version": ">=5.0.8",
"plugin-priority": 100
diff --git a/languages/zh-Hant/ControlPanel.multids b/languages/zh-Hant/ControlPanel.multids
index 497b72e49..853ca98d5 100644
--- a/languages/zh-Hant/ControlPanel.multids
+++ b/languages/zh-Hant/ControlPanel.multids
@@ -235,4 +235,8 @@ Tools/Download/Full/Caption: 下載完整副本
ViewTemplateBody/Caption: 檢視範本主體
ViewTemplateBody/Hint: 預設的檢視範本使用此規則級聯,動態選擇範本以顯示條目的主體。
ViewTemplateTitle/Caption: 檢視範本標題
-ViewTemplateTitle/Hint: 預設的檢視範本使用此規則級聯,動態選擇範本以顯示條目的標題。
\ No newline at end of file
+ViewTemplateTitle/Hint: 預設的檢視範本使用此規則級聯,動態選擇範本以顯示條目的標題。
+ViewTemplateSubtitle/Caption: 檢視範本副標題
+ViewTemplateSubtitle/Hint: 預設的檢視範本使用此規則級聯,動態選擇範本以顯示條目的副標題。
+ViewTemplateTags/Caption: 檢視範本標籤
+ViewTemplateTags/Hint: 預設的檢視範本使用此規則級聯,動態選擇範本以顯示條目的標籤。
\ No newline at end of file
diff --git a/languages/zh-Hant/Types/text_vnd.tiddlywiki_multiple.tid b/languages/zh-Hant/Types/text_vnd.tiddlywiki_multiple.tid
new file mode 100644
index 000000000..aee5a301e
--- /dev/null
+++ b/languages/zh-Hant/Types/text_vnd.tiddlywiki_multiple.tid
@@ -0,0 +1,5 @@
+title: $:/language/Docs/Types/text/vnd.tiddlywiki-multiple
+description: 複合條目
+name: text/vnd.tiddlywiki-multiple
+group: 開發者
+group-sort: 2
diff --git a/languages/zh-Hant/plugin.info b/languages/zh-Hant/plugin.info
index 596c5edfb..e97653732 100644
--- a/languages/zh-Hant/plugin.info
+++ b/languages/zh-Hant/plugin.info
@@ -2,7 +2,7 @@
"title": "$:/languages/zh-Hant",
"name": "zh-Hant",
"plugin-type": "language",
- "description": "Chinese (Traditional)",
+ "description": "繁體中文",
"author": "BramChen",
"core-version": ">=5.0.8",
"plugin-priority": 100
diff --git a/languages/zh-TW/plugin.info b/languages/zh-TW/plugin.info
index d342f9a76..206561816 100644
--- a/languages/zh-TW/plugin.info
+++ b/languages/zh-TW/plugin.info
@@ -2,7 +2,7 @@
"title": "$:/languages/zh-TW",
"name": "zh-TW",
"plugin-type": "language",
- "description": "Chinese (Taiwan)",
+ "description": "繁體中文 (台灣)",
"author": "BramChen",
"core-version": ">=5.0.8",
"dependents": ["$:/languages/zh-Hant"],
diff --git a/plugins/tiddlywiki/browser-storage/startup.js b/plugins/tiddlywiki/browser-storage/startup.js
index 552de93d2..e06d7bf48 100644
--- a/plugins/tiddlywiki/browser-storage/startup.js
+++ b/plugins/tiddlywiki/browser-storage/startup.js
@@ -26,11 +26,11 @@ var BrowserStorageUtil = require("$:/plugins/tiddlywiki/browser-storage/util.js"
exports.startup = function() {
var self = this;
-
- // If not exists, add ENABLED tiddler with default value "yes"
- if(!$tw.wiki.getTiddler(ENABLED_TITLE)) {
- $tw.wiki.addTiddler({title: ENABLED_TITLE, text: "yes"});
- }
+
+ // If not exists, add ENABLED tiddler with default value "yes"
+ if(!$tw.wiki.getTiddler(ENABLED_TITLE)) {
+ $tw.wiki.addTiddler({title: ENABLED_TITLE, text: "yes"});
+ }
// Compute our prefix for local storage keys
var prefix = "tw5#" + window.location.pathname + "#";
// Make a logger
@@ -68,11 +68,11 @@ exports.startup = function() {
persistPermissionRequested = false,
requestPersistenceOnFirstSave = function() {
$tw.hooks.addHook("th-saving-tiddler", function(tiddler) {
- if (!persistPermissionRequested) {
+ if(!persistPermissionRequested) {
var filteredChanges = filterFn.call($tw.wiki, function(iterator) {
iterator(tiddler,tiddler.getFieldString("title"));
});
- if (filteredChanges.length > 0) {
+ if(filteredChanges.length > 0) {
// The tiddler will be saved to local storage, so request persistence
requestPersistence();
persistPermissionRequested = true;
@@ -84,9 +84,9 @@ exports.startup = function() {
// Request the browser to never evict the localstorage. Some browsers such as firefox
// will prompt the user. To make the decision easier for the user only prompt them
// when they click the save button on a tiddler which will be stored to localstorage.
- if (navigator.storage && navigator.storage.persist) {
+ if(navigator.storage && navigator.storage.persist) {
navigator.storage.persisted().then(function(isPersisted) {
- if (!isPersisted) {
+ if(!isPersisted) {
setPersistedState("not requested yet");
requestPersistenceOnFirstSave();
} else {
diff --git a/plugins/tiddlywiki/browser-storage/util.js b/plugins/tiddlywiki/browser-storage/util.js
index 7474a367c..0f55ada7d 100644
--- a/plugins/tiddlywiki/browser-storage/util.js
+++ b/plugins/tiddlywiki/browser-storage/util.js
@@ -53,7 +53,7 @@ BrowserStorageUtil.prototype.saveTiddlerToLocalStorage = function(title) {
// Get the tiddler
var tiddler = $tw.wiki.getTiddler(title);
if(tiddler) {
- if (this.wiki.tiddlerExists(title)) {
+ if(this.wiki.tiddlerExists(title)) {
// This is not a shadow tiddler
console.log("browser-storage: Saving",title);
// Get the JSON of the tiddler
diff --git a/plugins/tiddlywiki/codemirror/settings/cursorBlinkRate.tid b/plugins/tiddlywiki/codemirror/settings/cursorBlinkRate.tid
index ba540ea4c..59cf44fcb 100644
--- a/plugins/tiddlywiki/codemirror/settings/cursorBlinkRate.tid
+++ b/plugins/tiddlywiki/codemirror/settings/cursorBlinkRate.tid
@@ -4,4 +4,4 @@ caption: {{$:/language/codemirror/cursorBlinkRate/hint}}
\define lingo-base() $:/language/codemirror/cursorBlinkRate/
-|<$link to="$:/config/codemirror/cursorBlinkRate"><>$link> |<$edit-text tiddler="$:/config/codemirror/cursorBlinkRate" default="" placeholder="cursorBlinkRate" tag="input"/> |
+|<$link to="$:/config/codemirror/cursorBlinkRate"><>$link> |<$edit-text tiddler="$:/config/codemirror/cursorBlinkRate" default="" placeholder="cursorBlinkRate" tag="input" type="number"/> |
diff --git a/plugins/tiddlywiki/codemirror/settings/indentUnit.tid b/plugins/tiddlywiki/codemirror/settings/indentUnit.tid
index b463f3e78..36518d938 100644
--- a/plugins/tiddlywiki/codemirror/settings/indentUnit.tid
+++ b/plugins/tiddlywiki/codemirror/settings/indentUnit.tid
@@ -4,4 +4,4 @@ caption: {{$:/language/codemirror/indentUnit/hint}}
\define lingo-base() $:/language/codemirror/indentUnit/
-|<$link to="$:/config/codemirror/indentUnit"><>$link> |<$edit-text tiddler="$:/config/codemirror/indentUnit" default="" placeholder="indentUnit" tag="input"/> |
+|<$link to="$:/config/codemirror/indentUnit"><>$link> |<$edit-text tiddler="$:/config/codemirror/indentUnit" default="" placeholder="indentUnit" tag="input" type="number"/> |
diff --git a/plugins/tiddlywiki/codemirror/settings/tabSize.tid b/plugins/tiddlywiki/codemirror/settings/tabSize.tid
index 1ca932b19..76092465f 100644
--- a/plugins/tiddlywiki/codemirror/settings/tabSize.tid
+++ b/plugins/tiddlywiki/codemirror/settings/tabSize.tid
@@ -4,4 +4,4 @@ caption: {{$:/language/codemirror/tabSize/hint}}
\define lingo-base() $:/language/codemirror/tabSize/
-|<$link to="$:/config/codemirror/tabSize"><>$link> |<$edit-text tiddler="$:/config/codemirror/tabSize" default="" placeholder="tabSize" tag="input"/> |
+|<$link to="$:/config/codemirror/tabSize"><>$link> |<$edit-text tiddler="$:/config/codemirror/tabSize" default="" placeholder="tabSize" tag="input" type="number"/> |
diff --git a/plugins/tiddlywiki/d3/barwidget.js b/plugins/tiddlywiki/d3/barwidget.js
index 18ada16c9..08b71cff2 100644
--- a/plugins/tiddlywiki/d3/barwidget.js
+++ b/plugins/tiddlywiki/d3/barwidget.js
@@ -122,7 +122,7 @@ BarWidget.prototype.createChart = function(parent,nextSibling) {
return {
domNode: svgElement[0][0],
updateChart: function() {
- if (self.barGrouped !== "no") {
+ if(self.barGrouped !== "no") {
transitionGrouped();
} else {
transitionStacked();
@@ -160,14 +160,14 @@ BarWidget.prototype.createChart = function(parent,nextSibling) {
var x = 1 / (0.1 + Math.random()),
y = 2 * Math.random() - 0.5,
z = 10 / (0.1 + Math.random());
- for (var i = 0; i < n; i++) {
+ for(var i = 0; i < n; i++) {
var w = (i / n - y) * z;
a[i] += x * Math.exp(-w * w);
}
}
var a = [], i;
- for (i = 0; i < n; ++i) a[i] = o + o * Math.random();
- for (i = 0; i < 5; ++i) bump(a);
+ for(i = 0; i < n; ++i) a[i] = o + o * Math.random();
+ for(i = 0; i < 5; ++i) bump(a);
return a.map(function(d, i) { return {x: i, y: Math.max(0, d)}; });
}
};
diff --git a/plugins/tiddlywiki/filesystem/filesystemadaptor.js b/plugins/tiddlywiki/filesystem/filesystemadaptor.js
index 1779855df..451928101 100644
--- a/plugins/tiddlywiki/filesystem/filesystemadaptor.js
+++ b/plugins/tiddlywiki/filesystem/filesystemadaptor.js
@@ -22,7 +22,9 @@ function FileSystemAdaptor(options) {
this.boot = options.boot || $tw.boot;
this.logger = new $tw.utils.Logger("filesystem",{colour: "blue"});
// Create the /tiddlers folder if it doesn't exist
- $tw.utils.createDirectory(this.boot.wikiTiddlersPath);
+ if(this.boot.wikiTiddlersPath) {
+ $tw.utils.createDirectory(this.boot.wikiTiddlersPath);
+ }
}
FileSystemAdaptor.prototype.name = "filesystem";
@@ -52,6 +54,10 @@ The type is found by looking up the extension in $tw.config.fileExtensionInfo (e
It is the responsibility of the filesystem adaptor to update this.boot.files for new files that are created.
*/
FileSystemAdaptor.prototype.getTiddlerFileInfo = function(tiddler,callback) {
+ // Error if we don't have a this.boot.wikiTiddlersPath
+ if(!this.boot.wikiTiddlersPath) {
+ return callback("filesystemadaptor requires a valid wiki folder");
+ }
// Always generate a fileInfo object when this fuction is called
var title = tiddler.fields.title, newInfo, pathFilters, extFilters,
fileInfo = this.boot.files[title];
@@ -84,7 +90,7 @@ FileSystemAdaptor.prototype.saveTiddler = function(tiddler,callback,options) {
}
$tw.utils.saveTiddlerToFile(tiddler,fileInfo,function(err,fileInfo) {
if(err) {
- if ((err.code == "EPERM" || err.code == "EACCES") && err.syscall == "open") {
+ if((err.code == "EPERM" || err.code == "EACCES") && err.syscall == "open") {
fileInfo = fileInfo || self.boot.files[tiddler.fields.title];
fileInfo.writeError = true;
self.boot.files[tiddler.fields.title] = fileInfo;
@@ -131,7 +137,7 @@ FileSystemAdaptor.prototype.deleteTiddler = function(title,callback,options) {
if(fileInfo) {
$tw.utils.deleteTiddlerFile(fileInfo,function(err,fileInfo) {
if(err) {
- if ((err.code == "EPERM" || err.code == "EACCES") && err.syscall == "unlink") {
+ if((err.code == "EPERM" || err.code == "EACCES") && err.syscall == "unlink") {
// Error deleting the file on disk, should fail gracefully
$tw.syncer.displayError("Server desynchronized. Error deleting file for deleted tiddler \"" + title + "\"",err);
return callback(null,fileInfo);
diff --git a/plugins/tiddlywiki/geospatial/docs/geomap.tid b/plugins/tiddlywiki/geospatial/docs/geomap.tid
index ba933ec8a..e72d3c156 100644
--- a/plugins/tiddlywiki/geospatial/docs/geomap.tid
+++ b/plugins/tiddlywiki/geospatial/docs/geomap.tid
@@ -53,13 +53,10 @@ If no base layers are defined by `<$geobaselayer>` widgets within the `<$geomap>
lat="51.751944"
long="-1.257778"
alt="0"
- text="""This is Oxford!"""/>
+ text="""{{$:/core/images/star-filled}} This is Oxford!"""/>
<$data title="Output" text="""<$geomap
state=<>
>
- <$list filter="[all[tiddlers+shadows]tag[$:/tags/GeoMarker]]">
- <$geolayer lat={{!!lat}} long={{!!long}} alt={{!!alt}} color={{!!color}}/>
- $list>
$geomap>
"""/>
<$data $tiddler="$:/plugins/tiddlywiki/geospatial"/>
@@ -80,7 +77,24 @@ If no base layers are defined by `<$geobaselayer>` widgets within the `<$geomap>
$list>
$geomap>
"""/>
-<$data $tiddler="ui/PopupTemplate"/>
+<$data
+ title="Oxford"
+ tags="$:/tags/GeoMarker"
+ caption="Oxford"
+ lat="51.751944"
+ long="-1.257778"
+ alt="0"
+ text="""{{$:/core/images/star-filled}} This is Oxford!"""/>
+ properties=""/>
+<$data title="ui/PopupTemplate" text="""
+
+ <$let currentTiddler={{{ [jsonget[properties],[title]] }}}>
+ <$link><$text text=<>/>$link>
+
+ <$transclude $tiddler=<> $mode="block"/>
+ $let>
+
+"""/>
<$data $tiddler="$:/plugins/tiddlywiki/geospatial"/>
$testcase>
diff --git a/plugins/tiddlywiki/highlight/usage.tid b/plugins/tiddlywiki/highlight/usage.tid
index 5e5b51600..fc1d8f12c 100644
--- a/plugins/tiddlywiki/highlight/usage.tid
+++ b/plugins/tiddlywiki/highlight/usage.tid
@@ -31,8 +31,8 @@ You can import language definitions into <$text text="JavaScript"/> tiddlers, wi
First, locate the language file(s) you need. You can fetch the files from the following CDNs:
-* >>jsDelivr
-* >>unpkg
+* > class="tc-tiddlylink-external" target="_blank">jsDelivr
+* > class="tc-tiddlylink-external" target="_blank">unpkg
Then, click the button below to create a "highlight" module. Copy and paste the content of a language file into the the text area. Give your tiddler a meaningful title so you can keep track of the languages you've installed. You may choose to either create one tiddler per language or lump all language definitions into one tiddler. Save and reload your wiki.
diff --git a/plugins/tiddlywiki/katex/wrapper.js b/plugins/tiddlywiki/katex/wrapper.js
index ceda68c84..1b41655ca 100644
--- a/plugins/tiddlywiki/katex/wrapper.js
+++ b/plugins/tiddlywiki/katex/wrapper.js
@@ -21,7 +21,7 @@ katex.updateMacros = function() {
var tiddlers = $tw.wiki.getTiddlersWithTag("$:/tags/KaTeX/Macro"),
regex = /#\d/g, // Remove the arguments like #1#2
tid, macro, cmd;
- for (var i=0; i < tiddlers.length; i++) {
+ for(var i=0; i < tiddlers.length; i++) {
tid = $tw.wiki.getTiddler(tiddlers[i]);
try {
macro = tid.fields["caption"];
diff --git a/plugins/tiddlywiki/markdown/EditorToolbar/picture-dropdown.tid b/plugins/tiddlywiki/markdown/EditorToolbar/picture-dropdown.tid
new file mode 100644
index 000000000..966c991fd
--- /dev/null
+++ b/plugins/tiddlywiki/markdown/EditorToolbar/picture-dropdown.tid
@@ -0,0 +1,24 @@
+title: $:/plugins/tiddlywiki/markdown/EditorToolbar/picture-dropdown
+
+\define replacement-text()
+![](<#$(escaped-text)$>)
+\end
+
+\define escapetitle() [()<>\\]
+
+''{{$:/language/Buttons/Picture/Hint}}''
+
+<$macrocall $name="image-picker" actions="""
+
+<$let escaped-text={{{ [search-replace:g:regexp,[\$&]] }}}>
+<$action-sendmessage
+ $message="tm-edit-text-operation"
+ $param="replace-selection"
+ text=<>
+/>
+
+<$action-deletetiddler
+ $tiddler=<>
+/>
+$let>
+"""/>
diff --git a/plugins/tiddlywiki/markdown/EditorToolbar/picture.tid b/plugins/tiddlywiki/markdown/EditorToolbar/picture.tid
new file mode 100644
index 000000000..27e108c81
--- /dev/null
+++ b/plugins/tiddlywiki/markdown/EditorToolbar/picture.tid
@@ -0,0 +1,10 @@
+title: $:/plugins/tiddlywiki/markdown/EditorToolbar/picture
+list-after: $:/core/ui/EditorToolbar/picture
+tags: $:/tags/EditorToolbar
+icon: $:/core/images/picture
+caption: {{$:/language/Buttons/Picture/Caption}} (Markdown)
+description: {{$:/language/Buttons/Picture/Hint}}
+condition: [type[text/x-markdown]] [type[text/markdown]]
+shortcuts: ((picture))
+dropdown: $:/plugins/tiddlywiki/markdown/EditorToolbar/picture-dropdown
+
diff --git a/plugins/tiddlywiki/markdown/markdown-it-katex.js b/plugins/tiddlywiki/markdown/markdown-it-katex.js
index 4bbd5c655..dc70f829a 100644
--- a/plugins/tiddlywiki/markdown/markdown-it-katex.js
+++ b/plugins/tiddlywiki/markdown/markdown-it-katex.js
@@ -31,17 +31,17 @@ function isValidDelim(state, pos) {
// Check non-whitespace conditions for opening and closing, and
// check that closing delimeter isn't followed by a number
- if (prevChar === 0x20/* " " */ || prevChar === 0x09/* \t */ ||
+ if(prevChar === 0x20/* " " */ || prevChar === 0x09/* \t */ ||
prevChar === 0x0d/* "\r" */ || prevChar === 0x0a/* \n */ ||
(nextChar >= 0x30/* "0" */ && nextChar <= 0x39/* "9" */)) {
can_close = false;
}
- if (nextChar === 0x20/* " " */ || nextChar === 0x09/* \t */ ||
+ if(nextChar === 0x20/* " " */ || nextChar === 0x09/* \t */ ||
nextChar === 0x0d/* "\r" */ || nextChar === 0x0a/* \ns */) {
can_open = false;
}
- if (state.src.substring(pos,pos+3) === "$:/") {
+ if(state.src.substring(pos,pos+3) === "$:/") {
can_open = false;
can_close = false;
}
@@ -55,11 +55,11 @@ function isValidDelim(state, pos) {
function math_inline(state, silent) {
var start, match, token, res, pos, esc_count;
- if (state.src[state.pos] !== "$") { return false; }
+ if(state.src[state.pos] !== "$") { return false; }
res = isValidDelim(state, state.pos);
- if (!res.can_open) {
- if (!silent) { state.pending += "$"; }
+ if(!res.can_open) {
+ if(!silent) { state.pending += "$"; }
state.pos += 1;
return true;
}
@@ -70,40 +70,40 @@ function math_inline(state, silent) {
// we have found an opening delimieter already.
start = state.pos + 1;
match = start;
- while ( (match = state.src.indexOf("$", match)) !== -1) {
+ while( (match = state.src.indexOf("$", match)) !== -1) {
// Found potential $, look for escapes, pos will point to
// first non escape when complete
pos = match - 1;
- while (state.src[pos] === "\\") { pos -= 1; }
+ while(state.src[pos] === "\\") { pos -= 1; }
// Even number of escapes, potential closing delimiter found
- if ( ((match - pos) % 2) == 1 ) { break; }
+ if( ((match - pos) % 2) == 1 ) { break; }
match += 1;
}
// No closing delimter found. Consume $ and continue.
- if (match === -1) {
- if (!silent) { state.pending += "$"; }
+ if(match === -1) {
+ if(!silent) { state.pending += "$"; }
state.pos = start;
return true;
}
// Check if we have empty content, ie: $$. Do not parse.
- if (match - start === 0) {
- if (!silent) { state.pending += "$$"; }
+ if(match - start === 0) {
+ if(!silent) { state.pending += "$$"; }
state.pos = start + 1;
return true;
}
// Check for valid closing delimiter
res = isValidDelim(state, match);
- if (!res.can_close) {
- if (!silent) { state.pending += "$"; }
+ if(!res.can_close) {
+ if(!silent) { state.pending += "$"; }
state.pos = start;
return true;
}
- if (!silent) {
+ if(!silent) {
token = state.push('math_inline', '$latex', 0);
token.markup = "$";
token.content = state.src.slice(start, match);
@@ -126,32 +126,32 @@ function math_inline_block(state, silent) {
// we have found an opening delimieter already.
start = state.pos + 2;
match = start;
- while ( (match = state.src.indexOf("$$", match)) !== -1) {
+ while( (match = state.src.indexOf("$$", match)) !== -1) {
// Found potential $$, look for escapes, pos will point to
// first non escape when complete
pos = match - 1;
- while (state.src[pos] === "\\") { pos -= 1; }
+ while(state.src[pos] === "\\") { pos -= 1; }
// Even number of escapes, potential closing delimiter found
- if ( ((match - pos) % 2) == 1 ) { break; }
+ if( ((match - pos) % 2) == 1 ) { break; }
match += 2;
}
// No closing delimter found. Consume $$ and continue.
- if (match === -1) {
- if (!silent) { state.pending += "$$"; }
+ if(match === -1) {
+ if(!silent) { state.pending += "$$"; }
state.pos = start;
return true;
}
// Check if we have empty content, ie: $$$$. Do not parse.
- if (match - start === 0) {
- if (!silent) { state.pending += "$$$$"; }
+ if(match - start === 0) {
+ if(!silent) { state.pending += "$$$$"; }
state.pos = start + 2;
return true;
}
- if (!silent) {
+ if(!silent) {
token = state.push('math_inline_block', '$latex', 0);
token.block = true;
token.markup = "$$";
diff --git a/plugins/tiddlywiki/markdown/styles.tid b/plugins/tiddlywiki/markdown/styles.tid
index f4d953d1b..4185d4304 100644
--- a/plugins/tiddlywiki/markdown/styles.tid
+++ b/plugins/tiddlywiki/markdown/styles.tid
@@ -36,7 +36,7 @@ code-body: yes
margin-left: 0.25em;
}
.markdown a.footnote-ref:target, .markdown .footnote-item:target {
- background-color: <>;
+ background-color: <>;
scroll-margin-top: {{{ [{$:/themes/tiddlywiki/vanilla/options/stickytitles}match[yes]then[120px]else[60px]] }}};
}
.markdown li > p:first-child {
diff --git a/plugins/tiddlywiki/markdown/wrapper.js b/plugins/tiddlywiki/markdown/wrapper.js
index 98c5c2ae3..708b932e3 100755
--- a/plugins/tiddlywiki/markdown/wrapper.js
+++ b/plugins/tiddlywiki/markdown/wrapper.js
@@ -234,12 +234,12 @@ function MarkdownParser(type,text,options) {
rules: { pragma: {}, block: this.blockRuleClasses, inline: this.inlineRuleClasses }
});
}
- catch (err) {
+ catch(err) {
wikiParser = $tw.wiki.parseText("text/vnd.tiddlywiki",
"Error encountered while parsing the tiddler:" + err.message + " ",
{parseAsInline: false, wiki: options.wiki});
}
- finally {
+ finally{
$tw.utils.parseStringLiteral = origParseStringLiteral;
}
if(wikiParser.tree.length > 0) {
diff --git a/plugins/tiddlywiki/qrcode/makeqr.js b/plugins/tiddlywiki/qrcode/makeqr.js
index 2a4e37273..0328a8468 100644
--- a/plugins/tiddlywiki/qrcode/makeqr.js
+++ b/plugins/tiddlywiki/qrcode/makeqr.js
@@ -37,7 +37,7 @@ exports.run = function(text,size,errorCorrectLevel,fallback) {
var result;
try {
result = generateQrCode(text,{size: size, errorCorrectLevel: errorCorrectLevel});
- } catch (ex) {
+ } catch(ex) {
console.log("makeqr error: " + ex);
result = fallback || ("data:image/svg+xml," + encodeURI(QRCODE_GENERATION_ERROR_PREFIX + ex + QRCODE_GENERATION_ERROR_SUFFIX));
}
@@ -54,7 +54,7 @@ function generateQrCode(text,options) {
qr = qrcode(typeNumber,errorCorrectLevel);
qr.addData(text);
qr.make();
- } catch (e) {
+ } catch(e) {
if(typeNumber >= 40) {
throw new Error("Text too long to encode");
} else {
diff --git a/plugins/tiddlywiki/railroad/parser.js b/plugins/tiddlywiki/railroad/parser.js
index 013d898d7..02256524d 100644
--- a/plugins/tiddlywiki/railroad/parser.js
+++ b/plugins/tiddlywiki/railroad/parser.js
@@ -377,7 +377,7 @@ Parser.prototype.tokenise = function(source) {
// Skip whitespace
pos = $tw.utils.skipWhiteSpace(source,pos);
// Avoid falling off the end of the string
- if (pos >= source.length) {
+ if(pos >= source.length) {
break;
}
// Examine the next character
diff --git a/plugins/tiddlywiki/text-slicer/modules/slicer.js b/plugins/tiddlywiki/text-slicer/modules/slicer.js
index c3e3328e4..2fc2238bb 100644
--- a/plugins/tiddlywiki/text-slicer/modules/slicer.js
+++ b/plugins/tiddlywiki/text-slicer/modules/slicer.js
@@ -365,7 +365,7 @@ Slicer.prototype.onCloseTag = function(name) {
// Render the tag
if(actions.isAnchor) {
this.onCloseAnchor(e);
- } else if (!actions.dontRenderTag && !selfClosing) {
+ } else if(!actions.dontRenderTag && !selfClosing) {
var markupInfo = actions.markup && actions.markup[this.outputMode];
if(markupInfo) {
this.addTextToCurrentChunk(markupInfo.suffix);
diff --git a/plugins/tiddlywiki/tiddlyweb/tiddlywebadaptor.js b/plugins/tiddlywiki/tiddlyweb/tiddlywebadaptor.js
index 15fbaa4fd..b91ea3560 100644
--- a/plugins/tiddlywiki/tiddlyweb/tiddlywebadaptor.js
+++ b/plugins/tiddlywiki/tiddlyweb/tiddlywebadaptor.js
@@ -84,7 +84,7 @@ TiddlyWebAdaptor.prototype.getStatus = function(callback) {
var json = null;
try {
json = JSON.parse(data);
- } catch (e) {
+ } catch(e) {
}
if(json) {
self.logger.log("Status:",data);
@@ -164,7 +164,7 @@ TiddlyWebAdaptor.prototype.getCsrfToken = function() {
var regex = /^(?:.*; )?csrf_token=([^(;|$)]*)(?:;|$)/,
match = regex.exec(document.cookie),
csrf = null;
- if (match && (match.length === 2)) {
+ if(match && (match.length === 2)) {
csrf = match[1];
}
return csrf;
diff --git a/plugins/tiddlywiki/tw2parser/entry.js b/plugins/tiddlywiki/tw2parser/entry.js
index f97cf4cdc..073221b8b 100644
--- a/plugins/tiddlywiki/tw2parser/entry.js
+++ b/plugins/tiddlywiki/tw2parser/entry.js
@@ -21,7 +21,7 @@ exports.params = [
Run the macro
*/
exports.run = function(key,map) {
- try{
+ try {
return JSON.parse(map)[key];
} catch(e) {
return "";
diff --git a/plugins/tiddlywiki/tw2parser/wikitextparser.js b/plugins/tiddlywiki/tw2parser/wikitextparser.js
index 947519bb9..fec58f3bd 100644
--- a/plugins/tiddlywiki/tw2parser/wikitextparser.js
+++ b/plugins/tiddlywiki/tw2parser/wikitextparser.js
@@ -70,7 +70,7 @@ var WikiTextParser = function(type,text,options) {
var root = JSON.parse(JSON.stringify(parser.tree));
// macros are defined in a linear tree; walk down the tree and append the source's parsed content
var baseroot = root;
- while (root[0] && root[0].children && root[0].children.length !== 0 ){
+ while(root[0] && root[0].children && root[0].children.length !== 0 ){
root = root[0].children;
}
root[0].children[0] = this.tree[0];
diff --git a/plugins/tiddlywiki/tw2parser/wikitextrules.js b/plugins/tiddlywiki/tw2parser/wikitextrules.js
index d7f809723..068bb9757 100755
--- a/plugins/tiddlywiki/tw2parser/wikitextrules.js
+++ b/plugins/tiddlywiki/tw2parser/wikitextrules.js
@@ -249,7 +249,7 @@ var rules = [
}
applyCssHelper(cell,styles);
w.subWikifyTerm(cell.children,this.cellTermRegExp);
- if (!cell.attributes) cell.attributes ={};
+ if(!cell.attributes) cell.attributes ={};
if(w.matchText.substr(w.matchText.length-2,1) == " ") // spaceRight
$tw.utils.addAttributeToParseTreeNode(cell,"align",spaceLeft ? "center" : "left");
else if(spaceLeft)
@@ -370,9 +370,9 @@ var rules = [
var f = stack[stack.length-1];
e = {type:"element",tag:this.element,children: []};
stack.push(e);
- if (t ===0){
+ if(t ===0){
w.output.push(e);
- }else {
+ } else {
f.children.push(e);
}
@@ -458,7 +458,7 @@ var rules = [
w.source = oldSource;
w.nextMatch = oldNextMatch;
w.children = oldChildren;
- for (var i=0; i>;
+}
+
+:-moz-focusring {
+ outline: 2px solid <>;
}
/*
@@ -157,7 +163,7 @@ code {
color: <>;
background-color: <>;
border: 1px solid <>;
- white-space: {{$:/themes/tiddlywiki/vanilla/options/codewrapping}};
+ white-space: pre-wrap;
padding: 0 3px 2px;
border-radius: 3px;
font-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};
@@ -224,6 +230,11 @@ dl dt {
textarea,
input[type=text],
input[type=search],
+input[type=number],
+input[type=password],
+input[type=email],
+input[type=tel],
+input[type=url],
input[type=""],
input:not([type]) {
color: <>;
@@ -288,10 +299,13 @@ form.tc-form-inline {
Markdown likes putting code elements inside pre elements
*/
pre > code {
- padding: 0;
+ display: block;
+ padding: 0.5em;
border: none;
+ white-space: {{$:/themes/tiddlywiki/vanilla/options/codewrapping}};
background-color: inherit;
color: inherit;
+ overflow-x: auto;
}
/*
@@ -702,7 +716,7 @@ html body.tc-body .tc-btn-rounded:hover svg {
}
button svg.tc-image-button, button .tc-image-button img {
- height: 1em;
+ height: auto;
width: 1em;
}
@@ -2662,7 +2676,7 @@ a.tc-tiddlylink.tc-plugin-info:hover > .tc-plugin-info-chunk .tc-plugin-info-sta
.tc-plugin-info-chunk.tc-plugin-info-icon img, .tc-plugin-info-chunk.tc-plugin-info-icon svg {
width: 2em;
- height: 2em;
+ height: auto;
}
.tc-plugin-info-dropdown {
@@ -2814,7 +2828,7 @@ a.tc-tiddlylink.tc-plugin-info:hover > .tc-plugin-info-chunk .tc-plugin-info-sta
}
.tc-language-chooser .tc-image-button img {
- width: 2em;
+ width: auto;
vertical-align: -0.15em;
}
|