Skip to content

Commit 07c4817

Browse files
committed
♻️ Refactor Lark Notice plugin for improved maintainability and localization
1 parent 9e7855b commit 07c4817

File tree

10 files changed

+87
-82
lines changed

10 files changed

+87
-82
lines changed

src/main/java/io/jenkins/plugins/lark/notice/config/LarkRobotConfig.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import hudson.model.Descriptor;
66
import hudson.model.User;
77
import hudson.util.FormValidation;
8-
import hudson.util.FormValidation.Kind;
98
import hudson.util.Secret;
109
import io.jenkins.plugins.lark.notice.Messages;
1110
import io.jenkins.plugins.lark.notice.enums.BuildStatusEnum;
@@ -210,11 +209,11 @@ public FormValidation doCheckWebhook(@QueryParameter String value) {
210209
* @return Returns the test result. If the test passes, it returns FormValidation.respond(Kind.OK); otherwise, it returns an error message.
211210
*/
212211
@RequirePOST
213-
public FormValidation doTest(@QueryParameter String id, @QueryParameter String name,
212+
public String doTest(@QueryParameter String id, @QueryParameter String name,
214213
@QueryParameter String webhook, @QueryParameter String proxy,
215214
@QueryParameter String securityConfigs) {
216215
if (!Jenkins.get().hasPermission(Jenkins.ADMINISTER)) {
217-
return FormValidation.error("You do not have permission to access this resource");
216+
return "Error: You do not have permission to access this resource.";
218217
}
219218

220219
List<LarkSecurityPolicyConfig> securityPolicyConfigs = JsonUtils.readList(securityConfigs, LarkSecurityPolicyConfig.class)
@@ -227,14 +226,13 @@ public FormValidation doTest(@QueryParameter String id, @QueryParameter String n
227226

228227
RobotType robotType = robotConfig.obtainRobotType();
229228
if (Objects.isNull(robotType)) {
230-
return FormValidation.error(Messages.form_validation_webhook());
229+
return "Error: " + Messages.form_validation_webhook();
231230
}
232231

233232
MessageSender sender = robotType.obtainInstance(RobotConfigModel.of(robotConfig, proxySelector));
234233
SendResult sendResult = sender.sendCard(buildTestMessage(robotType));
235234

236-
return !sendResult.isOk() ? FormValidation.error(sendResult.getMsg()) :
237-
FormValidation.respond(Kind.OK, "<span style='color:#52c41a;font-weight:bold;'>Test Successful</span>");
235+
return sendResult.isOk() ? Messages.form_validation_test_success() : "Error: " + sendResult.getMsg();
238236
}
239237

240238
/**
Lines changed: 28 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,29 @@
1-
# \u63D2\u4EF6\u663E\u793A\u540D\u79F0
1+
# Plugin display name
22
plugin.display.name=Lark Notice
3-
# \u63D2\u4EF6\u7BA1\u7406
4-
plugin.management.description=\u53D1\u9001\u6784\u5EFA\u901A\u77E5\u6D88\u606F
5-
# \u7528\u6237\u5C5E\u6027
6-
user.property.title=Lark\u4FE1\u606F
7-
# \u901A\u77E5\u4E8B\u4EF6
8-
notice.start=\u6784\u5EFA\u542F\u52A8\u65F6
9-
notice.aborted=\u6784\u5EFA\u4E2D\u65AD\u65F6
10-
notice.failure=\u6784\u5EFA\u5931\u8D25\u65F6
11-
notice.success=\u6784\u5EFA\u6210\u529F\u65F6
12-
notice.unstable=\u6784\u5EFA\u4E0D\u7A33\u5B9A\u65F6
13-
notice.not_built=\u672A\u6784\u5EFA\u65F6
14-
# \u6784\u5EFA\u72B6\u6001
15-
build.status.start=\u5F00\u59CB
16-
build.status.aborted=\u53D6\u6D88
17-
build.status.failure=\u5931\u8D25
18-
build.status.success=\u6210\u529F
19-
build.status.unstable=\u4E0D\u7A33\u5B9A
20-
build.status.not_built=\u672A\u6784\u5EFA
21-
build.status.unknown=\u672A\u77E5
22-
# \u5B89\u5168\u7B56\u7565\u7C7B\u578B
23-
security.policy.type.no_ssl=\u7981\u7528\u8BC1\u4E66\u9A8C\u8BC1
24-
security.policy.type.key=\u81EA\u5B9A\u4E49\u5173\u952E\u8BCD
25-
security.policy.type.secret=\u52A0\u7B7E\u5BC6\u94A5
26-
# \u8868\u5355\u9A8C\u8BC1
27-
form.validation.name=\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A
28-
form.validation.webhook=\u65E0\u6548\u7684 Webhook
3+
# Management links
4+
plugin.management.description=Send Build Notice Message
5+
# User property
6+
user.property.title=Lark Info
7+
# Notice occasion
8+
notice.start=Start
9+
notice.aborted=Aborted
10+
notice.failure=Failure
11+
notice.success=Success
12+
notice.unstable=Unstable
13+
notice.not_built=Not built
14+
# Build status type
15+
build.status.start=Start
16+
build.status.aborted=Aborted
17+
build.status.failure=Failure
18+
build.status.success=Success
19+
build.status.unstable=Unstable
20+
build.status.not_built=Not built
21+
build.status.unknown=Unknown
22+
# Security policy type
23+
security.policy.type.no_ssl=Disable certificate verification
24+
security.policy.type.key=Custom keyword
25+
security.policy.type.secret=Signature key
26+
# Robot config form validation
27+
form.validation.name=Name cannot be empty
28+
form.validation.webhook=Invalid Webhook
29+
form.validation.test.success=Test success

src/main/resources/io/jenkins/plugins/lark/notice/Messages_en_unused.properties

Lines changed: 0 additions & 28 deletions
This file was deleted.
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# \u63D2\u4EF6\u663E\u793A\u540D\u79F0
2+
plugin.display.name=Lark Notice
3+
# \u63D2\u4EF6\u7BA1\u7406
4+
plugin.management.description=\u53D1\u9001\u6784\u5EFA\u901A\u77E5\u6D88\u606F
5+
# \u7528\u6237\u5C5E\u6027
6+
user.property.title=Lark\u4FE1\u606F
7+
# \u901A\u77E5\u4E8B\u4EF6
8+
notice.start=\u6784\u5EFA\u542F\u52A8\u65F6
9+
notice.aborted=\u6784\u5EFA\u4E2D\u65AD\u65F6
10+
notice.failure=\u6784\u5EFA\u5931\u8D25\u65F6
11+
notice.success=\u6784\u5EFA\u6210\u529F\u65F6
12+
notice.unstable=\u6784\u5EFA\u4E0D\u7A33\u5B9A\u65F6
13+
notice.not_built=\u672A\u6784\u5EFA\u65F6
14+
# \u6784\u5EFA\u72B6\u6001
15+
build.status.start=\u5F00\u59CB
16+
build.status.aborted=\u53D6\u6D88
17+
build.status.failure=\u5931\u8D25
18+
build.status.success=\u6210\u529F
19+
build.status.unstable=\u4E0D\u7A33\u5B9A
20+
build.status.not_built=\u672A\u6784\u5EFA
21+
build.status.unknown=\u672A\u77E5
22+
# \u5B89\u5168\u7B56\u7565\u7C7B\u578B
23+
security.policy.type.no_ssl=\u7981\u7528\u8BC1\u4E66\u9A8C\u8BC1
24+
security.policy.type.key=\u81EA\u5B9A\u4E49\u5173\u952E\u8BCD
25+
security.policy.type.secret=\u52A0\u7B7E\u5BC6\u94A5
26+
# \u8868\u5355\u9A8C\u8BC1
27+
form.validation.name=\u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A
28+
form.validation.webhook=\u65E0\u6548\u7684 Webhook
29+
form.validation.test.success=\u6D4B\u8BD5\u6210\u529F
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
test=Test
2+
success=Test success
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
test=\u6D4B\u8BD5
2+
success=\u6D4B\u8BD5\u6210\u529F

src/main/resources/io/jenkins/plugins/lark/notice/config/LarkRobotConfig/config.jelly

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@
77
src="${rootURL}/plugin/lark-notice/scripts/robotConfigValidator.js"/>
88
</st:once>
99

10-
<link rel="stylesheet" href="${rootURL}/plugin/lark-notice/css/ui.css" type="text/css"/>
11-
1210
<div class="robot-config-container">
1311
<f:entry title="id" field="id">
1412
<f:textbox name="id"/>
@@ -37,17 +35,19 @@
3735
</f:entry>
3836
</j:scope>
3937

40-
<div class="robot-config-validate-msg"><!-- this is where the error message goes --></div>
38+
<st:adjunct includes="io.jenkins.plugins.lark.notice.config.LarkRobotConfig.validate-robot-config-onclick"/>
39+
<div class="robot-config-validate-msg"
40+
style="white-space: pre-wrap;"><!-- this is where the error message goes --></div>
4141
<div style="text-align: right;">
42-
<input
42+
<button
4343
type="button"
44-
value="测试"
45-
class="robot-config-validate-btn"
44+
class="jenkins-button robot-config-validate-btn"
4645
data-validate-button-descriptor-url="${descriptor.descriptorFullUrl}"
4746
data-validate-button-method="test"
4847
data-validate-button-with="${with}"
49-
onclick="validateRobotConfig(this)"
50-
/>
48+
>
49+
${%test}
50+
</button>
5151
</div>
5252
</div>
5353
</j:jelly>
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
Behaviour.specify('.robot-config-validate-btn', 'validate-robot-config', 0, function (element) {
2+
element.addEventListener('click', function () {
3+
validateRobotConfig(this);
4+
});
5+
});

src/main/webapp/css/ui.css

Lines changed: 0 additions & 5 deletions
This file was deleted.

src/main/webapp/scripts/robotConfigValidator.js

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
async function validateRobotConfig(_this) {
22
var robot = _this.closest('.robot-config-container');
3-
var msg = robot.querySelector('.robot-config-validate-msg');
4-
msg.innerHTML = '';
3+
var validateMsg = robot.querySelector('.robot-config-validate-msg');
4+
validateMsg.innerHTML = '';
5+
validateMsg.className = 'robot-config-validate-msg'
56

67
try {
78
var checkUrl = _this.getAttribute('data-validate-button-descriptor-url') + '/' + _this.getAttribute('data-validate-button-method');
@@ -18,13 +19,13 @@ async function validateRobotConfig(_this) {
1819

1920
var message = await response.text();
2021
if (response.ok) {
21-
msg.innerHTML = message;
22-
layoutUpdateCallback.call();
23-
} else {
24-
var id = 'valerr' + iota++; // 这里的 iota 是一个全局计数器,你需要在其他地方定义并初始化它。
25-
msg.innerHTML = '<a href="" onclick="document.getElementById(\'' + id + '\').style.display=\'block\';return false">ERROR</a><div id="' + id + '" style="display:none"><pre>' + message + '</pre></div>';
22+
validateMsg.innerHTML = message;
2623
}
27-
Behaviour.applySubtree(msg);
24+
25+
var classStyle = message.startsWith('Error:') ? 'danger' : 'success';
26+
validateMsg.classList.add('jenkins-alert', 'jenkins-alert-' + classStyle)
27+
28+
Behaviour.applySubtree($validateMsg);
2829
} catch (error) {
2930
console.error(error);
3031
}

0 commit comments

Comments
 (0)