mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2024-11-27 03:57:21 +00:00
Merge branch 'master' into multi-wiki-support
This commit is contained in:
commit
9eb28a0e5f
@ -386,8 +386,8 @@ $tw.utils.parseDate = function(value) {
|
||||
parseInt(value.substr(10,2)||"00",10),
|
||||
parseInt(value.substr(12,2)||"00",10),
|
||||
parseInt(value.substr(14,3)||"000",10)));
|
||||
d.setUTCFullYear(year); // See https://stackoverflow.com/a/5870822
|
||||
return d;
|
||||
d.setUTCFullYear(year); // See https://stackoverflow.com/a/5870822
|
||||
return d;
|
||||
} else if($tw.utils.isDate(value)) {
|
||||
return value;
|
||||
} else {
|
||||
|
@ -29,10 +29,14 @@ exports.getEditionInfo = function() {
|
||||
for(var entryIndex=0; entryIndex<entries.length; entryIndex++) {
|
||||
var entry = entries[entryIndex];
|
||||
// Check if directories have a valid tiddlywiki.info
|
||||
if(!editionInfo[entry] && $tw.utils.isDirectory(path.resolve(editionPath,entry))) {
|
||||
var info = $tw.utils.parseJSONSafe(fs.readFileSync(path.resolve(editionPath,entry,"tiddlywiki.info"),"utf8"),null);
|
||||
if(info) {
|
||||
editionInfo[entry] = info;
|
||||
// Check if the entry is a hidden directory
|
||||
if((entry.charAt(0) !== ".") && !editionInfo[entry] && $tw.utils.isDirectory(path.resolve(editionPath,entry))) {
|
||||
var file=path.resolve(editionPath,entry,"tiddlywiki.info");
|
||||
if(fs.existsSync(file)) {
|
||||
var info = $tw.utils.parseJSONSafe(fs.readFileSync(file,"utf8"),null);
|
||||
if(info) {
|
||||
editionInfo[entry] = info;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -41,4 +45,4 @@ exports.getEditionInfo = function() {
|
||||
return editionInfo;
|
||||
};
|
||||
|
||||
})();
|
||||
})();
|
@ -123,7 +123,6 @@ DataWidget.prototype.computeDataTiddlerValues = function() {
|
||||
}
|
||||
} else {
|
||||
// Apply the item fields to each of the tiddlers
|
||||
delete item.title; // Do not overwrite the title
|
||||
if(Object.keys(item).length > 0) {
|
||||
$tw.utils.each(tiddlers,function(tiddler,index) {
|
||||
tiddlers[index] = new $tw.Tiddler(tiddler,item);
|
||||
|
@ -27,7 +27,7 @@ tags: $:/tags/RawMarkupWikified
|
||||
<<meta-plain "og:type" "website" "property">>
|
||||
<<meta-wikified "og:title" "$:/SiteTitle" "property">>
|
||||
<<meta-wikified "og:description" "$:/SiteSubtitle" "property">>
|
||||
<<meta-plain "og:image" "$:/SitePreviewImageUrl" "property">>
|
||||
<<meta-plain "og:image" "$:/SitePreviewUrl" "property">>
|
||||
|
||||
<!-- Twitter Meta Tags -->
|
||||
<<meta-plain "twitter:card" "summary_large_image">>
|
||||
@ -35,4 +35,4 @@ tags: $:/tags/RawMarkupWikified
|
||||
<<meta-plain "twitter:url" "$:/SiteUrl" "property">>
|
||||
<<meta-wikified "twitter:title" "$:/SiteTitle">>
|
||||
<<meta-wikified "twitter:description" "$:/SiteSubtitle">>
|
||||
<<meta-plain "twitter:image" "$:/SitePreviewImageUrl">>
|
||||
<<meta-plain "twitter:image" "$:/SitePreviewUrl">>
|
||||
|
@ -25,7 +25,7 @@ caption: {{$:/language/ControlPanel/Basics/Caption}}
|
||||
|<$link to="$:/SiteTitle"><<lingo Title/Prompt>></$link> |<$edit-text tiddler="$:/SiteTitle" default="" tag="input"/> |
|
||||
|<$link to="$:/SiteSubtitle"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler="$:/SiteSubtitle" default="" tag="input"/> |
|
||||
|<$link to="$:/status/UserName"><<lingo Username/Prompt>></$link> |<$edit-text tiddler="$:/status/UserName" default="" tag="input"/> |
|
||||
|<$link to="$:/config/AnimationDuration"><<lingo AnimDuration/Prompt>></$link> |<$edit-text tiddler="$:/config/AnimationDuration" default="" tag="input"/> |
|
||||
|<$link to="$:/config/AnimationDuration"><<lingo AnimDuration/Prompt>></$link> |<$edit-text tiddler="$:/config/AnimationDuration" default="" tag="input" type="number"/> |
|
||||
|<$link to="$:/DefaultTiddlers"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit class="tc-edit-texteditor" tiddler="$:/DefaultTiddlers" autoHeight="yes"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |
|
||||
|<$link to="$:/language/DefaultNewTiddlerTitle"><<lingo NewTiddler/Title/Prompt>></$link> |<$edit-text tiddler="$:/language/DefaultNewTiddlerTitle" default="" tag="input"/> |
|
||||
|<$link to="$:/config/NewJournal/Title"><<lingo NewJournal/Title/Prompt>></$link> |<$edit-text tiddler="$:/config/NewJournal/Title" default="" tag="input"/> |
|
||||
|
@ -13,4 +13,4 @@ caption: {{$:/language/ControlPanel/Saving/GitService/GitHub/Caption}}
|
||||
|<<lingo Branch>> |<$edit-text tiddler="$:/GitHub/Branch" default="main" tag="input"/> |
|
||||
|<<lingo Path>> |<$edit-text tiddler="$:/GitHub/Path" default="" tag="input"/> |
|
||||
|<<lingo Filename>> |<$edit-text tiddler="$:/GitHub/Filename" default="" tag="input"/> |
|
||||
|<<lingo ServerURL>> |<$edit-text tiddler="$:/GitHub/ServerURL" default="https://api.github.com" tag="input"/> |
|
||||
|<<lingo ServerURL>> |<$edit-text tiddler="$:/GitHub/ServerURL" default="https://api.github.com" tag="input" type="url"/> |
|
@ -13,4 +13,4 @@ caption: {{$:/language/ControlPanel/Saving/GitService/GitLab/Caption}}
|
||||
|<<lingo Branch>> |<$edit-text tiddler="$:/GitLab/Branch" default="master" tag="input"/> |
|
||||
|<<lingo Path>> |<$edit-text tiddler="$:/GitLab/Path" default="" tag="input"/> |
|
||||
|<<lingo Filename>> |<$edit-text tiddler="$:/GitLab/Filename" default="" tag="input"/> |
|
||||
|<<lingo ServerURL>> |<$edit-text tiddler="$:/GitLab/ServerURL" default="https://gitlab.com/api/v4" tag="input"/> |
|
||||
|<<lingo ServerURL>> |<$edit-text tiddler="$:/GitLab/ServerURL" default="https://gitlab.com/api/v4" tag="input" type="url"/> |
|
@ -34,7 +34,7 @@ http://$(userName)$.tiddlyspot.com/$path$/
|
||||
|
||||
''<<lingo Advanced/Heading>>''
|
||||
|
||||
|<<lingo ServerURL>> |<$edit-text tiddler="$:/UploadURL" default="" tag="input"/> |
|
||||
|<<lingo ServerURL>> |<$edit-text tiddler="$:/UploadURL" default="" tag="input" type="url"/> |
|
||||
|<<lingo Filename>> |<$edit-text tiddler="$:/UploadFilename" default="index.html" tag="input"/> |
|
||||
|<<lingo UploadDir>> |<$edit-text tiddler="$:/UploadDir" default="." tag="input"/> |
|
||||
|<<lingo BackupDir>> |<$edit-text tiddler="$:/UploadBackupDir" default="." tag="input"/> |
|
||||
|
@ -13,4 +13,4 @@ caption: {{$:/language/ControlPanel/Saving/GitService/Gitea/Caption}}
|
||||
|<<lingo Branch>> |<$edit-text tiddler="$:/Gitea/Branch" default="master" tag="input"/> |
|
||||
|<<lingo Path>> |<$edit-text tiddler="$:/Gitea/Path" default="" tag="input"/> |
|
||||
|<<lingo Filename>> |<$edit-text tiddler="$:/Gitea/Filename" default="" tag="input"/> |
|
||||
|<<lingo ServerURL>> |<$edit-text tiddler="$:/Gitea/ServerURL" default="https://gitea/api/v1" tag="input"/> |
|
||||
|<<lingo ServerURL>> |<$edit-text tiddler="$:/Gitea/ServerURL" default="https://gitea/api/v1" tag="input" type="url"/> |
|
||||
|
@ -8,9 +8,9 @@ caption: {{$:/language/ControlPanel/SocialCard/Caption}}
|
||||
|
||||
|<$link to="$:/SiteTitle"><<lingo Basics/Title/Prompt>></$link> |<$edit-text tiddler="$:/SiteTitle" default="" tag="input"/> |
|
||||
|<$link to="$:/SiteSubtitle"><<lingo Basics/Subtitle/Prompt>></$link> |<$edit-text tiddler="$:/SiteSubtitle" default="" tag="input"/> |
|
||||
|<$link to="$:/SiteDomain"><<lingo SocialCard/Domain/Prompt>></$link> |<$edit-text tiddler="$:/SiteDomain" default="" tag="input"/> |
|
||||
|<$link to="$:/SiteUrl"><<lingo SocialCard/Url/Prompt>></$link> |<$edit-text tiddler="$:/SiteUrl" default="" tag="input"/> |
|
||||
|<$link to="$:/SitePreviewUrl"><<lingo SocialCard/PreviewUrl/Prompt>></$link> |<$edit-text tiddler="$:/SitePreviewUrl" default="" tag="input"/> |
|
||||
|<$link to="$:/SiteDomain"><<lingo SocialCard/Domain/Prompt>></$link> |<$edit-text tiddler="$:/SiteDomain" default="" tag="input" type="url"/> |
|
||||
|<$link to="$:/SiteUrl"><<lingo SocialCard/Url/Prompt>></$link> |<$edit-text tiddler="$:/SiteUrl" default="" tag="input" type="url"/> |
|
||||
|<$link to="$:/SitePreviewUrl"><<lingo SocialCard/PreviewUrl/Prompt>></$link> |<$edit-text tiddler="$:/SitePreviewUrl" default="" tag="input" type="url"/> |
|
||||
|
||||
<%if [[$:/SitePreviewUrl]get[text]else[]!is[blank]] %>
|
||||
<div>
|
||||
|
@ -3,7 +3,7 @@ code-body: yes
|
||||
|
||||
\whitespace trim
|
||||
|
||||
\function tf.state() [<qualify "$:/state/testcase">]
|
||||
\function tf.state() "$:/state/testcase"
|
||||
|
||||
\procedure linkcatcherActions()
|
||||
<%if [<navigateTo>has[title]] %>
|
||||
@ -102,9 +102,12 @@ code-body: yes
|
||||
[all[tiddlers]sort[]] Output +[putfirst[]]
|
||||
-Description
|
||||
-Narrative
|
||||
-[[$:/temp/testcase/draft-title]]
|
||||
-[has[plugin-type]]
|
||||
-[prefix<tf.state>]
|
||||
-[prefix[$:/state/popup/export]]
|
||||
-[prefix[$:/HistoryList]]
|
||||
-[prefix[$:/StoryList]]
|
||||
\end
|
||||
|
||||
\procedure testcase-source()
|
||||
@ -129,13 +132,17 @@ code-body: yes
|
||||
\procedure testcase-body()
|
||||
<div class="tc-test-case-wrapper">
|
||||
<<testcase-header>>
|
||||
<%if [[Narrative]is[tiddler]] %>
|
||||
<<testcase-narrative>>
|
||||
<%endif%>
|
||||
<%if [<testResult>match[fail]] %>
|
||||
<<testcase-fail>>
|
||||
<%endif%>
|
||||
<<testcase-panes>>
|
||||
<$let testcase-source-state = <<tf.state>>>
|
||||
<$navigator story="$:/StoryList" history="$:/HistoryList">
|
||||
<%if [[Narrative]is[tiddler]] %>
|
||||
<<testcase-narrative>>
|
||||
<%endif%>
|
||||
<%if [<testResult>match[fail]] %>
|
||||
<<testcase-fail>>
|
||||
<%endif%>
|
||||
<<testcase-panes>>
|
||||
</$navigator>
|
||||
</$let>
|
||||
</div>
|
||||
\end
|
||||
|
||||
|
@ -1,6 +1,22 @@
|
||||
title: $:/core/ui/testcases/DefaultTemplate/SourceTabs
|
||||
|
||||
\whitespace trim
|
||||
|
||||
\procedure testcaseNewTitle() $:/temp/testcase/draft-title
|
||||
|
||||
\procedure saveActions()
|
||||
<$action-setfield $tiddler=<<currentTab>> $field="draft.title" $value=<<newTitle>>/>
|
||||
<$action-sendmessage $message="tm-save-tiddler" $param=<<title>> />
|
||||
<$action-setfield $tiddler=<<testcase-source-state>> text=<<newTitle>>/>
|
||||
<$action-deletetiddler $tiddler=<<testcaseNewTitle>>/>
|
||||
\end
|
||||
|
||||
\procedure saveButton(title, newTitle)
|
||||
<$button class="tc-btn-invisible tc-test-case-save-button tc-small-gap-left" actions=<<saveActions>> disabled={{{ [<testcaseNewTitle>!has[text]then[yes]] }}}>
|
||||
{{$:/core/images/done-button}}
|
||||
</$button>
|
||||
\end
|
||||
|
||||
\procedure body()
|
||||
<$list filter="[<currentTab>fields[]] -text +[limit[1]]" variable="ignore">
|
||||
<table class="tc-field-table">
|
||||
@ -11,7 +27,12 @@ title: $:/core/ui/testcases/DefaultTemplate/SourceTabs
|
||||
<$text text=<<fieldName>>/>
|
||||
</td>
|
||||
<td>
|
||||
<$view tiddler=<<currentTab>> field=<<fieldName>>/>
|
||||
<%if [<fieldName>match[draft.title]] %>
|
||||
<$edit-text class="tc-edit-texteditor tc-max-width-80" tiddler=<<testcaseNewTitle>> focus="yes" tag="input"/>
|
||||
<$macrocall $name="saveButton" newTitle={{{ [<testcaseNewTitle>get[text]] }}} title=<<currentTab>>/>
|
||||
<%else%>
|
||||
<$view tiddler=<<currentTab>> field=<<fieldName>>/>
|
||||
<%endif%>
|
||||
</td>
|
||||
</tr>
|
||||
</$list>
|
||||
|
@ -57,7 +57,8 @@
|
||||
"sl-SI",
|
||||
"sv-SE",
|
||||
"zh-Hans",
|
||||
"zh-Hant"
|
||||
"zh-Hant",
|
||||
"zh-HK"
|
||||
],
|
||||
"themes": [
|
||||
"tiddlywiki/centralised",
|
||||
|
@ -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
|
||||
|
@ -11,7 +11,7 @@
|
||||
],
|
||||
"build": {
|
||||
"test-server": [
|
||||
"--output", "./files/local/library/tmp",
|
||||
"--output", "./editions/pluginlibrary/files/local/library/tmp",
|
||||
"--build", "library",
|
||||
"--listen", "port=8888"
|
||||
],
|
||||
|
@ -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
|
||||
|
||||
<p><div><div>[{"title":"RealTitle","tags":"Definitions","text":"This is the tiddler HelloThere"}]</div></div></p>
|
@ -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]].
|
||||
|
@ -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}}
|
||||
Learn more about the [[Railroad Plguin Syntax Description|$:/plugins/tiddlywiki/railroad/syntax]]
|
||||
|
@ -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
|
||||
|
||||
<p>[
|
||||
{
|
||||
"title": "RealTitle",
|
||||
"tags": "Definitions",
|
||||
"text": "This is the tiddler HelloThere"
|
||||
}
|
||||
]</p>
|
@ -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"
|
||||
|
@ -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"
|
||||
}
|
@ -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"
|
||||
}
|
@ -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"
|
||||
}
|
||||
|
@ -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"
|
||||
}
|
@ -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"
|
||||
}
|
||||
|
@ -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"
|
||||
|
@ -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"
|
||||
|
@ -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"
|
||||
}
|
||||
|
@ -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"
|
||||
}
|
||||
|
@ -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"
|
||||
}
|
||||
|
@ -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"
|
||||
}
|
||||
|
@ -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"
|
||||
}
|
||||
|
@ -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"
|
||||
}
|
||||
|
@ -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"
|
||||
}
|
||||
|
@ -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"
|
||||
}
|
@ -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"
|
||||
}
|
||||
|
@ -2,7 +2,7 @@
|
||||
"title": "$:/languages/ru-RU",
|
||||
"name": "ru-RU",
|
||||
"plugin-type": "language",
|
||||
"description": "Russian (Russia)",
|
||||
"description": "Русский (Россия)",
|
||||
"author": "AndreyYankin aka andrey013, Глеб Прохожев <glebujka@gmail.com>",
|
||||
"core-version": ">=5.0.0"
|
||||
}
|
||||
|
@ -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"
|
||||
}
|
@ -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"
|
||||
}
|
@ -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"
|
||||
}
|
@ -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"],
|
||||
|
17
languages/zh-HK/Buttons.multids
Normal file
17
languages/zh-HK/Buttons.multids
Normal file
@ -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` 欄位中新增一個説明性的標題)。
|
31
languages/zh-HK/ControlPanel.multids
Normal file
31
languages/zh-HK/ControlPanel.multids
Normal file
@ -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: 啓用效能檢測
|
3
languages/zh-HK/Docs/ModuleTypes.multids
Normal file
3
languages/zh-HK/Docs/ModuleTypes.multids
Normal file
@ -0,0 +1,3 @@
|
||||
title: $:/language/Docs/ModuleTypes/
|
||||
|
||||
startup: 啓動時期的功能函數。
|
5
languages/zh-HK/Fields.multids
Normal file
5
languages/zh-HK/Fields.multids
Normal file
@ -0,0 +1,5 @@
|
||||
title: $:/language/Docs/Fields/
|
||||
|
||||
class: 渲染條目時,套用到條目的 CSS 類別 - 請參閲[[依自訂類別的自訂樣式|Custom styles by user-class]]。也適用於[[互動視窗|Modals]]
|
||||
description: 插件的説明、描述
|
||||
toc-link: 若設定為 ''no'',則抑制目錄樹中的條目鏈接。
|
18
languages/zh-HK/GettingStarted.tid
Normal file
18
languages/zh-HK/GettingStarted.tid
Normal file
@ -0,0 +1,18 @@
|
||||
title: GettingStarted
|
||||
|
||||
\define lingo-base() $:/language/ControlPanel/Basics/
|
||||
歡迎使用 ~TiddlyWiki 及參與 ~TiddlyWiki 社羣
|
||||
|
||||
開始將重要資訊存放於 ~TiddlyWiki 之前,確認您可以可靠地儲存變更是很重要的。詳細資訊請參閲 https://tiddlywiki.com/#GettingStarted
|
||||
|
||||
!! 設定此 ~TiddlyWiki
|
||||
|
||||
<div class="tc-control-panel">
|
||||
|
||||
|tc-table-no-border tc-first-col-min-width tc-first-link-nowrap|k
|
||||
| <$link to="$:/SiteTitle"><<lingo Title/Prompt>></$link>|<$edit-text tiddler="$:/SiteTitle" default="" tag="input"/> |
|
||||
| <$link to="$:/SiteSubtitle"><<lingo Subtitle/Prompt>></$link>|<$edit-text tiddler="$:/SiteSubtitle" default="" tag="input"/> |
|
||||
|^ <$link to="$:/DefaultTiddlers"><<lingo DefaultTiddlers/Prompt>></$link><br><<lingo DefaultTiddlers/TopHint>>|<$edit tag="textarea" tiddler="$:/DefaultTiddlers"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |
|
||||
</div>
|
||||
|
||||
請參閲[[控制枱|$:/ControlPanel]]查看更多選項。
|
35
languages/zh-HK/Help/listen.tid
Normal file
35
languages/zh-HK/Help/listen.tid
Normal file
@ -0,0 +1,35 @@
|
||||
title: $:/language/Help/listen
|
||||
description: 為 TiddlyWiki 提供一個 HTTP 伺服器介面
|
||||
|
||||
通過 HTTP 提供一個維基服務。
|
||||
|
||||
listen 命令使用[[命名的命令參數|NamedCommandParameters]]:
|
||||
|
||||
```
|
||||
--listen [<name>=<value>]...
|
||||
```
|
||||
|
||||
所有參數都是可選的, 具有安全的預設值, 可以按任意順序指定。認可的參數有:
|
||||
|
||||
* ''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 條目。
|
3
languages/zh-HK/Help/notfound.tid
Normal file
3
languages/zh-HK/Help/notfound.tid
Normal file
@ -0,0 +1,3 @@
|
||||
title: $:/language/Help/notfound
|
||||
|
||||
無此項目説明
|
10
languages/zh-HK/Help/password.tid
Normal file
10
languages/zh-HK/Help/password.tid
Normal file
@ -0,0 +1,10 @@
|
||||
title: $:/language/Help/password
|
||||
description: 設定用以加密的密碼
|
||||
|
||||
設定用以加密的密碼
|
||||
|
||||
```
|
||||
--password <password>
|
||||
```
|
||||
|
||||
''請注意'':這不是用於提供 TiddlyWiki 具有密碼保護功能。相反地,請看 [[ServerCommand]] 的密碼選項説明。
|
34
languages/zh-HK/Help/render.tid
Normal file
34
languages/zh-HK/Help/render.tid
Normal file
@ -0,0 +1,34 @@
|
||||
title: $:/language/Help/render
|
||||
description: 呈現個別條目到檔案
|
||||
|
||||
呈現由篩選器標識的個別條目,並將結果儲存到指定的檔案。
|
||||
|
||||
可選擇性地指定範本條目名稱。在此情況下,不是直接呈現每個條目,而是使用設為正在呈現的條目名稱的 "currentTiddler" 變數,來呈現範本條目。
|
||||
|
||||
也可以選擇性地指定附加變數的名稱和值。
|
||||
|
||||
```
|
||||
--render <tiddler-filter> [<filename-filter>] [<render-type>] [<template>] [ [<name>] [<value>] ]*
|
||||
```
|
||||
|
||||
* ''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 檔案
|
16
languages/zh-HK/Help/savetiddlers.tid
Normal file
16
languages/zh-HK/Help/savetiddlers.tid
Normal file
@ -0,0 +1,16 @@
|
||||
title: $:/language/Help/savetiddlers
|
||||
description: 將一羣條目的原始內容儲存到一個資料夾
|
||||
|
||||
(請注意:`--savetiddlers` 命令已被棄用,而支援新的、更靈活得 `--save` 命令)
|
||||
|
||||
儲存一羣條目的原始文字或二進位格式到指定的資料夾。
|
||||
|
||||
```
|
||||
--savetiddlers <filter> <pathname> [noclean]
|
||||
```
|
||||
|
||||
預設情況下,路徑名被解析為相對於發行版資料夾的 `output` 子資料夾。 `--output` 命令可以用於將輸出指定到一個不同的資料夾。
|
||||
|
||||
儲存指定的檔案之前,會先清除輸出目錄的現有檔案。可藉由指定 ''noclean'' 旗標,停用該刪除動作。
|
||||
|
||||
自動建立在路徑中任何缺少的資料夾。
|
44
languages/zh-HK/Help/server.tid
Normal file
44
languages/zh-HK/Help/server.tid
Normal file
@ -0,0 +1,44 @@
|
||||
title: $:/language/Help/server
|
||||
description: (已棄用:請參閲 'listen' 命令)提供一個 HTTP 伺服器介面到 TiddlyWiki
|
||||
|
||||
在伺服器中內建 TiddlyWiki5 是非常簡單。雖與 TiddlyWeb 相容,但不支援許多健全網際網路面向的使用方式所需的功能。
|
||||
|
||||
提供呈現一個指定條目,也可將個別條目編碼成 JSON,且支援基本的 HTTP 操作 `GET`、`PUT` 及 `DELETE`.
|
||||
|
||||
```
|
||||
--server <port> <root-tiddler> <root-render-type> <root-serve-type> <username> <password> <host> <path-prefix> <debug-level>
|
||||
```
|
||||
|
||||
參數説明:
|
||||
|
||||
* ''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
|
||||
```
|
17
languages/zh-HK/Help/setfield.tid
Normal file
17
languages/zh-HK/Help/setfield.tid
Normal file
@ -0,0 +1,17 @@
|
||||
title: $:/language/Help/setfield
|
||||
description: 準備用於外部條目
|
||||
|
||||
//請注意此命令是試驗性的,且可能會更改或在最終定稿前被替換//
|
||||
|
||||
設定一羣條目的指定欄位到 wikifying 範本條目的結果,其中的 `currentTiddler` 變數設定為各該條目。
|
||||
|
||||
```
|
||||
--setfield <filter> <fieldname> <templatetitle> <rendertype>
|
||||
```
|
||||
|
||||
參數説明:
|
||||
|
||||
* ''filter'' - 受影響的辨識條目的篩選條件
|
||||
* ''fieldname'' - 要修改的欄位(預設為 "text")
|
||||
* ''templatetitle'' - 該條目 wikify 到指定欄位。若為空白或丟失,則刪除指定的欄位
|
||||
* ''rendertype'' - 要呈現的文本類型(預設為 "text/plain"; "text/html" 可以用於包含 HTML 標記))
|
5
languages/zh-HK/Misc.multids
Normal file
5
languages/zh-HK/Misc.multids
Normal file
@ -0,0 +1,5 @@
|
||||
title: $:/language/
|
||||
|
||||
InternalJavaScriptError/Hint: 喔,真是令人尷尬。建議刷新您的瀏覽器,重新啓動 TiddlyWiki
|
||||
LayoutSwitcher/Description: 開啓版面切換器
|
||||
Shortcuts/Input/AdvancedSearch/Hint: 從側邊欄搜尋欄位內開啓[[進階搜尋|$:/AdvancedSearch]]面板
|
3
languages/zh-HK/SideBar.multids
Normal file
3
languages/zh-HK/SideBar.multids
Normal file
@ -0,0 +1,3 @@
|
||||
title: $:/language/SideBar/
|
||||
|
||||
Open/Caption: 開啓
|
7
languages/zh-HK/Snippets/ProcedureDefinition.tid
Normal file
7
languages/zh-HK/Snippets/ProcedureDefinition.tid
Normal file
@ -0,0 +1,7 @@
|
||||
title: $:/language/Snippets/ProcedureDefinition
|
||||
tags: $:/tags/TextEditor/Snippet
|
||||
caption: 程序定義
|
||||
|
||||
\procedure procName(param1:"預設值",param2)
|
||||
這裏就是您的文字了。
|
||||
\end
|
3
languages/zh-HK/ThemeTweaks.multids
Normal file
3
languages/zh-HK/ThemeTweaks.multids
Normal file
@ -0,0 +1,3 @@
|
||||
title: $:/language/ThemeTweaks/
|
||||
|
||||
Options/StickyTitles/Hint: 使條目名稱"黏着"於瀏覽器視窗的頂端
|
@ -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"],
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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"],
|
||||
|
@ -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 {
|
||||
|
@ -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
|
||||
|
@ -4,4 +4,4 @@ caption: {{$:/language/codemirror/cursorBlinkRate/hint}}
|
||||
|
||||
\define lingo-base() $:/language/codemirror/cursorBlinkRate/
|
||||
|
||||
|<$link to="$:/config/codemirror/cursorBlinkRate"><<lingo hint>></$link> |<$edit-text tiddler="$:/config/codemirror/cursorBlinkRate" default="" placeholder="cursorBlinkRate" tag="input"/> |
|
||||
|<$link to="$:/config/codemirror/cursorBlinkRate"><<lingo hint>></$link> |<$edit-text tiddler="$:/config/codemirror/cursorBlinkRate" default="" placeholder="cursorBlinkRate" tag="input" type="number"/> |
|
||||
|
@ -4,4 +4,4 @@ caption: {{$:/language/codemirror/indentUnit/hint}}
|
||||
|
||||
\define lingo-base() $:/language/codemirror/indentUnit/
|
||||
|
||||
|<$link to="$:/config/codemirror/indentUnit"><<lingo hint>></$link> |<$edit-text tiddler="$:/config/codemirror/indentUnit" default="" placeholder="indentUnit" tag="input"/> |
|
||||
|<$link to="$:/config/codemirror/indentUnit"><<lingo hint>></$link> |<$edit-text tiddler="$:/config/codemirror/indentUnit" default="" placeholder="indentUnit" tag="input" type="number"/> |
|
||||
|
@ -4,4 +4,4 @@ caption: {{$:/language/codemirror/tabSize/hint}}
|
||||
|
||||
\define lingo-base() $:/language/codemirror/tabSize/
|
||||
|
||||
|<$link to="$:/config/codemirror/tabSize"><<lingo hint>></$link> |<$edit-text tiddler="$:/config/codemirror/tabSize" default="" placeholder="tabSize" tag="input"/> |
|
||||
|<$link to="$:/config/codemirror/tabSize"><<lingo hint>></$link> |<$edit-text tiddler="$:/config/codemirror/tabSize" default="" placeholder="tabSize" tag="input" type="number"/> |
|
||||
|
8
plugins/tiddlywiki/d3/barwidget.js
vendored
8
plugins/tiddlywiki/d3/barwidget.js
vendored
@ -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)}; });
|
||||
}
|
||||
};
|
||||
|
@ -22,7 +22,9 @@ function FileSystemAdaptor(options) {
|
||||
this.boot = options.boot || $tw.boot;
|
||||
this.logger = new $tw.utils.Logger("filesystem",{colour: "blue"});
|
||||
// Create the <wiki>/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);
|
||||
|
@ -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"];
|
||||
|
@ -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 = "$$";
|
||||
|
@ -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",
|
||||
"<strong>Error encountered while parsing the tiddler:</strong><p>" + err.message + "</p>",
|
||||
{parseAsInline: false, wiki: options.wiki});
|
||||
}
|
||||
finally {
|
||||
finally{
|
||||
$tw.utils.parseStringLiteral = origParseStringLiteral;
|
||||
}
|
||||
if(wikiParser.tree.length > 0) {
|
||||
|
@ -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 {
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
@ -85,7 +85,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);
|
||||
@ -165,7 +165,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;
|
||||
|
@ -21,7 +21,7 @@ exports.params = [
|
||||
Run the macro
|
||||
*/
|
||||
exports.run = function(key,map) {
|
||||
try{
|
||||
try {
|
||||
return JSON.parse(map)[key];
|
||||
} catch(e) {
|
||||
return "";
|
||||
|
@ -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];
|
||||
|
@ -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<parser.tree.length; i++) {
|
||||
for(var i=0; i<parser.tree.length; i++) {
|
||||
w.output.push(parser.tree[i]);
|
||||
}
|
||||
w.nextMatch = this.lookaheadRegExp.lastIndex;
|
||||
@ -488,12 +488,12 @@ var rules = [
|
||||
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
|
||||
name = lookaheadMatch[1] || lookaheadMatch[2];
|
||||
var params = lookaheadMatch[3], nameold =name;
|
||||
if (name) {
|
||||
if (!!macroadapter.paramadapter[name]) {
|
||||
if(name) {
|
||||
if(!!macroadapter.paramadapter[name]) {
|
||||
params=macroadapter.paramadapter[name](params);
|
||||
//alert("going out as "+params);
|
||||
}
|
||||
if (!!macroadapter.namedapter[name]) {
|
||||
if(!!macroadapter.namedapter[name]) {
|
||||
name=macroadapter.namedapter[name];
|
||||
}
|
||||
w.nextMatch = this.lookaheadRegExp.lastIndex;
|
||||
|
@ -224,6 +224,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: <<colour foreground>>;
|
||||
@ -2662,7 +2667,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 {
|
||||
|
Loading…
Reference in New Issue
Block a user