Макет JIRA для каждого проекта - PullRequest
3 голосов
/ 23 марта 2011

Можно ли использовать специфичную для проекта таблицу стилей для проектов JIRA?

Например, если я хочу включить проект X в iframe, я бы хотел скрыть логотип и, возможно, панель инструментов JIRA - например, для определенных групп пользователей (это только для целей просмотра, этоне функция безопасности)

Разумеется, я должен был бы реализовать это сам (например, через API веб-сервиса) - есть ли шаблоны для стандартной страницы вопроса?

Заранее спасибо!

Ответы [ 4 ]

9 голосов
/ 31 марта 2011

В 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.

2 голосов
/ 30 марта 2011

Я не верю, что эта функциональность предоставляется напрямую, и вы не указываете, какую версию JIRA вы используете, но в 4.x в \ atlassian-jira \ include \ 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();</p> <p>%> <%= pluggableTopNavigation.getHtml(request) %> <% } %>

Если вы хотите, вы можете создать версию панели инструментов, отображающую jsp, которая вызывает модифицированный bodytop.jspэто не делает ни одного из обычных навигационных элементов.

1 голос
/ 01 апреля 2011

Я хотел бы написать основной плагин для этого.

Взгляните на 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.

0 голосов
/ 29 ноября 2012

В настоящее время я использую Jira 4.2.2 и написал плагин, который реализует PluggableTopNavigation для пользовательской панели навигации.К сожалению, эта функциональность, как подробно описано в награжденном вопросе, теперь устарела.

Мой плагин добавил div в верхнюю часть заголовка Jira, что создало приятное меню для использования на наших страницах разработки.Источник меню был жестко запрограммирован в плагин и расположен в виде статического файла 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, поэтому я счастлив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...