@shzlx/ui-default 4.58.2

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 (448) hide show
  1. package/README.md +5 -0
  2. package/api.ts +61 -0
  3. package/backendlib/builder.ts +182 -0
  4. package/backendlib/markdown-it-imsize.ts +235 -0
  5. package/backendlib/markdown-it-katex.ts +139 -0
  6. package/backendlib/markdown-it-media.ts +163 -0
  7. package/backendlib/markdown-it-xss.ts +200 -0
  8. package/backendlib/markdown.js +64 -0
  9. package/backendlib/misc.ts +54 -0
  10. package/backendlib/template.ts +279 -0
  11. package/breakpoints.json +5 -0
  12. package/components/DOMAttachedObject.ts +128 -0
  13. package/components/autocomplete/AssignSelectAutoComplete.tsx +22 -0
  14. package/components/autocomplete/CustomSelectAutoComplete.tsx +23 -0
  15. package/components/autocomplete/DomainSelectAutoComplete.tsx +18 -0
  16. package/components/autocomplete/FileSelectAutoComplete.tsx +26 -0
  17. package/components/autocomplete/LanguageSelectAutoComplete.tsx +24 -0
  18. package/components/autocomplete/ProblemSelectAutoComplete.tsx +18 -0
  19. package/components/autocomplete/UserSelectAutoComplete.tsx +23 -0
  20. package/components/autocomplete/components/AssignSelectAutoComplete.tsx +118 -0
  21. package/components/autocomplete/components/DomainSelectAutoComplete.tsx +53 -0
  22. package/components/autocomplete/components/FileSelectAutoComplete.tsx +50 -0
  23. package/components/autocomplete/components/LanguageSelectAutoComplete.tsx +48 -0
  24. package/components/autocomplete/components/ProblemSelectAutoComplete.tsx +54 -0
  25. package/components/autocomplete/components/UserSelectAutoComplete.tsx +54 -0
  26. package/components/autocomplete/domainselectautocomplete.page.styl +6 -0
  27. package/components/autocomplete/index.tsx +110 -0
  28. package/components/autocomplete/problemselectautocomplete.page.styl +6 -0
  29. package/components/autocomplete/userselectautocomplete.page.styl +6 -0
  30. package/components/browser-update.page.ts +27 -0
  31. package/components/calendar/calendar.page.styl +129 -0
  32. package/components/calendar/index.js +367 -0
  33. package/components/clipboard.page.ts +23 -0
  34. package/components/contest/contest.page.styl +119 -0
  35. package/components/contest/contest.page.ts +23 -0
  36. package/components/contest/contest_sidebar.page.styl +21 -0
  37. package/components/contest/problem-contest-bg.png +0 -0
  38. package/components/contest/problem-contest-bg@2x.png +0 -0
  39. package/components/customFont.page.tsx +90 -0
  40. package/components/datepicker/datepicker.page.tsx +94 -0
  41. package/components/dialog/DomDialog.ts +145 -0
  42. package/components/dialog/dialog.page.styl +40 -0
  43. package/components/dialog/index.tsx +285 -0
  44. package/components/discussion/CommentBox.js +103 -0
  45. package/components/discussion/collapsible.page.styl +40 -0
  46. package/components/discussion/collapsible.page.tsx +62 -0
  47. package/components/discussion/comments.page.styl +142 -0
  48. package/components/discussion/comments.page.tsx +192 -0
  49. package/components/discussion/discussion.page.styl +17 -0
  50. package/components/discussion/history.page.tsx +81 -0
  51. package/components/discussion/reaction.page.styl +30 -0
  52. package/components/discussion/reaction.page.tsx +103 -0
  53. package/components/drop/drop.page.styl +40 -0
  54. package/components/dropdown/Dropdown.js +50 -0
  55. package/components/dropdown/dropdown.page.styl +33 -0
  56. package/components/dropdown/dropdown.page.ts +8 -0
  57. package/components/editor/cmeditor.page.ts +23 -0
  58. package/components/editor/cmeditor.styl +10 -0
  59. package/components/editor/index.tsx +293 -0
  60. package/components/editor/mdeditor.ts +60 -0
  61. package/components/editor/textareaHandler.ts +29 -0
  62. package/components/footer/footer.page.styl +94 -0
  63. package/components/footer/footer.page.ts +26 -0
  64. package/components/form/button.page.default.styl +59 -0
  65. package/components/form/button.page.styl +36 -0
  66. package/components/form/checkbox.page.styl +89 -0
  67. package/components/form/form.page.styl +200 -0
  68. package/components/form/form.page.ts +20 -0
  69. package/components/form/multiSelectCheckbox.page.js +46 -0
  70. package/components/form/radiobox.page.styl +62 -0
  71. package/components/form/select.page.styl +29 -0
  72. package/components/form/textbox.page.styl +79 -0
  73. package/components/form/textbox.page.ts +21 -0
  74. package/components/form/var.inc.styl +14 -0
  75. package/components/header/header.page.styl +79 -0
  76. package/components/highlighter/code-example.js +111 -0
  77. package/components/highlighter/highlighter.page.styl +99 -0
  78. package/components/highlighter/highlighter.page.ts +72 -0
  79. package/components/highlighter/meta.js +15 -0
  80. package/components/highlighter/prismjs.js +122 -0
  81. package/components/hint.page.styl +9 -0
  82. package/components/hint.ts +19 -0
  83. package/components/hitokoto/index.page.js +21 -0
  84. package/components/hotkey/hotkey.page.js +83 -0
  85. package/components/katex/katex.page.js +26 -0
  86. package/components/katex/katex.page.styl +2 -0
  87. package/components/languageselect.tsx +94 -0
  88. package/components/loader/loader.page.styl +40 -0
  89. package/components/mantine.page.tsx +39 -0
  90. package/components/marker/Marker.js +192 -0
  91. package/components/marker/MarkerReactive.js +55 -0
  92. package/components/marker/marker.page.js +8 -0
  93. package/components/marker/marker.page.styl +57 -0
  94. package/components/media/media.page.js +46 -0
  95. package/components/menu/menu-heading.page.js +28 -0
  96. package/components/menu/menu.page.js +18 -0
  97. package/components/menu/menu.page.styl +68 -0
  98. package/components/message/index.page.ts +166 -0
  99. package/components/message/worker.ts +110 -0
  100. package/components/messagepad/DialogueListItem.page.styl +28 -0
  101. package/components/messagepad/DialogueListItemComponent.jsx +39 -0
  102. package/components/messagepad/Message.page.styl +64 -0
  103. package/components/messagepad/MessageComponent.jsx +33 -0
  104. package/components/messagepad/MessagePad.page.styl +99 -0
  105. package/components/messagepad/MessagePadDialogueContentContainer.jsx +104 -0
  106. package/components/messagepad/MessagePadDialogueListContainer.jsx +49 -0
  107. package/components/messagepad/MessagePadInputContainer.jsx +100 -0
  108. package/components/messagepad/index.jsx +49 -0
  109. package/components/messagepad/reducers/activeId.ts +36 -0
  110. package/components/messagepad/reducers/dialogues.js +53 -0
  111. package/components/messagepad/reducers/index.ts +14 -0
  112. package/components/messagepad/reducers/inputs.js +43 -0
  113. package/components/messagepad/reducers/isPosting.ts +49 -0
  114. package/components/monaco/index.ts +178 -0
  115. package/components/monaco/languages/markdown.ts +97 -0
  116. package/components/monaco/languages/typescript.ts +45 -0
  117. package/components/monaco/languages/yaml.ts +22 -0
  118. package/components/monaco/loader.ts +96 -0
  119. package/components/monaco/monaco.styl +30 -0
  120. package/components/monaco/nls.js +31 -0
  121. package/components/monaco/schema/problemconfig.ts +123 -0
  122. package/components/navigation/hamburgers.page.styl +87 -0
  123. package/components/navigation/nav-logo-small_dark.png +0 -0
  124. package/components/navigation/navigation.page.js +203 -0
  125. package/components/navigation/navigation.page.styl +211 -0
  126. package/components/notification/index.ts +105 -0
  127. package/components/notification/notification.page.js +14 -0
  128. package/components/notification/notification.page.styl +84 -0
  129. package/components/nprogress.page.styl +50 -0
  130. package/components/omnisearch/index.page.tsx +124 -0
  131. package/components/omnisearch/omnibar.page.styl +138 -0
  132. package/components/pager/pager.page.styl +57 -0
  133. package/components/preview/preview.page.ts +187 -0
  134. package/components/problem/create.page.js +12 -0
  135. package/components/problem/list.page.js +9 -0
  136. package/components/problem/rp.page.styl +4 -0
  137. package/components/problem/tag.page.styl +84 -0
  138. package/components/problemconfig/BasicForm.tsx +92 -0
  139. package/components/problemconfig/ProblemConfigEditor.tsx +170 -0
  140. package/components/problemconfig/ProblemConfigForm.tsx +140 -0
  141. package/components/problemconfig/ProblemConfigTree.tsx +163 -0
  142. package/components/problemconfig/ProblemType.tsx +165 -0
  143. package/components/problemconfig/index.tsx +91 -0
  144. package/components/problemconfig/reducer/config.ts +173 -0
  145. package/components/problemconfig/reducer/index.ts +11 -0
  146. package/components/problemconfig/reducer/testdata.ts +16 -0
  147. package/components/problemconfig/tree/AddTestcase.tsx +137 -0
  148. package/components/problemconfig/tree/SelectionManager.tsx +140 -0
  149. package/components/problemconfig/tree/SubtaskSettings.tsx +180 -0
  150. package/components/problemconfig/tree/Testcase.tsx +98 -0
  151. package/components/profile/backgrounds/1.jpg +0 -0
  152. package/components/profile/backgrounds/10.jpg +0 -0
  153. package/components/profile/backgrounds/11.jpg +0 -0
  154. package/components/profile/backgrounds/12.jpg +0 -0
  155. package/components/profile/backgrounds/13.jpg +0 -0
  156. package/components/profile/backgrounds/14.jpg +0 -0
  157. package/components/profile/backgrounds/15.jpg +0 -0
  158. package/components/profile/backgrounds/16.jpg +0 -0
  159. package/components/profile/backgrounds/17.jpg +0 -0
  160. package/components/profile/backgrounds/18.jpg +0 -0
  161. package/components/profile/backgrounds/19.jpg +0 -0
  162. package/components/profile/backgrounds/2.jpg +0 -0
  163. package/components/profile/backgrounds/20.jpg +0 -0
  164. package/components/profile/backgrounds/21.jpg +0 -0
  165. package/components/profile/backgrounds/3.jpg +0 -0
  166. package/components/profile/backgrounds/4.jpg +0 -0
  167. package/components/profile/backgrounds/5.jpg +0 -0
  168. package/components/profile/backgrounds/6.jpg +0 -0
  169. package/components/profile/backgrounds/7.jpg +0 -0
  170. package/components/profile/backgrounds/8.jpg +0 -0
  171. package/components/profile/backgrounds/9.jpg +0 -0
  172. package/components/profile/backgrounds/gen_thumbnails.sh +7 -0
  173. package/components/profile/backgrounds/thumbnail/1.jpg +0 -0
  174. package/components/profile/backgrounds/thumbnail/10.jpg +0 -0
  175. package/components/profile/backgrounds/thumbnail/11.jpg +0 -0
  176. package/components/profile/backgrounds/thumbnail/12.jpg +0 -0
  177. package/components/profile/backgrounds/thumbnail/13.jpg +0 -0
  178. package/components/profile/backgrounds/thumbnail/14.jpg +0 -0
  179. package/components/profile/backgrounds/thumbnail/15.jpg +0 -0
  180. package/components/profile/backgrounds/thumbnail/16.jpg +0 -0
  181. package/components/profile/backgrounds/thumbnail/17.jpg +0 -0
  182. package/components/profile/backgrounds/thumbnail/18.jpg +0 -0
  183. package/components/profile/backgrounds/thumbnail/19.jpg +0 -0
  184. package/components/profile/backgrounds/thumbnail/2.jpg +0 -0
  185. package/components/profile/backgrounds/thumbnail/20.jpg +0 -0
  186. package/components/profile/backgrounds/thumbnail/21.jpg +0 -0
  187. package/components/profile/backgrounds/thumbnail/3.jpg +0 -0
  188. package/components/profile/backgrounds/thumbnail/4.jpg +0 -0
  189. package/components/profile/backgrounds/thumbnail/5.jpg +0 -0
  190. package/components/profile/backgrounds/thumbnail/6.jpg +0 -0
  191. package/components/profile/backgrounds/thumbnail/7.jpg +0 -0
  192. package/components/profile/backgrounds/thumbnail/8.jpg +0 -0
  193. package/components/profile/backgrounds/thumbnail/9.jpg +0 -0
  194. package/components/profile/profile.page.styl +23 -0
  195. package/components/react/DomComponent.tsx +14 -0
  196. package/components/react/IconComponent.tsx +20 -0
  197. package/components/record/record.page.styl +26 -0
  198. package/components/rotator/index.js +75 -0
  199. package/components/rotator/rotator.page.styl +20 -0
  200. package/components/scratchpad/DataInput.page.styl +17 -0
  201. package/components/scratchpad/DataInputComponent.jsx +45 -0
  202. package/components/scratchpad/Editor.page.styl +13 -0
  203. package/components/scratchpad/Panel.page.styl +18 -0
  204. package/components/scratchpad/PanelButton.page.styl +15 -0
  205. package/components/scratchpad/PanelButtonComponent.jsx +19 -0
  206. package/components/scratchpad/PanelComponent.jsx +25 -0
  207. package/components/scratchpad/ScratchpadEditorContainer.tsx +137 -0
  208. package/components/scratchpad/ScratchpadPretestContainer.jsx +57 -0
  209. package/components/scratchpad/ScratchpadRecordsContainer.jsx +45 -0
  210. package/components/scratchpad/ScratchpadRecordsRowContainer.jsx +83 -0
  211. package/components/scratchpad/ScratchpadSettings.tsx +48 -0
  212. package/components/scratchpad/ScratchpadToolbarContainer.jsx +190 -0
  213. package/components/scratchpad/Tab.page.styl +24 -0
  214. package/components/scratchpad/Toolbar.page.styl +53 -0
  215. package/components/scratchpad/ToolbarComponent.jsx +85 -0
  216. package/components/scratchpad/index.tsx +132 -0
  217. package/components/scratchpad/reducers/editor.ts +24 -0
  218. package/components/scratchpad/reducers/index.ts +17 -0
  219. package/components/scratchpad/reducers/pretest.ts +34 -0
  220. package/components/scratchpad/reducers/records.ts +40 -0
  221. package/components/scratchpad/reducers/state.ts +10 -0
  222. package/components/scratchpad/reducers/ui.ts +152 -0
  223. package/components/scratchpad/scratchpad.page.styl +55 -0
  224. package/components/scratchpad/var.inc.styl +2 -0
  225. package/components/selectUser.tsx +16 -0
  226. package/components/signin/signInDialog.page.js +84 -0
  227. package/components/signin/signin_dialog.page.styl +57 -0
  228. package/components/smoothscroll/smoothscroll.page.js +44 -0
  229. package/components/socket/index.ts +68 -0
  230. package/components/star/star.page.styl +20 -0
  231. package/components/star/star.page.ts +58 -0
  232. package/components/sticky/sticky.page.js +66 -0
  233. package/components/tab/Tab.js +168 -0
  234. package/components/tab/tab.page.js +9 -0
  235. package/components/tab/tab.page.styl +105 -0
  236. package/components/tab/var.inc.styl +3 -0
  237. package/components/table/StyledTable.js +51 -0
  238. package/components/table/styledTable.page.js +8 -0
  239. package/components/table/table.page.styl +73 -0
  240. package/components/time/time.page.js +47 -0
  241. package/components/tooltip/Tooltip.js +49 -0
  242. package/components/tooltip/tooltip.page.js +29 -0
  243. package/components/tooltip/tooltip.page.styl +69 -0
  244. package/components/training/training.page.styl +25 -0
  245. package/components/upload.tsx +103 -0
  246. package/components/vote/vote.page.js +43 -0
  247. package/components/zipDownloader/index.ts +157 -0
  248. package/constant/domain.js +21 -0
  249. package/constant/message.js +5 -0
  250. package/constant/record.js +52 -0
  251. package/context.ts +11 -0
  252. package/entry.js +72 -0
  253. package/hydro.ts +112 -0
  254. package/index.ts +226 -0
  255. package/lazyload.ts +69 -0
  256. package/locales/en.yaml +71 -0
  257. package/locales/ko.yaml +823 -0
  258. package/locales/zh.yaml +1137 -0
  259. package/locales/zh_TW.yaml +1133 -0
  260. package/misc/Page.ts +49 -0
  261. package/misc/PageLoader.js +31 -0
  262. package/misc/float.styl +14 -0
  263. package/misc/grid.styl +1048 -0
  264. package/misc/immersive-background.jpg +0 -0
  265. package/misc/immersive-background@2x.jpg +0 -0
  266. package/misc/immersive.styl +23 -0
  267. package/misc/nothing.styl +13 -0
  268. package/misc/puzzled_twd2.svg +1 -0
  269. package/misc/section.styl +105 -0
  270. package/misc/slideout.styl +46 -0
  271. package/misc/structure.styl +158 -0
  272. package/misc/textalign.styl +11 -0
  273. package/misc/typography.styl +485 -0
  274. package/package.json +148 -0
  275. package/polyfill.ts +90 -0
  276. package/postcss.config.js +15 -0
  277. package/sentry.ts +26 -0
  278. package/service-worker.ts +265 -0
  279. package/setting.yaml +98 -0
  280. package/templates/about.html +14 -0
  281. package/templates/bsod.html +35 -0
  282. package/templates/components/comments_discussion.html +165 -0
  283. package/templates/components/comments_solution.html +171 -0
  284. package/templates/components/contest.html +12 -0
  285. package/templates/components/form.html +214 -0
  286. package/templates/components/home.html +20 -0
  287. package/templates/components/homework.html +8 -0
  288. package/templates/components/md_hint.html +39 -0
  289. package/templates/components/noscript_note.html +15 -0
  290. package/templates/components/nothing.html +6 -0
  291. package/templates/components/paginator.html +25 -0
  292. package/templates/components/problem.html +33 -0
  293. package/templates/components/record.html +21 -0
  294. package/templates/components/sidemenu.html +11 -0
  295. package/templates/components/user.html +49 -0
  296. package/templates/contest_balloon.html +48 -0
  297. package/templates/contest_clarification.html +103 -0
  298. package/templates/contest_detail.html +56 -0
  299. package/templates/contest_edit.html +259 -0
  300. package/templates/contest_main.html +146 -0
  301. package/templates/contest_manage.html +80 -0
  302. package/templates/contest_print.html +27 -0
  303. package/templates/contest_problemlist.html +231 -0
  304. package/templates/contest_scoreboard.html +46 -0
  305. package/templates/contest_scoreboard_download_html.html +71 -0
  306. package/templates/contest_user.html +47 -0
  307. package/templates/discussion_create.html +28 -0
  308. package/templates/discussion_detail.html +149 -0
  309. package/templates/discussion_edit.html +30 -0
  310. package/templates/discussion_main_or_node.html +47 -0
  311. package/templates/domain_base.html +26 -0
  312. package/templates/domain_create.html +55 -0
  313. package/templates/domain_dashboard.html +45 -0
  314. package/templates/domain_edit.html +6 -0
  315. package/templates/domain_group.html +51 -0
  316. package/templates/domain_join.html +47 -0
  317. package/templates/domain_join_applications.html +67 -0
  318. package/templates/domain_permission.html +66 -0
  319. package/templates/domain_role.html +71 -0
  320. package/templates/domain_user.html +86 -0
  321. package/templates/domain_user_raw.html +5 -0
  322. package/templates/error.html +25 -0
  323. package/templates/home_domain.html +64 -0
  324. package/templates/home_files.html +16 -0
  325. package/templates/home_messages.html +9 -0
  326. package/templates/home_security.html +224 -0
  327. package/templates/home_settings.html +21 -0
  328. package/templates/homework_detail.html +82 -0
  329. package/templates/homework_edit.html +138 -0
  330. package/templates/homework_files.html +24 -0
  331. package/templates/homework_main.html +76 -0
  332. package/templates/layout/basic.html +27 -0
  333. package/templates/layout/home_base.html +13 -0
  334. package/templates/layout/html5.html +74 -0
  335. package/templates/layout/immersive.html +22 -0
  336. package/templates/layout/mail.html +31 -0
  337. package/templates/layout/simple.html +4 -0
  338. package/templates/layout/wiki_base.html +16 -0
  339. package/templates/main.html +22 -0
  340. package/templates/manage_base.html +24 -0
  341. package/templates/manage_config.html +6 -0
  342. package/templates/manage_dashboard.html +27 -0
  343. package/templates/manage_script.html +56 -0
  344. package/templates/manage_setting.html +6 -0
  345. package/templates/manage_user_import.html +23 -0
  346. package/templates/manage_user_priv.html +76 -0
  347. package/templates/partials/category.html +19 -0
  348. package/templates/partials/contest.html +3 -0
  349. package/templates/partials/contest_balloon.html +37 -0
  350. package/templates/partials/contest_sidebar.html +150 -0
  351. package/templates/partials/contest_sidebar_management.html +56 -0
  352. package/templates/partials/contest_user.html +19 -0
  353. package/templates/partials/discussion_edit_form.html +45 -0
  354. package/templates/partials/discussion_list.html +50 -0
  355. package/templates/partials/discussion_nodes_widget.html +17 -0
  356. package/templates/partials/files.html +49 -0
  357. package/templates/partials/footer.html +108 -0
  358. package/templates/partials/hamburger.html +7 -0
  359. package/templates/partials/header_mobile.html +12 -0
  360. package/templates/partials/homepage/bulletin.html +7 -0
  361. package/templates/partials/homepage/contest.html +48 -0
  362. package/templates/partials/homepage/discussion.html +13 -0
  363. package/templates/partials/homepage/discussion_nodes.html +4 -0
  364. package/templates/partials/homepage/error.html +5 -0
  365. package/templates/partials/homepage/hitokoto.html +6 -0
  366. package/templates/partials/homepage/homework.html +45 -0
  367. package/templates/partials/homepage/problem_search.html +13 -0
  368. package/templates/partials/homepage/ranking.html +39 -0
  369. package/templates/partials/homepage/recent_problems.html +17 -0
  370. package/templates/partials/homepage/starred_problems.html +15 -0
  371. package/templates/partials/homepage/suggestion.html +34 -0
  372. package/templates/partials/homepage/training.html +50 -0
  373. package/templates/partials/homework.html +3 -0
  374. package/templates/partials/homework_default_penalty_rules.yaml +6 -0
  375. package/templates/partials/homework_sidebar.html +93 -0
  376. package/templates/partials/login_dialog.html +56 -0
  377. package/templates/partials/manage_user_priv.html +78 -0
  378. package/templates/partials/nav.html +138 -0
  379. package/templates/partials/problem-sidebar-information.html +25 -0
  380. package/templates/partials/problem.html +2 -0
  381. package/templates/partials/problem_category_dialog.html +43 -0
  382. package/templates/partials/problem_default.md +26 -0
  383. package/templates/partials/problem_description.html +33 -0
  384. package/templates/partials/problem_files.html +63 -0
  385. package/templates/partials/problem_list.html +68 -0
  386. package/templates/partials/problem_lucky.html +10 -0
  387. package/templates/partials/problem_sidebar.html +14 -0
  388. package/templates/partials/problem_sidebar_contest.html +43 -0
  389. package/templates/partials/problem_sidebar_homework.html +42 -0
  390. package/templates/partials/problem_sidebar_normal.html +152 -0
  391. package/templates/partials/problem_stat.html +3 -0
  392. package/templates/partials/scoreboard.html +79 -0
  393. package/templates/partials/setting.html +92 -0
  394. package/templates/partials/training_default.json +14 -0
  395. package/templates/partials/training_detail.html +153 -0
  396. package/templates/partials/user.html +2 -0
  397. package/templates/partials/user_detail/activity.html +18 -0
  398. package/templates/partials/user_detail/solution.html +29 -0
  399. package/templates/problem_config.html +39 -0
  400. package/templates/problem_detail.html +150 -0
  401. package/templates/problem_edit.html +111 -0
  402. package/templates/problem_files.html +91 -0
  403. package/templates/problem_hack.html +41 -0
  404. package/templates/problem_import.html +58 -0
  405. package/templates/problem_main.html +100 -0
  406. package/templates/problem_solution.html +55 -0
  407. package/templates/problem_statistics.html +96 -0
  408. package/templates/problem_submit.html +40 -0
  409. package/templates/ranking.html +81 -0
  410. package/templates/record_detail.html +134 -0
  411. package/templates/record_detail_status.html +93 -0
  412. package/templates/record_detail_summary.html +19 -0
  413. package/templates/record_main.html +142 -0
  414. package/templates/record_main_tr.html +35 -0
  415. package/templates/status.html +75 -0
  416. package/templates/training_detail.html +120 -0
  417. package/templates/training_edit.html +68 -0
  418. package/templates/training_files.html +64 -0
  419. package/templates/training_main.html +107 -0
  420. package/templates/user_changemail_mail.html +6 -0
  421. package/templates/user_changemail_mail_sent.html +9 -0
  422. package/templates/user_delete_pending.html +10 -0
  423. package/templates/user_detail.html +181 -0
  424. package/templates/user_login.html +46 -0
  425. package/templates/user_logout.html +13 -0
  426. package/templates/user_lostpass.html +27 -0
  427. package/templates/user_lostpass_mail.html +6 -0
  428. package/templates/user_lostpass_mail_sent.html +9 -0
  429. package/templates/user_lostpass_with_code.html +29 -0
  430. package/templates/user_register.html +22 -0
  431. package/templates/user_register_mail.html +6 -0
  432. package/templates/user_register_mail_sent.html +9 -0
  433. package/templates/user_register_with_code.html +35 -0
  434. package/templates/user_sudo.html +54 -0
  435. package/templates/user_sudo_redirect.html +18 -0
  436. package/templates/wiki_help.html +189 -0
  437. package/theme/bp6-compat.css +48 -0
  438. package/theme/dark.styl +397 -0
  439. package/theme/default.js +33 -0
  440. package/typed.d.ts +20 -0
  441. package/utils/base.ts +209 -0
  442. package/utils/base64.js +104 -0
  443. package/utils/db.ts +32 -0
  444. package/utils/index.ts +73 -0
  445. package/utils/loadReactRedux.ts +32 -0
  446. package/utils/mediaQuery.ts +13 -0
  447. package/utils/pjax.js +148 -0
  448. package/utils/slide.ts +57 -0
@@ -0,0 +1,46 @@
1
+ {% extends "layout/immersive.html" %}
2
+ {% block content %}
3
+ <div class="row"><div class="columns">
4
+ <div class="immersive--content immersive--center">
5
+ <h1>{{ _('Login') }}</h1>
6
+ <form method="POST">
7
+ {% if model.system.get('server.login') %}
8
+ <div class="row"><div class="columns">
9
+ <label class="inverse material textbox">
10
+ {{ _('Username') }}
11
+ <input name="uname" type="text" autofocus autocomplete="username webauthn">
12
+ </label>
13
+ </div></div>
14
+ <div class="row"><div class="columns">
15
+ <label class="inverse material textbox">
16
+ {{ _('Password') }}
17
+ <input name="password" type="password">
18
+ </label>
19
+ </div></div>
20
+ <div class="row"><div class="columns">
21
+ <label class="inverse material checkbox" style="color:#fff;">
22
+ <input type="checkbox" name="rememberme" class="checkbox">{{ _('Remember me') }}
23
+ </label>
24
+ </div></div>
25
+ <div class="row"><div class="columns">
26
+ <input type="hidden" name="tfa" value="">
27
+ <input type="hidden" name="authnChallenge" value="">
28
+ <div class="text-center">
29
+ <input type="submit" value="{{ _('Login') }}" name="login_submit" class="inverse expanded rounded primary button">
30
+ </div>
31
+ </div></div>
32
+ {% endif %}
33
+ {%- for v in loginMethods -%}
34
+ <div class="row"><div class="columns">
35
+ <a href="{{ url('user_oauth', type=v.id, query={redirect: redirect}) }}" class="expanded rounded button inverse">{{ _(v.text) }}</a>
36
+ </div></div>
37
+ {%- endfor -%}
38
+ <div class="row"><div class="columns">
39
+ <div class="text-center supplementary inverse">
40
+ <a href="{{ url('user_lostpass') }}">{{ _('Forgot password or username?') }}</a>
41
+ </div>
42
+ </div></div>
43
+ </form>
44
+ </div>
45
+ </div></div>
46
+ {% endblock %}
@@ -0,0 +1,13 @@
1
+ {% extends "layout/immersive.html" %}
2
+ {% block content %}
3
+ <div class="row"><div class="columns">
4
+ <div class="immersive--content immersive--center">
5
+ <h1>{{ _('Logout') }}</h1>
6
+ <form method="POST">
7
+ <div class="text-center">
8
+ <input type="submit" value="{{ _('Logout') }}" class="inverse rounded primary button">
9
+ </div>
10
+ </form>
11
+ </div>
12
+ </div></div>
13
+ {% endblock %}
@@ -0,0 +1,27 @@
1
+ {% extends "layout/immersive.html" %}
2
+ {% block content %}
3
+ <div class="row"><div class="columns">
4
+ <div class="immersive--content immersive--center">
5
+ <h1>{{ _('Lost Password') }}</h1>
6
+ {% if not model.system.get('smtp.user') %}
7
+ <div class="text-center">
8
+ {{ _('Relax and try to remember your password.') }}
9
+ </div>
10
+ {% else %}
11
+ <form method="POST">
12
+ <div class="row"><div class="columns">
13
+ <label class="inverse material textbox">
14
+ {{ _('Email') }}
15
+ <input name="mail" type="text" autofocus>
16
+ </label>
17
+ </div></div>
18
+ <div class="row"><div class="columns">
19
+ <div class="text-center">
20
+ <input type="submit" value="{{ _('Send Password Reset Email') }}" class="inverse rounded primary button">
21
+ </div>
22
+ </div></div>
23
+ </form>
24
+ {% endif %}
25
+ </div>
26
+ </div></div>
27
+ {% endblock %}
@@ -0,0 +1,6 @@
1
+ {% extends "layout/mail.html" %}
2
+ {% block title %}{{ _('Lost Password') }}{% endblock %}
3
+ {% block content %}
4
+ <p>{{ _('Hello, {0}! You can click following link to reset the password of your {1} account:').format(uname, handler.domain.ui.name|default(model.system.get('server.name'))) }}</p>
5
+ <p><a href="{{ url_prefix }}{{ url }}">{{ url_prefix }}{{ url }}</a></p>
6
+ {% endblock %}
@@ -0,0 +1,9 @@
1
+ {% extends "layout/immersive.html" %}
2
+ {% block content %}
3
+ <div class="immersive--content immersive--center">
4
+ <h1>{{ _('Lost Password') }}</h1>
5
+ <div class="text-center">
6
+ {{ _('Password reset mail has been sent to your email.') }}
7
+ </div>
8
+ </div>
9
+ {% endblock %}
@@ -0,0 +1,29 @@
1
+ {% extends "layout/immersive.html" %}
2
+ {% block content %}
3
+ <div class="immersive--content immersive--center">
4
+ <h1>{{ _('Lost Password') }}</h1>
5
+ <form method="POST">
6
+ <div>
7
+ <label class="inverse material textbox">
8
+ {{ _('Username') }}
9
+ <input type="text" value="{{ uname }}" disabled>
10
+ </label>
11
+ </div>
12
+ <div>
13
+ <label class="inverse material textbox">
14
+ {{ _('Password') }}
15
+ <input name="password" type="password" autofocus>
16
+ </label>
17
+ </div>
18
+ <div>
19
+ <label class="inverse material textbox">
20
+ {{ _('Repeat Password') }}
21
+ <input name="verifyPassword" type="password">
22
+ </label>
23
+ </div>
24
+ <div class="text-center">
25
+ <input type="submit" value="{{ _('Reset Password') }}" class="inverse rounded primary button">
26
+ </div>
27
+ </form>
28
+ </div>
29
+ {% endblock %}
@@ -0,0 +1,22 @@
1
+ {% extends "layout/immersive.html" %}
2
+ {% block content %}
3
+ <div class="row"><div class="columns">
4
+ <div class="immersive--content immersive--center">
5
+ <h1>{{ _('Sign Up') }}</h1>
6
+ <form method="POST" captcha>
7
+ <div class="row"><div class="columns">
8
+ <label class="inverse material textbox">
9
+ {{ _('Email') }}
10
+ <input name="mail" type="text" autofocus>
11
+ </label>
12
+ </div></div>
13
+ <div class="row"><div class="columns">
14
+ <div class="text-center">
15
+ {{ captcha|safe }}
16
+ <input id="submit" type="submit" value="{{ _('Send Verification Email') }}" class="inverse expanded rounded primary button">
17
+ </div>
18
+ </div></div>
19
+ </form>
20
+ </div>
21
+ </div></div>
22
+ {% endblock %}
@@ -0,0 +1,6 @@
1
+ {% extends "layout/mail.html" %}
2
+ {% block title %}{{ _('Sign Up') }}{% endblock %}
3
+ {% block content %}
4
+ <p>{{ _('Hello! You can click following link to sign up your {0} account:').format(handler.domain.ui.name|default(model.system.get('server.name'))) }}</p>
5
+ <p><a href="{{ url_prefix|safe }}{{ path|safe }}">{{ url_prefix|safe }}{{ path|safe }}</a></p>
6
+ {% endblock %}
@@ -0,0 +1,9 @@
1
+ {% extends "layout/immersive.html" %}
2
+ {% block content %}
3
+ <div class="immersive--content immersive--center">
4
+ <h1>{{ _('Sign Up') }}</h1>
5
+ <div class="text-center">
6
+ {{ _('Sign up mail has been sent to your email.') }}
7
+ </div>
8
+ </div>
9
+ {% endblock %}
@@ -0,0 +1,35 @@
1
+ {% extends "layout/immersive.html" %}
2
+ {% block content %}
3
+ <div class="immersive--content immersive--center">
4
+ <h1>{{ _('Sign Up') }}</h1>
5
+ <form method="POST">
6
+ <div>
7
+ <label class="inverse material textbox">
8
+ {{ _('Email') }}
9
+ <input type="text" value="{{ mail }}" disabled>
10
+ </label>
11
+ </div>
12
+ <div>
13
+ <label class="inverse material textbox">
14
+ {{ _('Username') }}
15
+ <input name="uname" value="{{ username or '' }}" type="text" autofocus>
16
+ </label>
17
+ </div>
18
+ <div>
19
+ <label class="inverse material textbox">
20
+ {{ _('Password') }}
21
+ <input name="password" type="password">
22
+ </label>
23
+ </div>
24
+ <div>
25
+ <label class="inverse material textbox">
26
+ {{ _('Repeat Password') }}
27
+ <input name="verifyPassword" type="password">
28
+ </label>
29
+ </div>
30
+ <div class="text-center">
31
+ <input type="submit" value="{{ _('user_register') }}" class="inverse expanded rounded primary button">
32
+ </div>
33
+ </form>
34
+ </div>
35
+ {% endblock %}
@@ -0,0 +1,54 @@
1
+ {% extends "layout/immersive.html" %}
2
+ {% block content %}
3
+ <div class="row"><div class="columns">
4
+ <div class="immersive--content immersive--center">
5
+ <h1>{{ _('Confirm Access') }}</h1>
6
+ <form method="POST">
7
+ {% if UserContext.authn %}
8
+ <div class="row sudo-div confirm-div nojs--hide" data-sudo="authn"><div class="columns">
9
+ <input value="{{ _('Use Authenticator') }}" class="inverse expanded rounded primary button" name="webauthn_verify">
10
+ <input type="hidden" name="authnChallenge" value="">
11
+ </div></div>
12
+ {% endif %}
13
+ {% if UserContext.tfa %}
14
+ <div class="row sudo-div" data-sudo="tfa" style="display:none"><div class="columns">
15
+ <label class="inverse material textbox">
16
+ {{ _('Two Factor Authentication Code') }}
17
+ <input name="tfa" type="number">
18
+ </label>
19
+ </div></div>
20
+ {% endif %}
21
+ <div class="row sudo-div" data-sudo="password"><div class="columns">
22
+ <label class="inverse material textbox">
23
+ {{ _('Password') }}
24
+ <input name="password" type="password">
25
+ </label>
26
+ </div></div>
27
+ <div class="row confirm-div"><div class="columns">
28
+ <div class="text-center">
29
+ <input value="{{ _('Confirm') }}" class="inverse expanded rounded primary button" name="confirm">
30
+ </div>
31
+ </div></div>
32
+ </form>
33
+ <div class="row"><div class="columns">
34
+ <div class="text-center supplementary inverse typo">
35
+ <p>{{ _('Tip: You are entering sudo mode.')|safe }}</p>
36
+ <p>{{ _("After you've performed a sudo-protected action, you'll only be asked to re-authenticate again after a few hours of inactivity.") }}</p>
37
+ </div>
38
+ </div></div>
39
+ {% if UserContext.authn or UserContext.tfa %}
40
+ <br>
41
+ <div class="row nojs--hide"><div class="columns">
42
+ <div class="supplementary inverse typo">
43
+ <p><strong>{{ _('Or use other methods:') }}</strong></p>
44
+ <ol>
45
+ {% if UserContext.authn %}<li class="sudo-switch" data-sudo="authn"><a>{{ _('Use Authenticator') }}</a></li>{% endif %}
46
+ {% if UserContext.tfa %}<li class="sudo-switch" data-sudo="tfa"><a>{{ _('Use TFA Code') }}</a></li>{% endif %}
47
+ <li class="sudo-switch" data-sudo="password" style="display:none"><a>{{ _('Use Password') }}</a></li>
48
+ </ol>
49
+ </div>
50
+ </div></div>
51
+ {% endif %}
52
+ </div>
53
+ </div></div>
54
+ {% endblock %}
@@ -0,0 +1,18 @@
1
+ {% extends "layout/immersive.html" %}
2
+ {% block content %}
3
+ <div class="row"><div class="columns">
4
+ <div class="immersive--content immersive--center">
5
+ <h1>{{ _('Confirm Access') }}</h1>
6
+ <div class="text-center">
7
+ Redirecting, please wait...
8
+ </div>
9
+ <form method="{{ method }}" action="{{ redirect }}" style="visibility:hidden">
10
+ {% for k, v in args %}
11
+ <input name="{{ k }}" value="{{ v }}" />
12
+ {% endfor %}
13
+ <input type="submit" id="submit" />
14
+ </form>
15
+ <script>document.getElementById('submit').click()</script>
16
+ </div>
17
+ </div></div>
18
+ {% endblock %}
@@ -0,0 +1,189 @@
1
+ {% extends "layout/wiki_base.html" %}
2
+ {% block wiki_content %}
3
+ {% set name = handler.domain.ui.name|default(model.system.get('server.name')) %}
4
+ <div class="section" data-heading-extract-to="#menu-item-wiki_help">
5
+ <div class="section__header">
6
+ <h1 class="section__title" id="domain" data-heading>{{ _('Domain') }}</h1>
7
+ </div>
8
+ <div class="section__body typo">
9
+ <p>每个用户可以创建自己的域。比如,老师可以为课程创建一个域,然后把题目和学生加入到此域中。再如,可以把域作为团队功能。</p>
10
+ <p>通过合理的设置角色及其权限,可以把域设为公开或私有。</p>
11
+ <p>默认域为 system,用户直接访问 {{ name }} 域名就会访问此域,点击 Hydro Logo 会从任意域跳转回 system 域。</p>
12
+ <p>每个域的题库、讨论、训练以及比赛是独立且自治的。</p>
13
+ </div>
14
+ </div>
15
+ <div class="section" data-heading-extract-to="#menu-item-wiki_help">
16
+ <div class="section__header">
17
+ <h1 class="section__title" id="compiler" data-heading>{{ _("Compilers' Version and Parameters") }}</h1>
18
+ </div>
19
+ <div class="section__body typo">
20
+ <p>{{ name }} 使用 <a href="https://github.com/hydro-dev/Hydro/tree/master/packages/hydrojudge">HydroJudge</a> 进行评测,编译参数和当前所用编译器版本见状态页。</p>
21
+ </div>
22
+ </div>
23
+ <div class="section" data-heading-extract-to="#menu-item-wiki_help">
24
+ <div class="section__header">
25
+ <h1 class="section__title" id="limits" data-heading>{{ _('Limitations') }}</h1>
26
+ </div>
27
+ <div class="section__body typo">
28
+ <p>{{ name }} 评测机使用进程的CPU时间计算时间消耗,时间的限定为题目中评测点所指定的时间。</p>
29
+ <p>{{ name }} 评测机使用进程虚拟内存与物理内存总和计算内存空间消耗。内存空间默认限定为256MiB,题目中特别指明的,限定为题目中评测点所指定的内存空间。</p>
30
+ </div>
31
+ </div>
32
+ <div class="section" data-heading-extract-to="#menu-item-wiki_help">
33
+ <div class="section__header">
34
+ <h1 class="section__title" id="io" data-heading>{{ _('IO') }}</h1>
35
+ </div>
36
+ <div class="section__body typo">
37
+ <p>若无特殊说明,{{ name }} 使用标准输入输出(控制台输入输出,屏幕输入输出,STD I/O)。 </p>
38
+ </div>
39
+ </div>
40
+ <div class="section" data-heading-extract-to="#menu-item-wiki_help">
41
+ <div class="section__header">
42
+ <h1 class="section__title" id="status" data-heading>{{ _('Judge Status') }}</h1>
43
+ </div>
44
+ <div class="section__body typo">
45
+ <ul>
46
+ <li><span class="record-status--text pending">Waiting</span> 评测:评测请求正在等待被评测机抓取</li>
47
+ <li><span class="record-status--text progress">Fetched</span> 评测:评测请求已被评测机抓取,正在准备开始评测</li>
48
+ <li><span class="record-status--text progress">Compiling</span> 评测:正在编译中</li>
49
+ <li><span class="record-status--text progress">Judging</span> 评测:编译成功,正在评测中</li>
50
+ <li><span class="record-status--text pass">Accepted</span> 通过:程序输出完全正确</li>
51
+ <li><span class="record-status--text fail">Wrong Answer</span> 不通过:程序输出与标准答案不一致(不包括行末空格以及文件末空行)</li>
52
+ <li><span class="record-status--text fail">Time Limit Exceeded</span> 不通过:程序运行时间超过了题目限制</li>
53
+ <li><span class="record-status--text fail">Memory Limit Exceeded</span> 不通过:程序运行内存空间超过了题目限制</li>
54
+ <li><span class="record-status--text fail">Runtime Error</span> 不通过:程序运行时错误(如数组越界、被零除、运算溢出、栈溢出、无效指针等)</li>
55
+ <li><span class="record-status--text fail">Compile Error</span> 不通过:编译失败</li>
56
+ <li><span class="record-status--text fail">System Error</span> 错误:系统错误(如果您遇到此问题,请及时在讨论区进行反馈)</li>
57
+ <li><span class="record-status--text ignored">Canceled</span> 其他:评测被取消</li>
58
+ <li><span class="record-status--text fail">Unknown Error</span> 其他:未知错误</li>
59
+ <li><span class="record-status--text ignored">Ignored</span> 其他:被忽略</li>
60
+ </ul>
61
+ <blockquote class="note">有“成绩取消”字样则说明管理员手动标记此记录为取消,可能违反了服务条款,比如代码被发现与其他用户的代码十分相似。</blockquote>
62
+ </div>
63
+ </div>
64
+ <div class="section" data-heading-extract-to="#menu-item-wiki_help">
65
+ <div class="section__header">
66
+ <h1 class="section__title" id="ce" data-heading>{{ _('Compile Error') }}</h1>
67
+ </div>
68
+ <div class="section__body typo">
69
+ <p>可能有以下情况:</p>
70
+ <blockquote><ul>
71
+ <li>1. 递交时选错了编程语言</li>
72
+ <li>2. Java 的主类名没有使用 "Main"</li>
73
+ <li>3. 对于 C/C++:见下</li>
74
+ <li>4. 一般性的编译错误</li>
75
+ </ul></blockquote>
76
+
77
+ <blockquote class="warn">
78
+ <p>对 C/C++ 选手的特别提醒:</p>
79
+ <ul>
80
+ <li>1. __int64 在 GNU C++ 中应写成 long long 类型</li>
81
+ <li>2. main() 返回值必须定义为 int ,而不是 void</li>
82
+ <li>3. for 语句中的指标变量 i 将会在如"for (int i = 0...) {...}"语句之后变为无效</li>
83
+ <li>4. itoa 不是一个通用 ANSI 函数(标准 C/C++ 中无此函数)</li>
84
+ <li>5. printf 中使用 %lf 格式是不正确的</li>
85
+ </ul>
86
+ </blockquote>
87
+ </div>
88
+ </div>
89
+ <div class="section" data-heading-extract-to="#menu-item-wiki_help">
90
+ <div class="section__header">
91
+ <h1 class="section__title" id="training" data-heading>{{ _('Training') }}</h1>
92
+ </div>
93
+ <div class="section__body typo">
94
+ <p>我们精心挑选了一些题目组成了训练计划。单击导航栏的“训练”即可进入!</p>
95
+ </div>
96
+ </div>
97
+ <div class="section" data-heading-extract-to="#menu-item-wiki_help">
98
+ <div class="section__header">
99
+ <h1 class="section__title" id="contest" data-heading>{{ _('Contest') }}</h1>
100
+ </div>
101
+ <div class="section__body typo richmedia">
102
+ <p>按照赛制不同,有不同的递交、排名规则。</p>
103
+ <p>在 IOI,XCPC,{{ _('Ledo') }},IOI(Strict) 赛制下,选手可以多次提交一道题目,并获得实时评测结果。</p>
104
+ <p>在 IOI,XCPC,{{ _('Ledo') }} 赛制下,选手可以在比赛时看到排行榜。</p>
105
+
106
+ <p>OI 赛制所有题目均以最后一次递交为准,特别地,请避免编译错误。</p>
107
+ <p>OI 赛制排名规则为:总分高的排在前面,总分相等则排名相同。</p>
108
+
109
+ <p>XCPC 赛制中,每次错误提交会给题目增加 20 分钟的罚时。</p>
110
+ <p>XCPC 赛制排名规则为:通过题目数多的排在前面,通过题目数相同的做题耗时(含罚时)少的排在前。</p>
111
+
112
+ <p>{{ _('Ledo') }} 赛制下,多次提交会导致选手的得分被扣除,排行榜将显示用户的最高得分。</p>
113
+ <p>{{ _('Ledo') }} 赛制下,每道题的最终得分为: $s \times \max(0.95^{n}, 0.7)$ 。$s,n$ 分别代表本次得分和本次提交前的尝试次数。</p>
114
+ <p>{{ _('Ledo') }} 排名规则为:按照如上规则折算后的分数从高到低排名。</p>
115
+
116
+ <p>{{ _('IOI(Strict)') }} 赛制下,每道题的排行榜得分将为用户每个子任务在所有提交中的最大得分的和。</p>
117
+
118
+ <p>时间与空间限制以题目说明为准,默认限制参见<a href="#limits">{{ _('Limitations') }}</a>。</p>
119
+ </div>
120
+ </div>
121
+ <div class="section" data-heading-extract-to="#menu-item-wiki_help">
122
+ <div class="section__header">
123
+ <h1 class="section__title" id="acratio" data-heading>{{ _('Accepted Ratio') }}</h1>
124
+ </div>
125
+ <div class="section__body typo">
126
+ <p>通过率的影响极其恶劣,{{ name }} 不提供也不承认通过率。</p>
127
+ </div>
128
+ </div>
129
+ <div class="section" data-heading-extract-to="#menu-item-wiki_help">
130
+ <div class="section__header">
131
+ <h1 class="section__title" id="rp" data-heading>{{ _('RP Algorithm') }}</h1>
132
+ </div>
133
+ <div class="section__body typo">
134
+ <p>RP 可由题目,活动,比赛等获得。</p>
135
+ </div>
136
+ </div>
137
+ <div class="section" data-heading-extract-to="#menu-item-wiki_help">
138
+ <div class="section__header">
139
+ <h1 class="section__title" id="pbmdiff" data-heading>{{ _('Difficulty Algorithm') }}</h1>
140
+ </div>
141
+ <div class="section__body typo">
142
+ <p>{{ name }} 中题目的难度,根据递交数、通过率以及每个递交的递交时间和评测结果,通过算法计算得出。</p>
143
+ <p>因此,请注意以下几点:</p>
144
+ <ul>
145
+ <li>0. 一般地,难度的数值越大,该题目越难。</li>
146
+ <li>1. 新题目的难度可能不准确;在题目获得大量递交之后,难度才会变得较为准确。</li>
147
+ <li>2. 越早递交评测的用户代码的评测结果对题目难度影响越大。</li>
148
+ <li>3. 题目的难度由算法计算得出,有可能出现不准确的结果。</li>
149
+ </ul>
150
+ </div>
151
+ </div>
152
+ <div class="section" data-heading-extract-to="#menu-item-wiki_help">
153
+ <div class="section__header">
154
+ <h1 class="section__title" id="upload" data-heading>{{ _('Dataset Format') }}</h1>
155
+ </div>
156
+ <div class="section__body typo">
157
+ <p>详见<a href="https://hydro.js.org/docs/Hydro/user/testdata">配置文档</a></p>
158
+ </div>
159
+ </div>
160
+ <div class="section" data-heading-extract-to="#menu-item-wiki_help">
161
+ <div class="section__header">
162
+ <h1 class="section__title" id="lostpass" data-heading>{{ _('Forgot Password and/or Username') }}</h1>
163
+ </div>
164
+ <div class="section__body typo">
165
+ <p>如果您无法登录,请仔细想想,是不是用户名记错了。比如,自己原本想要注册的用户名已经被注册,所以使用了一个带有前和/或后缀的用户名。</p>
166
+ <p>如果您确信您的账号被盗或者忘记了账号和/或密码,请及时<a href="{{ url('user_lostpass') }}">{{ _('Reset Password or Find Username') }}</a>。</p>
167
+ </div>
168
+ </div>
169
+ <div class="section" data-heading-extract-to="#menu-item-wiki_help">
170
+ <div class="section__header">
171
+ <h1 class="section__title" id="markdown" data-heading>{{ _('Markdown') }}</h1>
172
+ </div>
173
+ <div class="section__body typo">
174
+ <p>Hydro 的 Markdown 区域使用 <a href="http://commonmark.org/help/">CommonMark</a> 语法,并扩展了以下功能:</p>
175
+ <ul>
176
+ <li>基于 <a href="https://onemathematicalcat.org/MathJaxDocumentation/TeXSyntax.htm">Katex</a> 语法的数学公式支持。</li>
177
+ <li>使用 <code>@[](/user/uid)</code> 提及用户。</li>
178
+ <li>使用 <code>==text==</code> 高亮文本。</li>
179
+ <li>使用 <code>![alt](url =100x100)</code> 设置嵌入图片的大小。</li>
180
+ <li>使用 <code>@[video](https://.../a.mp4)</code> 嵌入视频文件。</li>
181
+ <li>使用 <code>@[bilibili](BVxxx)</code> 嵌入站外视频。</li>
182
+ <li>使用 <code>@[pdf](https://.../a.pdf)</code> 嵌入 PDF 文件。</li>
183
+ <li>在题目/比赛/作业/训练中,可使用 <code>file://文件名</code> 的链接格式引用对应的附件。(推荐)</li>
184
+ <li>支持使用一部分 HTML 标签。</li>
185
+ </ul>
186
+ </div>
187
+ </div>
188
+
189
+ {% endblock %}
@@ -0,0 +1,48 @@
1
+ .bp6-progress-bar {
2
+ background: rgba(95, 107, 124, 0.2);
3
+ border-radius: 40px;
4
+ display: block;
5
+ height: 8px;
6
+ overflow: hidden;
7
+ position: relative;
8
+ width: 100%;
9
+ }
10
+
11
+ .bp6-progress-bar .bp6-progress-meter {
12
+ background: linear-gradient(-45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%);
13
+ background-color: rgba(95, 107, 124, 0.8);
14
+ background-size: 30px 30px;
15
+ border-radius: 40px;
16
+ height: 100%;
17
+ position: absolute;
18
+ transition: width 200ms cubic-bezier(0.4, 1, 0.75, 0.9);
19
+ width: 100%;
20
+ }
21
+
22
+ .bp6-progress-bar.bp6-no-stripes .bp6-progress-meter {
23
+ background-image: none;
24
+ }
25
+
26
+ .bp6-dark .bp6-progress-bar {
27
+ background: rgba(17, 20, 24, 0.5);
28
+ }
29
+
30
+ .bp6-dark .bp6-progress-bar .bp6-progress-meter {
31
+ background-color: #8f99a8;
32
+ }
33
+
34
+ .bp6-progress-bar.bp6-intent-primary .bp6-progress-meter {
35
+ background-color: #2d72d2;
36
+ }
37
+
38
+ .bp6-progress-bar.bp6-intent-success .bp6-progress-meter {
39
+ background-color: #238551;
40
+ }
41
+
42
+ .bp6-progress-bar.bp6-intent-warning .bp6-progress-meter {
43
+ background-color: #c87619;
44
+ }
45
+
46
+ .bp6-progress-bar.bp6-intent-danger .bp6-progress-meter {
47
+ background-color: #cd4246;
48
+ }