package com.tapadoo.slacknotifier.webui; import com.tapadoo.slacknotifier.SlackConfigProcessor; import com.tapadoo.slacknotifier.SlackProjectSettings; import com.tapadoo.slacknotifier.SlackProjectSettingsFactory; import jetbrains.buildServer.serverSide.ProjectManager; import jetbrains.buildServer.serverSide.SProject; import jetbrains.buildServer.serverSide.settings.ProjectSettingsManager; import jetbrains.buildServer.users.SUser; import jetbrains.buildServer.web.openapi.PagePlaces; import jetbrains.buildServer.web.openapi.PluginDescriptor; import jetbrains.buildServer.web.openapi.project.ProjectTab; import javax.servlet.http.HttpServletRequest; import java.util.Map; /** * Created by jasonconnery on 04/03/2014. */ public class SlackProjectTab extends ProjectTab { private final ProjectSettingsManager projectSettingsManager; private final SlackConfigProcessor slackConfigProcessor; public SlackProjectTab(PagePlaces pagePlaces , ProjectManager projectManager , PluginDescriptor pluginDescriptor , ProjectSettingsManager projectSettingsManager , SlackConfigProcessor slackConfigProcessor) { super("slackNotifierProjectTab","Slack" , pagePlaces , projectManager); setIncludeUrl(pluginDescriptor.getPluginResourcesPath("/admin/slackProjectPage.jsp")); this.slackConfigProcessor = slackConfigProcessor; this.projectSettingsManager = projectSettingsManager ; } @Override protected void fillModel(Map<String, Object> model, HttpServletRequest httpServletRequest, SProject sProject, SUser sUser) { SlackProjectSettings slackProjectSettings = (SlackProjectSettings) projectSettingsManager.getSettings(sProject.getProjectId(), SlackProjectSettingsFactory.SETTINGS_KEY); String channel = slackConfigProcessor.getDefaultChannel() ; boolean enabled = true ; String logoUrl = "" ; if( slackProjectSettings != null && slackProjectSettings.getChannel() != null && slackProjectSettings.getChannel().length() > 0 ) { channel = slackProjectSettings.getChannel() ; } if( slackProjectSettings != null && slackProjectSettings.getLogoUrl() != null && slackProjectSettings.getLogoUrl().length() > 0 ) { logoUrl = slackProjectSettings.getLogoUrl(); } if( slackProjectSettings != null ) { enabled = slackProjectSettings.isEnabled(); } model.put("configDir" , sProject.getConfigDirectory().toString()); model.put("channel" , channel ); model.put("enabled" , enabled ); model.put("logoUrl" , logoUrl ); } }