每个项目的JIRA布局

时间:2011-03-23 07:43:58

标签: jira

是否可以为JIRA项目使用特定于项目的样式表?

例如,如果我想在iframe中包含项目X,我想隐藏徽标和可能的JIRA工具栏 - 例如,对于特定的用户组(它仅用于查看目的,它不是安全性功能)

当然,我必须自己实现(例如通过webservice api) - 是否有标准问题页面的模板?

提前致谢!

4 个答案:

答案 0 :(得分:9)

JIRA中有一个(当前未记录的)插件点,用于插入顶部导航组件<top-navigation>

您可以使用此插件点添加您自己的导航栏,也可以使用内联CSS样式表隐藏常规栏。以下示例使用?hideit=true查询参数触发此行为,这是解决“嵌入iframe”问题的最简单方法。您可以通过将其存储在会话或cookie中来使其“粘性”。

创建插入<top-navigation>的插件后,隐藏顶部栏很简单。这是一个速度脚本:

#if ($hideHeaderHack)
    <style>
        \#header {display:none;}
    </style>
    HIDDEN (remove this message eventually)
#else
    NORMAL (remove this message eventually)
#end

要创建此类插件,请使用Atlassian Plugin SDK(使用atlas-create-jira-plugin)。您的atlassian-plugin.xml应如下所示:

<atlassian-plugin key="${project.groupId}.${project.artifactId}" name="${project.name}" plugins-version="2">
    <plugin-info>
        <description>${project.description}</description>
        <version>${project.version}</version>
        <vendor name="${project.organization.name}" url="${project.organization.url}" />
    </plugin-info>

    <top-navigation key="standard-navigation-top"
                    name="Tigerblood"
                    class="com.madbean.topnavhack.TopNav" state='enabled'>
        <resource type="velocity" name="view" location="topnav.vm"/>
        <order>5</order>
    </top-navigation>

</atlassian-plugin>

您的顶级导航实现类(上面称为com.madbean.topnavhack.TopNav)应如下所示:

public class TopNav implements PluggableTopNavigation {
    private TopNavigationModuleDescriptor descriptor;

    public void init(TopNavigationModuleDescriptor descriptor)
    {
        this.descriptor = descriptor;
    }

    public String getHtml(HttpServletRequest request) {
        Map<String,Object> params = new HashMap<String, Object>();

        params.put("hideHeaderHack", "true".equals(request.getParameter("hideit")));

        return descriptor.getTopNavigationHtml(request, params);
    }
}

您的插件将布置如下:

./pom.xml
./src/main/java/com/madbean/topnavhack/TopNav.java
./src/main/resources/atlassian-plugin.xml
./src/main/resources/topnav.vm

免责声明我作为JIRA团队的开发人员为Atlassian工作。

答案 1 :(得分:2)

我不相信这个功能是直接暴露的,你没有说明你正在使用的JIRA版本,但在4.x in \ atlassian-jira \ includes \ decorators中有一个名为bodytop.jsp的文件具有以下片段,用于呈现顶级导航和工具栏元素:

// Render all the top nav plugins for (Iterator iterator = topNavPlugins.iterator(); iterator.hasNext();) { TopNavigationModuleDescriptor topNavModuleDescriptor = (TopNavigationModuleDescriptor) iterator.next(); PluggableTopNavigation pluggableTopNavigation = (PluggableTopNavigation) topNavModuleDescriptor.getModule();

%> <%= pluggableTopNavigation.getHtml(request) %> <% } %>

如果您愿意,可以创建一个版本的仪表板渲染jsp,它调用一个修改后的bodytop.jsp,它不会渲染任何常用的nav元素。

答案 2 :(得分:1)

我很想写一个基本的插件来做这件事。

查看http://confluence.atlassian.com/display/JIRA/Web+Resource+Plugin+Module

如果您还没有编写jira插件,现在可能是时候尝试http://confluence.atlassian.com/display/DEVNET/Developing+your+Plugin+using+the+Atlassian+Plugin+SDK

答案 3 :(得分:0)

我目前正在运行Jira 4.2.2,并为自定义导航栏编写了一个实现PluggableTopNavigation的插件。遗憾的是,此功能已在获奖问题中详细说明,现已折旧。

我的插件在Jira标题的顶部添加了div,创建了一个用于我们的开发页面的漂亮菜单。菜单源已硬编码到插件中,并作为静态menu.html文件放在我们的服务器上,以便在不同页面之间共享。

由于我必须完全重新设计Jira 5.2的插件,我开始寻找不同的方法来重新实现菜单。这就是我所确定的。它并不漂亮,但它使得你不必编写插件。

更改您的公告横幅(通过键入&#39; gg&#39;然后搜索公告横幅)快速到达以下内容:

<script type="text/javascript">
  jQuery(document).ready(function() {
    jQuery.get("http://path.to.server/menu.html", function(data){
        jQuery("#header").prepend('<nav class="global" role="navigation">'+data+'</nav>');
        jQuery("#top-level-id-of-navbar a").css("color", "white")
    });
  });
</script>

menu.html链接替换为您自己的链接。标题的颜色由我的菜单中的链接继承,因此在插入html页面后我不得不将它们更改为白色。

结果看起来与Jira 4.2.2相同,所以我很高兴。

相关问题