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;
}
}
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
{
@Override
public ValidateResponse validate(final ValidateData validateData) {
ValidateResponse validateResponse = ValidateResponse.create();
//projectKey
if (validateData.projectName().equals("TEST")) {
validateResponse.addErrorMessage("Invalid Project Name");
}
return validateResponse;
}
@Override
public ConfigureResponse configure(final ConfigureData configureData)
{
return ConfigureResponse.create();
}
}
Regards and thanks in advance!
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.