Hi colleagues.
I have webwork with web-item that inserted in project tab panel. How can i restrict this web-item appereance in project tab panel for target project?
Thanks in advice.
Solution is in using conditions setting of web-item. And impelement Condition class.
public class ConditionCheck implements Condition { private static final Logger log = Logger.getLogger(ConditionCheck.class); private SettingsStorageService settingsStorageService; private String projectId; public ConditionCheck(PluginSettingsFactory pluginSettingsFactory) { this.settingsStorageService = new SettingsStorageService(pluginSettingsFactory); } @Override public void init(Map<String, String> map) throws PluginParseException { } @Override public boolean shouldDisplay(Map context) { final JiraHelper jiraHelper = (JiraHelper)context.get(JiraWebInterfaceManager.CONTEXT_KEY_HELPER); List<Project> projects = Utils.getInquirerProjects(settingsStorageService, "key"); String state = settingsStorageService.getSetting("enebled"); if(state.equals("Disabled")) { return true; } if(state.equals("Enabled(All projects)")) { return false; } try { String projectId = jiraHelper.getProject().getId().toString(); for(Project project: projects) { if(project.getProjectId().equals(projectId)) { return !project.isSelected(); } } } catch (Exception e) { return true; } return true; } }
Hi Александр Верзаков,
Could you elaborate the solution. I am kind of new to Jira development, so, any help would be appreciated.
PFA my code snippet for atlassian-plugin.xml
<project-blueprint key="my-project-template" weight="90"> <label key="my.project.template.name"/> <projectTypeKey>business</projectTypeKey> <!--<projectTypeKey>software</projectTypeKey>--> <description key="my.project.template.description"/> <longDescription key="my.project.template.description.long"/> <infoPage soy-template="JIRA.Templates.ProjectTemplates.Tutorial.renderMyProjectTemplateExplanation"/> <icon location="images/icon.jpg"/> <backgroundIcon location="images/background.jpg"/> <add-project> <hook class="com.example.plugins.tutorial.MyAddProjectHook"/> <descriptor file="/config/my-project-template-config.json"/> </add-project></project-blueprint><web-item name="project-web-item" i18n-name-key="project--web--item.name" key="project--web--item" section="jira.project.sidebar.plugins.navigation" weight="300"> <description key="project--web--item.description">The project-web-item Plugin</description> <label key="project--web--item.label"/> <!--This web item links to a servlet--> <link linkId="project--web--item-link">/plugins/servlet/issuecrud</link> <param name="iconClass" value="aui-icon-large icon-sidebar-release"/></web-item>
I want the web-item above to be displayed only when someone creates a project using my custom project blueprint only.
---------------------------
Also, PFA my code for MyAddProjectHook.java for the custom project template/blueprint.
package com.example.plugins.tutorial;import com.atlassian.jira.project.template.hook.AddProjectHook;import com.atlassian.jira.project.template.hook.ValidateData;import com.atlassian.jira.project.template.hook.ValidateResponse;import com.atlassian.jira.project.template.hook.ConfigureData;import com.atlassian.jira.project.template.hook.ConfigureResponse;public class MyAddProjectHook implements AddProjectHook { @Overridepublic ValidateResponse validate(final ValidateData validateData) { ValidateResponse validateResponse = ValidateResponse.create(); //projectKey if (validateData.projectName().equals("TEST")) { validateResponse.addErrorMessage("Invalid Project Name"); }return validateResponse; } @Overridepublic ConfigureResponse configure(final ConfigureData configureData) {return ConfigureResponse.create(); }}
Regards and thanks in advance!
It looks like you're new here. Sign in or register to get started.