对于JIRA项目,是否可以使用项目特定的样式表?例如,如果我想将项目X包含在iframe中,我想隐藏徽标并可能隐藏JIRA工具栏 - 对于特定的用户组,例如(仅用于查看目的,不是安全功能)JIRA每个项目的布局
当然,我必须自己实现这个(例如通过webservice api) - 标准问题页面是否有模板?
提前致谢!
对于JIRA项目,是否可以使用项目特定的样式表?例如,如果我想将项目X包含在iframe中,我想隐藏徽标并可能隐藏JIRA工具栏 - 对于特定的用户组,例如(仅用于查看目的,不是安全功能)JIRA每个项目的布局
当然,我必须自己实现这个(例如通过webservice api) - 标准问题页面是否有模板?
提前致谢!
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
免责声明我在Atlassian作为JIRA团队的开发人员工作。
+1 - 非常有趣和有益,谢谢! *目前没有文档*暗示,它将在一天内被正式记录并因此可以被认为是稳定的,或者这个插件点可能会从未来的JIRA版本中消失? – 2011-04-29 13:11:04
我不相信这个功能是直接暴露的,而且你没有说明你使用的是哪个JIRA版本,但是在\ atlassian-jira \ includes \ decorators的4.x中有一个名为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) %> <% } %>
如果你想你可以创建一个版本,呼吁修改bodytop.jsp呈现没有的仪表盘渲染的JSP通常的导航元素。
我会试图写一个基本的插件来做到这一点。
看看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的时间。
我目前正在运行Jira 4.2.2并编写了一个实现PluggableTopNavigation
自定义导航栏的插件。不幸的是,这个功能,如授权问题中详述的,现在已经被折旧了。
我的插件在Jira标头的顶部添加了一个div
,它创建了一个用于我们的开发页面的漂亮菜单。菜单的源代码被硬编码到插件中,并作为我们服务器上的静态文件menu.html
在不同页面上共享。由于我不得不完全重新设计Jira 5.2的插件,我开始寻找重新实现菜单的不同方法。这就是我所定下的。这不是很好,但它使它,所以你不必编写一个插件。
更改公告的旗帜(通过键入“GG”迅速到达那里,然后搜索公告旗)以下:
<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相同,所以我很高兴。
如果你只是想让一个项目只读,黑客的CSS不会是一个好办法做到这一点。 – 2011-03-25 14:42:46
没有许可方案是坚实的,人们只是不需要工具栏。它也被嵌入到另一个门户中,因此为这个特定的项目应用相同的样式表会很好。 – 2011-03-25 15:00:38
你可以尝试使用JavaScript来改变输出或选择一个CSS。 – 2011-03-25 15:03:47