對於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