提交 ec85d56c 编写于 作者: LinuxSuRen's avatar LinuxSuRen

Support to setting community link for a user

上级 1c7e68d6
...@@ -2,6 +2,7 @@ package io.jenkins.plugins.localization_zh_cn; ...@@ -2,6 +2,7 @@ package io.jenkins.plugins.localization_zh_cn;
import hudson.Extension; import hudson.Extension;
import hudson.model.PageDecorator; import hudson.model.PageDecorator;
import hudson.model.User;
import org.kohsuke.stapler.Stapler; import org.kohsuke.stapler.Stapler;
import org.kohsuke.stapler.StaplerRequest; import org.kohsuke.stapler.StaplerRequest;
...@@ -23,4 +24,31 @@ public class CommunityDecorator extends PageDecorator { ...@@ -23,4 +24,31 @@ public class CommunityDecorator extends PageDecorator {
return false; return false;
} }
public boolean showCommunityLink() {
boolean isCurrentLanguage = isCurrentLanguage();
User user = User.current();
if(user == null) {
return isCurrentLanguage;
}
UserCommunityProperty communityProperty = user.getProperty(UserCommunityProperty.class);
if(communityProperty == null) {
return isCurrentLanguage;
}
String conditionName = communityProperty.getShowCondition();
UserCommunityProperty.ShowConditions condition =
UserCommunityProperty.ShowConditions.valueOf(conditionName);
switch (condition) {
case Always:
return true;
case Never:
return false;
case Chinese:
return isCurrentLanguage;
}
return isCurrentLanguage;
}
} }
package io.jenkins.plugins.localization_zh_cn;
import hudson.Extension;
import hudson.model.User;
import hudson.model.UserProperty;
import hudson.model.UserPropertyDescriptor;
import org.kohsuke.stapler.DataBoundConstructor;
import org.kohsuke.stapler.DataBoundSetter;
import javax.annotation.Nonnull;
public class UserCommunityProperty extends UserProperty {
private String showCondition;
@DataBoundConstructor
public UserCommunityProperty(){}
public String getShowCondition() {
return showCondition;
}
@DataBoundSetter
public void setShowCondition(String showCondition) {
this.showCondition = showCondition;
}
@Extension
public static final class DescriptorImpl extends UserPropertyDescriptor {
@Override
public UserProperty newInstance(User user) {
return new UserCommunityProperty();
}
@Nonnull
@Override
public String getDisplayName() {
return "Chinese Community";
}
}
public ShowConditions[] getAllConditions() {
return ShowConditions.values();
}
public String getConditionDisplay(ShowConditions conditions) {
return conditions.getDisplay();
}
enum ShowConditions {
Chinese("Only in Chinese"), Always("Always"), Never("Never");
private String display;
ShowConditions(String display) {
this.display = display;
}
public String getDisplay() {
return display;
}
}
}
<?jelly escape-by-default='true'?> <?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:f="/lib/form" xmlns:st="jelly:stapler"> <j:jelly xmlns:j="jelly:core" xmlns:f="/lib/form" xmlns:st="jelly:stapler">
<j:if test="${it.isCurrentLanguage()}"> <j:if test="${it.showCommunityLink()}">
<span> <span>
<a href="${rootURL}/chinese">Jenkins 中文社区</a> <a href="${rootURL}/chinese">Jenkins 中文社区</a>
</span> </span>
......
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:f="/lib/form">
<f:entry title="${%Community Link}" field="showCondition">
<select name="showCondition">
<j:forEach var="condition" items="${instance.getAllConditions()}">
<j:choose>
<j:when test="${condition.name() == instance.showCondition}">
<option value="${condition.name()}" selected="true">${instance.getConditionDisplay(condition)}</option>
</j:when>
<j:otherwise>
<option value="${condition.name()}">${instance.getConditionDisplay(condition)}</option>
</j:otherwise>
</j:choose>
</j:forEach>
</select>
</f:entry>
</j:jelly>
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册