xmoj-script 1.1.24 → 1.1.30

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 (3) hide show
  1. package/Update.json +57 -0
  2. package/XMOJ.user.js +567 -376
  3. package/package.json +1 -1
package/XMOJ.user.js CHANGED
@@ -1,6 +1,6 @@
1
1
  // ==UserScript==
2
2
  // @name XMOJ
3
- // @version 1.1.24
3
+ // @version 1.1.30
4
4
  // @description XMOJ增强脚本
5
5
  // @author @XMOJ-Script-dev, @langningchen and the community
6
6
  // @namespace https://github/langningchen
@@ -55,13 +55,21 @@ let GetRelativeTime = (Input) => {
55
55
  let Now = new Date().getTime();
56
56
  let Delta = Now - Input.getTime();
57
57
  let RelativeName = "";
58
- if (Delta < 0) { RelativeName = "未来"; }
59
- else if (Delta <= 1000 * 60) { RelativeName = "刚刚"; }
60
- else if (Delta <= 1000 * 60 * 60) { RelativeName = Math.floor((Now - Input) / 1000 / 60) + "分钟前"; }
61
- else if (Delta <= 1000 * 60 * 60 * 24) { RelativeName = Math.floor((Now - Input) / 1000 / 60 / 60) + "小时前"; }
62
- else if (Delta <= 1000 * 60 * 60 * 24 * 31) { RelativeName = Math.floor((Now - Input) / 1000 / 60 / 60 / 24) + "天前"; }
63
- else if (Delta <= 1000 * 60 * 60 * 24 * 365) { RelativeName = Math.floor((Now - Input) / 1000 / 60 / 60 / 24 / 31) + "个月前"; }
64
- else { RelativeName = Math.floor((Now - Input) / 1000 / 60 / 60 / 24 / 365) + "年前"; }
58
+ if (Delta < 0) {
59
+ RelativeName = "未来";
60
+ } else if (Delta <= 1000 * 60) {
61
+ RelativeName = "刚刚";
62
+ } else if (Delta <= 1000 * 60 * 60) {
63
+ RelativeName = Math.floor((Now - Input) / 1000 / 60) + "分钟前";
64
+ } else if (Delta <= 1000 * 60 * 60 * 24) {
65
+ RelativeName = Math.floor((Now - Input) / 1000 / 60 / 60) + "小时前";
66
+ } else if (Delta <= 1000 * 60 * 60 * 24 * 31) {
67
+ RelativeName = Math.floor((Now - Input) / 1000 / 60 / 60 / 24) + "天前";
68
+ } else if (Delta <= 1000 * 60 * 60 * 24 * 365) {
69
+ RelativeName = Math.floor((Now - Input) / 1000 / 60 / 60 / 24 / 31) + "个月前";
70
+ } else {
71
+ RelativeName = Math.floor((Now - Input) / 1000 / 60 / 60 / 24 / 365) + "年前";
72
+ }
65
73
  return "<span title=\"" + Input.toLocaleString() + "\">" + RelativeName + "</span>";
66
74
  };
67
75
  let RenderMathJax = async () => {
@@ -116,7 +124,7 @@ let GetUserInfo = async (Username) => {
116
124
  };
117
125
  /**
118
126
  * Retrieves the badge information for a given user.
119
- *
127
+ *
120
128
  * @param {string} Username - The username of the user.
121
129
  * @returns {Promise<Object>} - A promise that resolves to an object containing the badge information.
122
130
  * @property {string} BackgroundColor - The background color of the badge.
@@ -183,8 +191,7 @@ let GetUsernameHTML = async (Element, Username, Simple = false, Href = "https://
183
191
  HTMLData += `<img src="`;
184
192
  if (UserInfo.EmailHash == undefined) {
185
193
  HTMLData += `https://cravatar.cn/avatar/00000000000000000000000000000000?d=mp&f=y`;
186
- }
187
- else {
194
+ } else {
188
195
  HTMLData += `https://cravatar.cn/avatar/${UserInfo.EmailHash}?d=retro`;
189
196
  }
190
197
  HTMLData += `" class="rounded me-2" style="width: 20px; height: 20px; ">`;
@@ -205,8 +212,7 @@ let GetUsernameHTML = async (Element, Username, Simple = false, Href = "https://
205
212
  } else {
206
213
  HTMLData += "link-info";
207
214
  }
208
- }
209
- else {
215
+ } else {
210
216
  HTMLData += "link-info";
211
217
  }
212
218
  HTMLData += `\";"></a>`;
@@ -265,8 +271,7 @@ let SizeToStringSize = (Memory) => {
265
271
  } else {
266
272
  return (Memory / 1024 / 1024 / 1024).toFixed(2) + "GB";
267
273
  }
268
- }
269
- else {
274
+ } else {
270
275
  return Memory;
271
276
  }
272
277
  };
@@ -282,14 +287,13 @@ let TimeToStringTime = (Time) => {
282
287
  } else if (Time < 1000 * 60) {
283
288
  return (Time / 1000).toFixed(2) + "s";
284
289
  }
285
- }
286
- else {
290
+ } else {
287
291
  return Time;
288
292
  }
289
293
  };
290
294
  /**
291
295
  * Tidies up the given table by applying Bootstrap styling and removing unnecessary attributes.
292
- *
296
+ *
293
297
  * @param {HTMLElement} Table - The table element to be tidied up.
294
298
  */
295
299
  let TidyTable = (Table) => {
@@ -399,14 +403,13 @@ let ServerURL = (UtilityEnabled("DebugMode") ? "https://ghpages.xmoj-bbs.tech/"
399
403
  let CurrentUsername = document.querySelector("#profile").innerText;
400
404
  CurrentUsername = CurrentUsername.replaceAll(/[^a-zA-Z0-9]/g, "");
401
405
  let IsAdmin = AdminUserList.indexOf(CurrentUsername) !== -1;
402
- if (location.href.startsWith('http://')){
406
+ if (location.href.startsWith('http://')) {
403
407
  //use https
404
408
  location.href = location.href.replace('http://', 'https://');
405
409
  }
406
410
  if (location.host != "www.xmoj.tech") {
407
411
  location.host = "www.xmoj.tech";
408
- }
409
- else {
412
+ } else {
410
413
  document.body.classList.add("placeholder-glow");
411
414
  if (document.querySelector("#navbar") != null) {
412
415
  if (document.querySelector("body > div > div.jumbotron") != null) {
@@ -469,61 +472,81 @@ else {
469
472
  for (var i = 0; i < Temp.length; i++) {
470
473
  if (Temp[i].href.indexOf("bootstrap.min.css") != -1) {
471
474
  Temp[i].remove();
472
- }
473
- else if (Temp[i].href.indexOf("white.css") != -1) {
475
+ } else if (Temp[i].href.indexOf("white.css") != -1) {
474
476
  Temp[i].remove();
475
- }
476
- else if (Temp[i].href.indexOf("semantic.min.css") != -1) {
477
+ } else if (Temp[i].href.indexOf("semantic.min.css") != -1) {
477
478
  Temp[i].remove();
478
- }
479
- else if (Temp[i].href.indexOf("bootstrap-theme.min.css") != -1) {
479
+ } else if (Temp[i].href.indexOf("bootstrap-theme.min.css") != -1) {
480
480
  Temp[i].remove();
481
- }
482
- else if (Temp[i].href.indexOf("problem.css") != -1) {
481
+ } else if (Temp[i].href.indexOf("problem.css") != -1) {
483
482
  Temp[i].remove();
484
483
  }
485
484
  }
486
485
  if (UtilityEnabled("DarkMode")) {
487
486
  document.querySelector("html").setAttribute("data-bs-theme", "dark");
488
- }
489
- else {
487
+ } else {
490
488
  document.querySelector("html").setAttribute("data-bs-theme", "light");
491
489
  }
492
490
 
493
- let PopperScriptElement = document.createElement("script"); document.head.appendChild(PopperScriptElement);
494
- PopperScriptElement.type = "module";
495
- PopperScriptElement.src = "https://cdn.bootcdn.net/ajax/libs/popper.js/2.11.7/umd/popper.min.js";
496
- let CodeMirrorStyleElement = document.createElement("link"); document.head.appendChild(CodeMirrorStyleElement);
497
- CodeMirrorStyleElement.rel = "stylesheet";
498
- CodeMirrorStyleElement.href = "https://cdn.bootcdn.net/ajax/libs/codemirror/6.65.7/codemirror.min.css";
499
- let CodeMirrorThemeStyleElement = document.createElement("link"); document.head.appendChild(CodeMirrorThemeStyleElement);
500
- CodeMirrorThemeStyleElement.rel = "stylesheet";
501
- CodeMirrorThemeStyleElement.href = "https://cdn.bootcdn.net/ajax/libs/codemirror/6.65.7/theme/darcula.min.css";
502
- let CodeMirrorMergeStyleElement = document.createElement("link"); document.head.appendChild(CodeMirrorMergeStyleElement);
503
- CodeMirrorMergeStyleElement.rel = "stylesheet";
504
- CodeMirrorMergeStyleElement.href = "https://cdn.bootcdn.net/ajax/libs/codemirror/6.65.7/addon/merge/merge.min.css";
505
- let BootstrapStyleElement = document.createElement("link"); document.head.appendChild(BootstrapStyleElement);
506
- BootstrapStyleElement.rel = "stylesheet";
507
- BootstrapStyleElement.href = "https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/5.3.0-alpha3/css/bootstrap.min.css";
508
- await new Promise((Resolve) => {
509
- PopperScriptElement.onload = () => {
510
- Resolve();
511
- };
512
- });
513
- Temp = document.querySelectorAll("script");
514
- for (var i = 0; i < Temp.length; i++) {
515
- if (Temp[i].src.indexOf("bootstrap.min.js") != -1) {
516
- Temp[i].remove();
517
- let BootstrapScriptElement = document.createElement("script"); document.head.appendChild(BootstrapScriptElement);
518
- BootstrapScriptElement.type = "module";
519
- BootstrapScriptElement.src = "https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/5.3.0-alpha3/js/bootstrap.min.js";
520
- await new Promise((Resolve) => {
521
- BootstrapScriptElement.onload = () => {
522
- Resolve();
523
- };
524
- });
491
+ let resources = [
492
+ {
493
+ type: 'script',
494
+ src: 'https://cdn.bootcdn.net/ajax/libs/popper.js/2.11.7/umd/popper.min.js',
495
+ isModule: true
496
+ },
497
+ {
498
+ type: 'link',
499
+ href: 'https://cdn.bootcdn.net/ajax/libs/codemirror/6.65.7/codemirror.min.css',
500
+ rel: 'stylesheet'
501
+ },
502
+ {
503
+ type: 'link',
504
+ href: 'https://cdn.bootcdn.net/ajax/libs/codemirror/6.65.7/theme/darcula.min.css',
505
+ rel: 'stylesheet'
506
+ },
507
+ {
508
+ type: 'link',
509
+ href: 'https://cdn.bootcdn.net/ajax/libs/codemirror/6.65.7/addon/merge/merge.min.css',
510
+ rel: 'stylesheet'
511
+ },
512
+ {
513
+ type: 'link',
514
+ href: 'https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/5.3.0-alpha3/css/bootstrap.min.css',
515
+ rel: 'stylesheet'
516
+ },
517
+ {
518
+ type: 'script',
519
+ src: 'https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/5.3.0-alpha3/js/bootstrap.min.js',
520
+ isModule: true
525
521
  }
526
- }
522
+ ];
523
+
524
+ let loadResources = async () => {
525
+ let promises = resources.map(resource => {
526
+ return new Promise((resolve, reject) => {
527
+ let element;
528
+ if (resource.type === 'script') {
529
+ element = document.createElement('script');
530
+ element.src = resource.src;
531
+ if (resource.isModule) {
532
+ element.type = 'module';
533
+ }
534
+ element.onload = resolve;
535
+ element.onerror = reject;
536
+ } else if (resource.type === 'link') {
537
+ element = document.createElement('link');
538
+ element.href = resource.href;
539
+ element.rel = resource.rel;
540
+ resolve(); // Stylesheets don't have an onload event
541
+ }
542
+ document.head.appendChild(element);
543
+ });
544
+ });
545
+
546
+ await Promise.all(promises);
547
+ };
548
+
549
+ loadResources();
527
550
  document.querySelector("nav").className = "navbar navbar-expand-lg bg-body-tertiary";
528
551
  document.querySelector("#navbar > ul:nth-child(1)").classList = "navbar-nav me-auto mb-2 mb-lg-0";
529
552
  document.querySelector("body > div > nav > div > div.navbar-header").outerHTML = `<a class="navbar-brand" href="https://www.xmoj.tech/">${UtilityEnabled("ReplaceXM") ? "高老师" : "小明"}的OJ</a><button type="button" class="navbar-toggler" data-bs-toggle="collapse" data-bs-target="#navbar"><span class="navbar-toggler-icon"></span></button>`;
@@ -669,7 +692,8 @@ else {
669
692
  (Hours < 10 ? "0" : "") + Hours + ":" +
670
693
  (Minutes < 10 ? "0" : "") + Minutes + ":" +
671
694
  (Seconds < 10 ? "0" : "") + Seconds;
672
- } catch (Error) { }
695
+ } catch (Error) {
696
+ }
673
697
 
674
698
  if (UtilityEnabled("ResetType")) {
675
699
  if (document.querySelector("#profile") != undefined &&
@@ -677,8 +701,7 @@ else {
677
701
  if (document.querySelector("#navbar > ul.nav.navbar-nav.navbar-right > li > ul").childNodes.length == 3) {
678
702
  document.querySelector("#navbar > ul.nav.navbar-nav.navbar-right > li > ul").childNodes[3].remove();
679
703
  }
680
- }
681
- else if (document.querySelector("#navbar > ul.nav.navbar-nav.navbar-right > li > ul > li:nth-child(3) > a > span") != undefined &&
704
+ } else if (document.querySelector("#navbar > ul.nav.navbar-nav.navbar-right > li > ul > li:nth-child(3) > a > span") != undefined &&
682
705
  document.querySelector("#navbar > ul.nav.navbar-nav.navbar-right > li > ul > li:nth-child(3) > a > span").innerText != "个人中心") {
683
706
  let PopupUL = document.querySelector("#navbar > ul.nav.navbar-nav.navbar-right > li > ul");
684
707
  PopupUL.innerHTML = `<li class="dropdown-item">修改帐号</li>
@@ -734,7 +757,7 @@ else {
734
757
  }
735
758
  }, 100);
736
759
 
737
- fetch(ServerURL + "/Update.json", { cache: "no-cache" })
760
+ fetch(ServerURL + "/Update.json", {cache: "no-cache"})
738
761
  .then((Response) => {
739
762
  return Response.json();
740
763
  })
@@ -762,61 +785,78 @@ else {
762
785
  }
763
786
  if (localStorage.getItem("UserScript-Update-LastVersion") != GM_info.script.version) {
764
787
  localStorage.setItem("UserScript-Update-LastVersion", GM_info.script.version);
765
- let UpdateDiv = document.createElement("div"); document.querySelector("body").appendChild(UpdateDiv);
788
+ let UpdateDiv = document.createElement("div");
789
+ document.querySelector("body").appendChild(UpdateDiv);
766
790
  UpdateDiv.className = "modal fade";
767
791
  UpdateDiv.id = "UpdateModal";
768
792
  UpdateDiv.tabIndex = -1;
769
- let UpdateDialog = document.createElement("div"); UpdateDiv.appendChild(UpdateDialog);
793
+ let UpdateDialog = document.createElement("div");
794
+ UpdateDiv.appendChild(UpdateDialog);
770
795
  UpdateDialog.className = "modal-dialog";
771
- let UpdateContent = document.createElement("div"); UpdateDialog.appendChild(UpdateContent);
796
+ let UpdateContent = document.createElement("div");
797
+ UpdateDialog.appendChild(UpdateContent);
772
798
  UpdateContent.className = "modal-content";
773
- let UpdateHeader = document.createElement("div"); UpdateContent.appendChild(UpdateHeader);
799
+ let UpdateHeader = document.createElement("div");
800
+ UpdateContent.appendChild(UpdateHeader);
774
801
  UpdateHeader.className = "modal-header";
775
- let UpdateTitle = document.createElement("h5"); UpdateHeader.appendChild(UpdateTitle);
802
+ let UpdateTitle = document.createElement("h5");
803
+ UpdateHeader.appendChild(UpdateTitle);
776
804
  UpdateTitle.className = "modal-title";
777
805
  UpdateTitle.innerText = "更新日志";
778
- let UpdateCloseButton = document.createElement("button"); UpdateHeader.appendChild(UpdateCloseButton);
806
+ let UpdateCloseButton = document.createElement("button");
807
+ UpdateHeader.appendChild(UpdateCloseButton);
779
808
  UpdateCloseButton.type = "button";
780
809
  UpdateCloseButton.className = "btn-close";
781
810
  UpdateCloseButton.setAttribute("data-bs-dismiss", "modal");
782
- let UpdateBody = document.createElement("div"); UpdateContent.appendChild(UpdateBody);
811
+ let UpdateBody = document.createElement("div");
812
+ UpdateContent.appendChild(UpdateBody);
783
813
  UpdateBody.className = "modal-body";
784
- let UpdateFooter = document.createElement("div"); UpdateContent.appendChild(UpdateFooter);
814
+ let UpdateFooter = document.createElement("div");
815
+ UpdateContent.appendChild(UpdateFooter);
785
816
  UpdateFooter.className = "modal-footer";
786
- let UpdateButton = document.createElement("button"); UpdateFooter.appendChild(UpdateButton);
817
+ let UpdateButton = document.createElement("button");
818
+ UpdateFooter.appendChild(UpdateButton);
787
819
  UpdateButton.type = "button";
788
820
  UpdateButton.className = "btn btn-secondary";
789
821
  UpdateButton.setAttribute("data-bs-dismiss", "modal");
790
822
  UpdateButton.innerText = "关闭";
791
823
  let Version = Object.keys(Response.UpdateHistory)[Object.keys(Response.UpdateHistory).length - 1]
792
824
  let Data = Response.UpdateHistory[Version];
793
- let UpdateDataCard = document.createElement("div"); UpdateBody.appendChild(UpdateDataCard);
825
+ let UpdateDataCard = document.createElement("div");
826
+ UpdateBody.appendChild(UpdateDataCard);
794
827
  UpdateDataCard.className = "card mb-3";
795
- let UpdateDataCardBody = document.createElement("div"); UpdateDataCard.appendChild(UpdateDataCardBody);
828
+ let UpdateDataCardBody = document.createElement("div");
829
+ UpdateDataCard.appendChild(UpdateDataCardBody);
796
830
  UpdateDataCardBody.className = "card-body";
797
- let UpdateDataCardTitle = document.createElement("h5"); UpdateDataCardBody.appendChild(UpdateDataCardTitle);
831
+ let UpdateDataCardTitle = document.createElement("h5");
832
+ UpdateDataCardBody.appendChild(UpdateDataCardTitle);
798
833
  UpdateDataCardTitle.className = "card-title";
799
834
  UpdateDataCardTitle.innerText = Version;
800
- let UpdateDataCardSubtitle = document.createElement("h6"); UpdateDataCardBody.appendChild(UpdateDataCardSubtitle);
835
+ let UpdateDataCardSubtitle = document.createElement("h6");
836
+ UpdateDataCardBody.appendChild(UpdateDataCardSubtitle);
801
837
  UpdateDataCardSubtitle.className = "card-subtitle mb-2 text-muted";
802
838
  UpdateDataCardSubtitle.innerHTML = GetRelativeTime(Data.UpdateDate);
803
- let UpdateDataCardText = document.createElement("p"); UpdateDataCardBody.appendChild(UpdateDataCardText);
839
+ let UpdateDataCardText = document.createElement("p");
840
+ UpdateDataCardBody.appendChild(UpdateDataCardText);
804
841
  UpdateDataCardText.className = "card-text";
805
842
  //release notes
806
- if (Data.Notes != undefined){
843
+ if (Data.Notes != undefined) {
807
844
  UpdateDataCardText.innerHTML = Data.Notes;
808
845
  }
809
- let UpdateDataCardList = document.createElement("ul"); UpdateDataCardText.appendChild(UpdateDataCardList);
846
+ let UpdateDataCardList = document.createElement("ul");
847
+ UpdateDataCardText.appendChild(UpdateDataCardList);
810
848
  UpdateDataCardList.className = "list-group list-group-flush";
811
849
  for (let j = 0; j < Data.UpdateContents.length; j++) {
812
- let UpdateDataCardListItem = document.createElement("li"); UpdateDataCardList.appendChild(UpdateDataCardListItem);
850
+ let UpdateDataCardListItem = document.createElement("li");
851
+ UpdateDataCardList.appendChild(UpdateDataCardListItem);
813
852
  UpdateDataCardListItem.className = "list-group-item";
814
853
  UpdateDataCardListItem.innerHTML =
815
854
  "(<a href=\"https://github.com/XMOJ-Script-dev/XMOJ-Script/pull/" + Data.UpdateContents[j].PR + "\" target=\"_blank\">" +
816
855
  "#" + Data.UpdateContents[j].PR + "</a>) " +
817
856
  Data.UpdateContents[j].Description;
818
857
  }
819
- let UpdateDataCardLink = document.createElement("a"); UpdateDataCardBody.appendChild(UpdateDataCardLink);
858
+ let UpdateDataCardLink = document.createElement("a");
859
+ UpdateDataCardBody.appendChild(UpdateDataCardLink);
820
860
  UpdateDataCardLink.className = "card-link";
821
861
  UpdateDataCardLink.href = "https://github.com/XMOJ-Script-dev/XMOJ-Script/releases/tag/" + Version;
822
862
  UpdateDataCardLink.target = "_blank";
@@ -824,7 +864,7 @@ else {
824
864
  new bootstrap.Modal(document.getElementById("UpdateModal")).show();
825
865
  }
826
866
  });
827
- fetch(ServerURL + "/AddonScript.js", { cache: "no-cache" })
867
+ fetch(ServerURL + "/AddonScript.js", {cache: "no-cache"})
828
868
  .then((Response) => {
829
869
  return Response.text();
830
870
  })
@@ -873,7 +913,8 @@ else {
873
913
  ToastDismissButton.addEventListener("click", () => {
874
914
  RequestAPI("ReadBBSMention", {
875
915
  "MentionID": Number(MentionList[i].MentionID)
876
- }, () => { });
916
+ }, () => {
917
+ });
877
918
  Toast.remove();
878
919
  });
879
920
  ToastFooter.appendChild(ToastDismissButton);
@@ -885,7 +926,8 @@ else {
885
926
  open("https://www.xmoj.tech/discuss3/thread.php?tid=" + MentionList[i].PostID, "_blank");
886
927
  RequestAPI("ReadBBSMention", {
887
928
  "MentionID": Number(MentionList[i].MentionID)
888
- }, () => { });
929
+ }, () => {
930
+ });
889
931
  });
890
932
  ToastFooter.appendChild(ToastViewButton);
891
933
  ToastBody.appendChild(ToastFooter);
@@ -938,7 +980,8 @@ else {
938
980
  ToastDismissButton.addEventListener("click", () => {
939
981
  RequestAPI("ReadMailMention", {
940
982
  "MentionID": Number(MentionList[i].MentionID)
941
- }, () => { });
983
+ }, () => {
984
+ });
942
985
  });
943
986
  ToastFooter.appendChild(ToastDismissButton);
944
987
  let ToastViewButton = document.createElement("button");
@@ -949,7 +992,8 @@ else {
949
992
  open("https://www.xmoj.tech/mail.php?to_user=" + MentionList[i].FromUserID, "_blank");
950
993
  RequestAPI("ReadMailMention", {
951
994
  "MentionID": Number(MentionList[i].MentionID)
952
- }, () => { });
995
+ }, () => {
996
+ });
953
997
  });
954
998
  ToastFooter.appendChild(ToastViewButton);
955
999
  ToastBody.appendChild(ToastFooter);
@@ -994,11 +1038,9 @@ else {
994
1038
  Row.classList.add("list-group-item");
995
1039
  if (Data[i].Type == "A") {
996
1040
  Row.classList.add("list-group-item-success");
997
- }
998
- else if (Data[i].Type == "F") {
1041
+ } else if (Data[i].Type == "F") {
999
1042
  Row.classList.add("list-group-item-warning");
1000
- }
1001
- else if (Data[i].Type == "D") {
1043
+ } else if (Data[i].Type == "D") {
1002
1044
  Row.classList.add("list-group-item-danger");
1003
1045
  }
1004
1046
  if (Data[i].Children == undefined) {
@@ -1012,8 +1054,7 @@ else {
1012
1054
  }
1013
1055
  if (localStorage.getItem("UserScript-Setting-" + Data[i].ID) == "false") {
1014
1056
  CheckBox.checked = false;
1015
- }
1016
- else {
1057
+ } else {
1017
1058
  CheckBox.checked = true;
1018
1059
  }
1019
1060
  CheckBox.addEventListener("change", () => {
@@ -1026,8 +1067,7 @@ else {
1026
1067
  Label.htmlFor = Data[i].ID;
1027
1068
  Label.innerText = Data[i].Name;
1028
1069
  Row.appendChild(Label);
1029
- }
1030
- else {
1070
+ } else {
1031
1071
  let Label = document.createElement("label");
1032
1072
  Label.innerText = Data[i].Name;
1033
1073
  Row.appendChild(Label);
@@ -1040,56 +1080,60 @@ else {
1040
1080
  return List;
1041
1081
  };
1042
1082
  UtilitiesCardBody.appendChild(CreateList([
1043
- { "ID": "ACMRank", "Type": "A", "Name": "比赛ACM排名,并且能下载ACM排名" },
1044
- { "ID": "Discussion", "Type": "F", "Name": "恢复讨论与短消息功能" },
1045
- { "ID": "MoreSTD", "Type": "F", "Name": "查看到更多标程" },
1083
+ {"ID": "ACMRank", "Type": "A", "Name": "比赛ACM排名,并且能下载ACM排名"},
1084
+ {"ID": "Discussion", "Type": "F", "Name": "恢复讨论与短消息功能"},
1085
+ {"ID": "MoreSTD", "Type": "F", "Name": "查看到更多标程"},
1046
1086
  {
1047
1087
  "ID": "StudyMode", "Type": "A", "Name": "学术模式", "Children": [
1048
- { "ID": "ApplyData", "Type": "A", "Name": "获取数据功能" },
1049
- { "ID": "AutoCheat", "Type": "A", "Name": "自动提交当年代码" }
1088
+ {"ID": "ApplyData", "Type": "A", "Name": "获取数据功能"},
1089
+ {"ID": "AutoCheat", "Type": "A", "Name": "自动提交当年代码"}
1050
1090
  ]
1051
1091
  },
1052
- { "ID": "Rating", "Type": "A", "Name": "添加用户评分和用户名颜色" },
1053
- { "ID": "AutoRefresh", "Type": "A", "Name": "比赛列表、比赛排名界面自动刷新" },
1054
- { "ID": "AutoCountdown", "Type": "A", "Name": "比赛列表等界面的时间自动倒计时" },
1055
- { "ID": "DownloadPlayback", "Type": "A", "Name": "回放视频增加下载功能" },
1056
- { "ID": "ImproveACRate", "Type": "A", "Name": "自动提交已AC题目以提高AC率" },
1057
- { "ID": "AutoO2", "Type": "F", "Name": "代码提交界面自动选择O2优化" },
1092
+ {"ID": "Rating", "Type": "A", "Name": "添加用户评分和用户名颜色"},
1093
+ {"ID": "AutoRefresh", "Type": "A", "Name": "比赛列表、比赛排名界面自动刷新"},
1094
+ {"ID": "AutoCountdown", "Type": "A", "Name": "比赛列表等界面的时间自动倒计时"},
1095
+ {"ID": "DownloadPlayback", "Type": "A", "Name": "回放视频增加下载功能"},
1096
+ {"ID": "ImproveACRate", "Type": "A", "Name": "自动提交已AC题目以提高AC率"},
1097
+ {"ID": "AutoO2", "Type": "F", "Name": "代码提交界面自动选择O2优化"},
1058
1098
  {
1059
1099
  "ID": "Beautify", "Type": "F", "Name": "美化界面", "Children": [
1060
- { "ID": "NewBootstrap", "Type": "F", "Name": "使用新版的Bootstrap样式库*" },
1061
- { "ID": "ResetType", "Type": "F", "Name": "重新排版*" },
1062
- { "ID": "AddColorText", "Type": "A", "Name": "增加彩色文字" },
1063
- { "ID": "AddUnits", "Type": "A", "Name": "状态界面内存与耗时添加单位" },
1064
- { "ID": "DarkMode", "Type": "A", "Name": "使用暗色模式" },
1065
- { "ID": "AddAnimation", "Type": "A", "Name": "增加动画" },
1066
- { "ID": "ReplaceYN", "Type": "F", "Name": "题目前对错的Y和N替换为勾和叉" },
1067
- { "ID": "RemoveAlerts", "Type": "D", "Name": "去除多余反复的提示" },
1068
- { "ID": "Translate", "Type": "F", "Name": "统一使用中文,翻译了部分英文*" },
1069
- { "ID": "ReplaceLinks", "Type": "F", "Name": "将网站中所有以方括号包装的链接替换为按钮" },
1070
- { "ID": "RemoveUseless", "Type": "D", "Name": "删去无法使用的功能*" },
1071
- { "ID": "ReplaceXM", "Type": "F", "Name": "将网站中所有“小明”和“我”关键字替换为“高老师”,所有“小红”替换为“徐师娘”,所有“小粉”替换为“彩虹”,所有“下海”、“海上”替换为“上海”" }
1100
+ {"ID": "NewBootstrap", "Type": "F", "Name": "使用新版的Bootstrap样式库*"},
1101
+ {"ID": "ResetType", "Type": "F", "Name": "重新排版*"},
1102
+ {"ID": "AddColorText", "Type": "A", "Name": "增加彩色文字"},
1103
+ {"ID": "AddUnits", "Type": "A", "Name": "状态界面内存与耗时添加单位"},
1104
+ {"ID": "DarkMode", "Type": "A", "Name": "使用暗色模式"},
1105
+ {"ID": "AddAnimation", "Type": "A", "Name": "增加动画"},
1106
+ {"ID": "ReplaceYN", "Type": "F", "Name": "题目前对错的Y和N替换为勾和叉"},
1107
+ {"ID": "RemoveAlerts", "Type": "D", "Name": "去除多余反复的提示"},
1108
+ {"ID": "Translate", "Type": "F", "Name": "统一使用中文,翻译了部分英文*"},
1109
+ {"ID": "ReplaceLinks", "Type": "F", "Name": "将网站中所有以方括号包装的链接替换为按钮"},
1110
+ {"ID": "RemoveUseless", "Type": "D", "Name": "删去无法使用的功能*"},
1111
+ {
1112
+ "ID": "ReplaceXM",
1113
+ "Type": "F",
1114
+ "Name": "将网站中所有“小明”和“我”关键字替换为“高老师”,所有“小红”替换为“徐师娘”,所有“小粉”替换为“彩虹”,所有“下海”、“海上”替换为“上海”"
1115
+ }
1072
1116
  ]
1073
1117
  },
1074
- { "ID": "AutoLogin", "Type": "A", "Name": "在需要登录的界面自动跳转到登陆界面" },
1075
- { "ID": "SavePassword", "Type": "A", "Name": "自动保存用户名与密码,免去每次手动输入密码的繁琐" },
1076
- { "ID": "CopySamples", "Type": "F", "Name": "题目界面测试样例有时复制无效" },
1077
- { "ID": "RefreshSolution", "Type": "F", "Name": "状态页面结果自动刷新每次只能刷新一个" },
1078
- { "ID": "CopyMD", "Type": "A", "Name": "复制题目或题解内容" },
1079
- { "ID": "OpenAllProblem", "Type": "A", "Name": "比赛题目界面一键打开所有题目" },
1118
+ {"ID": "AutoLogin", "Type": "A", "Name": "在需要登录的界面自动跳转到登陆界面"},
1119
+ {"ID": "SavePassword", "Type": "A", "Name": "自动保存用户名与密码,免去每次手动输入密码的繁琐"},
1120
+ {"ID": "CopySamples", "Type": "F", "Name": "题目界面测试样例有时复制无效"},
1121
+ {"ID": "RefreshSolution", "Type": "F", "Name": "状态页面结果自动刷新每次只能刷新一个"},
1122
+ {"ID": "CopyMD", "Type": "A", "Name": "复制题目或题解内容"},
1123
+ {"ID": "OpenAllProblem", "Type": "A", "Name": "比赛题目界面一键打开所有题目"},
1080
1124
  {
1081
1125
  "ID": "CheckCode", "Type": "A", "Name": "提交代码前对代码进行检查", "Children": [
1082
- { "ID": "IOFile", "Type": "A", "Name": "是否使用了文件输入输出(如果需要使用)" },
1083
- { "ID": "CompileError", "Type": "A", "Name": "是否有编译错误" }
1126
+ {"ID": "IOFile", "Type": "A", "Name": "是否使用了文件输入输出(如果需要使用)"},
1127
+ {"ID": "CompileError", "Type": "A", "Name": "是否有编译错误"}
1084
1128
  ]
1085
1129
  },
1086
- { "ID": "ExportACCode", "Type": "F", "Name": "导出AC代码每一道题目一个文件" },
1087
- { "ID": "LoginFailed", "Type": "F", "Name": "修复登录后跳转失败*" },
1088
- { "ID": "NewDownload", "Type": "A", "Name": "下载页面增加下载内容" },
1089
- { "ID": "CompareSource", "Type": "A", "Name": "比较代码" },
1090
- { "ID": "BBSPopup", "Type": "A", "Name": "讨论提醒" },
1091
- { "ID": "MessagePopup", "Type": "A", "Name": "短消息提醒" },
1092
- { "ID": "DebugMode", "Type": "A", "Name": "调试模式(仅供开发者使用)" }
1130
+ {"ID": "ExportACCode", "Type": "F", "Name": "导出AC代码每一道题目一个文件"},
1131
+ {"ID": "LoginFailed", "Type": "F", "Name": "修复登录后跳转失败*"},
1132
+ {"ID": "NewDownload", "Type": "A", "Name": "下载页面增加下载内容"},
1133
+ {"ID": "CompareSource", "Type": "A", "Name": "比较代码"},
1134
+ {"ID": "BBSPopup", "Type": "A", "Name": "讨论提醒"},
1135
+ {"ID": "MessagePopup", "Type": "A", "Name": "短消息提醒"},
1136
+ {"ID": "DebugMode", "Type": "A", "Name": "调试模式(仅供开发者使用)"}
1093
1137
  ]));
1094
1138
  let UtilitiesCardFooter = document.createElement("div");
1095
1139
  UtilitiesCardFooter.className = "card-footer text-muted";
@@ -1116,8 +1160,7 @@ else {
1116
1160
  FeedbackCardBody.appendChild(FeedbackCardLink);
1117
1161
  FeedbackCard.appendChild(FeedbackCardBody);
1118
1162
  Container.appendChild(FeedbackCard);
1119
- }
1120
- else {
1163
+ } else {
1121
1164
  let Temp = document.querySelector("body > div > div.mt-3 > div > div.col-md-8").children;
1122
1165
  let NewsData = [];
1123
1166
  for (let i = 0; i < Temp.length; i += 2) {
@@ -1127,7 +1170,7 @@ else {
1127
1170
  Time = Temp[i].children[1].innerText;
1128
1171
  }
1129
1172
  let Body = Temp[i + 1].innerHTML;
1130
- NewsData.push({ "Title": Title, "Time": new Date(Time), "Body": Body });
1173
+ NewsData.push({"Title": Title, "Time": new Date(Time), "Body": Body});
1131
1174
  }
1132
1175
  document.querySelector("body > div > div.mt-3 > div > div.col-md-8").innerHTML = "";
1133
1176
  for (let i = 0; i < NewsData.length; i++) {
@@ -1203,8 +1246,7 @@ else {
1203
1246
  setTimeout(() => {
1204
1247
  location.href = "https://www.xmoj.tech/problemset.php";
1205
1248
  }, 1000);
1206
- }
1207
- else {
1249
+ } else {
1208
1250
  let PID = localStorage.getItem("UserScript-Contest-" + SearchParams.get("cid") +
1209
1251
  "-Problem-" + SearchParams.get("pid") + "-PID");
1210
1252
 
@@ -1318,8 +1360,7 @@ else {
1318
1360
  DiscussButton.addEventListener("click", () => {
1319
1361
  if (SearchParams.get("cid") != null) {
1320
1362
  open("https://www.xmoj.tech/discuss3/discuss.php?pid=" + PID, "_blank");
1321
- }
1322
- else {
1363
+ } else {
1323
1364
  open("https://www.xmoj.tech/discuss3/discuss.php?pid=" + SearchParams.get("id"), "_blank");
1324
1365
  }
1325
1366
  });
@@ -1528,8 +1569,7 @@ else {
1528
1569
  if (SearchParams.get("cid") === null) {
1529
1570
  localStorage.setItem("UserScript-Solution-" + SID + "-Problem",
1530
1571
  Temp[i].childNodes[1].innerText);
1531
- }
1532
- else {
1572
+ } else {
1533
1573
  localStorage.setItem("UserScript-Solution-" + SID + "-Contest",
1534
1574
  SearchParams.get("cid"));
1535
1575
  localStorage.setItem("UserScript-Solution-" + SID + "-PID-Contest",
@@ -1600,8 +1640,7 @@ else {
1600
1640
  RefreshResult(SolutionID)
1601
1641
  }, 500);
1602
1642
  TempHTML += "<img style=\"margin-left: 5px\" height=\"18\" width=\"18\" src=\"image/loader.gif\">";
1603
- }
1604
- else if (ResponseData[0] == 4 && UtilityEnabled("UploadStd")) {
1643
+ } else if (ResponseData[0] == 4 && UtilityEnabled("UploadStd")) {
1605
1644
  if (SearchParams.get("cid") == null)
1606
1645
  CurrentRow.cells[1].innerText;
1607
1646
  let Std = StdList.find((Element) => {
@@ -1609,15 +1648,13 @@ else {
1609
1648
  });
1610
1649
  if (Std != undefined) {
1611
1650
  TempHTML += "✅";
1612
- }
1613
- else {
1651
+ } else {
1614
1652
  RequestAPI("UploadStd", {
1615
1653
  "ProblemID": Number(PID),
1616
1654
  }, (Result) => {
1617
1655
  if (Result.Success) {
1618
1656
  CurrentRow.cells[2].innerHTML += "🆗";
1619
- }
1620
- else {
1657
+ } else {
1621
1658
  CurrentRow.cells[2].innerHTML += "⚠️";
1622
1659
  }
1623
1660
  });
@@ -1630,7 +1667,8 @@ else {
1630
1667
  }
1631
1668
  } else if (location.pathname == "/contest.php") {
1632
1669
  if (UtilityEnabled("AutoCountdown")) {
1633
- clock = () => { }
1670
+ clock = () => {
1671
+ }
1634
1672
  }
1635
1673
  if (location.href.indexOf("?cid=") == -1) {
1636
1674
  if (UtilityEnabled("ResetType")) {
@@ -1707,8 +1745,7 @@ else {
1707
1745
  if (UtilityEnabled("RemoveAlerts") && document.querySelector("body > div > div.mt-3 > center").innerHTML.indexOf("尚未开始比赛") != -1) {
1708
1746
  document.querySelector("body > div > div.mt-3 > center > a").setAttribute("href",
1709
1747
  "start_contest.php?cid=" + SearchParams.get("cid"));
1710
- }
1711
- else if (UtilityEnabled("AutoRefresh")) {
1748
+ } else if (UtilityEnabled("AutoRefresh")) {
1712
1749
  addEventListener("focus", async () => {
1713
1750
  await fetch(location.href)
1714
1751
  .then((Response) => {
@@ -1723,8 +1760,7 @@ else {
1723
1760
  if (Status.indexOf("Y") != -1) {
1724
1761
  document.querySelector("#problemset > tbody").children[i].children[0].children[0].className = "status status_y";
1725
1762
  document.querySelector("#problemset > tbody").children[i].children[0].children[0].innerText = "✓";
1726
- }
1727
- else if (Status.indexOf("N") != -1) {
1763
+ } else if (Status.indexOf("N") != -1) {
1728
1764
  document.querySelector("#problemset > tbody").children[i].children[0].children[0].className = "status status_n";
1729
1765
  document.querySelector("#problemset > tbody").children[i].children[0].children[0].innerText = "✗";
1730
1766
  }
@@ -1913,8 +1949,7 @@ else {
1913
1949
  if (SearchParams.get("ByUserScript") == null) {
1914
1950
  if (document.querySelector("body > div > div.mt-3 > center > h3").innerText == "比赛排名") {
1915
1951
  document.querySelector("#rank").innerText = "比赛暂时还没有排名";
1916
- }
1917
- else {
1952
+ } else {
1918
1953
  document.querySelector("body > div > div.mt-3 > center > h3").innerText =
1919
1954
  document.querySelector("body > div > div.mt-3 > center > h3").innerText.substring(
1920
1955
  document.querySelector("body > div > div.mt-3 > center > h3").innerText.indexOf(" -- ") + 4)
@@ -1955,23 +1990,19 @@ else {
1955
1990
  let ErrorCount = "";
1956
1991
  if (Solved) {
1957
1992
  ErrorCount = (Blue == 170 ? 5 : (Blue - 51) / 32);
1958
- }
1959
- else {
1993
+ } else {
1960
1994
  ErrorCount = (Blue == 22 ? 15 : (170 - Blue) / 10);
1961
1995
  }
1962
1996
  if (NoData) {
1963
1997
  BackgroundColor = "";
1964
- }
1965
- else if (FirstBlood) {
1998
+ } else if (FirstBlood) {
1966
1999
  BackgroundColor = "rgb(127, 127, 255)";
1967
- }
1968
- else if (Solved) {
2000
+ } else if (Solved) {
1969
2001
  BackgroundColor = "rgb(0, 255, 0, " + Math.max(1 / 10 * (10 - ErrorCount), 0.2) + ")";
1970
2002
  if (ErrorCount != 0) {
1971
2003
  InnerText += " (" + (ErrorCount == 5 ? "4+" : ErrorCount) + ")";
1972
2004
  }
1973
- }
1974
- else {
2005
+ } else {
1975
2006
  BackgroundColor = "rgba(255, 0, 0, " + Math.min(ErrorCount / 10 + 0.2, 1) + ")";
1976
2007
  if (ErrorCount != 0) {
1977
2008
  InnerText += " (" + (ErrorCount == 15 ? "14+" : ErrorCount) + ")";
@@ -1990,8 +2021,7 @@ else {
1990
2021
  addEventListener("focus", RefreshOIRank);
1991
2022
  }
1992
2023
  }
1993
- }
1994
- else if (UtilityEnabled("ACMRank")) {
2024
+ } else if (UtilityEnabled("ACMRank")) {
1995
2025
  if (document.querySelector("body > div > div.mt-3 > center > h3").innerText != "比赛排名") {
1996
2026
  document.querySelector("body > div > div.mt-3 > center > h3").innerText =
1997
2027
  document.querySelector("body > div > div.mt-3 > center > h3").innerText.substring(
@@ -2011,13 +2041,13 @@ else {
2011
2041
  .then(async (Response) => {
2012
2042
  RankData = [];
2013
2043
 
2014
- let Table = document.querySelector("#rank"); Table.innerHTML = "";
2044
+ let Table = document.querySelector("#rank");
2045
+ Table.innerHTML = "";
2015
2046
  let StartPosition = Response.indexOf("var solutions=") + 14;
2016
2047
  let EndPosition = Response.indexOf("}];", StartPosition) + 2;
2017
2048
  if (EndPosition == 1) {
2018
2049
  Table.innerHTML = "暂时还没有人提交呢";
2019
- }
2020
- else {
2050
+ } else {
2021
2051
  let SubmitRecord = JSON.parse(Response.substring(StartPosition, EndPosition));
2022
2052
 
2023
2053
  for (let i = 0; i < SubmitRecord.length; i++) {
@@ -2082,75 +2112,216 @@ else {
2082
2112
  return 0;
2083
2113
  });
2084
2114
 
2085
- let Header = document.createElement("thead"); Table.appendChild(Header);
2086
- let RowHeader = document.createElement("tr"); Header.appendChild(RowHeader);
2087
- let MetalHeader = document.createElement("th"); RowHeader.appendChild(MetalHeader); MetalHeader.innerText = "排名"; MetalHeader.style.width = "5%";
2088
- let UsernameHeader = document.createElement("th"); RowHeader.appendChild(UsernameHeader); UsernameHeader.innerText = "用户"; UsernameHeader.style.width = "10%";
2089
- let NicknameHeader = document.createElement("th"); RowHeader.appendChild(NicknameHeader); NicknameHeader.innerText = "昵称"; NicknameHeader.style.width = "10%";
2090
- let NameHeader = document.createElement("th"); RowHeader.appendChild(NameHeader); NameHeader.innerText = "姓名"; NameHeader.style.width = "5%";
2091
- let SolvedHeader = document.createElement("th"); RowHeader.appendChild(SolvedHeader); SolvedHeader.innerText = "AC数"; SolvedHeader.style.width = "5%";
2092
- let PenaltyHeader = document.createElement("th"); RowHeader.appendChild(PenaltyHeader); PenaltyHeader.innerText = "罚时"; PenaltyHeader.style.width = "10%";
2115
+ let Header = document.createElement("thead");
2116
+ Table.appendChild(Header);
2117
+ let RowHeader = document.createElement("tr");
2118
+ Header.appendChild(RowHeader);
2119
+ let MetalHeader = document.createElement("th");
2120
+ RowHeader.appendChild(MetalHeader);
2121
+ MetalHeader.innerText = "排名";
2122
+ MetalHeader.style.width = "5%";
2123
+ let UsernameHeader = document.createElement("th");
2124
+ RowHeader.appendChild(UsernameHeader);
2125
+ UsernameHeader.innerText = "用户";
2126
+ UsernameHeader.style.width = "10%";
2127
+ let NicknameHeader = document.createElement("th");
2128
+ RowHeader.appendChild(NicknameHeader);
2129
+ NicknameHeader.innerText = "昵称";
2130
+ NicknameHeader.style.width = "10%";
2131
+ let NameHeader = document.createElement("th");
2132
+ RowHeader.appendChild(NameHeader);
2133
+ NameHeader.innerText = "姓名";
2134
+ NameHeader.style.width = "5%";
2135
+ let SolvedHeader = document.createElement("th");
2136
+ RowHeader.appendChild(SolvedHeader);
2137
+ SolvedHeader.innerText = "AC数";
2138
+ SolvedHeader.style.width = "5%";
2139
+ let PenaltyHeader = document.createElement("th");
2140
+ RowHeader.appendChild(PenaltyHeader);
2141
+ PenaltyHeader.innerText = "罚时";
2142
+ PenaltyHeader.style.width = "10%";
2093
2143
 
2094
2144
  for (let i = 0; i < ProblemCount; i++) {
2095
- let ProblemHeader = document.createElement("th"); RowHeader.appendChild(ProblemHeader);
2096
- let ProblemLink = document.createElement("a"); ProblemHeader.appendChild(ProblemLink);
2097
- ProblemLink.href = "problem.php?cid=" + SearchParams.get("cid") + "&pid=" + i; ProblemLink.innerText = String.fromCharCode(65 + i);
2098
- ProblemHeader.classList.add("header"); ProblemHeader.style.width = (50 / ProblemCount) + "%";
2145
+ let ProblemHeader = document.createElement("th");
2146
+ RowHeader.appendChild(ProblemHeader);
2147
+ let ProblemLink = document.createElement("a");
2148
+ ProblemHeader.appendChild(ProblemLink);
2149
+ ProblemLink.href = "problem.php?cid=" + SearchParams.get("cid") + "&pid=" + i;
2150
+ ProblemLink.innerText = String.fromCharCode(65 + i);
2151
+ ProblemHeader.classList.add("header");
2152
+ ProblemHeader.style.width = (50 / ProblemCount) + "%";
2099
2153
  }
2100
2154
 
2101
- let Body = document.createElement("tbody"); Table.appendChild(Body);
2155
+ let Body = document.createElement("tbody");
2156
+ Table.appendChild(Body);
2102
2157
  Body.className = "table-group-divider";
2103
2158
  for (let i = 0; i < RankData.length; i++) {
2104
2159
  let RowData = RankData[i];
2105
- let Row = document.createElement("tr"); Body.appendChild(Row);
2106
- let MetalCell = document.createElement("td"); Row.appendChild(MetalCell);
2107
- let UsernameCell = document.createElement("td"); Row.appendChild(UsernameCell);
2108
- let NicknameCell = document.createElement("td"); Row.appendChild(NicknameCell);
2109
- let NameCell = document.createElement("td"); Row.appendChild(NameCell);
2110
- let SolvedCell = document.createElement("td"); Row.appendChild(SolvedCell);
2111
- let PenaltyCell = document.createElement("td"); Row.appendChild(PenaltyCell);
2160
+ let Row = document.createElement("tr");
2161
+ Body.appendChild(Row);
2162
+ let MetalCell = document.createElement("td");
2163
+ Row.appendChild(MetalCell);
2164
+ let UsernameCell = document.createElement("td");
2165
+ Row.appendChild(UsernameCell);
2166
+ let NicknameCell = document.createElement("td");
2167
+ Row.appendChild(NicknameCell);
2168
+ let NameCell = document.createElement("td");
2169
+ Row.appendChild(NameCell);
2170
+ let SolvedCell = document.createElement("td");
2171
+ Row.appendChild(SolvedCell);
2172
+ let PenaltyCell = document.createElement("td");
2173
+ Row.appendChild(PenaltyCell);
2112
2174
 
2113
- let Medal = document.createElement("span"); MetalCell.appendChild(Medal);
2175
+ let Medal = document.createElement("span");
2176
+ MetalCell.appendChild(Medal);
2114
2177
  Medal.innerText = i + 1;
2115
2178
  Medal.classList.add("badge");
2116
2179
  if (i <= RankData.length * 0.05) {
2117
2180
  Medal.classList.add("text-bg-danger");
2118
- }
2119
- else if (i <= RankData.length * 0.15) {
2181
+ } else if (i <= RankData.length * 0.15) {
2120
2182
  Medal.classList.add("text-bg-warning");
2121
- }
2122
- else if (i <= RankData.length * 0.4) {
2183
+ } else if (i <= RankData.length * 0.4) {
2123
2184
  Medal.classList.add("text-bg-primary");
2124
- }
2125
- else {
2185
+ } else {
2126
2186
  Medal.classList.add("text-bg-secondary");
2127
2187
  }
2128
2188
 
2129
- let UsernameSpan = document.createElement("span"); UsernameCell.appendChild(UsernameSpan);
2189
+ let UsernameSpan = document.createElement("span");
2190
+ UsernameCell.appendChild(UsernameSpan);
2130
2191
  GetUsernameHTML(UsernameSpan, RowData.Username);
2131
2192
  if (RowData.Username == CurrentUsername) {
2132
2193
  Row.classList.add("table-primary");
2133
2194
  }
2134
2195
  if (RowData.QuickSubmitCount >= 2) {
2135
- let QuickSubmitBadge = document.createElement("span"); UsernameCell.appendChild(QuickSubmitBadge);
2136
- QuickSubmitBadge.innerText = "作弊者";
2196
+ let QuickSubmitBadge = document.createElement("span");
2197
+ UsernameCell.appendChild(QuickSubmitBadge);
2198
+ QuickSubmitBadge.innerText = "疑似提交当年代码";
2137
2199
  QuickSubmitBadge.className = "badge text-bg-warning ms-2";
2138
2200
  }
2139
2201
 
2140
2202
  NicknameCell.innerText = (RowData.Nickname.length < 16 ? RowData.Nickname : RowData.Nickname.substring(0, 15) + "...");
2141
2203
 
2142
2204
  let Names = {
2143
- "huangkai": "黄开", "chenlangning": "陈朗宁", "chensiru": "陈斯如", "chentianle": "陈天乐", "chenxuanhe": "陈宣合", "chenzecong": "陈泽聪", "chenzerui": "陈泽睿", "danwenxiao": "单文骁", "dongminghui": "董明辉", "gaochenming": "高晨茗", "guoqingtong": "郭庆桐", "guoruiqun": "郭睿群", "guyuchen": "顾毓辰",
2144
- "hanshujian": "韩书简", "heshuhan": "贺书瀚", "hexinyi": "何昕弈", "huangmingxuan": "黄铭宣", "huangruina": "黄睿纳", "huangwei": "黄唯", "huyiyang": "胡以杨", "jiangxingyu": "姜星宇", "jingtaiyu": "荆泰宇", "jinweizhe": "金炜喆", "leijiahan": "雷家涵",
2145
- "lianzhongzhe": "连中哲", "liaoyanxu": "廖彦旭", "lingzixiang": "凌梓翔", "linziyi": "林子懿", "liujianhao": "刘健豪", "liujiankun": "刘健坤", "liuxianyong": "刘先勇", "liuxixian": "刘希贤", "liyihan": "李亦涵", "luojinyang": "罗金阳", "lutianfeng": "陆天枫",
2146
- "meitianyi": "梅天一", "panyinliang": "潘胤良", "pengyixuan": "彭议萱", "putong": "蒲通", "qianqingyuan": "钱清源", "qidekai": "戚得凯", "shanwenxiao": "单文骁", "shenxichen": "沈熙晨", "shihongxi": "施泓熙", "shimufan": "施慕梵", "shiyichen": "施奕辰",
2147
- "shiyunhao": "施云浩", "shuxinmo": "舒馨墨", "suiruochen": "隋若宸", "sunyihan": "孙艺涵", "sunyimiao": "孙义淼", "tangchao": "唐潮", "tangyuhan": "唐钰涵", "tanhaoxuan": "谭皓轩", "taoxianyu": "陶羡榆", "wangkangming": "王康明", "wangminghao": "王明浩",
2148
- "wangmingshuo": "王茗铄", "wangpengyu": "王芃雨", "wangsiyuan3": "王思源", "wangtianqi": "王天琦", "wangzetong": "王泽通", "wanxinlian": "万馨联", "wensiyi": "闻思奕", "wujinhong": "吴锦鸿", "wurunze": "吴润泽", "wuyukai": "巫昱恺", "xiangjicheng": "项际诚",
2149
- "xiaoguanxun": "肖贯勋", "xiaojiasheng": "肖嘉盛", "xiaruicheng": "夏瑞成", "xiaweimin": "夏蔚民", "xiaxuran": "夏诩然", "xiebingxiu": "谢秉修", "xiebingxiu": "谢秉修", "xieliren": "谢立仁", "xinyihan": "辛轶涵", "xuconghan": "徐从瀚", "xukan": "徐衎",
2150
- "xuweiyi": "徐维易", "yanghaochen": "杨皓宸", "yezijiong": "叶梓炅", "youzhouhang": "尤周杭", "yuanruiqing": "袁瑞擎", "yutingjun": "于庭郡", "zhangchenming": "张宸铭", "zhangqiuze": "张秋泽", "zhangshuxuan": "张澍萱", "zhangwenda": "张闻达", "zhangyifu": "张亦夫",
2151
- "zhangyouheng": "张佑恒", "zhaochenshen": "赵晨神", "zhaochenwei": "赵晨伟", "zhengyinan": "郑逸楠", "zhonghongyi": "钟弘毅", "zhoujunyu": "周峻瑜", "zhouziyi": "周子逸", "zhouziyou": "周子游", "zhuchenrui2": "朱晨瑞", "zhuruichen": "朱睿宸", "zhuxule": "朱徐乐",
2152
- "zhuyikun": "朱奕坤", "leiwenda": "雷文达", "wangyuancheng": "王源成", "zhuyiyang": "朱奕阳", "hanjialin": "韩佳霖", "zhaozichen": "赵紫辰", "zhuaiwei": "朱艾薇", "linlitong": "林立桐", "xuyan": "徐衍", "fenghaochen": "冯皓宸", "lutianlang": "陆天朗", "tangyuhan": "唐钰涵",
2153
- "jiangbowen": "姜博文", "shangguanbocheng": "上官伯呈", "wangchengqi": "王呈齐", "yanpeitong": "颜培桐", "gongcheng": "龚橙", "weijiefu": "韦杰夫", "": ""
2205
+ "huangkai": "黄开",
2206
+ "chenlangning": "陈朗宁",
2207
+ "chensiru": "陈斯如",
2208
+ "chentianle": "陈天乐",
2209
+ "chenxuanhe": "陈宣合",
2210
+ "chenzecong": "陈泽聪",
2211
+ "chenzerui": "陈泽睿",
2212
+ "danwenxiao": "单文骁",
2213
+ "dongminghui": "董明辉",
2214
+ "gaochenming": "高晨茗",
2215
+ "guoqingtong": "郭庆桐",
2216
+ "guoruiqun": "郭睿群",
2217
+ "guyuchen": "顾毓辰",
2218
+ "hanshujian": "韩书简",
2219
+ "heshuhan": "贺书瀚",
2220
+ "hexinyi": "何昕弈",
2221
+ "huangmingxuan": "黄铭宣",
2222
+ "huangruina": "黄睿纳",
2223
+ "huangwei": "黄唯",
2224
+ "huyiyang": "胡以杨",
2225
+ "jiangxingyu": "姜星宇",
2226
+ "jingtaiyu": "荆泰宇",
2227
+ "jinweizhe": "金炜喆",
2228
+ "leijiahan": "雷家涵",
2229
+ "lianzhongzhe": "连中哲",
2230
+ "liaoyanxu": "廖彦旭",
2231
+ "lingzixiang": "凌梓翔",
2232
+ "linziyi": "林子懿",
2233
+ "liujianhao": "刘健豪",
2234
+ "liujiankun": "刘健坤",
2235
+ "liuxianyong": "刘先勇",
2236
+ "liuxixian": "刘希贤",
2237
+ "liyihan": "李亦涵",
2238
+ "luojinyang": "罗金阳",
2239
+ "lutianfeng": "陆天枫",
2240
+ "meitianyi": "梅天一",
2241
+ "panyinliang": "潘胤良",
2242
+ "pengyixuan": "彭议萱",
2243
+ "putong": "蒲通",
2244
+ "qianqingyuan": "钱清源",
2245
+ "qidekai": "戚得凯",
2246
+ "shanwenxiao": "单文骁",
2247
+ "shenxichen": "沈熙晨",
2248
+ "shihongxi": "施泓熙",
2249
+ "shimufan": "施慕梵",
2250
+ "shiyichen": "施奕辰",
2251
+ "shiyunhao": "施云浩",
2252
+ "shuxinmo": "舒馨墨",
2253
+ "suiruochen": "隋若宸",
2254
+ "sunyihan": "孙艺涵",
2255
+ "sunyimiao": "孙义淼",
2256
+ "tangchao": "唐潮",
2257
+ "tangyuhan": "唐钰涵",
2258
+ "tanhaoxuan": "谭皓轩",
2259
+ "taoxianyu": "陶羡榆",
2260
+ "wangkangming": "王康明",
2261
+ "wangminghao": "王明浩",
2262
+ "wangmingshuo": "王茗铄",
2263
+ "wangpengyu": "王芃雨",
2264
+ "wangsiyuan3": "王思源",
2265
+ "wangtianqi": "王天琦",
2266
+ "wangzetong": "王泽通",
2267
+ "wanxinlian": "万馨联",
2268
+ "wensiyi": "闻思奕",
2269
+ "wujinhong": "吴锦鸿",
2270
+ "wurunze": "吴润泽",
2271
+ "wuyukai": "巫昱恺",
2272
+ "xiangjicheng": "项际诚",
2273
+ "xiaoguanxun": "肖贯勋",
2274
+ "xiaojiasheng": "肖嘉盛",
2275
+ "xiaruicheng": "夏瑞成",
2276
+ "xiaweimin": "夏蔚民",
2277
+ "xiaxuran": "夏诩然",
2278
+ "xiebingxiu": "谢秉修",
2279
+ "xiebingxiu": "谢秉修",
2280
+ "xieliren": "谢立仁",
2281
+ "xinyihan": "辛轶涵",
2282
+ "xuconghan": "徐从瀚",
2283
+ "xukan": "徐衎",
2284
+ "xuweiyi": "徐维易",
2285
+ "yanghaochen": "杨皓宸",
2286
+ "yezijiong": "叶梓炅",
2287
+ "youzhouhang": "尤周杭",
2288
+ "yuanruiqing": "袁瑞擎",
2289
+ "yutingjun": "于庭郡",
2290
+ "zhangchenming": "张宸铭",
2291
+ "zhangqiuze": "张秋泽",
2292
+ "zhangshuxuan": "张澍萱",
2293
+ "zhangwenda": "张闻达",
2294
+ "zhangyifu": "张亦夫",
2295
+ "zhangyouheng": "张佑恒",
2296
+ "zhaochenshen": "赵晨神",
2297
+ "zhaochenwei": "赵晨伟",
2298
+ "zhengyinan": "郑逸楠",
2299
+ "zhonghongyi": "钟弘毅",
2300
+ "zhoujunyu": "周峻瑜",
2301
+ "zhouziyi": "周子逸",
2302
+ "zhouziyou": "周子游",
2303
+ "zhuchenrui2": "朱晨瑞",
2304
+ "zhuruichen": "朱睿宸",
2305
+ "zhuxule": "朱徐乐",
2306
+ "zhuyikun": "朱奕坤",
2307
+ "leiwenda": "雷文达",
2308
+ "wangyuancheng": "王源成",
2309
+ "zhuyiyang": "朱奕阳",
2310
+ "hanjialin": "韩佳霖",
2311
+ "zhaozichen": "赵紫辰",
2312
+ "zhuaiwei": "朱艾薇",
2313
+ "linlitong": "林立桐",
2314
+ "xuyan": "徐衍",
2315
+ "fenghaochen": "冯皓宸",
2316
+ "lutianlang": "陆天朗",
2317
+ "tangyuhan": "唐钰涵",
2318
+ "jiangbowen": "姜博文",
2319
+ "shangguanbocheng": "上官伯呈",
2320
+ "wangchengqi": "王呈齐",
2321
+ "yanpeitong": "颜培桐",
2322
+ "gongcheng": "龚橙",
2323
+ "weijiefu": "韦杰夫",
2324
+ "": ""
2154
2325
  };
2155
2326
  NameCell.innerText = (Names[RowData.Username] == undefined ? "" : Names[RowData.Username]);
2156
2327
 
@@ -2159,7 +2330,8 @@ else {
2159
2330
  PenaltyCell.innerText = SecondsToString(RowData.Penalty);
2160
2331
 
2161
2332
  for (let j = 0; j < ProblemCount; j++) {
2162
- let Problem = document.createElement("td"); Row.appendChild(Problem);
2333
+ let Problem = document.createElement("td");
2334
+ Row.appendChild(Problem);
2163
2335
  let ProblemData = RowData.Problem.find((CurrentRow) => {
2164
2336
  if (CurrentRow.Index == j) {
2165
2337
  return true;
@@ -2167,13 +2339,11 @@ else {
2167
2339
  });
2168
2340
  if (ProblemData == undefined) {
2169
2341
  Problem.style.backgroundColor = "rgba(0, 0, 0, 0)";
2170
- }
2171
- else if (ProblemData.SolveTime != 0) {
2342
+ } else if (ProblemData.SolveTime != 0) {
2172
2343
  Problem.innerText = SecondsToString(ProblemData.SolveTime) + "(" + ProblemData.Attempts.length + ")";
2173
2344
  let Color = Math.max(1 / 10 * (10 - ProblemData.Attempts.length), 0.2);
2174
2345
  Problem.style.backgroundColor = "rgba(0, 255, 0, " + Color + ")";
2175
- }
2176
- else {
2346
+ } else {
2177
2347
  Problem.innerText = "(" + ProblemData.Attempts.length + ")";
2178
2348
  let Color = Math.min(ProblemData.Attempts.length / 10 + 0.2, 1);
2179
2349
  Problem.style.backgroundColor = "rgba(255, 0, 0, " + Color + ")";
@@ -2220,8 +2390,7 @@ else {
2220
2390
  }
2221
2391
  if (document.querySelector("body > div > div.mt-3 > center > h3").innerText == "比赛排名") {
2222
2392
  document.querySelector("#rank").innerText = "比赛暂时还没有排名";
2223
- }
2224
- else {
2393
+ } else {
2225
2394
  if (UtilityEnabled("ResetType")) {
2226
2395
  document.querySelector("body > div > div.mt-3 > center > h3").innerText =
2227
2396
  document.querySelector("body > div > div.mt-3 > center > h3").innerText.substring(
@@ -2265,23 +2434,19 @@ else {
2265
2434
  let ErrorCount = "";
2266
2435
  if (Solved) {
2267
2436
  ErrorCount = (Blue == 170 ? "4+" : (Blue - 51) / 32);
2268
- }
2269
- else {
2437
+ } else {
2270
2438
  ErrorCount = (Blue == 22 ? "14+" : (170 - Blue) / 10);
2271
2439
  }
2272
2440
  if (NoData) {
2273
2441
  BackgroundColor = "";
2274
- }
2275
- else if (FirstBlood) {
2442
+ } else if (FirstBlood) {
2276
2443
  BackgroundColor = "rgba(127, 127, 255, 0.5)";
2277
- }
2278
- else if (Solved) {
2444
+ } else if (Solved) {
2279
2445
  BackgroundColor = "rgba(0, 255, 0, 0.5)";
2280
2446
  if (ErrorCount != 0) {
2281
2447
  InnerText += " (" + ErrorCount + ")";
2282
2448
  }
2283
- }
2284
- else {
2449
+ } else {
2285
2450
  BackgroundColor = "rgba(255, 0, 0, 0.5)";
2286
2451
  if (ErrorCount != 0) {
2287
2452
  InnerText += " (" + ErrorCount + ")";
@@ -2371,8 +2536,10 @@ else {
2371
2536
  }).then((Response) => {
2372
2537
  if (Response.redirected) {
2373
2538
  location.href = Response.url;
2374
- }
2375
- else {
2539
+ } else {
2540
+ if (UtilityEnabled("DebugMode")) {
2541
+ console.log("Submission failed! Response:", Response.text());
2542
+ }
2376
2543
  ErrorElement.style.display = "block";
2377
2544
  ErrorMessage.style.color = "red";
2378
2545
  ErrorMessage.innerText = "提交失败!请关闭脚本后重试!";
@@ -2392,8 +2559,7 @@ else {
2392
2559
  let IOFilename = "";
2393
2560
  if (SearchParams.get("cid") != null && SearchParams.get("pid") != null) {
2394
2561
  PID = localStorage.getItem("UserScript-Contest-" + SearchParams.get("cid") + "-Problem-" + SearchParams.get("pid") + "-PID")
2395
- }
2396
- else {
2562
+ } else {
2397
2563
  PID = SearchParams.get("id");
2398
2564
  }
2399
2565
  IOFilename = localStorage.getItem("UserScript-Problem-" + PID + "-IOFilename");
@@ -2406,8 +2572,7 @@ else {
2406
2572
  document.querySelector("#Submit").disabled = false;
2407
2573
  document.querySelector("#Submit").value = "提交";
2408
2574
  return false;
2409
- }
2410
- else if (RegExp("//.*freopen").test(Source)) {
2575
+ } else if (RegExp("//.*freopen").test(Source)) {
2411
2576
  PassCheck.style.display = "";
2412
2577
  ErrorElement.style.display = "block";
2413
2578
  ErrorMessage.style.color = "red";
@@ -2455,19 +2620,17 @@ else {
2455
2620
  document.querySelector("#Submit").disabled = false;
2456
2621
  document.querySelector("#Submit").value = "提交";
2457
2622
  return false;
2458
- }
2459
- else {
2623
+ } else {
2460
2624
  PassCheck.click();
2461
2625
  }
2462
- }
2463
- else {
2626
+ } else {
2464
2627
  PassCheck.click();
2465
2628
  }
2466
2629
  });
2467
2630
  } else if (location.pathname == "/modifypage.php") {
2468
2631
  if (SearchParams.get("ByUserScript") != null) {
2469
2632
  document.querySelector("body > div > div.mt-3").innerHTML = "";
2470
- await fetch(ServerURL + "/Update.json", { cache: "no-cache" })
2633
+ await fetch(ServerURL + "/Update.json", {cache: "no-cache"})
2471
2634
  .then((Response) => {
2472
2635
  return Response.json();
2473
2636
  })
@@ -2475,46 +2638,53 @@ else {
2475
2638
  for (let i = Object.keys(Response.UpdateHistory).length - 1; i >= 0; i--) {
2476
2639
  let Version = Object.keys(Response.UpdateHistory)[i];
2477
2640
  let Data = Response.UpdateHistory[Version];
2478
- let UpdateDataCard = document.createElement("div"); document.querySelector("body > div > div.mt-3").appendChild(UpdateDataCard);
2641
+ let UpdateDataCard = document.createElement("div");
2642
+ document.querySelector("body > div > div.mt-3").appendChild(UpdateDataCard);
2479
2643
  UpdateDataCard.className = "card mb-3";
2480
2644
  if (Data.Prerelease)
2481
2645
  UpdateDataCard.classList.add("text-secondary");
2482
- let UpdateDataCardBody = document.createElement("div"); UpdateDataCard.appendChild(UpdateDataCardBody);
2646
+ let UpdateDataCardBody = document.createElement("div");
2647
+ UpdateDataCard.appendChild(UpdateDataCardBody);
2483
2648
  UpdateDataCardBody.className = "card-body";
2484
- let UpdateDataCardTitle = document.createElement("h5"); UpdateDataCardBody.appendChild(UpdateDataCardTitle);
2649
+ let UpdateDataCardTitle = document.createElement("h5");
2650
+ UpdateDataCardBody.appendChild(UpdateDataCardTitle);
2485
2651
  UpdateDataCardTitle.className = "card-title";
2486
2652
  UpdateDataCardTitle.innerText = Version;
2487
2653
  if (Data.Prerelease) {
2488
2654
  UpdateDataCardTitle.innerHTML += "(预览版)";
2489
2655
  }
2490
- let UpdateDataCardSubtitle = document.createElement("h6"); UpdateDataCardBody.appendChild(UpdateDataCardSubtitle);
2656
+ let UpdateDataCardSubtitle = document.createElement("h6");
2657
+ UpdateDataCardBody.appendChild(UpdateDataCardSubtitle);
2491
2658
  UpdateDataCardSubtitle.className = "card-subtitle mb-2 text-muted";
2492
2659
  UpdateDataCardSubtitle.innerHTML = GetRelativeTime(Data.UpdateDate);
2493
- let UpdateDataCardText = document.createElement("p"); UpdateDataCardBody.appendChild(UpdateDataCardText);
2660
+ let UpdateDataCardText = document.createElement("p");
2661
+ UpdateDataCardBody.appendChild(UpdateDataCardText);
2494
2662
  UpdateDataCardText.className = "card-text";
2495
2663
  //release notes
2496
2664
  if (Data.Notes != undefined) {
2497
2665
  UpdateDataCardText.innerHTML = Data.Notes;
2498
2666
  }
2499
- let UpdateDataCardList = document.createElement("ul"); UpdateDataCardText.appendChild(UpdateDataCardList);
2667
+ let UpdateDataCardList = document.createElement("ul");
2668
+ UpdateDataCardText.appendChild(UpdateDataCardList);
2500
2669
  UpdateDataCardList.className = "list-group list-group-flush";
2501
2670
  for (let j = 0; j < Data.UpdateContents.length; j++) {
2502
- let UpdateDataCardListItem = document.createElement("li"); UpdateDataCardList.appendChild(UpdateDataCardListItem);
2671
+ let UpdateDataCardListItem = document.createElement("li");
2672
+ UpdateDataCardList.appendChild(UpdateDataCardListItem);
2503
2673
  UpdateDataCardListItem.className = "list-group-item";
2504
2674
  UpdateDataCardListItem.innerHTML =
2505
2675
  "(<a href=\"https://github.com/XMOJ-Script-dev/XMOJ-Script/pull/" + Data.UpdateContents[j].PR + "\" target=\"_blank\">" +
2506
2676
  "#" + Data.UpdateContents[j].PR + "</a>) " +
2507
2677
  Data.UpdateContents[j].Description;
2508
2678
  }
2509
- let UpdateDataCardLink = document.createElement("a"); UpdateDataCardBody.appendChild(UpdateDataCardLink);
2679
+ let UpdateDataCardLink = document.createElement("a");
2680
+ UpdateDataCardBody.appendChild(UpdateDataCardLink);
2510
2681
  UpdateDataCardLink.className = "card-link";
2511
2682
  UpdateDataCardLink.href = "https://github.com/XMOJ-Script-dev/XMOJ-Script/releases/tag/" + Version;
2512
2683
  UpdateDataCardLink.target = "_blank";
2513
2684
  UpdateDataCardLink.innerText = "查看该版本";
2514
2685
  }
2515
2686
  });
2516
- }
2517
- else {
2687
+ } else {
2518
2688
  let Nickname = document.getElementsByName("nick")[0].value;
2519
2689
  let School = document.getElementsByName("school")[0].value;
2520
2690
  let EmailAddress = document.getElementsByName("email")[0].value;
@@ -2632,8 +2802,7 @@ else {
2632
2802
  }, (Response) => {
2633
2803
  if (Response.Success) {
2634
2804
  Resolve();
2635
- }
2636
- else {
2805
+ } else {
2637
2806
  ModifyInfo.disabled = false;
2638
2807
  ModifyInfo.querySelector("span").style.display = "none";
2639
2808
  ErrorElement.style.display = "block";
@@ -2747,13 +2916,9 @@ else {
2747
2916
  if (Temp[i].children[0] != undefined) {
2748
2917
  if (Temp[i].children[0].innerText == "Statistics") {
2749
2918
  Temp[i].children[0].innerText = "统计";
2750
- }
2751
- else if (Temp[i].children[0].innerText == "Email:") {
2919
+ } else if (Temp[i].children[0].innerText == "Email:") {
2752
2920
  Temp[i].children[0].innerText = "电子邮箱";
2753
2921
  }
2754
- else {
2755
- Temp[i].children[1].innerText = Temp[i].children[1].innerText;
2756
- }
2757
2922
  Temp[i].children[1].removeAttribute("align");
2758
2923
  }
2759
2924
  }
@@ -2771,18 +2936,22 @@ else {
2771
2936
  [UserID, UserNick] = document.querySelector("#statics > caption").childNodes[0].data.trim().split("--");
2772
2937
  document.querySelector("#statics > caption").remove();
2773
2938
 
2774
- let Row = document.createElement("div"); Row.className = "row";
2775
- let LeftDiv = document.createElement("div"); LeftDiv.className = "col-md-5"; Row.appendChild(LeftDiv);
2939
+ let Row = document.createElement("div");
2940
+ Row.className = "row";
2941
+ let LeftDiv = document.createElement("div");
2942
+ LeftDiv.className = "col-md-5";
2943
+ Row.appendChild(LeftDiv);
2776
2944
 
2777
- let LeftTopDiv = document.createElement("div"); LeftTopDiv.className = "row mb-2"; LeftDiv.appendChild(LeftTopDiv);
2945
+ let LeftTopDiv = document.createElement("div");
2946
+ LeftTopDiv.className = "row mb-2";
2947
+ LeftDiv.appendChild(LeftTopDiv);
2778
2948
  let AvatarContainer = document.createElement("div");
2779
2949
  AvatarContainer.classList.add("col-auto");
2780
2950
  let AvatarElement = document.createElement("img");
2781
2951
  let UserEmailHash = (await GetUserInfo(UserID)).EmailHash;
2782
2952
  if (UserEmailHash == undefined) {
2783
2953
  AvatarElement.src = `https://cravatar.cn/avatar/00000000000000000000000000000000?d=mp&f=y`;
2784
- }
2785
- else {
2954
+ } else {
2786
2955
  AvatarElement.src = `https://cravatar.cn/avatar/${UserEmailHash}?d=retro`;
2787
2956
  }
2788
2957
  AvatarElement.classList.add("rounded", "me-2");
@@ -2816,8 +2985,11 @@ else {
2816
2985
  LeftTopDiv.appendChild(UserInfoElement);
2817
2986
  LeftDiv.appendChild(LeftTopDiv);
2818
2987
 
2819
- let LeftTable = document.querySelector("body > div > div > center > table"); LeftDiv.appendChild(LeftTable);
2820
- let RightDiv = document.createElement("div"); RightDiv.className = "col-md-7"; Row.appendChild(RightDiv);
2988
+ let LeftTable = document.querySelector("body > div > div > center > table");
2989
+ LeftDiv.appendChild(LeftTable);
2990
+ let RightDiv = document.createElement("div");
2991
+ RightDiv.className = "col-md-7";
2992
+ Row.appendChild(RightDiv);
2821
2993
  RightDiv.innerHTML = "<h5>已解决题目</h5>";
2822
2994
  for (let i = 0; i < ACProblems.length; i++) {
2823
2995
  RightDiv.innerHTML += "<a href=\"https://www.xmoj.tech/problem.php?id=" + ACProblems[i] + "\" target=\"_blank\">" + ACProblems[i] + "</a> ";
@@ -2832,7 +3004,7 @@ else {
2832
3004
  </div>
2833
3005
  <p class="mt-2 text-muted">
2834
3006
  您必须要上传标程以后才能使用“查看标程”功能。点击“上传标程”按钮以后,系统会自动上传标程,请您耐心等待。<br>
2835
- 首次上传标程可能会比较慢,请耐心等待。后续上传标程将会快很多。请不要直接抄袭或递交标程,否则会给予"作弊者"badge的惩罚!<br>
3007
+ 首次上传标程可能会比较慢,请耐心等待。后续上传标程将会快很多。<br>
2836
3008
  系统每过30天会自动提醒您上传标程,您必须要上传标程,否则将会被禁止使用“查看标程”功能。<br>
2837
3009
  </p>`;
2838
3010
  UploadStd.addEventListener("click", async () => {
@@ -2885,8 +3057,7 @@ else {
2885
3057
  UploadProgress.style.width = "100%";
2886
3058
  UploadStd.disabled = false;
2887
3059
  localStorage.setItem("UserScript-LastUploadedStdTime", new Date().getTime());
2888
- }
2889
- else {
3060
+ } else {
2890
3061
  ErrorElement.style.display = "block";
2891
3062
  ErrorElement.innerText = Result.Message;
2892
3063
  UploadStd.disabled = false;
@@ -2951,8 +3122,7 @@ else {
2951
3122
  CompareButton.addEventListener("click", () => {
2952
3123
  location.href = "https://www.xmoj.tech/comparesource.php?left=" + Number(LeftCode.value) + "&right=" + Number(RightCode.value);
2953
3124
  });
2954
- }
2955
- else {
3125
+ } else {
2956
3126
  document.querySelector("body > div > div.mt-3").innerHTML = `
2957
3127
  <div class="form-check">
2958
3128
  <input class="form-check-input" type="checkbox" checked id="IgnoreWhitespace">
@@ -3066,13 +3236,11 @@ else {
3066
3236
  Response = Response.substring(0, Response.indexOf("');"));
3067
3237
  if (Response == "UserName or Password Wrong!") {
3068
3238
  ErrorText.innerText = "用户名或密码错误!";
3069
- }
3070
- else {
3239
+ } else {
3071
3240
  ErrorText.innerText = Response;
3072
3241
  }
3073
3242
  }
3074
- }
3075
- else {
3243
+ } else {
3076
3244
  document.innerHTML = Response;
3077
3245
  }
3078
3246
  });
@@ -3148,8 +3316,7 @@ else {
3148
3316
  } else if (location.pathname == "/reinfo.php") {
3149
3317
  if (document.querySelector("#results > div") == undefined) {
3150
3318
  document.querySelector("#results").parentElement.innerHTML = "没有测试点信息";
3151
- }
3152
- else {
3319
+ } else {
3153
3320
  for (let i = 0; i < document.querySelector("#results > div").children.length; i++) {
3154
3321
  let CurrentElement = document.querySelector("#results > div").children[i].children[0].children[0].children[0];
3155
3322
  let Temp = CurrentElement.innerText.substring(0, CurrentElement.innerText.length - 2).split("/");
@@ -3296,7 +3463,8 @@ int main()
3296
3463
  SoftwareList.remove();
3297
3464
  SoftwareList = document.createElement("ul");
3298
3465
  SoftwareList.className = "software_list";
3299
- let Container = document.createElement("div"); document.querySelector("body > div").appendChild(Container);
3466
+ let Container = document.createElement("div");
3467
+ document.querySelector("body > div").appendChild(Container);
3300
3468
  Container.className = "mt-3";
3301
3469
  Container.appendChild(SoftwareList);
3302
3470
  if (UtilityEnabled("NewDownload")) {
@@ -3375,9 +3543,6 @@ int main()
3375
3543
  let Temp = document.querySelector("#statics").rows;
3376
3544
  for (let i = 0; i < Temp.length; i++) {
3377
3545
  Temp[i].removeAttribute("class");
3378
- if (Temp[i].children.length == 2) {
3379
- Temp[i].children[1].innerText = Temp[i].children[1].innerText;
3380
- }
3381
3546
  }
3382
3547
 
3383
3548
  document.querySelector("#problemstatus > thead > tr").innerHTML =
@@ -3404,15 +3569,15 @@ int main()
3404
3569
  }
3405
3570
 
3406
3571
 
3407
- let CurrentPage = parseInt(SearchParams.get("page") || 1);
3572
+ let CurrentPage = parseInt(SearchParams.get("page") || 0);
3408
3573
  let PID = Number(SearchParams.get("id"));
3409
3574
  let Pagination = `<nav class="center"><ul class="pagination justify-content-center">`;
3410
- if (CurrentPage != 1) {
3411
- Pagination += `<li class="page-item"><a href="https://www.xmoj.tech/problemstatus.php?id=${PID + `&page=1" class="page-link">&laquo;</a></li><li class="page-item"><a href="https://www.xmoj.tech/problemstatus.php?id=` + PID + `&page=` + (CurrentPage - 1) + `" class="page-link">` + (CurrentPage - 1)}</a></li>`;
3575
+ if (CurrentPage !== 0) {
3576
+ Pagination += `<li class="page-item"><a href="https://www.xmoj.tech/problemstatus.php?id=${PID + `&page=0" class="page-link">&laquo;</a></li><li class="page-item"><a href="https://www.xmoj.tech/problemstatus.php?id=` + PID + `&page=` + (CurrentPage - 1) + `" class="page-link">` + (CurrentPage)}</a></li>`;
3412
3577
  }
3413
- Pagination += `<li class="active page-item"><a href="https://www.xmoj.tech/problemstatus.php?id=${PID + `&page=` + CurrentPage + `" class="page-link">` + CurrentPage}</a></li>`;
3578
+ Pagination += `<li class="active page-item"><a href="https://www.xmoj.tech/problemstatus.php?id=${PID + `&page=` + CurrentPage + `" class="page-link">` + (CurrentPage + 1)}</a></li>`;
3414
3579
  if (document.querySelector("#problemstatus > tbody").children != null && document.querySelector("#problemstatus > tbody").children.length == 20) {
3415
- Pagination += `<li class="page-item"><a href="https://www.xmoj.tech/problemstatus.php?id=${PID + `&page=` + (CurrentPage + 1) + `" class="page-link">` + (CurrentPage + 1) + `</a></li><li class="page-item"><a href="https://www.xmoj.tech/problemstatus.php?id=` + PID + `&page=` + (CurrentPage + 1)}" class="page-link">&raquo;</a></li>`;
3580
+ Pagination += `<li class="page-item"><a href="https://www.xmoj.tech/problemstatus.php?id=${PID + `&page=` + (CurrentPage + 1) + `" class="page-link">` + (CurrentPage + 2) + `</a></li><li class="page-item"><a href="https://www.xmoj.tech/problemstatus.php?id=` + PID + `&page=` + (CurrentPage + 1)}" class="page-link">&raquo;</a></li>`;
3416
3581
  }
3417
3582
  Pagination += `</ul></nav>`;
3418
3583
  document.querySelector("body > div > div.mt-3 > center").innerHTML += Pagination;
@@ -3464,7 +3629,7 @@ int main()
3464
3629
  Time = Temp[i].children[1].innerText;
3465
3630
  }
3466
3631
  let Body = Temp[i + 1].innerHTML;
3467
- NewsData.push({ "Title": Title, "Time": new Date(Time), "Body": Body });
3632
+ NewsData.push({"Title": Title, "Time": new Date(Time), "Body": Body});
3468
3633
  }
3469
3634
  document.querySelector("body > div > div.mt-3 > div > div.col-md-8").innerHTML = "";
3470
3635
  for (let i = 0; i < NewsData.length; i++) {
@@ -3502,8 +3667,7 @@ int main()
3502
3667
  }).then((Response) => {
3503
3668
  Code = Response.substring(0, Response.indexOf("/**************************************************************")).trim();
3504
3669
  });
3505
- }
3506
- else {
3670
+ } else {
3507
3671
  if (localStorage.getItem("UserScript-LastUploadedStdTime") === undefined ||
3508
3672
  new Date().getTime() - localStorage.getItem("UserScript-LastUploadedStdTime") > 1000 * 60 * 60 * 24 * 30) {
3509
3673
  location.href = "https://www.xmoj.tech/userinfo.php?ByUserScript=1";
@@ -3514,8 +3678,7 @@ int main()
3514
3678
  }, (Response) => {
3515
3679
  if (Response.Success) {
3516
3680
  Code = Response.Data.StdCode;
3517
- }
3518
- else {
3681
+ } else {
3519
3682
  Code = Response.Message;
3520
3683
  }
3521
3684
  Resolve();
@@ -3597,9 +3760,11 @@ int main()
3597
3760
  if (!Silent) {
3598
3761
  ReceiveTable.children[1].innerHTML = "";
3599
3762
  for (let i = 0; i < 10; i++) {
3600
- let Row = document.createElement("tr"); ReceiveTable.children[1].appendChild(Row);
3763
+ let Row = document.createElement("tr");
3764
+ ReceiveTable.children[1].appendChild(Row);
3601
3765
  for (let j = 0; j < 3; j++) {
3602
- let Cell = document.createElement("td"); Row.appendChild(Cell);
3766
+ let Cell = document.createElement("td");
3767
+ Row.appendChild(Cell);
3603
3768
  Cell.innerHTML = `<span class="placeholder col-${Math.ceil(Math.random() * 12)}"></span>`;
3604
3769
  }
3605
3770
  }
@@ -3610,22 +3775,27 @@ int main()
3610
3775
  let Data = ResponseData.Data.MailList;
3611
3776
  ReceiveTable.children[1].innerHTML = "";
3612
3777
  for (let i = 0; i < Data.length; i++) {
3613
- let Row = document.createElement("tr"); ReceiveTable.children[1].appendChild(Row);
3614
- let UsernameCell = document.createElement("td"); Row.appendChild(UsernameCell);
3615
- let UsernameSpan = document.createElement("span"); UsernameCell.appendChild(UsernameSpan);
3778
+ let Row = document.createElement("tr");
3779
+ ReceiveTable.children[1].appendChild(Row);
3780
+ let UsernameCell = document.createElement("td");
3781
+ Row.appendChild(UsernameCell);
3782
+ let UsernameSpan = document.createElement("span");
3783
+ UsernameCell.appendChild(UsernameSpan);
3616
3784
  GetUsernameHTML(UsernameSpan, Data[i].OtherUser, false, "https://www.xmoj.tech/mail.php?to_user=");
3617
3785
  if (Data[i].UnreadCount != 0) {
3618
- let UnreadCountSpan = document.createElement("span"); UsernameCell.appendChild(UnreadCountSpan);
3786
+ let UnreadCountSpan = document.createElement("span");
3787
+ UsernameCell.appendChild(UnreadCountSpan);
3619
3788
  UnreadCountSpan.className = "ms-1 badge text-bg-danger";
3620
3789
  UnreadCountSpan.innerText = Data[i].UnreadCount;
3621
3790
  }
3622
- let LastsMessageCell = document.createElement("td"); Row.appendChild(LastsMessageCell);
3791
+ let LastsMessageCell = document.createElement("td");
3792
+ Row.appendChild(LastsMessageCell);
3623
3793
  LastsMessageCell.innerText = Data[i].LastsMessage;
3624
- let SendTimeCell = document.createElement("td"); Row.appendChild(SendTimeCell);
3794
+ let SendTimeCell = document.createElement("td");
3795
+ Row.appendChild(SendTimeCell);
3625
3796
  SendTimeCell.innerHTML = GetRelativeTime(Data[i].SendTime);
3626
3797
  }
3627
- }
3628
- else {
3798
+ } else {
3629
3799
  ErrorElement.innerText = ResponseData.Message;
3630
3800
  ErrorElement.style.display = "";
3631
3801
  }
@@ -3651,8 +3821,7 @@ int main()
3651
3821
  if (ResponseData.Success) {
3652
3822
  ErrorElement.style.display = "none";
3653
3823
  RefreshMessageList();
3654
- }
3655
- else {
3824
+ } else {
3656
3825
  ErrorElement.innerText = ResponseData.Message;
3657
3826
  ErrorElement.style.display = "";
3658
3827
  }
@@ -3660,8 +3829,7 @@ int main()
3660
3829
  });
3661
3830
  RefreshMessageList(false);
3662
3831
  addEventListener("focus", RefreshMessageList);
3663
- }
3664
- else {
3832
+ } else {
3665
3833
  document.querySelector("body > div > div.mt-3").innerHTML = `<div class="row g-2 mb-3">
3666
3834
  <div class="col-md form-floating">
3667
3835
  <div class="form-control" id="ToUser"></div>
@@ -3693,9 +3861,11 @@ int main()
3693
3861
  if (!Silent) {
3694
3862
  MessageTable.children[1].innerHTML = "";
3695
3863
  for (let i = 0; i < 10; i++) {
3696
- let Row = document.createElement("tr"); MessageTable.children[1].appendChild(Row);
3864
+ let Row = document.createElement("tr");
3865
+ MessageTable.children[1].appendChild(Row);
3697
3866
  for (let j = 0; j < 4; j++) {
3698
- let Cell = document.createElement("td"); Row.appendChild(Cell);
3867
+ let Cell = document.createElement("td");
3868
+ Row.appendChild(Cell);
3699
3869
  Cell.innerHTML = `<span class="placeholder col-${Math.ceil(Math.random() * 12)}"></span>`;
3700
3870
  }
3701
3871
  }
@@ -3708,21 +3878,25 @@ int main()
3708
3878
  let Data = ResponseData.Data.Mail;
3709
3879
  MessageTable.children[1].innerHTML = "";
3710
3880
  for (let i = 0; i < Data.length; i++) {
3711
- let Row = document.createElement("tr"); MessageTable.children[1].appendChild(Row);
3881
+ let Row = document.createElement("tr");
3882
+ MessageTable.children[1].appendChild(Row);
3712
3883
  if (!Data[i].IsRead && Data[i].FromUser != CurrentUsername) {
3713
3884
  Row.className = "table-info";
3714
3885
  }
3715
- let UsernameCell = document.createElement("td"); Row.appendChild(UsernameCell);
3886
+ let UsernameCell = document.createElement("td");
3887
+ Row.appendChild(UsernameCell);
3716
3888
  GetUsernameHTML(UsernameCell, Data[i].FromUser);
3717
- let ContentCell = document.createElement("td"); Row.appendChild(ContentCell);
3889
+ let ContentCell = document.createElement("td");
3890
+ Row.appendChild(ContentCell);
3718
3891
  ContentCell.innerHTML = PurifyHTML(Data[i].Content);
3719
- let SendTimeCell = document.createElement("td"); Row.appendChild(SendTimeCell);
3892
+ let SendTimeCell = document.createElement("td");
3893
+ Row.appendChild(SendTimeCell);
3720
3894
  SendTimeCell.innerHTML = GetRelativeTime(Data[i].SendTime);
3721
- let IsReadCell = document.createElement("td"); Row.appendChild(IsReadCell);
3895
+ let IsReadCell = document.createElement("td");
3896
+ Row.appendChild(IsReadCell);
3722
3897
  IsReadCell.innerHTML = (Data[i].IsRead ? "已读" : "未读");
3723
3898
  }
3724
- }
3725
- else {
3899
+ } else {
3726
3900
  ErrorElement.innerText = ResponseData.Message;
3727
3901
  ErrorElement.style.display = "";
3728
3902
  }
@@ -3754,8 +3928,7 @@ int main()
3754
3928
  ErrorElement.style.display = "none";
3755
3929
  Content.value = "";
3756
3930
  RefreshMessage();
3757
- }
3758
- else {
3931
+ } else {
3759
3932
  ErrorElement.innerText = ResponseData.Message;
3760
3933
  ErrorElement.style.display = "";
3761
3934
  }
@@ -3801,11 +3974,9 @@ int main()
3801
3974
  NewPost.addEventListener("click", () => {
3802
3975
  if (!isNaN(ProblemID)) {
3803
3976
  location.href = "https://www.xmoj.tech/discuss3/newpost.php?pid=" + ProblemID;
3804
- }
3805
- else if (SearchParams.get("bid") != null) {
3977
+ } else if (SearchParams.get("bid") != null) {
3806
3978
  location.href = "https://www.xmoj.tech/discuss3/newpost.php?bid=" + SearchParams.get("bid");
3807
- }
3808
- else {
3979
+ } else {
3809
3980
  location.href = "https://www.xmoj.tech/discuss3/newpost.php";
3810
3981
  }
3811
3982
  });
@@ -3813,9 +3984,11 @@ int main()
3813
3984
  if (!Silent) {
3814
3985
  PostList.children[1].innerHTML = "";
3815
3986
  for (let i = 0; i < 10; i++) {
3816
- let Row = document.createElement("tr"); PostList.children[1].appendChild(Row);
3987
+ let Row = document.createElement("tr");
3988
+ PostList.children[1].appendChild(Row);
3817
3989
  for (let j = 0; j < 7; j++) {
3818
- let Cell = document.createElement("td"); Row.appendChild(Cell);
3990
+ let Cell = document.createElement("td");
3991
+ Row.appendChild(Cell);
3819
3992
  Cell.innerHTML = `<span class="placeholder col-${Math.ceil(Math.random() * 12)}"></span>`;
3820
3993
  }
3821
3994
  }
@@ -3848,34 +4021,43 @@ int main()
3848
4021
  PostList.children[1].innerHTML = `<tr><td colspan="7">暂无数据</td></tr>`;
3849
4022
  }
3850
4023
  for (let i = 0; i < Posts.length; i++) {
3851
- let Row = document.createElement("tr"); PostList.children[1].appendChild(Row);
3852
- let IDCell = document.createElement("td"); Row.appendChild(IDCell);
4024
+ let Row = document.createElement("tr");
4025
+ PostList.children[1].appendChild(Row);
4026
+ let IDCell = document.createElement("td");
4027
+ Row.appendChild(IDCell);
3853
4028
  IDCell.innerText = Posts[i].PostID + " " + Posts[i].BoardName;
3854
- let TitleCell = document.createElement("td"); Row.appendChild(TitleCell);
3855
- let TitleLink = document.createElement("a"); TitleCell.appendChild(TitleLink);
4029
+ let TitleCell = document.createElement("td");
4030
+ Row.appendChild(TitleCell);
4031
+ let TitleLink = document.createElement("a");
4032
+ TitleCell.appendChild(TitleLink);
3856
4033
  TitleLink.href = "https://www.xmoj.tech/discuss3/thread.php?tid=" + Posts[i].PostID;
3857
4034
  if (Posts[i].Lock.Locked) {
3858
4035
  TitleLink.classList.add("link-secondary");
3859
4036
  TitleLink.innerHTML = "🔒 ";
3860
4037
  }
3861
4038
  TitleLink.innerHTML += Posts[i].Title;
3862
- let AuthorCell = document.createElement("td"); Row.appendChild(AuthorCell);
4039
+ let AuthorCell = document.createElement("td");
4040
+ Row.appendChild(AuthorCell);
3863
4041
  GetUsernameHTML(AuthorCell, Posts[i].UserID);
3864
- let ProblemIDCell = document.createElement("td"); Row.appendChild(ProblemIDCell);
4042
+ let ProblemIDCell = document.createElement("td");
4043
+ Row.appendChild(ProblemIDCell);
3865
4044
  if (Posts[i].ProblemID != 0) {
3866
- let ProblemIDLink = document.createElement("a"); ProblemIDCell.appendChild(ProblemIDLink);
4045
+ let ProblemIDLink = document.createElement("a");
4046
+ ProblemIDCell.appendChild(ProblemIDLink);
3867
4047
  ProblemIDLink.href = "https://www.xmoj.tech/problem.php?id=" + Posts[i].ProblemID;
3868
4048
  ProblemIDLink.innerText = Posts[i].ProblemID;
3869
4049
  }
3870
- let PostTimeCell = document.createElement("td"); Row.appendChild(PostTimeCell);
4050
+ let PostTimeCell = document.createElement("td");
4051
+ Row.appendChild(PostTimeCell);
3871
4052
  PostTimeCell.innerHTML = GetRelativeTime(Posts[i].PostTime);
3872
- let ReplyCountCell = document.createElement("td"); Row.appendChild(ReplyCountCell);
4053
+ let ReplyCountCell = document.createElement("td");
4054
+ Row.appendChild(ReplyCountCell);
3873
4055
  ReplyCountCell.innerText = Posts[i].ReplyCount;
3874
- let LastReplyTimeCell = document.createElement("td"); Row.appendChild(LastReplyTimeCell);
4056
+ let LastReplyTimeCell = document.createElement("td");
4057
+ Row.appendChild(LastReplyTimeCell);
3875
4058
  LastReplyTimeCell.innerHTML = GetRelativeTime(Posts[i].LastReplyTime);
3876
4059
  }
3877
- }
3878
- else {
4060
+ } else {
3879
4061
  ErrorElement.innerText = ResponseData.Message;
3880
4062
  ErrorElement.style.display = "block";
3881
4063
  }
@@ -3969,8 +4151,7 @@ int main()
3969
4151
  if (ResponseData.Success) {
3970
4152
  ContentElement.value = Before + `![](https://assets.xmoj-bbs.tech/GetImage?ImageID=${ResponseData.Data.ImageID})` + After;
3971
4153
  ContentElement.dispatchEvent(new Event("input"));
3972
- }
3973
- else {
4154
+ } else {
3974
4155
  ContentElement.value = Before + `![上传失败!]()` + After;
3975
4156
  ContentElement.dispatchEvent(new Event("input"));
3976
4157
  }
@@ -4011,8 +4192,7 @@ int main()
4011
4192
  SubmitElement.children[0].style.display = "none";
4012
4193
  if (ResponseData.Success == true) {
4013
4194
  location.href = "https://www.xmoj.tech/discuss3/thread.php?tid=" + ResponseData.Data.PostID;
4014
- }
4015
- else {
4195
+ } else {
4016
4196
  ErrorElement.innerText = ResponseData.Message;
4017
4197
  ErrorElement.style.display = "block";
4018
4198
  }
@@ -4054,8 +4234,7 @@ int main()
4054
4234
  } else if (location.pathname == "/discuss3/thread.php") {
4055
4235
  if (SearchParams.get("tid") == null) {
4056
4236
  location.href = "https://www.xmoj.tech/discuss3/discuss.php";
4057
- }
4058
- else {
4237
+ } else {
4059
4238
  let ThreadID = SearchParams.get("tid");
4060
4239
  let Page = Number(SearchParams.get("page")) || 1;
4061
4240
  document.querySelector("body > div > div").innerHTML = `<h3 id="PostTitle"></h3>
@@ -4146,8 +4325,7 @@ int main()
4146
4325
  if (ResponseData.Success) {
4147
4326
  ContentElement.value = Before + `![](https://assets.xmoj-bbs.tech/GetImage?ImageID=${ResponseData.Data.ImageID})` + After;
4148
4327
  ContentElement.dispatchEvent(new Event("input"));
4149
- }
4150
- else {
4328
+ } else {
4151
4329
  ContentElement.value = Before + `![上传失败!]()` + After;
4152
4330
  ContentElement.dispatchEvent(new Event("input"));
4153
4331
  }
@@ -4212,27 +4390,36 @@ int main()
4212
4390
  let Replies = ResponseData.Data.Reply;
4213
4391
  PostReplies.innerHTML = "";
4214
4392
  for (let i = 0; i < Replies.length; i++) {
4215
- let CardElement = document.createElement("div"); PostReplies.appendChild(CardElement);
4393
+ let CardElement = document.createElement("div");
4394
+ PostReplies.appendChild(CardElement);
4216
4395
  CardElement.className = "card mb-3";
4217
- let CardBodyElement = document.createElement("div"); CardElement.appendChild(CardBodyElement);
4396
+ let CardBodyElement = document.createElement("div");
4397
+ CardElement.appendChild(CardBodyElement);
4218
4398
  CardBodyElement.className = "card-body row";
4219
- let CardBodyRowElement = document.createElement("div"); CardBodyElement.appendChild(CardBodyRowElement);
4399
+ let CardBodyRowElement = document.createElement("div");
4400
+ CardBodyElement.appendChild(CardBodyRowElement);
4220
4401
  CardBodyRowElement.className = "row mb-3";
4221
- let AuthorElement = document.createElement("span"); CardBodyRowElement.appendChild(AuthorElement);
4402
+ let AuthorElement = document.createElement("span");
4403
+ CardBodyRowElement.appendChild(AuthorElement);
4222
4404
  AuthorElement.className = "col-4 text-muted";
4223
- let AuthorSpanElement = document.createElement("span"); AuthorElement.appendChild(AuthorSpanElement);
4405
+ let AuthorSpanElement = document.createElement("span");
4406
+ AuthorElement.appendChild(AuthorSpanElement);
4224
4407
  AuthorSpanElement.innerText = "作者:";
4225
- let AuthorUsernameElement = document.createElement("span"); AuthorElement.appendChild(AuthorUsernameElement);
4408
+ let AuthorUsernameElement = document.createElement("span");
4409
+ AuthorElement.appendChild(AuthorUsernameElement);
4226
4410
  GetUsernameHTML(AuthorUsernameElement, Replies[i].UserID);
4227
- let SendTimeElement = document.createElement("span"); CardBodyRowElement.appendChild(SendTimeElement);
4411
+ let SendTimeElement = document.createElement("span");
4412
+ CardBodyRowElement.appendChild(SendTimeElement);
4228
4413
  SendTimeElement.className = "col-4 text-muted";
4229
4414
  SendTimeElement.innerHTML = "发布时间:" + GetRelativeTime(Replies[i].ReplyTime);
4230
4415
 
4231
4416
  let OKButton;
4232
4417
  if (!LockButtons) {
4233
- let ButtonsElement = document.createElement("span"); CardBodyRowElement.appendChild(ButtonsElement);
4418
+ let ButtonsElement = document.createElement("span");
4419
+ CardBodyRowElement.appendChild(ButtonsElement);
4234
4420
  ButtonsElement.className = "col-4";
4235
- let ReplyButton = document.createElement("button"); ButtonsElement.appendChild(ReplyButton);
4421
+ let ReplyButton = document.createElement("button");
4422
+ ButtonsElement.appendChild(ReplyButton);
4236
4423
  ReplyButton.type = "button";
4237
4424
  ReplyButton.className = "btn btn-sm btn-info";
4238
4425
  ReplyButton.innerText = "回复";
@@ -4248,7 +4435,8 @@ int main()
4248
4435
  ContentElement.value += Content + `\n\n@${Replies[i].UserID} `;
4249
4436
  ContentElement.focus();
4250
4437
  });
4251
- let DeleteButton = document.createElement("button"); ButtonsElement.appendChild(DeleteButton);
4438
+ let DeleteButton = document.createElement("button");
4439
+ ButtonsElement.appendChild(DeleteButton);
4252
4440
  DeleteButton.type = "button";
4253
4441
  DeleteButton.className = "btn btn-sm btn-danger ms-1";
4254
4442
  DeleteButton.innerText = "删除";
@@ -4261,8 +4449,7 @@ int main()
4261
4449
  }, (ResponseData) => {
4262
4450
  if (ResponseData.Success == true) {
4263
4451
  RefreshReply();
4264
- }
4265
- else {
4452
+ } else {
4266
4453
  DeleteButton.disabled = false;
4267
4454
  DeleteButton.lastChild.style.display = "none";
4268
4455
  ErrorElement.innerText = ResponseData.Message;
@@ -4270,16 +4457,19 @@ int main()
4270
4457
  }
4271
4458
  });
4272
4459
  });
4273
- let DeleteSpin = document.createElement("div"); DeleteButton.appendChild(DeleteSpin);
4460
+ let DeleteSpin = document.createElement("div");
4461
+ DeleteButton.appendChild(DeleteSpin);
4274
4462
  DeleteSpin.className = "spinner-border spinner-border-sm";
4275
4463
  DeleteSpin.role = "status";
4276
4464
  DeleteSpin.style.display = "none";
4277
- OKButton = document.createElement("button"); ButtonsElement.appendChild(OKButton);
4465
+ OKButton = document.createElement("button");
4466
+ ButtonsElement.appendChild(OKButton);
4278
4467
  OKButton.type = "button";
4279
4468
  OKButton.style.display = "none";
4280
4469
  OKButton.className = "btn btn-sm btn-success ms-1";
4281
4470
  OKButton.innerText = "确认";
4282
- let OKSpin = document.createElement("div"); OKButton.appendChild(OKSpin);
4471
+ let OKSpin = document.createElement("div");
4472
+ OKButton.appendChild(OKSpin);
4283
4473
  OKSpin.className = "spinner-border spinner-border-sm";
4284
4474
  OKSpin.role = "status";
4285
4475
  OKSpin.style.display = "none";
@@ -4292,8 +4482,7 @@ int main()
4292
4482
  }, (ResponseData) => {
4293
4483
  if (ResponseData.Success == true) {
4294
4484
  RefreshReply();
4295
- }
4296
- else {
4485
+ } else {
4297
4486
  OKButton.disabled = false;
4298
4487
  OKButton.lastChild.style.display = "none";
4299
4488
  ErrorElement.innerText = ResponseData.Message;
@@ -4301,7 +4490,8 @@ int main()
4301
4490
  }
4302
4491
  });
4303
4492
  });
4304
- let CancelButton = document.createElement("button"); ButtonsElement.appendChild(CancelButton);
4493
+ let CancelButton = document.createElement("button");
4494
+ ButtonsElement.appendChild(CancelButton);
4305
4495
  CancelButton.type = "button";
4306
4496
  CancelButton.style.display = "none";
4307
4497
  CancelButton.className = "btn btn-sm btn-secondary ms-1";
@@ -4313,7 +4503,8 @@ int main()
4313
4503
  OKButton.style.display = "none";
4314
4504
  CancelButton.style.display = "none";
4315
4505
  });
4316
- let EditButton = document.createElement("button"); ButtonsElement.appendChild(EditButton);
4506
+ let EditButton = document.createElement("button");
4507
+ ButtonsElement.appendChild(EditButton);
4317
4508
  EditButton.type = "button";
4318
4509
  EditButton.className = "btn btn-sm btn-warning ms-1";
4319
4510
  EditButton.innerText = "编辑";
@@ -4327,22 +4518,25 @@ int main()
4327
4518
  });
4328
4519
  }
4329
4520
 
4330
- let CardBodyHRElement = document.createElement("hr"); CardBodyElement.appendChild(CardBodyHRElement);
4521
+ let CardBodyHRElement = document.createElement("hr");
4522
+ CardBodyElement.appendChild(CardBodyHRElement);
4331
4523
 
4332
- let ReplyContentElement = document.createElement("div"); CardBodyElement.appendChild(ReplyContentElement);
4524
+ let ReplyContentElement = document.createElement("div");
4525
+ CardBodyElement.appendChild(ReplyContentElement);
4333
4526
  ReplyContentElement.innerHTML = PurifyHTML(marked.parse(Replies[i].Content)).replaceAll(/@([a-zA-Z0-9]+)/g, `<b>@</b><span class="ms-1 Usernames">$1</span>`);
4334
4527
  if (Replies[i].EditTime != null) {
4335
4528
  if (Replies[i].EditPerson == Replies[i].UserID) {
4336
4529
  ReplyContentElement.innerHTML += `<span class="text-muted" style="font-size: 12px">最后编辑于${GetRelativeTime(Replies[i].EditTime)}</span>`;
4337
- }
4338
- else {
4530
+ } else {
4339
4531
  ReplyContentElement.innerHTML += `<span class="text-muted" style="font-size: 12px">最后被<span class="Usernames">${Replies[i].EditPerson}</span>编辑于${GetRelativeTime(Replies[i].EditTime)}</span>`;
4340
4532
  }
4341
4533
  }
4342
- let ContentEditElement = document.createElement("div"); CardBodyElement.appendChild(ContentEditElement);
4534
+ let ContentEditElement = document.createElement("div");
4535
+ CardBodyElement.appendChild(ContentEditElement);
4343
4536
  ContentEditElement.classList.add("input-group");
4344
4537
  ContentEditElement.style.display = "none";
4345
- let ContentEditor = document.createElement("textarea"); ContentEditElement.appendChild(ContentEditor);
4538
+ let ContentEditor = document.createElement("textarea");
4539
+ ContentEditElement.appendChild(ContentEditor);
4346
4540
  ContentEditor.className = "form-control col-6";
4347
4541
  ContentEditor.rows = 3;
4348
4542
  ContentEditor.value = Replies[i].Content;
@@ -4354,7 +4548,8 @@ int main()
4354
4548
  OKButton.click();
4355
4549
  }
4356
4550
  });
4357
- let PreviewTab = document.createElement("div"); ContentEditElement.appendChild(PreviewTab);
4551
+ let PreviewTab = document.createElement("div");
4552
+ ContentEditElement.appendChild(PreviewTab);
4358
4553
  PreviewTab.className = "form-control col-6";
4359
4554
  PreviewTab.innerHTML = PurifyHTML(marked.parse(ContentEditor.value));
4360
4555
  ContentEditor.addEventListener("input", () => {
@@ -4380,8 +4575,7 @@ int main()
4380
4575
  if (ResponseData.Success) {
4381
4576
  ContentEditor.value = Before + `![](https://assets.xmoj-bbs.tech/GetImage?ImageID=${ResponseData.Data.ImageID})` + After;
4382
4577
  ContentEditor.dispatchEvent(new Event("input"));
4383
- }
4384
- else {
4578
+ } else {
4385
4579
  ContentEditor.value = Before + `![上传失败!]()` + After;
4386
4580
  ContentEditor.dispatchEvent(new Event("input"));
4387
4581
  }
@@ -4403,8 +4597,7 @@ int main()
4403
4597
  let ModeName = "text/x-c++src";
4404
4598
  if (CodeElements[i].className == "language-c") {
4405
4599
  ModeName = "text/x-csrc";
4406
- }
4407
- else if (CodeElements[i].className == "language-cpp") {
4600
+ } else if (CodeElements[i].className == "language-cpp") {
4408
4601
  ModeName = "text/x-c++src";
4409
4602
  }
4410
4603
  CodeMirror(CodeElements[i].parentElement, {
@@ -4420,7 +4613,8 @@ int main()
4420
4613
  if (LockButtons) {
4421
4614
  let LockElement = ContentElement.parentElement.parentElement;
4422
4615
  LockElement.innerHTML = "讨论已于 " + await GetRelativeTime(ResponseData.Data.Lock.LockTime) + " 被 ";
4423
- let LockUsernameSpan = document.createElement("span"); LockElement.appendChild(LockUsernameSpan);
4616
+ let LockUsernameSpan = document.createElement("span");
4617
+ LockElement.appendChild(LockUsernameSpan);
4424
4618
  GetUsernameHTML(LockUsernameSpan, ResponseData.Data.Lock.LockPerson);
4425
4619
  LockElement.innerHTML += " 锁定";
4426
4620
  LockElement.classList.add("mb-5");
@@ -4459,8 +4653,7 @@ int main()
4459
4653
  behavior: "instant"
4460
4654
  });
4461
4655
  }
4462
- }
4463
- else {
4656
+ } else {
4464
4657
  PostTitle.innerText = "错误:" + ResponseData.Message;
4465
4658
  }
4466
4659
  });
@@ -4475,8 +4668,7 @@ int main()
4475
4668
  Delete.children[0].style.display = "none";
4476
4669
  if (ResponseData.Success == true) {
4477
4670
  location.href = "https://www.xmoj.tech/discuss3/discuss.php";
4478
- }
4479
- else {
4671
+ } else {
4480
4672
  ErrorElement.innerText = ResponseData.Message;
4481
4673
  ErrorElement.style.display = "block";
4482
4674
  }
@@ -4505,8 +4697,7 @@ int main()
4505
4697
  ContentElement.focus();
4506
4698
  ContentElement.scrollIntoView();
4507
4699
  turnstile.reset();
4508
- }
4509
- else {
4700
+ } else {
4510
4701
  ErrorElement.innerText = ResponseData.Message;
4511
4702
  ErrorElement.style.display = "block";
4512
4703
  }