-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCustomVerify.user.js
More file actions
126 lines (102 loc) · 3.77 KB
/
CustomVerify.user.js
File metadata and controls
126 lines (102 loc) · 3.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
// ==UserScript==
// @name CustomVerify
// @namespace mcmod
// @version 0.5
// @description Custom verify content in editor before submitting
// @author 寒冽
// @match https://www.mcmod.cn/*
// @icon https://www.mcmod.cn/images/favicon.ico
// @grant none
// ==/UserScript==
(function() {
'use strict';
// Original getDataVerify function reference
const originalGetDataVerify = window.getDataVerify;
// Override the getDataVerify function
window.getDataVerify = function(t) {
const result = originalGetDataVerify(t);
// main function
function Verify(condition, level, message) {
if (typeof condition !== 'boolean') {
console.log('Invalid condition.');
return;
}
if (condition) {
switch (level) {
case "error":
result.error[Object.keys(result.error).length] = message;
break;
case "warning":
result.warning[Object.keys(result.warning).length] = message;
break;
case "info":
result.info[Object.keys(result.info).length] = message;
break;
default:
result.info[Object.keys(result.info).length] = message;
}
}
}
// Example
Verify(isenameChineseInput(), "warning", "次要名称含中文。");
Verify(containsBilibiliSpmId(), "warning", "相关链接含追踪。");
Verify(CurseForgeProjectID(), "error", "CurseForge Project ID格式错误。");
Verify(isCategory15Selected(), "info", "是国创整合包。");
Verify(isTooShort(), "warning", "正文过短。");
return result;
};
function isenameChineseInput() {
// 获取 次要名称 内容
const inputElement = document.querySelector('input[data-multi-id="ename"]');
if (inputElement) {
const input = inputElement.value;
if (!input) {
// 中文字符
const chineseRegex = /[\u4e00-\u9fa5]/;
return chineseRegex.test(input);
}
}
return false;
}
function CurseForgeProjectID() {
const inputElement = document.querySelector('input[data-multi-id="cfprojectid"]');
if (inputElement) {
const input = inputElement.value;
if (!input) {
// 数字(组)或空
const numericRegex = /^(\d+(,\d+)*)?$/;
return !(numericRegex.test(input));
}
}
return false;
}
function containsBilibiliSpmId() {
// 获取 class="link-text-href" 的 input 元素
const input = document.querySelector('input.link-text-href');
// 不存在直接返回 false
if (!input) {
return false;
}
// 获取输入的值
const inputValue = input.value;
// 检查输入的值是否包含 "/?spm_id_from="
return inputValue.includes("/?spm_id_from=");
}
function isCategory15Selected() {
// 标签为国创(id = 15)的整合包
const element = document.querySelector('a[data-multi-name="modpack-data"][data-multi-id="category"][data-category-id="15"]');
// 检查元素是否为true
if (element && element.getAttribute('data-category-selected') === "true") {
return true;
}
return false;
}
// 正文
function isTooShort() {
const content = removeHtmlTag(editor.getContent()).trim();
if (content.length < 10) {
return true;
}
return false;
}
})();