Пользовательские поля Jira — как использовать jquery в speed edit.vm

Я пытаюсь написать относительно простое настраиваемое поле.

Это выдержка из моего edit.vm:

$webResourceManager.requireResource("cz.firma.rozy:zakaznik")
<input id="test" style="width:500px"
       type="text" placeholder="Sem zadejte ID" value=""/>
<button id="buttonID" >Use ID</button>

А вот мой простой zakaznik.js:

AJS.$( "#buttonID" ).click(function() {
    AJS.$("#test").hide();
});

Наконец, atlassian-plugin.xml

<web-resource key="zakaznik-resources" name="zakaznik Web Resources">
    <dependency>com.atlassian.auiplugin:ajs</dependency>
    <dependency>com.atlassian.auiplugin:jquery</dependency>
    <dependency>com.atlassian.auiplugin:jquery-ui-other</dependency>
    <dependency>com.atlassian.auiplugin:aui-select2</dependency>
    <context>atl.general</context>
    <context>atl.admin</context>
    <resource type="download" name="zakaznik.css" location="/css/zakaznik.css"/>
    <resource type="download" name="zakaznik.js" location="/js/zakaznik.js"/>
    <resource type="download" name="images/" location="/images"/>
    <context>zakaznik</context>
  </web-resource>

...
  <customfield-type name="Pridani zakaznika" i18n-name-key="customer-add.name" key="customer-add" class="cz.firma.rozy.jira.customfields.CustomerCustomField">
    <description key="customer-add.description">Plugin, ktery prida zakaznika z abry</description>
    <resource name="view" type="velocity" location="templates/viewCustomer.vm"/>
    <resource name="edit" type="velocity" location="templates/edit.vm"/>
  </customfield-type>

Плагин успешно собран и установлен в JIRA (v6.2.3), и я могу добавить это поле на любой экран. Когда я нажимаю на эту добавленную кнопку, я хотел бы видеть, что ввод скрыт. Когда я нажимаю на свою кнопку, ничего не делается и режим редактирования закрывается.

Что я делаю неправильно?


person ganoes    schedule 09.07.2014    source источник
comment
Пожалуйста, разделите вашу проблему на отдельные вопросы.   -  person Luke Peterson    schedule 09.07.2014
comment
Хорошо, я разделил его   -  person ganoes    schedule 09.07.2014


Ответы (1)


Попробуйте изменить путь в директиве requireResource в шаблоне Velocity:

Например, если ваш файл pom.xml содержит следующие строки:

<groupId>com.bla-bla.groupId-bla</groupId>
<artifactId>my-plugin-bla-bla</artifactId>

И веб-ресурс с файлом js имеет ключ = "zakaznik-resources" (по вашему образцу)

Затем вы должны использовать эту директиву:

$webResourceManager.requireResource("com.bla-bla.groupId-bla.my-plugin-bla-bla:zakaznik-resources")

Для самоконтроля вы можете использовать Firebug или другой плагин/инструмент для браузера, чтобы проверить наличие ваших js-файлов на этой странице.

person Community    schedule 09.07.2014
comment
выдержка из pom.xml: <groupId>cz.firma.rozy</groupId> <artifactId>zakaznik</artifactId> поэтому мой requireResource: $webResourceManager.requireResource("cz.firma.rozy.zakaznik:zakaznik-resources") Это нормально? Я не уверен, нужен ли мне этот оператор require, когда я использую ‹context› в моем atlassian-plugin.xml в веб-ресурсе?? Но результат все тот же. После того, как я нажал на мою кнопку, режим редактирования был закрыт. Firebug работает нормально, ошибок и предупреждений нет. - person ganoes; 09.07.2014
comment
Проверьте с помощью своего инструмента — доступен ли ваш файл js на этой странице? Если да - поставьте точку останова на свой метод и проверьте его поведение - person ; 09.07.2014
comment
Я проверяю свой код и даю еще один совет: используйте атрибут onclick во входном теге: ‹input id=test onClick=someMethod() .../›. И переместите логику сокрытия в соответствующий метод someMethod() { AJS.$(#test).hide(); } в js-файле - person ; 09.07.2014
comment
Хорошо, почти готово, большое спасибо :-) Теперь, когда я нажимаю кнопку, ввод скрыт и почти сразу закрывается режим редактирования. (без моего другого взаимодействия) - person ganoes; 09.07.2014
comment
Хорошо, когда я разработал плагин для JIRA, мне очень помогла эта книга: JIRA 5.x Development Cookbook by Jobin Kuruvilla - person ; 09.07.2014
comment
Хорошо, наконец-то у меня есть решение этой проблемы. Я должен использовать: `someMethod(event) { event.preventDefault(); AJS.$(#test).hide(); } Спасибо за советы :) - person ganoes; 10.07.2014