efront 4.21.3 → 4.22.0

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.
Files changed (96) hide show
  1. package/#/345/233/275/351/231/205/345/214/226.yml +117 -66
  2. package/apps/blank/index.html +1 -1
  3. package/apps/index.jsp +76 -27
  4. package/apps/pay/alipay-query.jsp +1 -1
  5. package/apps/pay/alipay.jsp +1 -1
  6. package/apps/pivot/auth/login.js +2 -2
  7. package/apps/pivot/cert/main.xht +18 -5
  8. package/apps/pivot/db/act.xht +53 -0
  9. package/apps/pivot/db/config.xht +56 -16
  10. package/apps/pivot/home/welcome.html +12 -13
  11. package/apps/pivot/home/welcome.js +6 -6
  12. package/apps/pivot/home/welcome.less +12 -3
  13. package/apps/pivot/link/room.js +1 -1
  14. package/apps/pivot/main.js +3 -2
  15. package/apps/pivot/task/invoke.js +3 -3
  16. package/apps/pivot/task/rsync.js +2 -2
  17. package/apps/pivot/wow/root.js +8 -8
  18. package/coms/basic/#loader.js +9 -8
  19. package/coms/basic/Item.js +2 -2
  20. package/coms/basic/Tree.js +14 -2
  21. package/coms/basic/crc.js +5 -1
  22. package/coms/basic/cross_.js +2 -2
  23. package/coms/basic/decode62S.js +44 -0
  24. package/coms/basic/encode62S.js +40 -0
  25. package/coms/basic/encode62S_test.js +18 -0
  26. package/coms/basic/enrich.js +6 -1
  27. package/coms/basic/parseNumber.js +12 -7
  28. package/coms/basic/percent.js +28 -0
  29. package/coms/basic/refilm.js +24 -5
  30. package/coms/basic/refilm_decode.js +46 -22
  31. package/coms/basic/refilm_decode_test.js +5 -0
  32. package/coms/basic/valid.js +4 -0
  33. package/coms/basic_/&Array.js +64 -49
  34. package/coms/basic_/&extends.js +9 -2
  35. package/coms/compile/Html_test.js +5 -0
  36. package/coms/compile/Javascript.js +13 -3
  37. package/coms/compile/Javascript_test.js +3 -0
  38. package/coms/compile/Program.js +119 -43
  39. package/coms/compile/audit.js +23 -1
  40. package/coms/compile/cloneNode.js +3 -1
  41. package/coms/compile/common.js +7 -1
  42. package/coms/compile/downLevel.js +21 -11
  43. package/coms/compile/downLevel_test.js +52 -14
  44. package/coms/compile/rescan.js +8 -2
  45. package/coms/compile/scanner2.js +53 -7
  46. package/coms/compile/translate.js +1 -1
  47. package/coms/compile/unstruct.js +9 -9
  48. package/coms/crypt/encode62.js +36 -6
  49. package/coms/crypt/encode62_test.js +8 -48
  50. package/coms/explorer/main.less +1 -5
  51. package/coms/frame/chat.js +2 -2
  52. package/coms/frame/left.html +5 -4
  53. package/coms/frame/left.js +1 -0
  54. package/coms/frame/left.less +5 -3
  55. package/coms/frame/payment.js +2 -2
  56. package/coms/pivot/acme2.js +7 -4
  57. package/coms/pivot/left-footer.xht +25 -0
  58. package/coms/pivot/pedit.js +3 -3
  59. package/coms/pivot/plist.js +2 -2
  60. package/coms/pivot/qrcode.xht +3 -0
  61. package/coms/zimoli/XMLHttpRequest.js +16 -13
  62. package/coms/zimoli/container.js +34 -34
  63. package/coms/zimoli/design.html +6 -13
  64. package/coms/zimoli/design.js +49 -13
  65. package/coms/zimoli/design.less +62 -25
  66. package/coms/zimoli/drag.js +8 -3
  67. package/coms/zimoli/encode62.js +40 -12
  68. package/coms/zimoli/lattice.js +0 -1
  69. package/coms/zimoli/list.js +0 -8
  70. package/coms/zimoli/menu.js +29 -5
  71. package/coms/zimoli/model.js +150 -195
  72. package/coms/zimoli/model.less +4 -8
  73. package/coms/zimoli/on.js +14 -12
  74. package/coms/zimoli/padding.less +1 -0
  75. package/coms/zimoli/progbar.xht +9 -8
  76. package/coms/zimoli/prompt.less +0 -3
  77. package/coms/zimoli/render.js +210 -125
  78. package/coms/zimoli/select.js +9 -4
  79. package/coms/zimoli/select.less +3 -14
  80. package/coms/zimoli/selectList.js +5 -1
  81. package/coms/zimoli/selectList.less +3 -0
  82. package/coms/zimoli/table.html +7 -7
  83. package/coms/zimoli/table.js +12 -9
  84. package/coms/zimoli/table.less +5 -0
  85. package/coms/zimoli/user.js +2 -2
  86. package/coms/zimoli/view.js +3 -4
  87. package/coms/zimoli/watch.js +3 -1
  88. package/coms/zimoli/zimoli.js +6 -2
  89. package/coms//350/214/250/350/217/260/tab.js +26 -2
  90. package/coms//350/214/250/350/217/260//346/240/207/347/255/276/345/214/226.js +1 -1
  91. package/coms//350/214/250/350/217/260//347/274/226/350/276/221/346/241/206.xht +183 -20
  92. package/docs//345/267/245/345/205/267//345/233/275/351/231/205/345/214/226.xht +5 -0
  93. package/package.json +1 -1
  94. package/public/efront.js +1 -1
  95. package/readme-en.md +3 -5
  96. package/readme.md +3 -4
@@ -1,3 +1,54 @@
1
+ - zh-CN: 退出登录
2
+ en: Log Out
3
+
4
+ - zh-CN: 选择类型
5
+ en: Select type
6
+
7
+ - zh-CN: 已存在$1为$2的项
8
+ en: An item with a value of $1 to $2 already exists
9
+
10
+ - zh-CN: 展示时机
11
+ en: Display timing
12
+
13
+ - zh-CN: 数据配置
14
+ en: data configuration
15
+
16
+ - zh-CN: 权限管理
17
+ en: Rights Management
18
+
19
+ - zh-CN: 字段管理
20
+ en: Field management
21
+
22
+ - zh-CN: 动作管理
23
+ en: Action Management
24
+
25
+ - zh-CN: 正在联网验证,请耐心等待..
26
+ en: "Network verification in progress, please be patient"
27
+
28
+ - zh-CN: 验证失败!
29
+ en: Verification failed!
30
+
31
+ - zh-CN: 已为您添加/更新以下权限
32
+ en: We have added/updated the following permissions for you
33
+
34
+ - zh-CN: 发现异常属性:$1
35
+ en: "Abnormal attribute found: $1"
36
+
37
+ - zh-CN: 标记不匹配
38
+ en: Tag mismatch
39
+
40
+ - zh-CN: 文件位置
41
+ en: File location
42
+
43
+ - zh-CN: 摘要
44
+ en: Summary
45
+
46
+ - zh-CN: "类型不支持: $1"
47
+ en: "Type not supported: $1"
48
+
49
+ - zh-CN: 原始数据大小为$1,目标文件大小为$2,压缩率为$3
50
+ en: "The original data size is $1, the target file size is $2, and the compression ratio is $3"
51
+
1
52
  - zh-CN: 路径$1未找到入口文件
2
53
  en: Path $1 entry file not found
3
54
 
@@ -292,11 +343,11 @@
292
343
  - zh-CN: 当前环境无法启用证书更新服务,nodeJs版本为$1
293
344
  en: "The current environment cannot enable certificate update service, nodeJs version is $1"
294
345
 
295
- - zh-CN: "$1中,由$2引用了如下$3个路径:"
296
- en: "In $1, $2 references the following $3 paths:"
346
+ - zh-CN: $1中,由$2引用了如下$3个路径
347
+ en: "In $1, $2 references the following $3 paths"
297
348
 
298
- - zh-CN: "读取出错了,路径:"
299
- en: "Error reading, path:"
349
+ - zh-CN: 读取出错了,路径
350
+ en: "Error reading, path"
300
351
 
301
352
  - zh-CN: 创建账户
302
353
  en: Create account
@@ -382,8 +433,8 @@
382
433
  - zh-CN: 已取消
383
434
  en: Canceled
384
435
 
385
- - zh-CN: 输入原密码:
386
- en: "Enter the original password:"
436
+ - zh-CN: 输入原密码
437
+ en: Enter the original password
387
438
 
388
439
  - zh-CN: 数据过载..
389
440
  en: Data overload..
@@ -463,8 +514,8 @@
463
514
  - zh-CN: 加载共享路径出错
464
515
  en: Error loading shared path
465
516
 
466
- - zh-CN: "内容格式不支持:"
467
- en: "Content format not supported:"
517
+ - zh-CN: 内容格式不支持
518
+ en: Content format not supported
468
519
 
469
520
  - zh-CN: 无法存储
470
521
  en: Unable to store
@@ -484,14 +535,14 @@
484
535
  - zh-CN: 已跳过
485
536
  en: Skipped
486
537
 
487
- - zh-CN: 在异步过程中发现未处理的异常:
488
- en: "Unhandled exception found during asynchronous process:"
538
+ - zh-CN: 在异步过程中发现未处理的异常
539
+ en: Unhandled exception found during asynchronous process
489
540
 
490
541
  - zh-CN: 颜色数据不正确:$1
491
542
  en: "Color data incorrect: $1"
492
543
 
493
- - zh-CN: "请使用https访问如下路径:"
494
- en: "Please use HTTPS to access the following path:"
544
+ - zh-CN: 请使用https访问如下路径
545
+ en: Please use HTTPS to access the following path
495
546
 
496
547
  - zh-CN: 对象过大,$1未能完成比对
497
548
  en: "Object too large, $1 failed to complete comparison"
@@ -646,8 +697,8 @@
646
697
  - zh-CN: 父作用域链的长度必须相等着
647
698
  en: The length of the parent scope chain must be equal
648
699
 
649
- - zh-CN: "同一个id不能使用两次:"
650
- en: "The same ID cannot be used twice:"
700
+ - zh-CN: 同一个id不能使用两次
701
+ en: The same ID cannot be used twice
651
702
 
652
703
  - zh-CN: 暂不支持在同一元素上使用多次if结构!
653
704
  en: We currently do not support using the if structure multiple times on the same element!
@@ -667,8 +718,8 @@
667
718
  - zh-CN: 加载$1失败!
668
719
  en: Loading $1 failed!
669
720
 
670
- - zh-CN: "编译错误:"
671
- en: "Compilation error:"
721
+ - zh-CN: 编译错误
722
+ en: Compilation error
672
723
 
673
724
  - zh-CN: 请不要重复添加
674
725
  en: Please do not add again
@@ -694,11 +745,11 @@
694
745
  - zh-CN: 密码不正确!
695
746
  en: The password is incorrect!
696
747
 
697
- - zh-CN: 输入新密码:
698
- en: "Enter new password:"
748
+ - zh-CN: 输入新密码
749
+ en: Enter new password
699
750
 
700
- - zh-CN: 确认密码:
701
- en: "Confirm password:"
751
+ - zh-CN: 确认密码
752
+ en: Confirm password
702
753
 
703
754
  - zh-CN: 两次输入密码不一致
704
755
  en: The passwords entered twice are inconsistent
@@ -730,8 +781,8 @@
730
781
  - zh-CN: "重复定义: $1"
731
782
  en: "Duplicate definition: $1"
732
783
 
733
- - zh-CN: "路径不存在:"
734
- en: "Path does not exist:"
784
+ - zh-CN: 路径不存在
785
+ en: Path does not exist
735
786
 
736
787
  - zh-CN: 指定的任务 $1 不存在!
737
788
  en: The specified task $1 does not exist!
@@ -751,8 +802,8 @@
751
802
  - zh-CN: 余集变量不能有默认值
752
803
  en: Residual variables cannot have default values
753
804
 
754
- - zh-CN: 辅助级别异常:
755
- en: "Auxiliary level exception:"
805
+ - zh-CN: 辅助级别异常
806
+ en: Auxiliary level exception
756
807
 
757
808
  - zh-CN: 自
758
809
  en: since
@@ -1009,8 +1060,8 @@
1009
1060
  - zh-CN: 有$1个文件上传失败!
1010
1061
  en: $1 file failed to upload!
1011
1062
 
1012
- - zh-CN: "读取文件$1出错:"
1013
- en: "Error reading file $1:"
1063
+ - zh-CN: 读取文件$1出错
1064
+ en: Error reading file $1
1014
1065
 
1015
1066
  - zh-CN: 文件不存在
1016
1067
  en: file does not exist
@@ -1075,8 +1126,8 @@
1075
1126
  - zh-CN: 不能移入子文件夹
1076
1127
  en: Unable to move into sub folder
1077
1128
 
1078
- - zh-CN: "请输入新的$1名:"
1079
- en: "Please enter a new $1 name:"
1129
+ - zh-CN: 请输入新的$1
1130
+ en: Please enter a new $1 name
1080
1131
 
1081
1132
  - zh-CN: 文件夹
1082
1133
  en: Folder
@@ -1186,8 +1237,8 @@
1186
1237
  - zh-CN: 更新连接
1187
1238
  en: Update Connection
1188
1239
 
1189
- - zh-CN: $1首次引用点如下:
1190
- en: "the first position $1 occurs is:"
1240
+ - zh-CN: $1首次引用点如下
1241
+ en: the first position $1 occurs is
1191
1242
 
1192
1243
  - zh-CN: 与$1相关的项
1193
1244
  en: item related to $1
@@ -1285,8 +1336,8 @@
1285
1336
  - zh-CN: 正在查找
1286
1337
  en: Finding
1287
1338
 
1288
- - zh-CN: "路径不正在:"
1289
- en: "Path not in progress:"
1339
+ - zh-CN: 路径不正在
1340
+ en: Path not in progress
1290
1341
 
1291
1342
  - zh-CN: "处理完成:$1\r\n => $2"
1292
1343
  en: "Processing completed: $1\r\n => $2"
@@ -1300,8 +1351,8 @@
1300
1351
  - zh-CN: 无法确定文件名
1301
1352
  en: Unable to determine file name
1302
1353
 
1303
- - zh-CN: 完成:
1304
- en: "Complete:"
1354
+ - zh-CN: 完成
1355
+ en: Complete
1305
1356
 
1306
1357
  - zh-CN: 服务器忙,请稍后再试!
1307
1358
  en: "The server is busy, please try again later!"
@@ -1369,8 +1420,8 @@
1369
1420
  - zh-CN: 参数异常!
1370
1421
  en: Parameter exception!
1371
1422
 
1372
- - zh-CN: "range参数错误:"
1373
- en: "Range parameter error:"
1423
+ - zh-CN: range参数错误
1424
+ en: Range parameter error
1374
1425
 
1375
1426
  - zh-CN: each参数异常!
1376
1427
  en: Abnormal each parameter!
@@ -1405,11 +1456,11 @@
1405
1456
  - zh-CN: 正在合成
1406
1457
  en: Synthesizing
1407
1458
 
1408
- - zh-CN: 在 $1 中检测到可能不存在的外部变量:
1409
- en: "Detected external variables that may not exist in $1:"
1459
+ - zh-CN: 在 $1 中检测到可能不存在的外部变量
1460
+ en: Detected external variables that may not exist in $1
1410
1461
 
1411
- - zh-CN: "压缩($1/$2):"
1412
- en: "Compress ($1/$2):"
1462
+ - zh-CN: 压缩($1/$2)
1463
+ en: Compress ($1/$2)
1413
1464
 
1414
1465
  - zh-CN: 存在环形引用:$1
1415
1466
  en: "There is a circular reference: $1"
@@ -1417,11 +1468,11 @@
1417
1468
  - zh-CN: 没有可导出的文件!
1418
1469
  en: There are no files to export!
1419
1470
 
1420
- - zh-CN: 缺少变量:
1421
- en: "Missing variable:"
1471
+ - zh-CN: 缺少变量
1472
+ en: Missing variable
1422
1473
 
1423
- - zh-CN: 缺少常量:
1424
- en: "Missing constant:"
1474
+ - zh-CN: 缺少常量
1475
+ en: Missing constant
1425
1476
 
1426
1477
  - zh-CN: watch功能在当前操作系统可能无法使用!
1427
1478
  en: The watch function may not be available on the current operating system!
@@ -1555,14 +1606,14 @@
1555
1606
  - zh-CN: 有测试代码
1556
1607
  en: With test code
1557
1608
 
1558
- - zh-CN: "环境依赖项:"
1559
- en: "Environmental dependencies:"
1609
+ - zh-CN: 环境依赖项
1610
+ en: Environmental dependencies
1560
1611
 
1561
1612
  - zh-CN: 无环境依赖项
1562
1613
  en: No environmental dependencies
1563
1614
 
1564
- - zh-CN: "导入项:"
1565
- en: "Import items:"
1615
+ - zh-CN: 导入项
1616
+ en: Import items
1566
1617
 
1567
1618
  - zh-CN: 无导入项
1568
1619
  en: No import items
@@ -1621,8 +1672,8 @@
1621
1672
  - zh-CN: 序号
1622
1673
  en: Number
1623
1674
 
1624
- - zh-CN: "翻译结果仅做为参考,未必完美替换,语法参考:"
1625
- en: "The translation results are only for reference and may not be a perfect replacement. Grammar reference:"
1675
+ - zh-CN: 翻译结果仅做为参考,未必完美替换,语法参考
1676
+ en: The translation results are only for reference and may not be a perfect replacement. Grammar reference
1626
1677
 
1627
1678
  - zh-CN: 国际化工具仅在浏览器支持 showDirectoryPicker 时可用
1628
1679
  en: International chemical tools are only available when the browser supports showDirectoryPicker
@@ -1633,11 +1684,11 @@
1633
1684
  - zh-CN: 导出到文件
1634
1685
  en: Export to file
1635
1686
 
1636
- - zh-CN: 翻译缺失:
1637
- en: "Lack of translation:"
1687
+ - zh-CN: 翻译缺失
1688
+ en: Lack of translation
1638
1689
 
1639
- - zh-CN: "翻译:"
1640
- en: "Translation:"
1690
+ - zh-CN: 翻译
1691
+ en: Translation
1641
1692
 
1642
1693
  - zh-CN: "跳过了缺少参数的请求:$1 $2 $3\r\n缺少参数:$4"
1643
1694
  en: "Skipped request $1 $2 $3 \r\n Missing parameters $4"
@@ -1801,8 +1852,8 @@
1801
1852
  - zh-CN: 帮助
1802
1853
  en: HELP
1803
1854
 
1804
- - zh-CN: $1可以使用的命令语法有:
1805
- en: "The command syntax that can be used for $1 is:"
1855
+ - zh-CN: $1可以使用的命令语法有
1856
+ en: The command syntax that can be used for $1 is
1806
1857
 
1807
1858
  - zh-CN: 其中
1808
1859
  en: among them
@@ -1819,8 +1870,8 @@
1819
1870
  - zh-CN: 连接到
1820
1871
  en: connection to
1821
1872
 
1822
- - zh-CN: 可以使用的命令有:
1823
- en: "The commands that can be used are:"
1873
+ - zh-CN: 可以使用的命令有
1874
+ en: The commands that can be used are
1824
1875
 
1825
1876
  - zh-CN: 如要显示更具体的信息,请使用:$1
1826
1877
  en: "To show more messages, use $1"
@@ -1864,20 +1915,20 @@
1864
1915
  - zh-CN: 没有自定义的环境变量
1865
1916
  en: No custom environment variables
1866
1917
 
1867
- - zh-CN: 已设置如下 $1 个环境变量:
1868
- en: "The following $1 environment variables have been set:"
1918
+ - zh-CN: 已设置如下 $1 个环境变量
1919
+ en: The following $1 environment variables have been set
1869
1920
 
1870
- - zh-CN: 未修改过的默认变量如下:
1871
- en: "The unmodified default variables are as follows:"
1921
+ - zh-CN: 未修改过的默认变量如下
1922
+ en: The unmodified default variables are as follows
1872
1923
 
1873
- - zh-CN: 其他环境变量如下:
1874
- en: "Other environmental variables are as follows:"
1924
+ - zh-CN: 其他环境变量如下
1925
+ en: Other environmental variables are as follows
1875
1926
 
1876
1927
  - zh-CN: 不支持该命令<red2> $1 </red2>
1877
1928
  en: The command <red2>$1</red2> is not supported
1878
1929
 
1879
- - zh-CN: 如下命令与您输入的命令相似:
1880
- en: "The following command is similar to the one you entered:"
1930
+ - zh-CN: 如下命令与您输入的命令相似
1931
+ en: The following command is similar to the one you entered
1881
1932
 
1882
1933
  - zh-CN: 异常退出
1883
1934
  en: Abnormal exit
@@ -10,7 +10,7 @@
10
10
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
11
11
  <link rel="Shortcut Icon" href="http://efront.cc/favicon.ico" type="image/x-icon" />
12
12
  <meta name="viewport" content="initial-scale=1,maximum-scale=1,width=device-width" />
13
- <title>Efront 空项目</title>
13
+ <title>efront 空项目</title>
14
14
  <script deleteoncompile efrontloader>
15
15
  // 若要在开发环境使用内置组件,请保留此script标签中的代码,在编译发布时,这里的代码会自动删除
16
16
  </script>
package/apps/index.jsp CHANGED
@@ -1,17 +1,28 @@
1
1
  <script serverside>
2
2
  var fs = require("fs");
3
3
  var path = require("path");
4
- return new Promise(function (ok, oh) {
5
- fs.readdir(__dirname, { withFileTypes: true }, function (error, names) {
6
- if (error) oh(error);
7
- names = names.filter(a => a.isDirectory()).map(a => a.name);
8
- context.names = [];
9
- for (var n of names) {
10
- if (fs.existsSync(path.join(__dirname, n, 'index.html'))) context.names.push(n);
11
- }
12
- ok();
13
- });
14
- });
4
+ var fsp = fs.promises;
5
+ if (!fsp) throw new Error('当前服务器nodejs版本过低,无法使用!');
6
+ var names = await fsp.readdir(__dirname, { withFileTypes: true });
7
+ names = names.filter(a => a.isDirectory()).map(a => a.name);
8
+ var indexList = context.indexList = [];
9
+ for (var n of names) {
10
+ if (fs.existsSync(path.join(__dirname, n, '主页.html'))) indexList.push([n, '主页.html']);
11
+ else if (fs.existsSync(path.join(__dirname, n, '主页.jsp'))) indexList.push([n, '主页.jsp']);
12
+ else if (fs.existsSync(path.join(__dirname, n, 'index.html'))) indexList.push([n, 'index.html']);
13
+ else if (fs.existsSync(path.join(__dirname, n, 'index.jsp'))) indexList.push([n, 'index.jsp']);
14
+ };
15
+ for (var o of indexList) {
16
+ var [p, n] = o;
17
+ var p = path.join(__dirname, p, n);
18
+ var stats = await fsp.stat(p);
19
+ if (!stats.isFile()) continue;
20
+ o.push(stats);
21
+ var data = await fsp.readFile(p);
22
+ var title = /<title>([\s\S]*?)<\/title>/i.exec(String(data));
23
+ if (title) o.push(title[1]);
24
+ }
25
+ // throw new Error;
15
26
  </script>
16
27
  <!DOCTYPE html>
17
28
  <!--
@@ -69,58 +80,96 @@
69
80
 
70
81
  a {
71
82
  display: inline-block;
72
- width: 160px;
83
+ width: 180px;
84
+ height: 60px;
85
+ vertical-align: top;
73
86
  text-decoration: none;
74
87
  line-height: 1.2;
75
88
  margin: 0 12px 12px 0;
76
89
  padding: 4px 6px;
77
- border: 1px solid #0001;
90
+ border: 1px solid #0003;
78
91
  background: #fff9;
92
+ border-radius: 4px;
93
+ color: #16c;
94
+ position: relative;
95
+ }
96
+
97
+ a:visited {
98
+ color: #36a;
79
99
  }
80
100
 
101
+
81
102
  a:hover {
82
- border-color: #0004;
103
+ color: #39c;
104
+ border-color: #39c;
83
105
  }
84
106
 
107
+ a:active {
108
+ color: #c24;
109
+ border-color: #c24;
110
+ }
111
+
112
+
85
113
  a>[name] {
86
- font-size: 18px;
114
+ padding: 3px;
115
+ color: #333;
116
+ font-size: 14px;
117
+ font-family: 楷体, sans-serif;
87
118
  }
88
119
 
89
120
  a>[time] {
90
- font-size: 6px;
121
+ font-size: 8px;
122
+ position: absolute;
123
+ right: 6px;
124
+ bottom: 4px;
91
125
  color: #999;
92
126
  }
93
127
 
94
- a:hover>[name] {
128
+ a>b {
129
+ font-family: 'Times New Roman', Times, sans-serif;
130
+ font-style: italic;
131
+ font-size: 12px;
132
+ }
133
+
134
+ a:hover>b {
95
135
  text-decoration: underline;
96
136
  }
97
137
 
138
+ [npm] {
139
+ color: #fba;
140
+ text-shadow: 1px -1px 0 #c24;
141
+ }
142
+
98
143
  [name] {
144
+ white-space: nowrap;
145
+ overflow: hidden;
146
+ text-overflow: ellipsis;
99
147
  display: block;
100
148
  }
149
+
150
+ [note] {
151
+ font-size: 14px;
152
+ font-family: 仿宋, sans-serif;
153
+ padding: 10px 16px 0 16px;
154
+ }
101
155
  </style>
102
156
  </head>
103
157
 
104
158
  <body scroll=no max-render=1440>
159
+ <div note>选择任意项目查看,开发环境加载有些慢.. </div>
105
160
  <div content>
106
161
  <script serverside>
107
162
  var rows = [];
108
163
  var fs = require("fs");
109
164
  var path = require("path");
110
- for (var n of context.names) {
111
- var stats = await new Promise(function (ok, oh) {
112
- fs.stat(path.join(__dirname, n), function (error, stats) {
113
- if (error) return oh(error);
114
- ok(stats);
115
- })
116
- });
117
-
118
- rows.push(`<a href="${n}?${stats.mtime.toLocaleDateString()}" ><b name>${n}</b><span time>${stats.mtime.toLocaleDateString()}</span></a>`);
165
+ for (var [p, n, stats, t = p] of context.indexList) {
166
+ rows.push(`<a href="${p}" target=_blank><b >${p}</b><span name>${t}</span><span time>${stats.mtime.toLocaleDateString()}</span></a>`);
119
167
  }
120
168
  return rows.join('')
121
169
  </script>
122
170
  <a href="https://www.npmjs.com/package/efront" target="_blank">
123
- <b name>efront</b>
171
+ <b npm>npm</b>
172
+ <span name>efront</span>
124
173
  <span time>&nbsp;</span>
125
174
  </a>
126
175
  </div>
@@ -1,6 +1,6 @@
1
1
  <script serverside>
2
2
  var time = +new Date;
3
- var out_trade_no = encode62.timedecode(request.id);
3
+ var out_trade_no = encode62.packdecode(request.id);
4
4
  var payed = /^(TRADE_FINISHED|TRADE_SUCCESS)$/i;
5
5
  for (var cx = 0, dx = 10; cx < dx; cx++) {
6
6
  if (+new Date - time > 30000) return;
@@ -51,7 +51,7 @@ ACQ.MERCHANT_PERM_RECEIPT_DAY_LIMIT 超过单日累计收款额度 联系支付
51
51
  return a;
52
52
  }
53
53
  var amount = request.id;
54
- if (!/^(\d+)(\.\d+)?$/.test(amount)) amount = encode62.timedecode(request.id);
54
+ if (!/^(\d+)(\.\d+)?$/.test(amount)) amount = encode62.packdecode(request.id);
55
55
  var [amount, subject = '网页扫码支付'] = amount.split(',');
56
56
  var trade_no = createId();
57
57
  if (!+amount) return forbidden("参数异常");
@@ -28,9 +28,9 @@ function main(host) {
28
28
  var api = Object.assign({}, await data.getApi("login"));
29
29
  api.base = base;
30
30
  var info = await data.from(api, {
31
- a: encode62.timeencode(encode62.geta(password))
31
+ a: encode62.packencode(encode62.geta(password))
32
32
  }).loading_promise;
33
- info = encode62.timeupdate(info);
33
+ info = encode62.packupdate(info);
34
34
  data.setSource(base, info);
35
35
  if (host) {
36
36
  cast(page, 'login', info);
@@ -100,9 +100,7 @@
100
100
  var finished = false;
101
101
  var publicKey, privateKey;
102
102
  loadUnique().then(render.digest).then(lazy(async function () {
103
- box.reshape();
104
- bar.reshape();
105
- var certlist = await plist.load('cert');
103
+ var certlist = await plist.load('cert', 'hostname');
106
104
  acme2.domain = formdata.domain = certlist.map(c => c.hostname).join("\r\n");
107
105
  }));
108
106
  var a = button;
@@ -131,13 +129,20 @@
131
129
  fields: refilm`
132
130
  $公钥/public_key/单击生成 ${function (elem) {
133
131
  var { data, field } = elem;
134
- elem.innerHTML = `<a @click="gen()" -if="!data[field.key]">单击生成</a><span -else -bind="data[field.key]"></span>`;
132
+ elem.innerHTML = `<a @click=ipt()>手动输入</a>&ensp;&ensp;<a @click="gen()" -if="!data[field.key]">单击生成</a><span -else -bind="data[field.key]"></span>`;
135
133
  render(elem, {
136
134
  data, field, async gen() {
137
135
  await acme2.initUnique();
138
136
  formdata.public_key = acme2.public_key;
139
137
  await saveUnique();
140
- }
138
+ },
139
+ async ipt() {
140
+ var data = await prompt('请输入完整密钥对,以英文逗号分割', {
141
+ value: acme2.pickUnique()
142
+ });
143
+ acme2.makeUnique(data);
144
+ console.log(data);
145
+ },
141
146
  })
142
147
  }}
143
148
  *邮箱/email email
@@ -151,6 +156,14 @@
151
156
  get message() {
152
157
  return formdata.kid ? i18n`已创建账户` : '';
153
158
  },
159
+ options: {
160
+ async 检查账户(actived) {
161
+ var params = submit(actived.fields, formdata);
162
+ await saveUnique(params);
163
+ formdata.kid = await acme2.getAccount(params);
164
+ await saveUnique();
165
+ },
166
+ },
154
167
  actions: {
155
168
  async 创建账户(actived) {
156
169
  if (formdata.kid) {
@@ -0,0 +1,53 @@
1
+ <style>
2
+ [field=method] {
3
+ jscode {
4
+ height: 160px;
5
+ }
6
+ }
7
+ </style>
8
+ <div head>编辑动作</div>
9
+ <div body>
10
+ <field -repeat="f in fields" -src="[f,o]"></field>
11
+ </div>
12
+ <div foot>
13
+ <button @click="cancel" .white>取消</button>
14
+ <button @click="save">确定</button>
15
+ </div>
16
+ <script>
17
+ var [db, a] = arguments[0];
18
+ var o = Object.assign({}, a);
19
+ view(this);
20
+ var code = function (elem) {
21
+ var elem = document.createElement('jscode');
22
+ elem.type = 'js';
23
+ elem.contentEditable = true;
24
+ 茨菰$编辑框(elem);
25
+ return elem;
26
+ };
27
+ var actionsExist = db.actions?.filter(o => o !== a) || [];
28
+ actionsExist.push.apply(actionsExist, db.fields);
29
+ var fields = refilm`
30
+ *键名/key input ^${actionsExist}
31
+ 显示名/name input ^${actionsExist}
32
+ 展示时机/when ${code}
33
+ 动作/method ${code}
34
+ 备注/disc text
35
+ `;
36
+
37
+ var box = this;
38
+ var save = function () {
39
+ var b = submit(fields, o);
40
+ var actions = db.actions;
41
+ if (!actions) actions = db.actions = [];
42
+ if (!a) actions.push(b);
43
+ else Object.assign(a, b);
44
+ remove(box);
45
+ };
46
+ resize.on(this);
47
+ var cancel = function () {
48
+ remove(box);
49
+ }
50
+ once('mounted')(this, function () {
51
+ drag.on(this, this.children[0]);
52
+ });
53
+ </script>