@saltcorn/server 1.1.1-beta.6 → 1.1.1-beta.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/markup/blockly.js +4 -4
- package/package.json +9 -9
- package/public/blockly/blockly_compressed.js +2016 -0
- package/public/blockly/blockly_compressed.js.map +1 -0
- package/public/blockly/blocks_compressed.js +212 -0
- package/public/blockly/blocks_compressed.js.map +1 -0
- package/public/blockly/javascript_compressed.js +121 -0
- package/public/blockly/javascript_compressed.js.map +1 -0
- package/public/blockly/msg/ab.js +440 -0
- package/public/blockly/msg/ace.js +440 -0
- package/public/blockly/msg/af.js +440 -0
- package/public/blockly/msg/am.js +440 -0
- package/public/blockly/msg/ar.js +440 -0
- package/public/blockly/msg/ast.js +440 -0
- package/public/blockly/msg/az.js +440 -0
- package/public/blockly/msg/ba.js +440 -0
- package/public/blockly/msg/bcc.js +440 -0
- package/public/blockly/msg/be-tarask.js +440 -0
- package/public/blockly/msg/be.js +440 -0
- package/public/blockly/msg/bg.js +440 -0
- package/public/blockly/msg/bn.js +440 -0
- package/public/blockly/msg/br.js +440 -0
- package/public/blockly/msg/bs.js +440 -0
- package/public/blockly/msg/ca.js +440 -0
- package/public/blockly/msg/cdo.js +440 -0
- package/public/blockly/msg/cs.js +440 -0
- package/public/blockly/msg/da.js +440 -0
- package/public/blockly/msg/de.js +440 -0
- package/public/blockly/msg/diq.js +440 -0
- package/public/blockly/msg/dty.js +440 -0
- package/public/blockly/msg/ee.js +440 -0
- package/public/blockly/msg/el.js +440 -0
- package/public/blockly/msg/en-gb.js +440 -0
- package/public/blockly/msg/en.js +440 -0
- package/public/blockly/msg/eo.js +440 -0
- package/public/blockly/msg/es.js +440 -0
- package/public/blockly/msg/et.js +440 -0
- package/public/blockly/msg/eu.js +440 -0
- package/public/blockly/msg/fa.js +440 -0
- package/public/blockly/msg/fi.js +440 -0
- package/public/blockly/msg/fo.js +440 -0
- package/public/blockly/msg/fr.js +440 -0
- package/public/blockly/msg/frr.js +440 -0
- package/public/blockly/msg/gl.js +440 -0
- package/public/blockly/msg/gn.js +440 -0
- package/public/blockly/msg/gor.js +440 -0
- package/public/blockly/msg/ha.js +440 -0
- package/public/blockly/msg/hak.js +440 -0
- package/public/blockly/msg/he.js +440 -0
- package/public/blockly/msg/hi.js +440 -0
- package/public/blockly/msg/hr.js +440 -0
- package/public/blockly/msg/hrx.js +440 -0
- package/public/blockly/msg/hu.js +440 -0
- package/public/blockly/msg/hy.js +440 -0
- package/public/blockly/msg/ia.js +440 -0
- package/public/blockly/msg/id.js +440 -0
- package/public/blockly/msg/ig.js +440 -0
- package/public/blockly/msg/inh.js +440 -0
- package/public/blockly/msg/is.js +440 -0
- package/public/blockly/msg/it.js +440 -0
- package/public/blockly/msg/ja.js +440 -0
- package/public/blockly/msg/ka.js +440 -0
- package/public/blockly/msg/kab.js +440 -0
- package/public/blockly/msg/kbd-cyrl.js +440 -0
- package/public/blockly/msg/km.js +440 -0
- package/public/blockly/msg/kn.js +440 -0
- package/public/blockly/msg/ko.js +440 -0
- package/public/blockly/msg/ksh.js +440 -0
- package/public/blockly/msg/ku-latn.js +440 -0
- package/public/blockly/msg/ky.js +440 -0
- package/public/blockly/msg/la.js +440 -0
- package/public/blockly/msg/lb.js +440 -0
- package/public/blockly/msg/lki.js +440 -0
- package/public/blockly/msg/lo.js +440 -0
- package/public/blockly/msg/lrc.js +440 -0
- package/public/blockly/msg/lt.js +440 -0
- package/public/blockly/msg/lv.js +440 -0
- package/public/blockly/msg/mg.js +440 -0
- package/public/blockly/msg/mk.js +440 -0
- package/public/blockly/msg/ml.js +440 -0
- package/public/blockly/msg/mnw.js +440 -0
- package/public/blockly/msg/ms.js +440 -0
- package/public/blockly/msg/msg.d.ts +444 -0
- package/public/blockly/msg/my.js +440 -0
- package/public/blockly/msg/mzn.js +440 -0
- package/public/blockly/msg/nb.js +440 -0
- package/public/blockly/msg/ne.js +440 -0
- package/public/blockly/msg/nl.js +440 -0
- package/public/blockly/msg/oc.js +440 -0
- package/public/blockly/msg/olo.js +440 -0
- package/public/blockly/msg/pa.js +440 -0
- package/public/blockly/msg/pl.js +440 -0
- package/public/blockly/msg/pms.js +440 -0
- package/public/blockly/msg/ps.js +440 -0
- package/public/blockly/msg/pt-br.js +440 -0
- package/public/blockly/msg/pt.js +440 -0
- package/public/blockly/msg/ro.js +440 -0
- package/public/blockly/msg/ru.js +440 -0
- package/public/blockly/msg/sc.js +440 -0
- package/public/blockly/msg/sco.js +440 -0
- package/public/blockly/msg/sd.js +440 -0
- package/public/blockly/msg/shn.js +440 -0
- package/public/blockly/msg/si.js +440 -0
- package/public/blockly/msg/sk.js +440 -0
- package/public/blockly/msg/skr-arab.js +440 -0
- package/public/blockly/msg/sl.js +440 -0
- package/public/blockly/msg/smn.js +440 -0
- package/public/blockly/msg/sq.js +440 -0
- package/public/blockly/msg/sr-latn.js +440 -0
- package/public/blockly/msg/sr.js +440 -0
- package/public/blockly/msg/sv.js +440 -0
- package/public/blockly/msg/sw.js +440 -0
- package/public/blockly/msg/ta.js +440 -0
- package/public/blockly/msg/tcy.js +440 -0
- package/public/blockly/msg/te.js +440 -0
- package/public/blockly/msg/th.js +440 -0
- package/public/blockly/msg/ti.js +440 -0
- package/public/blockly/msg/tl.js +440 -0
- package/public/blockly/msg/tlh.js +440 -0
- package/public/blockly/msg/tr.js +440 -0
- package/public/blockly/msg/ug-arab.js +440 -0
- package/public/blockly/msg/uk.js +440 -0
- package/public/blockly/msg/ur.js +440 -0
- package/public/blockly/msg/uz.js +440 -0
- package/public/blockly/msg/vi.js +440 -0
- package/public/blockly/msg/xmf.js +440 -0
- package/public/blockly/msg/yo.js +440 -0
- package/public/blockly/msg/yue.js +440 -0
- package/public/blockly/msg/zgh.js +440 -0
- package/public/blockly/msg/zh-hans.js +440 -0
- package/public/blockly/msg/zh-hant.js +440 -0
- package/routes/actions.js +13 -7
- package/routes/common_lists.js +6 -4
- package/routes/plugins.js +0 -32
- package/routes/tables.js +3 -1
- package/serve.js +52 -1
- package/tests/plugins.test.js +2 -2
|
@@ -0,0 +1,440 @@
|
|
|
1
|
+
/* eslint-disable */
|
|
2
|
+
;(function(root, factory) {
|
|
3
|
+
if (typeof define === 'function' && define.amd) { // AMD
|
|
4
|
+
define([], factory);
|
|
5
|
+
} else if (typeof exports === 'object') { // Node.js
|
|
6
|
+
module.exports = factory();
|
|
7
|
+
} else { // Browser
|
|
8
|
+
var messages = factory();
|
|
9
|
+
for (var key in messages) {
|
|
10
|
+
root.Blockly.Msg[key] = messages[key];
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}(this, function() {
|
|
14
|
+
// This file was automatically generated. Do not modify.
|
|
15
|
+
|
|
16
|
+
'use strict';
|
|
17
|
+
|
|
18
|
+
var Blockly = Blockly || { Msg: Object.create(null) };
|
|
19
|
+
|
|
20
|
+
Blockly.Msg["ADD_COMMENT"] = "加入註解";
|
|
21
|
+
Blockly.Msg["CANNOT_DELETE_VARIABLE_PROCEDURE"] = "無法刪除變數「%1」,因為這是功能「%2」定義的一部份內容";
|
|
22
|
+
Blockly.Msg["CHANGE_VALUE_TITLE"] = "修改值:";
|
|
23
|
+
Blockly.Msg["CLEAN_UP"] = "整理區塊";
|
|
24
|
+
Blockly.Msg["COLLAPSED_WARNINGS_WARNING"] = "收合含有警告的區塊。";
|
|
25
|
+
Blockly.Msg["COLLAPSE_ALL"] = "收合區塊";
|
|
26
|
+
Blockly.Msg["COLLAPSE_BLOCK"] = "收合區塊";
|
|
27
|
+
Blockly.Msg["COLOUR_BLEND_COLOUR1"] = "顏色 1";
|
|
28
|
+
Blockly.Msg["COLOUR_BLEND_COLOUR2"] = "顏色 2";
|
|
29
|
+
Blockly.Msg["COLOUR_BLEND_HELPURL"] = "https://meyerweb.com/eric/tools/color-blend/#:::rgbp"; // untranslated
|
|
30
|
+
Blockly.Msg["COLOUR_BLEND_RATIO"] = "比例";
|
|
31
|
+
Blockly.Msg["COLOUR_BLEND_TITLE"] = "混合";
|
|
32
|
+
Blockly.Msg["COLOUR_BLEND_TOOLTIP"] = "用一個給定的比率(0.0-1.0)混合兩種顏色。";
|
|
33
|
+
Blockly.Msg["COLOUR_PICKER_HELPURL"] = "https://zh.wikipedia.org/wiki/顏色";
|
|
34
|
+
Blockly.Msg["COLOUR_PICKER_TOOLTIP"] = "從調色板中選擇一種顏色。";
|
|
35
|
+
Blockly.Msg["COLOUR_RANDOM_HELPURL"] = "http://randomcolour.com"; // untranslated
|
|
36
|
+
Blockly.Msg["COLOUR_RANDOM_TITLE"] = "隨機顏色";
|
|
37
|
+
Blockly.Msg["COLOUR_RANDOM_TOOLTIP"] = "隨機選擇一種顏色。";
|
|
38
|
+
Blockly.Msg["COLOUR_RGB_BLUE"] = "藍";
|
|
39
|
+
Blockly.Msg["COLOUR_RGB_GREEN"] = "綠";
|
|
40
|
+
Blockly.Msg["COLOUR_RGB_HELPURL"] = "https://www.december.com/html/spec/colorpercompact.html"; // untranslated
|
|
41
|
+
Blockly.Msg["COLOUR_RGB_RED"] = "紅";
|
|
42
|
+
Blockly.Msg["COLOUR_RGB_TITLE"] = "顏色";
|
|
43
|
+
Blockly.Msg["COLOUR_RGB_TOOLTIP"] = "透過指定紅、綠、 藍色的值來建立一種顏色。所有的值必須介於 0 和 100 之間。";
|
|
44
|
+
Blockly.Msg["CONTROLS_FLOW_STATEMENTS_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#loop-termination-blocks"; // untranslated
|
|
45
|
+
Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_BREAK"] = "中斷循環";
|
|
46
|
+
Blockly.Msg["CONTROLS_FLOW_STATEMENTS_OPERATOR_CONTINUE"] = "繼續下一個循環";
|
|
47
|
+
Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_BREAK"] = "中斷當前的循環。";
|
|
48
|
+
Blockly.Msg["CONTROLS_FLOW_STATEMENTS_TOOLTIP_CONTINUE"] = "跳過這個循環的其餘步驟,並繼續下一次的循環。";
|
|
49
|
+
Blockly.Msg["CONTROLS_FLOW_STATEMENTS_WARNING"] = "警告:此區塊僅可用於循環內。";
|
|
50
|
+
Blockly.Msg["CONTROLS_FOREACH_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#for-each"; // untranslated
|
|
51
|
+
Blockly.Msg["CONTROLS_FOREACH_TITLE"] = "為列表 %2 裡的每一項 %1";
|
|
52
|
+
Blockly.Msg["CONTROLS_FOREACH_TOOLTIP"] = "遍歷每個清單中的項目,將變數「%1」設定到該項目中,然後執行某些陳述式。";
|
|
53
|
+
Blockly.Msg["CONTROLS_FOR_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#count-with"; // untranslated
|
|
54
|
+
Blockly.Msg["CONTROLS_FOR_TITLE"] = "循環計數 %1 從 %2 到 %3 每次增加 %4";
|
|
55
|
+
Blockly.Msg["CONTROLS_FOR_TOOLTIP"] = "從起始數到結尾數中取出變數「%1」的值,按指定的時間間隔,執行指定的區塊。";
|
|
56
|
+
Blockly.Msg["CONTROLS_IF_ELSEIF_TOOLTIP"] = "添加條件到「如果」積木。";
|
|
57
|
+
Blockly.Msg["CONTROLS_IF_ELSE_TOOLTIP"] = "加入一個最終、所有條件都執行的部份到「如果」區塊中。";
|
|
58
|
+
Blockly.Msg["CONTROLS_IF_HELPURL"] = "https://github.com/google/blockly/wiki/IfElse"; // untranslated
|
|
59
|
+
Blockly.Msg["CONTROLS_IF_IF_TOOLTIP"] = "添加、刪除或重新排列各部份以重新配置這個「如果」區塊。";
|
|
60
|
+
Blockly.Msg["CONTROLS_IF_MSG_ELSE"] = "否則";
|
|
61
|
+
Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"] = "否則,如果";
|
|
62
|
+
Blockly.Msg["CONTROLS_IF_MSG_IF"] = "如果";
|
|
63
|
+
Blockly.Msg["CONTROLS_IF_TOOLTIP_1"] = "當值為 true 時,執行一些陳述式。";
|
|
64
|
+
Blockly.Msg["CONTROLS_IF_TOOLTIP_2"] = "當值為 true 時,執行第一個陳述式。否則,執行第二個陳述式。";
|
|
65
|
+
Blockly.Msg["CONTROLS_IF_TOOLTIP_3"] = "如果第一個值為 true,則執行第一個陳述式。否則,當第二個值為 true 時,則執行第二個陳述式。";
|
|
66
|
+
Blockly.Msg["CONTROLS_IF_TOOLTIP_4"] = "如果第一個值為 true,則執行第一個陳述式。否則當第二個值為 true 時,則執行第二個陳述式。如果前幾個敘述都不為 ture,則執行最後一個陳述式。";
|
|
67
|
+
Blockly.Msg["CONTROLS_REPEAT_HELPURL"] = "https://zh.wikipedia.org/wiki/For迴圈";
|
|
68
|
+
Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"] = "執行";
|
|
69
|
+
Blockly.Msg["CONTROLS_REPEAT_TITLE"] = "重複%1次";
|
|
70
|
+
Blockly.Msg["CONTROLS_REPEAT_TOOLTIP"] = "重複執行指定的陳述式多次。";
|
|
71
|
+
Blockly.Msg["CONTROLS_WHILEUNTIL_HELPURL"] = "https://github.com/google/blockly/wiki/Loops#repeat"; // untranslated
|
|
72
|
+
Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_UNTIL"] = "重複直到";
|
|
73
|
+
Blockly.Msg["CONTROLS_WHILEUNTIL_OPERATOR_WHILE"] = "重複,當";
|
|
74
|
+
Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_UNTIL"] = "當值為 false 時,執行一些陳述式。";
|
|
75
|
+
Blockly.Msg["CONTROLS_WHILEUNTIL_TOOLTIP_WHILE"] = "當值為 true 時,執行一些陳述式。";
|
|
76
|
+
Blockly.Msg["DELETE_ALL_BLOCKS"] = "刪除全部 %1 個區塊?";
|
|
77
|
+
Blockly.Msg["DELETE_BLOCK"] = "刪除區塊";
|
|
78
|
+
Blockly.Msg["DELETE_VARIABLE"] = "刪除變數「%1」";
|
|
79
|
+
Blockly.Msg["DELETE_VARIABLE_CONFIRMATION"] = "刪除使用%1次的「%2」變數?";
|
|
80
|
+
Blockly.Msg["DELETE_X_BLOCKS"] = "刪除%1個積木";
|
|
81
|
+
Blockly.Msg["DIALOG_CANCEL"] = "取消";
|
|
82
|
+
Blockly.Msg["DIALOG_OK"] = "確定";
|
|
83
|
+
Blockly.Msg["DISABLE_BLOCK"] = "停用區塊";
|
|
84
|
+
Blockly.Msg["DUPLICATE_BLOCK"] = "重複";
|
|
85
|
+
Blockly.Msg["DUPLICATE_COMMENT"] = "複製註解";
|
|
86
|
+
Blockly.Msg["ENABLE_BLOCK"] = "啟用積木";
|
|
87
|
+
Blockly.Msg["EXPAND_ALL"] = "展開積木";
|
|
88
|
+
Blockly.Msg["EXPAND_BLOCK"] = "展開區塊";
|
|
89
|
+
Blockly.Msg["EXTERNAL_INPUTS"] = "外部輸入";
|
|
90
|
+
Blockly.Msg["HELP"] = "說明";
|
|
91
|
+
Blockly.Msg["INLINE_INPUTS"] = "單行輸入";
|
|
92
|
+
Blockly.Msg["LISTS_CREATE_EMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-empty-list"; // untranslated
|
|
93
|
+
Blockly.Msg["LISTS_CREATE_EMPTY_TITLE"] = "建立空的清單";
|
|
94
|
+
Blockly.Msg["LISTS_CREATE_EMPTY_TOOLTIP"] = "返回一個長度(項目數量)為 0 的清單,不包含任何資料記錄";
|
|
95
|
+
Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TITLE_ADD"] = "清單";
|
|
96
|
+
Blockly.Msg["LISTS_CREATE_WITH_CONTAINER_TOOLTIP"] = "添加、刪除或重新排列各部份以重新配置這個清單區塊。";
|
|
97
|
+
Blockly.Msg["LISTS_CREATE_WITH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated
|
|
98
|
+
Blockly.Msg["LISTS_CREATE_WITH_INPUT_WITH"] = "使用這些值建立清單";
|
|
99
|
+
Blockly.Msg["LISTS_CREATE_WITH_ITEM_TOOLTIP"] = "添加一個項目到清單裡。";
|
|
100
|
+
Blockly.Msg["LISTS_CREATE_WITH_TOOLTIP"] = "建立一個具備任意數量項目的清單。";
|
|
101
|
+
Blockly.Msg["LISTS_GET_INDEX_FIRST"] = "第一筆";
|
|
102
|
+
Blockly.Msg["LISTS_GET_INDEX_FROM_END"] = "倒數第 # 筆";
|
|
103
|
+
Blockly.Msg["LISTS_GET_INDEX_FROM_START"] = "#"; // untranslated
|
|
104
|
+
Blockly.Msg["LISTS_GET_INDEX_GET"] = "取得";
|
|
105
|
+
Blockly.Msg["LISTS_GET_INDEX_GET_REMOVE"] = "取得並移除";
|
|
106
|
+
Blockly.Msg["LISTS_GET_INDEX_LAST"] = "最後一筆";
|
|
107
|
+
Blockly.Msg["LISTS_GET_INDEX_RANDOM"] = "隨機";
|
|
108
|
+
Blockly.Msg["LISTS_GET_INDEX_REMOVE"] = "移除";
|
|
109
|
+
Blockly.Msg["LISTS_GET_INDEX_TAIL"] = ""; // untranslated
|
|
110
|
+
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FIRST"] = "返回清單中的第一個項目。";
|
|
111
|
+
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_FROM"] = "返回在清單中指定位置的項目。";
|
|
112
|
+
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_LAST"] = "返回清單中的最後一個項目。";
|
|
113
|
+
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_RANDOM"] = "返回清單中隨機一個項目。";
|
|
114
|
+
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FIRST"] = "移除並返回清單中的第一個項目。";
|
|
115
|
+
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_FROM"] = "移除並返回清單中的指定位置的項目。";
|
|
116
|
+
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_LAST"] = "移除並返回清單中的最後一個項目。";
|
|
117
|
+
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_GET_REMOVE_RANDOM"] = "移除並返回清單中的隨機項目。";
|
|
118
|
+
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FIRST"] = "移除清單中的第一個項目。";
|
|
119
|
+
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_FROM"] = "移除在清單中指定位置的項目。";
|
|
120
|
+
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_LAST"] = "移除清單中的最後一個項目。";
|
|
121
|
+
Blockly.Msg["LISTS_GET_INDEX_TOOLTIP_REMOVE_RANDOM"] = "移除清單中隨機一個項目。";
|
|
122
|
+
Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_END"] = "到 # 倒數";
|
|
123
|
+
Blockly.Msg["LISTS_GET_SUBLIST_END_FROM_START"] = "到 #";
|
|
124
|
+
Blockly.Msg["LISTS_GET_SUBLIST_END_LAST"] = "到 最後面";
|
|
125
|
+
Blockly.Msg["LISTS_GET_SUBLIST_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-a-sublist"; // untranslated
|
|
126
|
+
Blockly.Msg["LISTS_GET_SUBLIST_START_FIRST"] = "取得子清單 從 最前面";
|
|
127
|
+
Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_END"] = "取得子清單 從 # 倒數";
|
|
128
|
+
Blockly.Msg["LISTS_GET_SUBLIST_START_FROM_START"] = "取得子清單 從 #";
|
|
129
|
+
Blockly.Msg["LISTS_GET_SUBLIST_TAIL"] = ""; // untranslated
|
|
130
|
+
Blockly.Msg["LISTS_GET_SUBLIST_TOOLTIP"] = "複製清單中指定的部分。";
|
|
131
|
+
Blockly.Msg["LISTS_INDEX_FROM_END_TOOLTIP"] = "%1 是最後一個項目。";
|
|
132
|
+
Blockly.Msg["LISTS_INDEX_FROM_START_TOOLTIP"] = "%1 是第一個項目。";
|
|
133
|
+
Blockly.Msg["LISTS_INDEX_OF_FIRST"] = "從 最前面 索引項目";
|
|
134
|
+
Blockly.Msg["LISTS_INDEX_OF_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#getting-items-from-a-list"; // untranslated
|
|
135
|
+
Blockly.Msg["LISTS_INDEX_OF_LAST"] = "從 最後面 索引項目";
|
|
136
|
+
Blockly.Msg["LISTS_INDEX_OF_TOOLTIP"] = "在清單中檢索是否有包含項目,如果有,返回從頭/倒數算起的索引值。如果沒有則返回 %1。";
|
|
137
|
+
Blockly.Msg["LISTS_INLIST"] = "自清單";
|
|
138
|
+
Blockly.Msg["LISTS_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#is-empty"; // untranslated
|
|
139
|
+
Blockly.Msg["LISTS_ISEMPTY_TITLE"] = "%1 值為空";
|
|
140
|
+
Blockly.Msg["LISTS_ISEMPTY_TOOLTIP"] = "如果該清單為空,則返回 true。";
|
|
141
|
+
Blockly.Msg["LISTS_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#length-of"; // untranslated
|
|
142
|
+
Blockly.Msg["LISTS_LENGTH_TITLE"] = "長度 %1";
|
|
143
|
+
Blockly.Msg["LISTS_LENGTH_TOOLTIP"] = "返回清單的長度(項目數)。";
|
|
144
|
+
Blockly.Msg["LISTS_REPEAT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#create-list-with"; // untranslated
|
|
145
|
+
Blockly.Msg["LISTS_REPEAT_TITLE"] = "建立清單使用項目 %1 重複 %2 次";
|
|
146
|
+
Blockly.Msg["LISTS_REPEAT_TOOLTIP"] = "建立一個清單,項目中包含指定重複次數的值。";
|
|
147
|
+
Blockly.Msg["LISTS_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#reversing-a-list";
|
|
148
|
+
Blockly.Msg["LISTS_REVERSE_MESSAGE0"] = "反轉%1";
|
|
149
|
+
Blockly.Msg["LISTS_REVERSE_TOOLTIP"] = "反轉清單的複製內容。";
|
|
150
|
+
Blockly.Msg["LISTS_SET_INDEX_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#in-list--set"; // untranslated
|
|
151
|
+
Blockly.Msg["LISTS_SET_INDEX_INPUT_TO"] = "為";
|
|
152
|
+
Blockly.Msg["LISTS_SET_INDEX_INSERT"] = "添加";
|
|
153
|
+
Blockly.Msg["LISTS_SET_INDEX_SET"] = "設定";
|
|
154
|
+
Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FIRST"] = "添加一個項目到清單中的第一個位置。";
|
|
155
|
+
Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_FROM"] = "添加一個項目到清單中的指定位置。";
|
|
156
|
+
Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_LAST"] = "添加一個項目到清單中的最後一個位置。";
|
|
157
|
+
Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_INSERT_RANDOM"] = "添加一個項目到清單中的隨機位置。";
|
|
158
|
+
Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FIRST"] = "設定清單中的第一個項目。";
|
|
159
|
+
Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_FROM"] = "設定清單中指定位置的項目。";
|
|
160
|
+
Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_LAST"] = "設定清單中的最後一個項目。";
|
|
161
|
+
Blockly.Msg["LISTS_SET_INDEX_TOOLTIP_SET_RANDOM"] = "設定清單中隨機一個項目。";
|
|
162
|
+
Blockly.Msg["LISTS_SORT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#sorting-a-list";
|
|
163
|
+
Blockly.Msg["LISTS_SORT_ORDER_ASCENDING"] = "升序";
|
|
164
|
+
Blockly.Msg["LISTS_SORT_ORDER_DESCENDING"] = "降序";
|
|
165
|
+
Blockly.Msg["LISTS_SORT_TITLE"] = "排列 %1 %2 %3";
|
|
166
|
+
Blockly.Msg["LISTS_SORT_TOOLTIP"] = "排序清單的複製內容。";
|
|
167
|
+
Blockly.Msg["LISTS_SORT_TYPE_IGNORECASE"] = "依字母排序,忽略大小寫";
|
|
168
|
+
Blockly.Msg["LISTS_SORT_TYPE_NUMERIC"] = "依數字";
|
|
169
|
+
Blockly.Msg["LISTS_SORT_TYPE_TEXT"] = "依字母";
|
|
170
|
+
Blockly.Msg["LISTS_SPLIT_HELPURL"] = "https://github.com/google/blockly/wiki/Lists#splitting-strings-and-joining-lists"; // untranslated
|
|
171
|
+
Blockly.Msg["LISTS_SPLIT_LIST_FROM_TEXT"] = "從文本製作清單";
|
|
172
|
+
Blockly.Msg["LISTS_SPLIT_TEXT_FROM_LIST"] = "從清單拆出文本";
|
|
173
|
+
Blockly.Msg["LISTS_SPLIT_TOOLTIP_JOIN"] = "串起清單項目成一個文本,並用分隔符號分開。";
|
|
174
|
+
Blockly.Msg["LISTS_SPLIT_TOOLTIP_SPLIT"] = "將文本變成清單項目,按分隔符號拆分。";
|
|
175
|
+
Blockly.Msg["LISTS_SPLIT_WITH_DELIMITER"] = "用分隔符";
|
|
176
|
+
Blockly.Msg["LOGIC_BOOLEAN_FALSE"] = "假";
|
|
177
|
+
Blockly.Msg["LOGIC_BOOLEAN_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#values"; // untranslated
|
|
178
|
+
Blockly.Msg["LOGIC_BOOLEAN_TOOLTIP"] = "返回真或假。";
|
|
179
|
+
Blockly.Msg["LOGIC_BOOLEAN_TRUE"] = "真";
|
|
180
|
+
Blockly.Msg["LOGIC_COMPARE_HELPURL"] = "https://zh.wikipedia.org/wiki/不等";
|
|
181
|
+
Blockly.Msg["LOGIC_COMPARE_TOOLTIP_EQ"] = "如果這兩個輸入區塊的結果相等,返回 true。";
|
|
182
|
+
Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GT"] = "如果第一個輸入結果大於第二個,返回 true。";
|
|
183
|
+
Blockly.Msg["LOGIC_COMPARE_TOOLTIP_GTE"] = "如果第一個輸入結果大於或等於第二個,返回 true。";
|
|
184
|
+
Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LT"] = "如果第一個輸入結果比第二個小,返回 true。";
|
|
185
|
+
Blockly.Msg["LOGIC_COMPARE_TOOLTIP_LTE"] = "如果第一個輸入結果小於或等於第二個,返回 true。";
|
|
186
|
+
Blockly.Msg["LOGIC_COMPARE_TOOLTIP_NEQ"] = "如果這兩個輸入區塊的結果不相等,返回 true。";
|
|
187
|
+
Blockly.Msg["LOGIC_NEGATE_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#not"; // untranslated
|
|
188
|
+
Blockly.Msg["LOGIC_NEGATE_TITLE"] = "%1 不成立";
|
|
189
|
+
Blockly.Msg["LOGIC_NEGATE_TOOLTIP"] = "如果輸入結果是 false,則返回 true。如果輸入結果是 true,則返回 false。";
|
|
190
|
+
Blockly.Msg["LOGIC_NULL"] = "空";
|
|
191
|
+
Blockly.Msg["LOGIC_NULL_HELPURL"] = "https://en.wikipedia.org/wiki/Nullable_type"; // untranslated
|
|
192
|
+
Blockly.Msg["LOGIC_NULL_TOOLTIP"] = "返回空值。";
|
|
193
|
+
Blockly.Msg["LOGIC_OPERATION_AND"] = "和";
|
|
194
|
+
Blockly.Msg["LOGIC_OPERATION_HELPURL"] = "https://github.com/google/blockly/wiki/Logic#logical-operations"; // untranslated
|
|
195
|
+
Blockly.Msg["LOGIC_OPERATION_OR"] = "或";
|
|
196
|
+
Blockly.Msg["LOGIC_OPERATION_TOOLTIP_AND"] = "如果兩個輸入結果都為 true,則返回 true。";
|
|
197
|
+
Blockly.Msg["LOGIC_OPERATION_TOOLTIP_OR"] = "如果至少一個輸入結果為 true,返回 true。";
|
|
198
|
+
Blockly.Msg["LOGIC_TERNARY_CONDITION"] = "測試";
|
|
199
|
+
Blockly.Msg["LOGIC_TERNARY_HELPURL"] = "https://zh.wikipedia.org/wiki/條件運算符";
|
|
200
|
+
Blockly.Msg["LOGIC_TERNARY_IF_FALSE"] = "如果為假";
|
|
201
|
+
Blockly.Msg["LOGIC_TERNARY_IF_TRUE"] = "如果為真";
|
|
202
|
+
Blockly.Msg["LOGIC_TERNARY_TOOLTIP"] = "檢查「測試」中的條件。如果條件為真,將返回「如果為真」的值;否則,返回「如果為假」的值。";
|
|
203
|
+
Blockly.Msg["MATH_ADDITION_SYMBOL"] = "+"; // untranslated
|
|
204
|
+
Blockly.Msg["MATH_ARITHMETIC_HELPURL"] = "https://zh.wikipedia.org/wiki/算術";
|
|
205
|
+
Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_ADD"] = "返回兩個數字的總和。";
|
|
206
|
+
Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_DIVIDE"] = "返回兩個數字的商。";
|
|
207
|
+
Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MINUS"] = "返回兩個數字的差。";
|
|
208
|
+
Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_MULTIPLY"] = "返回兩個數字的乘積。";
|
|
209
|
+
Blockly.Msg["MATH_ARITHMETIC_TOOLTIP_POWER"] = "返回第二個數字的指數的第一個數字。";
|
|
210
|
+
Blockly.Msg["MATH_ATAN2_HELPURL"] = "https://zh.wikipedia.org/wiki/Atan2";
|
|
211
|
+
Blockly.Msg["MATH_ATAN2_TITLE"] = "X:%1 Y:%2 的 Atan2";
|
|
212
|
+
Blockly.Msg["MATH_ATAN2_TOOLTIP"] = "回傳點(X,Y)從 -180 至 180 度的反正切值。";
|
|
213
|
+
Blockly.Msg["MATH_CHANGE_HELPURL"] = "https://zh.wikipedia.org/wiki/加法";
|
|
214
|
+
Blockly.Msg["MATH_CHANGE_TITLE"] = "修改 %1 自 %2";
|
|
215
|
+
Blockly.Msg["MATH_CHANGE_TOOLTIP"] = "將數字加到變數「%1」。";
|
|
216
|
+
Blockly.Msg["MATH_CONSTANT_HELPURL"] = "https://zh.wikipedia.org/wiki/數學常數";
|
|
217
|
+
Blockly.Msg["MATH_CONSTANT_TOOLTIP"] = "返回一個的常見常量: π (3.141......),e (2.718...)、 φ (1.618...)、 開方(2) (1.414......)、 開方(½) (0.707......) 或 ∞ (無窮大)。";
|
|
218
|
+
Blockly.Msg["MATH_CONSTRAIN_HELPURL"] = "https://en.wikipedia.org/wiki/Clamping_(graphics)"; // untranslated
|
|
219
|
+
Blockly.Msg["MATH_CONSTRAIN_TITLE"] = "限制數字 %1 介於(低)%2 到(高)%3";
|
|
220
|
+
Blockly.Msg["MATH_CONSTRAIN_TOOLTIP"] = "限制數字介於兩個指定的數字之間(包含)。";
|
|
221
|
+
Blockly.Msg["MATH_DIVISION_SYMBOL"] = "÷"; // untranslated
|
|
222
|
+
Blockly.Msg["MATH_IS_DIVISIBLE_BY"] = "可被整除";
|
|
223
|
+
Blockly.Msg["MATH_IS_EVEN"] = "是偶數";
|
|
224
|
+
Blockly.Msg["MATH_IS_NEGATIVE"] = "是負數";
|
|
225
|
+
Blockly.Msg["MATH_IS_ODD"] = "是奇數";
|
|
226
|
+
Blockly.Msg["MATH_IS_POSITIVE"] = "是正值";
|
|
227
|
+
Blockly.Msg["MATH_IS_PRIME"] = "是質數";
|
|
228
|
+
Blockly.Msg["MATH_IS_TOOLTIP"] = "如果數字是偶數,奇數,非負整數,正數、 負數,或如果它是可被某數字整除,則返回 true 或 false。";
|
|
229
|
+
Blockly.Msg["MATH_IS_WHOLE"] = "是整數";
|
|
230
|
+
Blockly.Msg["MATH_MODULO_HELPURL"] = "https://zh.wikipedia.org/wiki/模除";
|
|
231
|
+
Blockly.Msg["MATH_MODULO_TITLE"] = "%1 除以 %2 的餘數";
|
|
232
|
+
Blockly.Msg["MATH_MODULO_TOOLTIP"] = "回傳兩個數字相除的餘數。";
|
|
233
|
+
Blockly.Msg["MATH_MULTIPLICATION_SYMBOL"] = "×"; // untranslated
|
|
234
|
+
Blockly.Msg["MATH_NUMBER_HELPURL"] = "https://zh.wikipedia.org/wiki/數";
|
|
235
|
+
Blockly.Msg["MATH_NUMBER_TOOLTIP"] = "一個數字。";
|
|
236
|
+
Blockly.Msg["MATH_ONLIST_HELPURL"] = ""; // untranslated
|
|
237
|
+
Blockly.Msg["MATH_ONLIST_OPERATOR_AVERAGE"] = "平均數 自清單";
|
|
238
|
+
Blockly.Msg["MATH_ONLIST_OPERATOR_MAX"] = "最大值 自清單";
|
|
239
|
+
Blockly.Msg["MATH_ONLIST_OPERATOR_MEDIAN"] = "中位數 自清單";
|
|
240
|
+
Blockly.Msg["MATH_ONLIST_OPERATOR_MIN"] = "最小值 自清單";
|
|
241
|
+
Blockly.Msg["MATH_ONLIST_OPERATOR_MODE"] = "比較眾數 自清單";
|
|
242
|
+
Blockly.Msg["MATH_ONLIST_OPERATOR_RANDOM"] = "隨機抽取 自清單";
|
|
243
|
+
Blockly.Msg["MATH_ONLIST_OPERATOR_STD_DEV"] = "標準差 自清單";
|
|
244
|
+
Blockly.Msg["MATH_ONLIST_OPERATOR_SUM"] = "數字總和 自清單";
|
|
245
|
+
Blockly.Msg["MATH_ONLIST_TOOLTIP_AVERAGE"] = "返回清單中數值的平均值(算術平均值)。";
|
|
246
|
+
Blockly.Msg["MATH_ONLIST_TOOLTIP_MAX"] = "返回清單項目中最大的數字。";
|
|
247
|
+
Blockly.Msg["MATH_ONLIST_TOOLTIP_MEDIAN"] = "返回清單中數值的中位數。";
|
|
248
|
+
Blockly.Msg["MATH_ONLIST_TOOLTIP_MIN"] = "返回清單項目中最小的數字。";
|
|
249
|
+
Blockly.Msg["MATH_ONLIST_TOOLTIP_MODE"] = "返回一個清單中的最常見的項目。";
|
|
250
|
+
Blockly.Msg["MATH_ONLIST_TOOLTIP_RANDOM"] = "從清單中返回一個隨機的項目。";
|
|
251
|
+
Blockly.Msg["MATH_ONLIST_TOOLTIP_STD_DEV"] = "返回清單中數字的標準差。";
|
|
252
|
+
Blockly.Msg["MATH_ONLIST_TOOLTIP_SUM"] = "返回清單中的所有數字的總和。";
|
|
253
|
+
Blockly.Msg["MATH_POWER_SYMBOL"] = "^"; // untranslated
|
|
254
|
+
Blockly.Msg["MATH_RANDOM_FLOAT_HELPURL"] = "https://zh.wikipedia.org/wiki/隨機數生成器";
|
|
255
|
+
Blockly.Msg["MATH_RANDOM_FLOAT_TITLE_RANDOM"] = "隨機取分數";
|
|
256
|
+
Blockly.Msg["MATH_RANDOM_FLOAT_TOOLTIP"] = "在 0.0(包含)和 1.0(不包含)之間隨機取一個數。";
|
|
257
|
+
Blockly.Msg["MATH_RANDOM_INT_HELPURL"] = "https://zh.wikipedia.org/wiki/隨機數生成器";
|
|
258
|
+
Blockly.Msg["MATH_RANDOM_INT_TITLE"] = "隨機取數 %1 到 %2";
|
|
259
|
+
Blockly.Msg["MATH_RANDOM_INT_TOOLTIP"] = "在指定二個數之間隨機取一個數(包含)。";
|
|
260
|
+
Blockly.Msg["MATH_ROUND_HELPURL"] = "https://zh.wikipedia.org/wiki/數值簡化";
|
|
261
|
+
Blockly.Msg["MATH_ROUND_OPERATOR_ROUND"] = "四捨五入";
|
|
262
|
+
Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDDOWN"] = "無條件捨去";
|
|
263
|
+
Blockly.Msg["MATH_ROUND_OPERATOR_ROUNDUP"] = "無條件進位";
|
|
264
|
+
Blockly.Msg["MATH_ROUND_TOOLTIP"] = "將數字無條件進位或無條件捨去。";
|
|
265
|
+
Blockly.Msg["MATH_SINGLE_HELPURL"] = "https://zh.wikipedia.org/wiki/平方根";
|
|
266
|
+
Blockly.Msg["MATH_SINGLE_OP_ABSOLUTE"] = "絕對值";
|
|
267
|
+
Blockly.Msg["MATH_SINGLE_OP_ROOT"] = "開根號";
|
|
268
|
+
Blockly.Msg["MATH_SINGLE_TOOLTIP_ABS"] = "返回指定數字的絕對值。";
|
|
269
|
+
Blockly.Msg["MATH_SINGLE_TOOLTIP_EXP"] = "返回指定數字指數的e的冪次。";
|
|
270
|
+
Blockly.Msg["MATH_SINGLE_TOOLTIP_LN"] = "返回指定數字的自然對數。";
|
|
271
|
+
Blockly.Msg["MATH_SINGLE_TOOLTIP_LOG10"] = "返回指定數字的對數。";
|
|
272
|
+
Blockly.Msg["MATH_SINGLE_TOOLTIP_NEG"] = "返回指定數字的相反數。";
|
|
273
|
+
Blockly.Msg["MATH_SINGLE_TOOLTIP_POW10"] = "返回指定數字指數的10的冪次。";
|
|
274
|
+
Blockly.Msg["MATH_SINGLE_TOOLTIP_ROOT"] = "返回指定數字的平方根。";
|
|
275
|
+
Blockly.Msg["MATH_SUBTRACTION_SYMBOL"] = "-"; // untranslated
|
|
276
|
+
Blockly.Msg["MATH_TRIG_ACOS"] = "acos"; // untranslated
|
|
277
|
+
Blockly.Msg["MATH_TRIG_ASIN"] = "asin"; // untranslated
|
|
278
|
+
Blockly.Msg["MATH_TRIG_ATAN"] = "atan"; // untranslated
|
|
279
|
+
Blockly.Msg["MATH_TRIG_COS"] = "cos"; // untranslated
|
|
280
|
+
Blockly.Msg["MATH_TRIG_HELPURL"] = "https://zh.wikipedia.org/wiki/三角函數";
|
|
281
|
+
Blockly.Msg["MATH_TRIG_SIN"] = "sin"; // untranslated
|
|
282
|
+
Blockly.Msg["MATH_TRIG_TAN"] = "tan"; // untranslated
|
|
283
|
+
Blockly.Msg["MATH_TRIG_TOOLTIP_ACOS"] = "返回指定角度的反餘弦值(非弧度)。";
|
|
284
|
+
Blockly.Msg["MATH_TRIG_TOOLTIP_ASIN"] = "返回指定角度的反正弦值(非弧度)。";
|
|
285
|
+
Blockly.Msg["MATH_TRIG_TOOLTIP_ATAN"] = "返回指定角度的反正切值。";
|
|
286
|
+
Blockly.Msg["MATH_TRIG_TOOLTIP_COS"] = "返回指定角度的餘弦值(非弧度)。";
|
|
287
|
+
Blockly.Msg["MATH_TRIG_TOOLTIP_SIN"] = "返回指定角度的正弦值(非弧度)。";
|
|
288
|
+
Blockly.Msg["MATH_TRIG_TOOLTIP_TAN"] = "返回指定角度的正切值(非弧度)。";
|
|
289
|
+
Blockly.Msg["NEW_COLOUR_VARIABLE"] = "建立顏色變數…";
|
|
290
|
+
Blockly.Msg["NEW_NUMBER_VARIABLE"] = "建立數值變數……";
|
|
291
|
+
Blockly.Msg["NEW_STRING_VARIABLE"] = "建立字串變數……";
|
|
292
|
+
Blockly.Msg["NEW_VARIABLE"] = "建立變數…";
|
|
293
|
+
Blockly.Msg["NEW_VARIABLE_TITLE"] = "新變數名稱:";
|
|
294
|
+
Blockly.Msg["NEW_VARIABLE_TYPE_TITLE"] = "新變數類型:";
|
|
295
|
+
Blockly.Msg["ORDINAL_NUMBER_SUFFIX"] = ""; // untranslated
|
|
296
|
+
Blockly.Msg["PROCEDURES_ALLOW_STATEMENTS"] = "允許陳述式";
|
|
297
|
+
Blockly.Msg["PROCEDURES_BEFORE_PARAMS"] = "與:";
|
|
298
|
+
Blockly.Msg["PROCEDURES_CALLNORETURN_HELPURL"] = "https://zh.wikipedia.org/wiki/子程式";
|
|
299
|
+
Blockly.Msg["PROCEDURES_CALLNORETURN_TOOLTIP"] = "執行使用者定義的函式「%1」。";
|
|
300
|
+
Blockly.Msg["PROCEDURES_CALLRETURN_HELPURL"] = "https://zh.wikipedia.org/wiki/%E5%AD%90%E7%A8%8B%E5%BA%8F";
|
|
301
|
+
Blockly.Msg["PROCEDURES_CALLRETURN_TOOLTIP"] = "執行使用者定義的函式「%1」,並使用它的回傳值。";
|
|
302
|
+
Blockly.Msg["PROCEDURES_CALL_BEFORE_PARAMS"] = "與:";
|
|
303
|
+
Blockly.Msg["PROCEDURES_CREATE_DO"] = "建立「%1」";
|
|
304
|
+
Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"] = "描述此函式...";
|
|
305
|
+
Blockly.Msg["PROCEDURES_DEFNORETURN_DO"] = ""; // untranslated
|
|
306
|
+
Blockly.Msg["PROCEDURES_DEFNORETURN_HELPURL"] = "https://zh.wikipedia.org/wiki/子程式";
|
|
307
|
+
Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"] = "做些什麼";
|
|
308
|
+
Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"] = "到";
|
|
309
|
+
Blockly.Msg["PROCEDURES_DEFNORETURN_TOOLTIP"] = "創建一個無回傳值的函式。";
|
|
310
|
+
Blockly.Msg["PROCEDURES_DEFRETURN_HELPURL"] = "https://zh.wikipedia.org/wiki/子程式";
|
|
311
|
+
Blockly.Msg["PROCEDURES_DEFRETURN_RETURN"] = "返回";
|
|
312
|
+
Blockly.Msg["PROCEDURES_DEFRETURN_TOOLTIP"] = "創建一個有回傳值的的函式。";
|
|
313
|
+
Blockly.Msg["PROCEDURES_DEF_DUPLICATE_WARNING"] = "警告: 此函式中有重複的參數。";
|
|
314
|
+
Blockly.Msg["PROCEDURES_HIGHLIGHT_DEF"] = "反白顯示函式定義";
|
|
315
|
+
Blockly.Msg["PROCEDURES_IFRETURN_HELPURL"] = "http://c2.com/cgi/wiki?GuardClause"; // untranslated
|
|
316
|
+
Blockly.Msg["PROCEDURES_IFRETURN_TOOLTIP"] = "如果值為 true,則返回第二個值。";
|
|
317
|
+
Blockly.Msg["PROCEDURES_IFRETURN_WARNING"] = "警告:這個區塊只可以在定義函式時使用。";
|
|
318
|
+
Blockly.Msg["PROCEDURES_MUTATORARG_TITLE"] = "輸入名稱:";
|
|
319
|
+
Blockly.Msg["PROCEDURES_MUTATORARG_TOOLTIP"] = "添加一個輸入區塊到函式。";
|
|
320
|
+
Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TITLE"] = "輸入";
|
|
321
|
+
Blockly.Msg["PROCEDURES_MUTATORCONTAINER_TOOLTIP"] = "添加、刪除或重新排列此函式的輸入。";
|
|
322
|
+
Blockly.Msg["REDO"] = "重做";
|
|
323
|
+
Blockly.Msg["REMOVE_COMMENT"] = "移除註解";
|
|
324
|
+
Blockly.Msg["RENAME_VARIABLE"] = "重新命名變數...";
|
|
325
|
+
Blockly.Msg["RENAME_VARIABLE_TITLE"] = "將所有「%1」變數重新命名為:";
|
|
326
|
+
Blockly.Msg["TEXT_APPEND_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated
|
|
327
|
+
Blockly.Msg["TEXT_APPEND_TITLE"] = "至 %1 套用文字 %2";
|
|
328
|
+
Blockly.Msg["TEXT_APPEND_TOOLTIP"] = "添加一些文字到變數「%1」之後。";
|
|
329
|
+
Blockly.Msg["TEXT_CHANGECASE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#adjusting-text-case"; // untranslated
|
|
330
|
+
Blockly.Msg["TEXT_CHANGECASE_OPERATOR_LOWERCASE"] = "轉成英文小寫";
|
|
331
|
+
Blockly.Msg["TEXT_CHANGECASE_OPERATOR_TITLECASE"] = "轉成英文首字大寫";
|
|
332
|
+
Blockly.Msg["TEXT_CHANGECASE_OPERATOR_UPPERCASE"] = "轉成英文大寫";
|
|
333
|
+
Blockly.Msg["TEXT_CHANGECASE_TOOLTIP"] = "使用不同的大小寫複製這段文字。";
|
|
334
|
+
Blockly.Msg["TEXT_CHARAT_FIRST"] = "取得 第一個字元";
|
|
335
|
+
Blockly.Msg["TEXT_CHARAT_FROM_END"] = "取得 倒數第 # 個字元";
|
|
336
|
+
Blockly.Msg["TEXT_CHARAT_FROM_START"] = "取得 字元 #";
|
|
337
|
+
Blockly.Msg["TEXT_CHARAT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-text"; // untranslated
|
|
338
|
+
Blockly.Msg["TEXT_CHARAT_LAST"] = "取得 最後一個字元";
|
|
339
|
+
Blockly.Msg["TEXT_CHARAT_RANDOM"] = "取得 任意字元";
|
|
340
|
+
Blockly.Msg["TEXT_CHARAT_TAIL"] = ""; // untranslated
|
|
341
|
+
Blockly.Msg["TEXT_CHARAT_TITLE"] = "在文字 %1 %2";
|
|
342
|
+
Blockly.Msg["TEXT_CHARAT_TOOLTIP"] = "返回位於指定位置的字元。";
|
|
343
|
+
Blockly.Msg["TEXT_COUNT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#counting-substrings";
|
|
344
|
+
Blockly.Msg["TEXT_COUNT_MESSAGE0"] = "在%2計算%1";
|
|
345
|
+
Blockly.Msg["TEXT_COUNT_TOOLTIP"] = "計算某些文字在內容裡的出現次數。";
|
|
346
|
+
Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TOOLTIP"] = "添加一個項目到字串中。";
|
|
347
|
+
Blockly.Msg["TEXT_CREATE_JOIN_TITLE_JOIN"] = "加入";
|
|
348
|
+
Blockly.Msg["TEXT_CREATE_JOIN_TOOLTIP"] = "添加、刪除或重新排列各部份以重新配置這個文字區塊。";
|
|
349
|
+
Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_END"] = "到 倒數第 # 個字元";
|
|
350
|
+
Blockly.Msg["TEXT_GET_SUBSTRING_END_FROM_START"] = "到 字元 #";
|
|
351
|
+
Blockly.Msg["TEXT_GET_SUBSTRING_END_LAST"] = "到最後一個字元";
|
|
352
|
+
Blockly.Msg["TEXT_GET_SUBSTRING_HELPURL"] = "https://github.com/google/blockly/wiki/Text#extracting-a-region-of-text"; // untranslated
|
|
353
|
+
Blockly.Msg["TEXT_GET_SUBSTRING_INPUT_IN_TEXT"] = "在字串";
|
|
354
|
+
Blockly.Msg["TEXT_GET_SUBSTRING_START_FIRST"] = "取得 第一個字元";
|
|
355
|
+
Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_END"] = "取得 倒數第 # 個字元";
|
|
356
|
+
Blockly.Msg["TEXT_GET_SUBSTRING_START_FROM_START"] = "取得 字元 #";
|
|
357
|
+
Blockly.Msg["TEXT_GET_SUBSTRING_TAIL"] = ""; // untranslated
|
|
358
|
+
Blockly.Msg["TEXT_GET_SUBSTRING_TOOLTIP"] = "返回指定的部分文字。";
|
|
359
|
+
Blockly.Msg["TEXT_INDEXOF_HELPURL"] = "https://github.com/google/blockly/wiki/Text#finding-text"; // untranslated
|
|
360
|
+
Blockly.Msg["TEXT_INDEXOF_OPERATOR_FIRST"] = "從 最前面 索引字串";
|
|
361
|
+
Blockly.Msg["TEXT_INDEXOF_OPERATOR_LAST"] = "從 最後面 索引字串";
|
|
362
|
+
Blockly.Msg["TEXT_INDEXOF_TITLE"] = "在文字 %1 %2 %3";
|
|
363
|
+
Blockly.Msg["TEXT_INDEXOF_TOOLTIP"] = "在字串1中檢索是否有包含字串2,如果有,返回從頭/倒數算起的索引值。如果沒有則返回 %1。";
|
|
364
|
+
Blockly.Msg["TEXT_ISEMPTY_HELPURL"] = "https://github.com/google/blockly/wiki/Text#checking-for-empty-text"; // untranslated
|
|
365
|
+
Blockly.Msg["TEXT_ISEMPTY_TITLE"] = "%1 為空";
|
|
366
|
+
Blockly.Msg["TEXT_ISEMPTY_TOOLTIP"] = "如果提供的字串為空,則返回 true。";
|
|
367
|
+
Blockly.Msg["TEXT_JOIN_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-creation"; // untranslated
|
|
368
|
+
Blockly.Msg["TEXT_JOIN_TITLE_CREATEWITH"] = "字串組合";
|
|
369
|
+
Blockly.Msg["TEXT_JOIN_TOOLTIP"] = "通過連接任意數量的項目來建立一串文字。";
|
|
370
|
+
Blockly.Msg["TEXT_LENGTH_HELPURL"] = "https://github.com/google/blockly/wiki/Text#text-modification"; // untranslated
|
|
371
|
+
Blockly.Msg["TEXT_LENGTH_TITLE"] = "長度 %1";
|
|
372
|
+
Blockly.Msg["TEXT_LENGTH_TOOLTIP"] = "返回這串文字的字元數(包含空格)。";
|
|
373
|
+
Blockly.Msg["TEXT_PRINT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#printing-text"; // untranslated
|
|
374
|
+
Blockly.Msg["TEXT_PRINT_TITLE"] = "輸出 %1";
|
|
375
|
+
Blockly.Msg["TEXT_PRINT_TOOLTIP"] = "輸出指定的文字、 數字或其他值。";
|
|
376
|
+
Blockly.Msg["TEXT_PROMPT_HELPURL"] = "https://github.com/google/blockly/wiki/Text#getting-input-from-the-user"; // untranslated
|
|
377
|
+
Blockly.Msg["TEXT_PROMPT_TOOLTIP_NUMBER"] = "輸入數字";
|
|
378
|
+
Blockly.Msg["TEXT_PROMPT_TOOLTIP_TEXT"] = "輸入文字";
|
|
379
|
+
Blockly.Msg["TEXT_PROMPT_TYPE_NUMBER"] = "輸入 數字 並顯示提示訊息";
|
|
380
|
+
Blockly.Msg["TEXT_PROMPT_TYPE_TEXT"] = "輸入 文字 並顯示提示訊息";
|
|
381
|
+
Blockly.Msg["TEXT_REPLACE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#replacing-substrings";
|
|
382
|
+
Blockly.Msg["TEXT_REPLACE_MESSAGE0"] = "在%3以%2取代%1";
|
|
383
|
+
Blockly.Msg["TEXT_REPLACE_TOOLTIP"] = "取代在內容裡的全部某些文字。";
|
|
384
|
+
Blockly.Msg["TEXT_REVERSE_HELPURL"] = "https://github.com/google/blockly/wiki/Text#reversing-text";
|
|
385
|
+
Blockly.Msg["TEXT_REVERSE_MESSAGE0"] = "反轉%1";
|
|
386
|
+
Blockly.Msg["TEXT_REVERSE_TOOLTIP"] = "反轉排序在文字裡的字元。";
|
|
387
|
+
Blockly.Msg["TEXT_TEXT_HELPURL"] = "https://zh.wikipedia.org/wiki/字串";
|
|
388
|
+
Blockly.Msg["TEXT_TEXT_TOOLTIP"] = "一個字元、一個單詞,或一串文字。";
|
|
389
|
+
Blockly.Msg["TEXT_TRIM_HELPURL"] = "https://github.com/google/blockly/wiki/Text#trimming-removing-spaces"; // untranslated
|
|
390
|
+
Blockly.Msg["TEXT_TRIM_OPERATOR_BOTH"] = "消除兩側空格";
|
|
391
|
+
Blockly.Msg["TEXT_TRIM_OPERATOR_LEFT"] = "消除左側空格";
|
|
392
|
+
Blockly.Msg["TEXT_TRIM_OPERATOR_RIGHT"] = "消除右側空格";
|
|
393
|
+
Blockly.Msg["TEXT_TRIM_TOOLTIP"] = "複製這段文字,同時刪除兩端多餘的空格。";
|
|
394
|
+
Blockly.Msg["TODAY"] = "今天";
|
|
395
|
+
Blockly.Msg["UNDO"] = "還原";
|
|
396
|
+
Blockly.Msg["UNNAMED_KEY"] = "未命名";
|
|
397
|
+
Blockly.Msg["VARIABLES_DEFAULT_NAME"] = "項目";
|
|
398
|
+
Blockly.Msg["VARIABLES_GET_CREATE_SET"] = "建立「賦值 %1」";
|
|
399
|
+
Blockly.Msg["VARIABLES_GET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#get"; // untranslated
|
|
400
|
+
Blockly.Msg["VARIABLES_GET_TOOLTIP"] = "返回此變數的值。";
|
|
401
|
+
Blockly.Msg["VARIABLES_SET"] = "賦值 %1 成 %2";
|
|
402
|
+
Blockly.Msg["VARIABLES_SET_CREATE_GET"] = "建立「取得 %1」";
|
|
403
|
+
Blockly.Msg["VARIABLES_SET_HELPURL"] = "https://github.com/google/blockly/wiki/Variables#set"; // untranslated
|
|
404
|
+
Blockly.Msg["VARIABLES_SET_TOOLTIP"] = "設定此變數,好和輸入結果相等。";
|
|
405
|
+
Blockly.Msg["VARIABLE_ALREADY_EXISTS"] = "已存在變數「%1」。";
|
|
406
|
+
Blockly.Msg["VARIABLE_ALREADY_EXISTS_FOR_ANOTHER_TYPE"] = "已存在名為「%1」,且用於其它類型「%2」的變數。";
|
|
407
|
+
Blockly.Msg["WORKSPACE_ARIA_LABEL"] = "Blockly工作區";
|
|
408
|
+
Blockly.Msg["WORKSPACE_COMMENT_DEFAULT_TEXT"] = "來說些事情...";
|
|
409
|
+
Blockly.Msg["CONTROLS_FOREACH_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"];
|
|
410
|
+
Blockly.Msg["CONTROLS_FOR_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"];
|
|
411
|
+
Blockly.Msg["CONTROLS_IF_ELSEIF_TITLE_ELSEIF"] = Blockly.Msg["CONTROLS_IF_MSG_ELSEIF"];
|
|
412
|
+
Blockly.Msg["CONTROLS_IF_ELSE_TITLE_ELSE"] = Blockly.Msg["CONTROLS_IF_MSG_ELSE"];
|
|
413
|
+
Blockly.Msg["CONTROLS_IF_IF_TITLE_IF"] = Blockly.Msg["CONTROLS_IF_MSG_IF"];
|
|
414
|
+
Blockly.Msg["CONTROLS_IF_MSG_THEN"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"];
|
|
415
|
+
Blockly.Msg["CONTROLS_WHILEUNTIL_INPUT_DO"] = Blockly.Msg["CONTROLS_REPEAT_INPUT_DO"];
|
|
416
|
+
Blockly.Msg["LISTS_CREATE_WITH_ITEM_TITLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"];
|
|
417
|
+
Blockly.Msg["LISTS_GET_INDEX_HELPURL"] = Blockly.Msg["LISTS_INDEX_OF_HELPURL"];
|
|
418
|
+
Blockly.Msg["LISTS_GET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"];
|
|
419
|
+
Blockly.Msg["LISTS_GET_SUBLIST_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"];
|
|
420
|
+
Blockly.Msg["LISTS_INDEX_OF_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"];
|
|
421
|
+
Blockly.Msg["LISTS_SET_INDEX_INPUT_IN_LIST"] = Blockly.Msg["LISTS_INLIST"];
|
|
422
|
+
Blockly.Msg["MATH_CHANGE_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"];
|
|
423
|
+
Blockly.Msg["PROCEDURES_DEFRETURN_COMMENT"] = Blockly.Msg["PROCEDURES_DEFNORETURN_COMMENT"];
|
|
424
|
+
Blockly.Msg["PROCEDURES_DEFRETURN_DO"] = Blockly.Msg["PROCEDURES_DEFNORETURN_DO"];
|
|
425
|
+
Blockly.Msg["PROCEDURES_DEFRETURN_PROCEDURE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_PROCEDURE"];
|
|
426
|
+
Blockly.Msg["PROCEDURES_DEFRETURN_TITLE"] = Blockly.Msg["PROCEDURES_DEFNORETURN_TITLE"];
|
|
427
|
+
Blockly.Msg["TEXT_APPEND_VARIABLE"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"];
|
|
428
|
+
Blockly.Msg["TEXT_CREATE_JOIN_ITEM_TITLE_ITEM"] = Blockly.Msg["VARIABLES_DEFAULT_NAME"];
|
|
429
|
+
|
|
430
|
+
Blockly.Msg["MATH_HUE"] = "230";
|
|
431
|
+
Blockly.Msg["LOOPS_HUE"] = "120";
|
|
432
|
+
Blockly.Msg["LISTS_HUE"] = "260";
|
|
433
|
+
Blockly.Msg["LOGIC_HUE"] = "210";
|
|
434
|
+
Blockly.Msg["VARIABLES_HUE"] = "330";
|
|
435
|
+
Blockly.Msg["TEXTS_HUE"] = "160";
|
|
436
|
+
Blockly.Msg["PROCEDURES_HUE"] = "290";
|
|
437
|
+
Blockly.Msg["COLOUR_HUE"] = "20";
|
|
438
|
+
Blockly.Msg["VARIABLES_DYNAMIC_HUE"] = "310";
|
|
439
|
+
return Blockly.Msg;
|
|
440
|
+
}));
|
package/routes/actions.js
CHANGED
|
@@ -524,7 +524,7 @@ function genWorkflowDiagram(steps) {
|
|
|
524
524
|
);
|
|
525
525
|
if (stepNames.includes(step.next_step)) {
|
|
526
526
|
linkLines.push(
|
|
527
|
-
` ${step.mmname}-- <i class="fas fa-plus add-btw-nodes btw-nodes-${step.id}-${step.next_step}"></i>
|
|
527
|
+
` ${step.mmname} -- <i class="fas fa-plus add-btw-nodes btw-nodes-${step.id}-${step.next_step}"></i> --- ${step.mmnext}`
|
|
528
528
|
);
|
|
529
529
|
} else if (step.next_step) {
|
|
530
530
|
let found = false;
|
|
@@ -731,6 +731,7 @@ const getWorkflowStepForm = async (
|
|
|
731
731
|
},
|
|
732
732
|
};
|
|
733
733
|
if (cfgFld.input_type === "code") cfgFld.input_type = "textarea";
|
|
734
|
+
actionConfigFields.push(cfgFld)
|
|
734
735
|
}
|
|
735
736
|
} catch {}
|
|
736
737
|
}
|
|
@@ -1213,7 +1214,12 @@ router.post(
|
|
|
1213
1214
|
});
|
|
1214
1215
|
await trigger.delete();
|
|
1215
1216
|
req.flash("success", req.__(`Trigger %s deleted`, trigger.name));
|
|
1216
|
-
|
|
1217
|
+
let redirectTarget =
|
|
1218
|
+
req.query.on_done_redirect &&
|
|
1219
|
+
is_relative_url("/" + req.query.on_done_redirect)
|
|
1220
|
+
? `/${req.query.on_done_redirect}`
|
|
1221
|
+
: "/actions/";
|
|
1222
|
+
res.redirect(redirectTarget);
|
|
1217
1223
|
})
|
|
1218
1224
|
);
|
|
1219
1225
|
|
|
@@ -1565,7 +1571,7 @@ router.get(
|
|
|
1565
1571
|
key: (run) => {
|
|
1566
1572
|
switch (run.status) {
|
|
1567
1573
|
case "Running":
|
|
1568
|
-
return run.
|
|
1574
|
+
return run.current_step_name;
|
|
1569
1575
|
case "Error":
|
|
1570
1576
|
return run.error;
|
|
1571
1577
|
case "Waiting":
|
|
@@ -1573,9 +1579,9 @@ router.get(
|
|
|
1573
1579
|
return a(
|
|
1574
1580
|
{ href: `/actions/fill-workflow-form/${run.id}` },
|
|
1575
1581
|
run.wait_info.output ? "Show " : "Fill ",
|
|
1576
|
-
run.
|
|
1582
|
+
run.current_step_name
|
|
1577
1583
|
);
|
|
1578
|
-
return run.
|
|
1584
|
+
return run.current_step_name;
|
|
1579
1585
|
default:
|
|
1580
1586
|
return "";
|
|
1581
1587
|
}
|
|
@@ -1796,7 +1802,7 @@ router.get(
|
|
|
1796
1802
|
const trigger = await Trigger.findOne({ id: run.trigger_id });
|
|
1797
1803
|
const step = await WorkflowStep.findOne({
|
|
1798
1804
|
trigger_id: trigger.id,
|
|
1799
|
-
name: run.
|
|
1805
|
+
name: run.current_step_name,
|
|
1800
1806
|
});
|
|
1801
1807
|
|
|
1802
1808
|
const form = await getWorkflowStepUserForm(run, trigger, step, req);
|
|
@@ -1824,7 +1830,7 @@ router.post(
|
|
|
1824
1830
|
const trigger = await Trigger.findOne({ id: run.trigger_id });
|
|
1825
1831
|
const step = await WorkflowStep.findOne({
|
|
1826
1832
|
trigger_id: trigger.id,
|
|
1827
|
-
name: run.
|
|
1833
|
+
name: run.current_step_name,
|
|
1828
1834
|
});
|
|
1829
1835
|
|
|
1830
1836
|
const form = await getWorkflowStepUserForm(run, trigger, step, req);
|
package/routes/common_lists.js
CHANGED
|
@@ -602,7 +602,7 @@ const getPageGroupList = (rows, roles, req) => {
|
|
|
602
602
|
);
|
|
603
603
|
};
|
|
604
604
|
|
|
605
|
-
const trigger_dropdown = (trigger, req, on_done_redirect_str = "") =>
|
|
605
|
+
const trigger_dropdown = (trigger, req, on_done_redirect_str = "") =>
|
|
606
606
|
settingsDropdown(`dropdownMenuButton${trigger.id}`, [
|
|
607
607
|
a(
|
|
608
608
|
{
|
|
@@ -638,11 +638,13 @@ const trigger_dropdown = (trigger, req, on_done_redirect_str = "") =>
|
|
|
638
638
|
const getTriggerList = async (
|
|
639
639
|
triggers,
|
|
640
640
|
req,
|
|
641
|
-
{ tagId, domId, showList, filterOnTag } = {}
|
|
641
|
+
{ tagId, domId, showList, filterOnTag, on_done_redirect } = {}
|
|
642
642
|
) => {
|
|
643
643
|
const base_url = get_base_url(req);
|
|
644
644
|
const tags = await Tag.find();
|
|
645
|
-
|
|
645
|
+
const on_done_redirect_str = on_done_redirect
|
|
646
|
+
? `?on_done_redirect=${on_done_redirect}`
|
|
647
|
+
: "";
|
|
646
648
|
const tag_entries = await TagEntry.find({
|
|
647
649
|
not: { trigger_id: null },
|
|
648
650
|
});
|
|
@@ -708,7 +710,7 @@ const getTriggerList = async (
|
|
|
708
710
|
!tagId
|
|
709
711
|
? {
|
|
710
712
|
label: "",
|
|
711
|
-
key: (r) => trigger_dropdown(r, req),
|
|
713
|
+
key: (r) => trigger_dropdown(r, req, on_done_redirect_str),
|
|
712
714
|
}
|
|
713
715
|
: {
|
|
714
716
|
label: req.__("Remove From Tag"),
|
package/routes/plugins.js
CHANGED
|
@@ -1182,38 +1182,6 @@ router.get(
|
|
|
1182
1182
|
})
|
|
1183
1183
|
);
|
|
1184
1184
|
|
|
1185
|
-
/**
|
|
1186
|
-
* @name get/pubdeps/:plugin/:dependency/:version/*
|
|
1187
|
-
* @function
|
|
1188
|
-
* @memberof module:routes/plugins~pluginsRouter
|
|
1189
|
-
* @function
|
|
1190
|
-
*/
|
|
1191
|
-
router.get(
|
|
1192
|
-
"/pubdeps/:plugin/:dependency/:version/*",
|
|
1193
|
-
error_catcher(async (req, res) => {
|
|
1194
|
-
const { plugin, dependency } = req.params;
|
|
1195
|
-
const filepath = req.params[0];
|
|
1196
|
-
|
|
1197
|
-
const pluginObj = getState().plugins[plugin];
|
|
1198
|
-
if (
|
|
1199
|
-
pluginObj &&
|
|
1200
|
-
pluginObj.serve_dependencies &&
|
|
1201
|
-
pluginObj.serve_dependencies[dependency]
|
|
1202
|
-
) {
|
|
1203
|
-
const deppath = path.dirname(pluginObj.serve_dependencies[dependency]);
|
|
1204
|
-
const safeFile = path
|
|
1205
|
-
.normalize(filepath)
|
|
1206
|
-
.replace(/^(\.\.(\/|\\|$))+/, "");
|
|
1207
|
-
const abspath = path.join(deppath, safeFile);
|
|
1208
|
-
if (fs.existsSync(abspath)) res.sendFile(abspath, { maxAge: "100d" });
|
|
1209
|
-
//100d
|
|
1210
|
-
else res.status(404).send(req.__("Not found"));
|
|
1211
|
-
} else {
|
|
1212
|
-
res.status(404).send(req.__("Not found"));
|
|
1213
|
-
}
|
|
1214
|
-
})
|
|
1215
|
-
);
|
|
1216
|
-
|
|
1217
1185
|
/**
|
|
1218
1186
|
* @name get/info/:name
|
|
1219
1187
|
* @function
|
package/routes/tables.js
CHANGED
|
@@ -920,7 +920,9 @@ router.get(
|
|
|
920
920
|
title: req.__("Triggers on table"),
|
|
921
921
|
contents:
|
|
922
922
|
(triggers.length
|
|
923
|
-
? await getTriggerList(triggers, req
|
|
923
|
+
? await getTriggerList(triggers, req, {
|
|
924
|
+
on_done_redirect: encodeURIComponent(`table/${table.name}`),
|
|
925
|
+
})
|
|
924
926
|
: p("Triggers run actions in response to events on this table")) +
|
|
925
927
|
a(
|
|
926
928
|
{
|