priorities = Lists.newArrayList("blocker.svg", "critical.svg", "major.svg", "highest.svg", "high.svg", "medium.svg", "low.svg", "lowest.svg", "minor.svg", "trivial.svg");
+ priorities.forEach(name -> avatarManager.create(new TempAvatar(name + "-" + "iconselectlist", "image/svg+xml")));
+ for (int i = 1; i < 88; i++)
+ avatarManager.create(new TempAvatar((1000 + i) + ".svg-" + "iconselectlist", "image/svg+xml"));
+ }
+
+ private TempAvatar fromAvatar(Avatar avatar) {
+ return new TempAvatar(avatar.getId() + "-" + avatar.getIconType().getKey(), avatar.getContentType());
+ }
+
+ private class TempAvatar implements Avatar {
+ private String fileName;
+
+ private String contentType;
+
+ TempAvatar(String fileName, String contentType) {
+ this.fileName = fileName;
+ this.contentType = contentType;
+ }
+
+ @Nonnull
+ public Avatar.Type getAvatarType() {
+ return null;
+ }
+
+ @Nonnull
+ public IconType getIconType() {
+ return IconSelectIconTypeDefinition.ICON_TYPE;
+ }
+
+ @Nonnull
+ public String getFileName() {
+ return this.fileName;
+ }
+
+ @Nonnull
+ public String getContentType() {
+ return this.contentType;
+ }
+
+ public Long getId() {
+ return null;
+ }
+
+ public String getOwner() {
+ return null;
+ }
+
+ public boolean isSystemAvatar() {
+ return true;
+ }
+ }
+}
+
diff --git a/iconselect/src/main/java/com/codebarrel/iconselect/web/ConfigureOptions.java b/iconselect/src/main/java/com/codebarrel/iconselect/web/ConfigureOptions.java
new file mode 100644
index 0000000..6427353
--- /dev/null
+++ b/iconselect/src/main/java/com/codebarrel/iconselect/web/ConfigureOptions.java
@@ -0,0 +1,112 @@
+package com.codebarrel.iconselect.web;
+
+import com.atlassian.jira.avatar.Avatar;
+import com.atlassian.jira.avatar.AvatarManager;
+import com.atlassian.jira.issue.CustomFieldManager;
+import com.atlassian.jira.issue.fields.CustomField;
+import com.atlassian.jira.issue.fields.config.manager.FieldConfigManager;
+import com.atlassian.jira.permission.GlobalPermissionKey;
+import com.atlassian.jira.security.GlobalPermissionManager;
+import com.atlassian.jira.security.JiraAuthenticationContext;
+import com.atlassian.jira.security.request.RequestMethod;
+import com.atlassian.jira.security.request.SupportedMethods;
+import com.atlassian.jira.user.ApplicationUser;
+import com.atlassian.jira.web.action.ActionViewData;
+import com.atlassian.jira.web.action.JiraWebActionSupport;
+import com.atlassian.plugin.spring.scanner.annotation.component.Scanned;
+import com.atlassian.webresource.api.assembler.PageBuilderService;
+import com.codebarrel.iconselect.icontype.IconSelectIconTypeDefinition;
+import com.codebarrel.iconselect.upgradetasks.UpgradeTask01;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.inject.Inject;
+
+@Scanned
+@SupportedMethods(RequestMethod.GET)
+public class ConfigureOptions extends JiraWebActionSupport {
+
+ private final JiraAuthenticationContext authenticationContext;
+ private final PageBuilderService pageBuilderService;
+ private final AvatarManager avatarManager;
+ private final CustomFieldManager customFieldManager;
+ private final FieldConfigManager fieldConfigManager;
+ private final GlobalPermissionManager globalPermissionManager;
+ private final UpgradeTask01 upgradeTask01;
+ private static final Logger log = LoggerFactory.getLogger(ConfigureOptions.class);
+ private Long fieldConfigId = null;
+ private Long customFieldId = null;
+
+ @Inject
+ public ConfigureOptions(JiraAuthenticationContext authenticationContext,
+ PageBuilderService pageBuilderService,
+ AvatarManager avatarManager,
+ CustomFieldManager customFieldManager,
+ FieldConfigManager fieldConfigManager,
+ GlobalPermissionManager globalPermissionManager,
+ UpgradeTask01 upgradeTask01) throws Exception {
+ this.authenticationContext = authenticationContext;
+ this.pageBuilderService = pageBuilderService;
+ this.avatarManager = avatarManager;
+ this.customFieldManager = customFieldManager;
+ this.fieldConfigManager = fieldConfigManager;
+ this.globalPermissionManager = globalPermissionManager;
+ this.upgradeTask01 = upgradeTask01;
+
+ //FIXME. Workaround. Auto upgrade task doesn't work.
+ this.upgradeTask01.doUpgrade();
+ }
+
+ public String execute() throws Exception {
+ if (!isUserAdmin(this.authenticationContext.getLoggedInUser()))
+ return "permissionviolation";
+ Avatar defaultAvatar = this.avatarManager.getDefaultAvatar(IconSelectIconTypeDefinition.ICON_TYPE);
+ this.pageBuilderService.assembler().resources()
+ .requireWebResource("com.codebarrel.jira.iconselectlist:iconselectlist-config-resources")
+ .requireWebResource("com.codebarrel.jira.iconselectlist:iconselectlist-restfulltable-templates");
+ this.pageBuilderService.assembler().data()
+ .requireData("com.codebarrel.iconselect:fieldConfig", this.fieldConfigId)
+ .requireData("com.codebarrel.iconselect:defaultAvatar", defaultAvatar.getId())
+ .requireData("com.codebarrel.iconselect:customField", this.customFieldId);
+ return super.execute();
+ }
+
+ private boolean isUserAdmin(ApplicationUser user) {
+ return (user != null && (this.globalPermissionManager.hasPermission(GlobalPermissionKey.ADMINISTER, user) || this.globalPermissionManager.hasPermission(GlobalPermissionKey.SYSTEM_ADMIN, user)));
+ }
+
+ public Long getFieldConfigId() {
+ return this.fieldConfigId;
+ }
+
+ public void setFieldConfigId(Long fieldConfigId) {
+ this.fieldConfigId = fieldConfigId;
+ }
+
+ public Long getCustomFieldId() {
+ return this.customFieldId;
+ }
+
+ public void setCustomFieldId(Long customFieldId) {
+ this.customFieldId = customFieldId;
+ }
+
+ @ActionViewData
+ public String getCustomFieldName() {
+ return getCustomField().getFieldName();
+ }
+
+ @ActionViewData
+ public String getFieldConfigName() {
+ return this.fieldConfigManager.getFieldConfig(this.fieldConfigId).getName();
+ }
+
+ public CustomField getCustomField() {
+ return this.customFieldManager.getCustomFieldObject(this.customFieldId);
+ }
+
+ @ActionViewData
+ public String getReturnUrl() {
+ return super.getReturnUrl();
+ }
+}
diff --git a/iconselect/src/main/resources/META-INF/spring/plugin-context.xml b/iconselect/src/main/resources/META-INF/spring/plugin-context.xml
new file mode 100644
index 0000000..26f2c2b
--- /dev/null
+++ b/iconselect/src/main/resources/META-INF/spring/plugin-context.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/atlassian-plugin.xml b/iconselect/src/main/resources/atlassian-plugin.xml
new file mode 100644
index 0000000..1e526e3
--- /dev/null
+++ b/iconselect/src/main/resources/atlassian-plugin.xml
@@ -0,0 +1,106 @@
+
+
+
+ This is the Code Barrel Icons for JIRA Add-on.
+ 2.0.2
+
+ images/vendor-icon.png
+ images/plugin-logo.png
+ images/plugin-banner.jpg
+ images/vendor-icon.jpg
+ images/vendor-logo.jpg
+ true
+
+
+
+
+ com.atlassian.auiplugin:ajs
+
+
+
+
+
+
+
+
+
+ jira.general
+
+
+ com.atlassian.auiplugin:aui-experimental-soy-templates
+ jira.webresources:soy-templates
+
+
+
+ com.atlassian.auiplugin:aui-experimental-soy-templates
+ jira.webresources:soy-templates
+
+
+
+
+
+
+
+ com.atlassian.auiplugin:ajs
+ com.atlassian.auiplugin:aui-experimental-restfultable
+
+
+
+
+
+
+
+
+ iconselectlist-config
+
+
+ Configure Icon Select List CF Options
+ Plugin
+
+
+
+
+ :iconselectlist-config-page-templates/com.codebarrel.iconselect.config.page.main
+
+
+ :iconselectlist-config-page-templates/com.codebarrel.iconselect.config.page.permissionViolation
+
+
+
+
+
+ The Icon Select CF Plugin
+
+
+
+
+
+
+ The Icon Select CF Plugin
+
+
+
+
+
+
+ The Multi Select Searcher Plugin
+
+
+
+
+
+
+
+ The Icon Options Resource Plugin
+
+
diff --git a/iconselect/src/main/resources/iconselectlist.properties b/iconselect/src/main/resources/iconselectlist.properties
new file mode 100644
index 0000000..facda00
--- /dev/null
+++ b/iconselect/src/main/resources/iconselectlist.properties
@@ -0,0 +1,46 @@
+#put any key/value pairs here
+my.plugin.name=Code Barrel's Icons for JIRA Add-on
+icons.for.jira.plugin=Code Barrel's Icons for JIRA Add-on
+
+icon-multi-select-cf.name=Icon Multi-Select
+icon-multi-select-cf.description=A multi-select field with icons on options
+icon-select-cf.name=Icon Single Select
+icon-select-cf.description=A select field with icons on options
+icon-multi-select-searcher.name=Icon Select Searcher
+icon-multi-select-searcher.description=The Icon Select Searcher Add-on
+
+edit-icon-select-list-cf-options.name=Edit Icon Select List CF Options
+edit-icon-select-list-cf-options.description=The Edit Icon Select List CF Options Add-on
+
+icon-options-resource.name=Icon Options Resource
+icon-options-resource.description=The Icon Options Resource Add-on
+
+icon.options.conifgure.option=Configure Options
+icon.options.conifgure.option.for.field=Configure Options for field ''{0}''
+icon.options.conifgure.option.description1 = You are editing the options of the config ''{0}''.
+icon.option.configure.no.options=There are currently no options configured.
+icon.options.conifgure.option.description2 = Use the tale below to add, edit, disable/enable and delete options for your customfield.
+icon.options.configure.options.return=Return to the Field Configuration
+icon.options.conifgure.option.none=No options exist for configuration
+icon.option.customfield.only.move.to.first=Can only move option by position to first position
+icon.options.conifgure.icon.attribution=These icon were sourced from the great open source project
+
+icon.option.not.found=Option with id ''{0}'' not found
+icon.option.customfield.not.recognized=CustomField is not of a recognized type
+icon.option.cant.see.permission=User does not have permission to see project associated with option or field config
+icon.option.field.config.not.found=Field config with id ''{0}'' not found
+icon.option.not.found.in.field.config=Option with id ''{0}'' does not exist in FieldConfig ''{1}''
+icon.option.label.not.null=Label cannot be empty
+icon.option.avatar.not.null=Avatar cannot be empty
+icon.option.wrong.icon.type=Avatar is of wrong type
+icon.option.label.already.exists=Label ''{0}'' already exists
+icon.option.avatar.not.exists=Avatar with id ''{0}'' does not exist
+
+icon.option.label=Label
+icon.option.icon=Icon
+icon.option.select.icon.title=Select Icon for Option
+icon.option.select.icon=select icon
+icon.option.select.icon.alt=Select Issue Type Avatar
+icon.option.enable=Enable
+icon.option.disable=Disable
+icon.option.delete.confirm.title=Delete Option ''{0}}''
diff --git a/iconselect/src/main/resources/images/avatars/1001.svg b/iconselect/src/main/resources/images/avatars/1001.svg
new file mode 100644
index 0000000..3b884ac
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1001.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1002.svg b/iconselect/src/main/resources/images/avatars/1002.svg
new file mode 100644
index 0000000..713c0fc
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1002.svg
@@ -0,0 +1,2 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1003.svg b/iconselect/src/main/resources/images/avatars/1003.svg
new file mode 100644
index 0000000..1965287
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1003.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1004.svg b/iconselect/src/main/resources/images/avatars/1004.svg
new file mode 100644
index 0000000..8306b98
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1004.svg
@@ -0,0 +1,2 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1005.svg b/iconselect/src/main/resources/images/avatars/1005.svg
new file mode 100644
index 0000000..eaecf30
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1005.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1006.svg b/iconselect/src/main/resources/images/avatars/1006.svg
new file mode 100644
index 0000000..6a07bac
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1006.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1007.svg b/iconselect/src/main/resources/images/avatars/1007.svg
new file mode 100644
index 0000000..3ed3525
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1007.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1008.svg b/iconselect/src/main/resources/images/avatars/1008.svg
new file mode 100644
index 0000000..408ebe2
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1008.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1009.svg b/iconselect/src/main/resources/images/avatars/1009.svg
new file mode 100644
index 0000000..58f83d3
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1009.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1010.svg b/iconselect/src/main/resources/images/avatars/1010.svg
new file mode 100644
index 0000000..5acf333
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1010.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1011.svg b/iconselect/src/main/resources/images/avatars/1011.svg
new file mode 100644
index 0000000..9825701
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1011.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1012.svg b/iconselect/src/main/resources/images/avatars/1012.svg
new file mode 100644
index 0000000..3c7642c
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1012.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1013.svg b/iconselect/src/main/resources/images/avatars/1013.svg
new file mode 100644
index 0000000..6e95232
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1013.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1014.svg b/iconselect/src/main/resources/images/avatars/1014.svg
new file mode 100644
index 0000000..214ef7f
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1014.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1015.svg b/iconselect/src/main/resources/images/avatars/1015.svg
new file mode 100644
index 0000000..f0d6b9c
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1015.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1016.svg b/iconselect/src/main/resources/images/avatars/1016.svg
new file mode 100644
index 0000000..5884158
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1016.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1017.svg b/iconselect/src/main/resources/images/avatars/1017.svg
new file mode 100644
index 0000000..ea77fb6
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1017.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1018.svg b/iconselect/src/main/resources/images/avatars/1018.svg
new file mode 100644
index 0000000..5c4b086
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1018.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1019.svg b/iconselect/src/main/resources/images/avatars/1019.svg
new file mode 100644
index 0000000..4508211
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1019.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1020.svg b/iconselect/src/main/resources/images/avatars/1020.svg
new file mode 100644
index 0000000..d1d05c7
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1020.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1021.svg b/iconselect/src/main/resources/images/avatars/1021.svg
new file mode 100644
index 0000000..895b15c
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1021.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1022.svg b/iconselect/src/main/resources/images/avatars/1022.svg
new file mode 100644
index 0000000..c98bcb0
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1022.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1023.svg b/iconselect/src/main/resources/images/avatars/1023.svg
new file mode 100644
index 0000000..88fdd32
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1023.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1024.svg b/iconselect/src/main/resources/images/avatars/1024.svg
new file mode 100644
index 0000000..ddffc32
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1024.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1025.svg b/iconselect/src/main/resources/images/avatars/1025.svg
new file mode 100644
index 0000000..ace1c3c
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1025.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1026.svg b/iconselect/src/main/resources/images/avatars/1026.svg
new file mode 100644
index 0000000..13d66fa
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1026.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1027.svg b/iconselect/src/main/resources/images/avatars/1027.svg
new file mode 100644
index 0000000..12a3af0
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1027.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1028.svg b/iconselect/src/main/resources/images/avatars/1028.svg
new file mode 100644
index 0000000..4431bef
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1028.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1029.svg b/iconselect/src/main/resources/images/avatars/1029.svg
new file mode 100644
index 0000000..41b66cb
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1029.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1030.svg b/iconselect/src/main/resources/images/avatars/1030.svg
new file mode 100644
index 0000000..94a9c61
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1030.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1031.svg b/iconselect/src/main/resources/images/avatars/1031.svg
new file mode 100644
index 0000000..e05ebcc
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1031.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1032.svg b/iconselect/src/main/resources/images/avatars/1032.svg
new file mode 100644
index 0000000..9f8c13d
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1032.svg
@@ -0,0 +1,2 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1033.svg b/iconselect/src/main/resources/images/avatars/1033.svg
new file mode 100644
index 0000000..1e1603e
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1033.svg
@@ -0,0 +1,2 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1034.svg b/iconselect/src/main/resources/images/avatars/1034.svg
new file mode 100644
index 0000000..8f2a9d3
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1034.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1035.svg b/iconselect/src/main/resources/images/avatars/1035.svg
new file mode 100644
index 0000000..27bd712
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1035.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1036.svg b/iconselect/src/main/resources/images/avatars/1036.svg
new file mode 100644
index 0000000..a8c8e2a
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1036.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1037.svg b/iconselect/src/main/resources/images/avatars/1037.svg
new file mode 100644
index 0000000..a57a9ab
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1037.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1038.svg b/iconselect/src/main/resources/images/avatars/1038.svg
new file mode 100644
index 0000000..c85539a
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1038.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1039.svg b/iconselect/src/main/resources/images/avatars/1039.svg
new file mode 100644
index 0000000..4d32cd5
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1039.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1040.svg b/iconselect/src/main/resources/images/avatars/1040.svg
new file mode 100644
index 0000000..7aab499
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1040.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1041.svg b/iconselect/src/main/resources/images/avatars/1041.svg
new file mode 100644
index 0000000..04c6dfb
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1041.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1042.svg b/iconselect/src/main/resources/images/avatars/1042.svg
new file mode 100644
index 0000000..3264f30
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1042.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1043.svg b/iconselect/src/main/resources/images/avatars/1043.svg
new file mode 100644
index 0000000..09cd5bb
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1043.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1044.svg b/iconselect/src/main/resources/images/avatars/1044.svg
new file mode 100644
index 0000000..7cee005
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1044.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1045.svg b/iconselect/src/main/resources/images/avatars/1045.svg
new file mode 100644
index 0000000..aaec62d
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1045.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1046.svg b/iconselect/src/main/resources/images/avatars/1046.svg
new file mode 100644
index 0000000..72f8043
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1046.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1047.svg b/iconselect/src/main/resources/images/avatars/1047.svg
new file mode 100644
index 0000000..8b5b7ae
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1047.svg
@@ -0,0 +1,2 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1048.svg b/iconselect/src/main/resources/images/avatars/1048.svg
new file mode 100644
index 0000000..67270d4
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1048.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1049.svg b/iconselect/src/main/resources/images/avatars/1049.svg
new file mode 100644
index 0000000..e04909f
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1049.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1050.svg b/iconselect/src/main/resources/images/avatars/1050.svg
new file mode 100644
index 0000000..b129447
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1050.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1051.svg b/iconselect/src/main/resources/images/avatars/1051.svg
new file mode 100644
index 0000000..402cf18
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1051.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1052.svg b/iconselect/src/main/resources/images/avatars/1052.svg
new file mode 100644
index 0000000..019b9d1
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1052.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1053.svg b/iconselect/src/main/resources/images/avatars/1053.svg
new file mode 100644
index 0000000..d195947
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1053.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1054.svg b/iconselect/src/main/resources/images/avatars/1054.svg
new file mode 100644
index 0000000..57538f8
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1054.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1055.svg b/iconselect/src/main/resources/images/avatars/1055.svg
new file mode 100644
index 0000000..eb5a7ad
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1055.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1056.svg b/iconselect/src/main/resources/images/avatars/1056.svg
new file mode 100644
index 0000000..6c13751
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1056.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1057.svg b/iconselect/src/main/resources/images/avatars/1057.svg
new file mode 100644
index 0000000..3e1c98e
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1057.svg
@@ -0,0 +1,2 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1058.svg b/iconselect/src/main/resources/images/avatars/1058.svg
new file mode 100644
index 0000000..e7742e5
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1058.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1059.svg b/iconselect/src/main/resources/images/avatars/1059.svg
new file mode 100644
index 0000000..5c4e71e
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1059.svg
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1060.svg b/iconselect/src/main/resources/images/avatars/1060.svg
new file mode 100644
index 0000000..e3504dc
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1060.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1061.svg b/iconselect/src/main/resources/images/avatars/1061.svg
new file mode 100644
index 0000000..ec7d0f2
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1061.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1062.svg b/iconselect/src/main/resources/images/avatars/1062.svg
new file mode 100644
index 0000000..84a5990
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1062.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1063.svg b/iconselect/src/main/resources/images/avatars/1063.svg
new file mode 100644
index 0000000..4dd5489
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1063.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1064.svg b/iconselect/src/main/resources/images/avatars/1064.svg
new file mode 100644
index 0000000..8c32144
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1064.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1065.svg b/iconselect/src/main/resources/images/avatars/1065.svg
new file mode 100644
index 0000000..a1ef279
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1065.svg
@@ -0,0 +1,2 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1066.svg b/iconselect/src/main/resources/images/avatars/1066.svg
new file mode 100644
index 0000000..05edabe
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1066.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1067.svg b/iconselect/src/main/resources/images/avatars/1067.svg
new file mode 100644
index 0000000..1db3cd9
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1067.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1068.svg b/iconselect/src/main/resources/images/avatars/1068.svg
new file mode 100644
index 0000000..e87d1fd
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1068.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1069.svg b/iconselect/src/main/resources/images/avatars/1069.svg
new file mode 100644
index 0000000..2da5a9b
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1069.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1070.svg b/iconselect/src/main/resources/images/avatars/1070.svg
new file mode 100644
index 0000000..f4d0002
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1070.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1071.svg b/iconselect/src/main/resources/images/avatars/1071.svg
new file mode 100644
index 0000000..6a00b08
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1071.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1072.svg b/iconselect/src/main/resources/images/avatars/1072.svg
new file mode 100644
index 0000000..e365b62
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1072.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1073.svg b/iconselect/src/main/resources/images/avatars/1073.svg
new file mode 100644
index 0000000..00cb333
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1073.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1074.svg b/iconselect/src/main/resources/images/avatars/1074.svg
new file mode 100644
index 0000000..e3e02b5
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1074.svg
@@ -0,0 +1,2 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1075.svg b/iconselect/src/main/resources/images/avatars/1075.svg
new file mode 100644
index 0000000..de02042
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1075.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1076.svg b/iconselect/src/main/resources/images/avatars/1076.svg
new file mode 100644
index 0000000..ad4b080
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1076.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1077.svg b/iconselect/src/main/resources/images/avatars/1077.svg
new file mode 100644
index 0000000..f7576b5
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1077.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1078.svg b/iconselect/src/main/resources/images/avatars/1078.svg
new file mode 100644
index 0000000..94b859c
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1078.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1079.svg b/iconselect/src/main/resources/images/avatars/1079.svg
new file mode 100644
index 0000000..7013040
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1079.svg
@@ -0,0 +1,2 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1080.svg b/iconselect/src/main/resources/images/avatars/1080.svg
new file mode 100644
index 0000000..215401b
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1080.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1081.svg b/iconselect/src/main/resources/images/avatars/1081.svg
new file mode 100644
index 0000000..58f306c
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1081.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1082.svg b/iconselect/src/main/resources/images/avatars/1082.svg
new file mode 100644
index 0000000..7828b86
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1082.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1083.svg b/iconselect/src/main/resources/images/avatars/1083.svg
new file mode 100644
index 0000000..a99e391
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1083.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1084.svg b/iconselect/src/main/resources/images/avatars/1084.svg
new file mode 100644
index 0000000..35f8625
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1084.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1085.svg b/iconselect/src/main/resources/images/avatars/1085.svg
new file mode 100644
index 0000000..ac90a0c
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1085.svg
@@ -0,0 +1,2 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1086.svg b/iconselect/src/main/resources/images/avatars/1086.svg
new file mode 100644
index 0000000..6b40435
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1086.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/1087.svg b/iconselect/src/main/resources/images/avatars/1087.svg
new file mode 100644
index 0000000..8f85fae
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/1087.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/blocker.svg b/iconselect/src/main/resources/images/avatars/blocker.svg
new file mode 100644
index 0000000..c02538e
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/blocker.svg
@@ -0,0 +1,8 @@
+
+
+
diff --git a/iconselect/src/main/resources/images/avatars/critical.svg b/iconselect/src/main/resources/images/avatars/critical.svg
new file mode 100644
index 0000000..7c53b37
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/critical.svg
@@ -0,0 +1,12 @@
+
+
+
diff --git a/iconselect/src/main/resources/images/avatars/defaulticon.svg b/iconselect/src/main/resources/images/avatars/defaulticon.svg
new file mode 100644
index 0000000..3aa8623
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/defaulticon.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/avatars/high.svg b/iconselect/src/main/resources/images/avatars/high.svg
new file mode 100644
index 0000000..733b0f4
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/high.svg
@@ -0,0 +1,11 @@
+
+
+
diff --git a/iconselect/src/main/resources/images/avatars/highest.svg b/iconselect/src/main/resources/images/avatars/highest.svg
new file mode 100644
index 0000000..2316ea8
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/highest.svg
@@ -0,0 +1,11 @@
+
+
+
diff --git a/iconselect/src/main/resources/images/avatars/low.svg b/iconselect/src/main/resources/images/avatars/low.svg
new file mode 100644
index 0000000..5d13a1d
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/low.svg
@@ -0,0 +1,12 @@
+
+
+
diff --git a/iconselect/src/main/resources/images/avatars/lowest.svg b/iconselect/src/main/resources/images/avatars/lowest.svg
new file mode 100644
index 0000000..4aee056
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/lowest.svg
@@ -0,0 +1,12 @@
+
+
+
diff --git a/iconselect/src/main/resources/images/avatars/major.svg b/iconselect/src/main/resources/images/avatars/major.svg
new file mode 100644
index 0000000..a506b6a
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/major.svg
@@ -0,0 +1,17 @@
+
+
+
diff --git a/iconselect/src/main/resources/images/avatars/medium.svg b/iconselect/src/main/resources/images/avatars/medium.svg
new file mode 100644
index 0000000..3a788ec
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/medium.svg
@@ -0,0 +1,11 @@
+
+
+
diff --git a/iconselect/src/main/resources/images/avatars/minor.svg b/iconselect/src/main/resources/images/avatars/minor.svg
new file mode 100644
index 0000000..30c9e86
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/minor.svg
@@ -0,0 +1,14 @@
+
+
+
diff --git a/iconselect/src/main/resources/images/avatars/trivial.svg b/iconselect/src/main/resources/images/avatars/trivial.svg
new file mode 100644
index 0000000..7a0ea67
--- /dev/null
+++ b/iconselect/src/main/resources/images/avatars/trivial.svg
@@ -0,0 +1,12 @@
+
+
+
diff --git a/iconselect/src/main/resources/images/empty.svg b/iconselect/src/main/resources/images/empty.svg
new file mode 100644
index 0000000..3dcdda8
--- /dev/null
+++ b/iconselect/src/main/resources/images/empty.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/iconselect/src/main/resources/images/icon-multi-preview.png b/iconselect/src/main/resources/images/icon-multi-preview.png
new file mode 100644
index 0000000..582e9fa
Binary files /dev/null and b/iconselect/src/main/resources/images/icon-multi-preview.png differ
diff --git a/iconselect/src/main/resources/images/icon-single-preview.png b/iconselect/src/main/resources/images/icon-single-preview.png
new file mode 100644
index 0000000..ca1fbff
Binary files /dev/null and b/iconselect/src/main/resources/images/icon-single-preview.png differ
diff --git a/iconselect/src/main/resources/images/marketing/cropped-choose-icon.png b/iconselect/src/main/resources/images/marketing/cropped-choose-icon.png
new file mode 100644
index 0000000..af5c433
Binary files /dev/null and b/iconselect/src/main/resources/images/marketing/cropped-choose-icon.png differ
diff --git a/iconselect/src/main/resources/images/marketing/cropped-easy-config.png b/iconselect/src/main/resources/images/marketing/cropped-easy-config.png
new file mode 100644
index 0000000..9da79c9
Binary files /dev/null and b/iconselect/src/main/resources/images/marketing/cropped-easy-config.png differ
diff --git a/iconselect/src/main/resources/images/marketing/cropped-edit-screen.png b/iconselect/src/main/resources/images/marketing/cropped-edit-screen.png
new file mode 100644
index 0000000..ac29be7
Binary files /dev/null and b/iconselect/src/main/resources/images/marketing/cropped-edit-screen.png differ
diff --git a/iconselect/src/main/resources/images/marketing/cropped-search.png b/iconselect/src/main/resources/images/marketing/cropped-search.png
new file mode 100644
index 0000000..8cfa8d0
Binary files /dev/null and b/iconselect/src/main/resources/images/marketing/cropped-search.png differ
diff --git a/iconselect/src/main/resources/images/marketing/highlight-choose-icons.png b/iconselect/src/main/resources/images/marketing/highlight-choose-icons.png
new file mode 100644
index 0000000..fa3c9a4
Binary files /dev/null and b/iconselect/src/main/resources/images/marketing/highlight-choose-icons.png differ
diff --git a/iconselect/src/main/resources/images/marketing/highlight-choose-iconsLowRes.png b/iconselect/src/main/resources/images/marketing/highlight-choose-iconsLowRes.png
new file mode 100644
index 0000000..d02af6a
Binary files /dev/null and b/iconselect/src/main/resources/images/marketing/highlight-choose-iconsLowRes.png differ
diff --git a/iconselect/src/main/resources/images/marketing/highlight-easy-config.png b/iconselect/src/main/resources/images/marketing/highlight-easy-config.png
new file mode 100644
index 0000000..460c76d
Binary files /dev/null and b/iconselect/src/main/resources/images/marketing/highlight-easy-config.png differ
diff --git a/iconselect/src/main/resources/images/marketing/highlight-easy-configLowRes.png b/iconselect/src/main/resources/images/marketing/highlight-easy-configLowRes.png
new file mode 100644
index 0000000..acdfb8b
Binary files /dev/null and b/iconselect/src/main/resources/images/marketing/highlight-easy-configLowRes.png differ
diff --git a/iconselect/src/main/resources/images/marketing/highlight-edit-screen.png b/iconselect/src/main/resources/images/marketing/highlight-edit-screen.png
new file mode 100644
index 0000000..33e0590
Binary files /dev/null and b/iconselect/src/main/resources/images/marketing/highlight-edit-screen.png differ
diff --git a/iconselect/src/main/resources/images/marketing/highlight-edit-screenLowRes.png b/iconselect/src/main/resources/images/marketing/highlight-edit-screenLowRes.png
new file mode 100644
index 0000000..b8f29a8
Binary files /dev/null and b/iconselect/src/main/resources/images/marketing/highlight-edit-screenLowRes.png differ
diff --git a/iconselect/src/main/resources/images/marketing/highlight-multi-config.png b/iconselect/src/main/resources/images/marketing/highlight-multi-config.png
new file mode 100644
index 0000000..7249710
Binary files /dev/null and b/iconselect/src/main/resources/images/marketing/highlight-multi-config.png differ
diff --git a/iconselect/src/main/resources/images/marketing/highlight-multi-configLowRes.png b/iconselect/src/main/resources/images/marketing/highlight-multi-configLowRes.png
new file mode 100644
index 0000000..225e9f5
Binary files /dev/null and b/iconselect/src/main/resources/images/marketing/highlight-multi-configLowRes.png differ
diff --git a/iconselect/src/main/resources/images/marketing/highlight-search.png b/iconselect/src/main/resources/images/marketing/highlight-search.png
new file mode 100644
index 0000000..0867d49
Binary files /dev/null and b/iconselect/src/main/resources/images/marketing/highlight-search.png differ
diff --git a/iconselect/src/main/resources/images/marketing/highlight-searchLowRes.png b/iconselect/src/main/resources/images/marketing/highlight-searchLowRes.png
new file mode 100644
index 0000000..0c16079
Binary files /dev/null and b/iconselect/src/main/resources/images/marketing/highlight-searchLowRes.png differ
diff --git a/iconselect/src/main/resources/images/marketing/highlight-view-issue.png b/iconselect/src/main/resources/images/marketing/highlight-view-issue.png
new file mode 100644
index 0000000..cf80f99
Binary files /dev/null and b/iconselect/src/main/resources/images/marketing/highlight-view-issue.png differ
diff --git a/iconselect/src/main/resources/images/marketing/highlight-view-issueLowRes.png b/iconselect/src/main/resources/images/marketing/highlight-view-issueLowRes.png
new file mode 100644
index 0000000..1a55fd2
Binary files /dev/null and b/iconselect/src/main/resources/images/marketing/highlight-view-issueLowRes.png differ
diff --git a/iconselect/src/main/resources/images/plugin-banner.png b/iconselect/src/main/resources/images/plugin-banner.png
new file mode 100644
index 0000000..5bdb7fe
Binary files /dev/null and b/iconselect/src/main/resources/images/plugin-banner.png differ
diff --git a/iconselect/src/main/resources/images/plugin-bannerlowRes.png b/iconselect/src/main/resources/images/plugin-bannerlowRes.png
new file mode 100644
index 0000000..d64c780
Binary files /dev/null and b/iconselect/src/main/resources/images/plugin-bannerlowRes.png differ
diff --git a/iconselect/src/main/resources/images/plugin-logo.png b/iconselect/src/main/resources/images/plugin-logo.png
new file mode 100644
index 0000000..d814e8f
Binary files /dev/null and b/iconselect/src/main/resources/images/plugin-logo.png differ
diff --git a/iconselect/src/main/resources/images/vendor-icon.png b/iconselect/src/main/resources/images/vendor-icon.png
new file mode 100644
index 0000000..5a9d2d2
Binary files /dev/null and b/iconselect/src/main/resources/images/vendor-icon.png differ
diff --git a/iconselect/src/main/resources/images/vendor-logo.png b/iconselect/src/main/resources/images/vendor-logo.png
new file mode 100644
index 0000000..305858c
Binary files /dev/null and b/iconselect/src/main/resources/images/vendor-logo.png differ
diff --git a/iconselect/src/main/resources/js/iconselect-config-min.js b/iconselect/src/main/resources/js/iconselect-config-min.js
new file mode 100644
index 0000000..0599868
--- /dev/null
+++ b/iconselect/src/main/resources/js/iconselect-config-min.js
@@ -0,0 +1 @@
+(function(){AJS.$(function(){var c=AJS.$("#cf-config-icon-options");if(c.length==0){return}var d=WRM.data.claim("com.codebarrel.iconselect:fieldConfig");var f=WRM.data.claim("com.codebarrel.iconselect:customField");var i=WRM.data.claim("com.codebarrel.iconselect:defaultAvatar");var a=AJS.contextPath()+"/rest/iconselectoptions/1.0/option/context/"+d;var h=AJS.RestfulTable.Row.extend({initialize:function(){var j=this;AJS.RestfulTable.Row.prototype.initialize.apply(this,arguments);this.bind(this._event.RENDER,function(l,m){var k=$(this.el);k.find(".aui-restfultable-operations").append(com.codebarrel.iconselect.config.restfulltable.operations());if(m.disabled){k.addClass("iconselect-options-config-disabled");k.addClass("disabled")}else{k.addClass("iconselect-options-config-enabled")}k.find(".icon-select-disable").click(function(n){JIRA.SmartAjax.makeRequest({url:a+"/"+m.id+"/disable",type:"POST",dataType:"json",complete:function(r,p,o){var s=o.data;if(typeof o.data==="string"){s=JSON.parse(o.data)}var q=!(r.status===400&&s&&s.errors);if(o.successful){k.addClass("iconselect-options-config-disabled");k.addClass("disabled");k.removeClass("iconselect-options-config-enabled")}else{if(q){alert("Error while disabling option. Reload and try again. If it pesists contact your administrator")}}}})});k.find(".icon-select-enable").click(function(n){JIRA.SmartAjax.makeRequest({url:a+"/"+m.id+"/enable",type:"POST",dataType:"json",complete:function(r,p,o){var s=o.data;if(typeof o.data==="string"){s=JSON.parse(o.data)}var q=!(r.status===400&&s&&s.errors);if(o.successful){k.addClass("iconselect-options-config-enabled");k.removeClass("iconselect-options-config-disabled");k.removeClass("disabled")}else{if(q){alert("Error while enabling option. Reload and try again. If it pesists contact your administrator")}}}})})})}});var e=AJS.RestfulTable.CustomEditView.extend({render:function(j){var k=j.value==null?i:j.value;var l=AJS.$(com.codebarrel.iconselect.config.restfulltable.iconEditView({name:j.name,value:k,contextPath:AJS.contextPath()}));JIRA.createUniversalAvatarPickerDialog({trigger:l,title:AJS.I18n.getText("icon.option.select.icon.title"),projectId:f,defaultAvatarId:i,initialSelection:k,avatarSize:JIRA.Avatar.getSizeObjectFromName("xsmall"),avatarType:"iconselectlist",select:function(m,n){l.find("img").attr("src",n);l.find("input").val(m.getId())}});return l}});var g=AJS.RestfulTable.CustomReadView.extend({render:function(j){return com.codebarrel.iconselect.config.restfulltable.iconReadView({value:j.value,contextPath:AJS.contextPath()})}});var b=new AJS.RestfulTable({autoFocus:true,el:c,allowReorder:true,addPosition:"bottom",noEntriesMsg:AJS.I18n.getText("icon.option.configure.no.options"),resources:{all:a,self:a},columns:[{id:"avatarId",name:"avatarId",header:AJS.I18n.getText("icon.option.icon"),styleClass:"iconselect-options-config-avatar",readView:g,editView:e},{id:"label",name:"label",styleClass:"iconselect-options-config-label",header:AJS.I18n.getText("icon.option.label")}],views:{row:h}})})})();
\ No newline at end of file
diff --git a/iconselect/src/main/resources/js/iconselect-config.js b/iconselect/src/main/resources/js/iconselect-config.js
new file mode 100644
index 0000000..59eaeb3
--- /dev/null
+++ b/iconselect/src/main/resources/js/iconselect-config.js
@@ -0,0 +1,160 @@
+(function () {
+ AJS.$(function () {
+
+ var el = AJS.$("#cf-config-icon-options");
+ if (el.length == 0) {
+ return;
+ }
+ var fieldConfig = WRM.data.claim("com.codebarrel.iconselect:fieldConfig");
+ var customField = WRM.data.claim("com.codebarrel.iconselect:customField");
+ var defaultAvatar = WRM.data.claim("com.codebarrel.iconselect:defaultAvatar");
+
+ var iconUrl = AJS.contextPath() + "/rest/iconselectoptions/1.0/option/context/" + fieldConfig;
+
+ var viewRow = AJS.RestfulTable.Row.extend({
+ initialize: function () {
+ var instance = this;
+
+ // call super
+ AJS.RestfulTable.Row.prototype.initialize.apply(this, arguments);
+
+ this.bind(this._event.RENDER, function (el, data) {
+
+ var $el = $(this.el);
+
+ $el.find(".aui-restfultable-operations").append(
+ com.codebarrel.iconselect.config.restfulltable.operations()
+ );
+ if (data.disabled) {
+ $el.addClass("iconselect-options-config-disabled");
+ $el.addClass("disabled");
+ } else {
+ $el.addClass("iconselect-options-config-enabled");
+ }
+ $el.find(".icon-select-disable").click(function (e) {
+ JIRA.SmartAjax.makeRequest({
+ url: iconUrl + "/" + data.id + "/disable",
+ type: "POST",
+ dataType: "json",
+ complete: function (xhr, status, smartAjaxResponse) {
+
+ var smartAjaxResponseData = smartAjaxResponse.data;
+
+ if (typeof smartAjaxResponse.data === "string") {
+ smartAjaxResponseData = JSON.parse(smartAjaxResponse.data);
+ }
+
+ var isValidationError = !(xhr.status === 400 && smartAjaxResponseData && smartAjaxResponseData.errors);
+
+ if (smartAjaxResponse.successful) {
+ $el.addClass("iconselect-options-config-disabled");
+ $el.addClass("disabled");
+ $el.removeClass("iconselect-options-config-enabled");
+ } else if (isValidationError) {
+ alert("Error while disabling option. Reload and try again. If it pesists contact your administrator")
+ }
+
+ }
+ });
+ });
+ $el.find(".icon-select-enable").click(function (e) {
+ JIRA.SmartAjax.makeRequest({
+ url: iconUrl + "/"+ data.id + "/enable",
+ type: "POST",
+ dataType: "json",
+ complete: function (xhr, status, smartAjaxResponse) {
+
+ var smartAjaxResponseData = smartAjaxResponse.data;
+
+ if (typeof smartAjaxResponse.data === "string") {
+ smartAjaxResponseData = JSON.parse(smartAjaxResponse.data);
+ }
+
+ var isValidationError = !(xhr.status === 400 && smartAjaxResponseData && smartAjaxResponseData.errors);
+
+ if (smartAjaxResponse.successful) {
+ $el.addClass("iconselect-options-config-enabled");
+ $el.removeClass("iconselect-options-config-disabled");
+ $el.removeClass("disabled");
+ } else if(isValidationError) {
+ alert("Error while enabling option. Reload and try again. If it pesists contact your administrator")
+ }
+
+ }
+ });
+ });
+ });
+ }
+
+ });
+
+ //TODO Workaround. Look comments TLASSIANDEV-120
+ (function(open) {
+ XMLHttpRequest.prototype.open = function() {
+ if (arguments[1].includes('/rest/api/latest/avatar/project/system')) {
+ arguments[1] = arguments[1].replace('/rest/api/latest/avatar/project/system', '/rest/api/latest/avatar/iconselectlist/system');
+ }
+ open.apply(this, arguments);
+ };
+ })(XMLHttpRequest.prototype.open);
+
+ var iconEditView = AJS.RestfulTable.CustomEditView.extend({
+ render: function (self) {
+ var val = self.value == null ? defaultAvatar : self.value;
+ var editView = AJS.$(com.codebarrel.iconselect.config.restfulltable.iconEditView({name: self.name, value: val, contextPath: AJS.contextPath()}));
+
+ JIRA.createUniversalAvatarPickerDialog({
+ trigger: editView,
+ title: AJS.I18n.getText("icon.option.select.icon.title"),
+ projectId: customField,
+ defaultAvatarId: defaultAvatar,
+ initialSelection: val,
+ avatarSize: JIRA.Avatar.getSizeObjectFromName("xsmall"),
+ avatarType: "iconselectlist",
+ select: function (avatar, src) {
+ editView.find("img").attr("src", src);
+ editView.find("input").val(avatar.getId());
+ }
+ });
+
+ return editView;
+ }
+ });
+ var iconReadView = AJS.RestfulTable.CustomReadView.extend({
+ render: function (self) {
+ return com.codebarrel.iconselect.config.restfulltable.iconReadView({value: self.value, contextPath: AJS.contextPath()});
+ }
+ });
+
+ var conifgTable = new AJS.RestfulTable({
+ autoFocus: true,
+ el: el,
+ allowReorder: true,
+ addPosition: "bottom",
+ noEntriesMsg: AJS.I18n.getText("icon.option.configure.no.options"),
+ resources: {
+ all: iconUrl,
+ self: iconUrl
+ },
+ columns: [
+ {
+ id: "avatarId",
+ name: "avatarId",
+ header: AJS.I18n.getText("icon.option.icon"),
+ styleClass: "iconselect-options-config-avatar",
+ readView: iconReadView,
+ editView: iconEditView
+ },
+ {
+ id: "label",
+ name: "label",
+ styleClass: "iconselect-options-config-label",
+ header: AJS.I18n.getText("icon.option.label")
+ }
+ ],
+ views: {
+ row: viewRow
+ }
+ });
+ });
+})();
diff --git a/iconselect/src/main/resources/js/iconselectlist-min.js b/iconselect/src/main/resources/js/iconselectlist-min.js
new file mode 100644
index 0000000..007792b
--- /dev/null
+++ b/iconselect/src/main/resources/js/iconselectlist-min.js
@@ -0,0 +1 @@
+(function(b){function a(c){b(".iconselectlist-singleselect",c).each(function(){var d=b(this);if(d.data("aui-ss")){return}new AJS.SingleSelect({element:d})})}JIRA.bind(JIRA.Events.NEW_CONTENT_ADDED,function(f,c,d){if(d!==JIRA.CONTENT_ADDED_REASON.panelRefreshed){a(c)}})})(AJS.$);
\ No newline at end of file
diff --git a/iconselect/src/main/resources/js/iconselectlist.js b/iconselect/src/main/resources/js/iconselectlist.js
new file mode 100644
index 0000000..ed3ae02
--- /dev/null
+++ b/iconselect/src/main/resources/js/iconselectlist.js
@@ -0,0 +1,21 @@
+(function ($) {
+
+ function createSingleIconSelectList(ctx) {
+
+ $(".iconselectlist-singleselect", ctx).each(function () {
+ var $this = $(this);
+ if ($this.data("aui-ss")) return;
+
+ new AJS.SingleSelect({
+ element: $this
+ });
+ });
+ }
+
+ JIRA.bind(JIRA.Events.NEW_CONTENT_ADDED, function (e, context, reason) {
+ if (reason !== JIRA.CONTENT_ADDED_REASON.panelRefreshed) {
+ createSingleIconSelectList(context);
+ }
+ });
+
+})(AJS.$);
diff --git a/iconselect/src/main/resources/styles/iconselect-config.less b/iconselect/src/main/resources/styles/iconselect-config.less
new file mode 100644
index 0000000..7c811f0
--- /dev/null
+++ b/iconselect/src/main/resources/styles/iconselect-config.less
@@ -0,0 +1,47 @@
+#cf-config-icon-options {
+ width: 50%;
+}
+td.iconselect-options-config-avatar {
+ min-width: 10em;
+}
+td.iconselect-options-config-label {
+ min-width: 15em;
+
+}
+
+span.icon-select-avatar-edit {
+ padding-left: 4px;
+ a {
+ padding-top: 4px;
+ }
+ a:hover {
+ background-color: transparent;
+ }
+ /* Hack for IE for restful table to work. Doesn't like hidden inputs but this is ok... */
+ input {
+ width:0;
+ height:0;
+ border:0;
+ padding:0;
+ }
+
+}
+
+span.icon-select-avatar-read img {
+ margin-top: 4px;
+}
+
+td.fieldValueArea div.icon-select-view{
+ padding-top: 5px;
+ img{
+ vertical-align: text-bottom;
+ }
+}
+
+
+tr.iconselect-options-config-enabled a.icon-select-enable {
+ display: none
+}
+tr.iconselect-options-config-disabled a.icon-select-disable {
+ display: none
+}
diff --git a/iconselect/src/main/resources/styles/iconselectlist.less b/iconselect/src/main/resources/styles/iconselectlist.less
new file mode 100644
index 0000000..7277369
--- /dev/null
+++ b/iconselect/src/main/resources/styles/iconselectlist.less
@@ -0,0 +1,7 @@
+
+td.fieldValueArea div.icon-select-view{
+ padding-top: 5px;
+ img{
+ vertical-align: text-bottom;
+ }
+}
diff --git a/iconselect/src/main/resources/templates/customfields/icon-multi-select-cf/edit.vm b/iconselect/src/main/resources/templates/customfields/icon-multi-select-cf/edit.vm
new file mode 100644
index 0000000..bf0fbda
--- /dev/null
+++ b/iconselect/src/main/resources/templates/customfields/icon-multi-select-cf/edit.vm
@@ -0,0 +1,20 @@
+#disable_html_escaping()
+$!{auiparams.put("controlHeaderClass", "")}
+#customControlHeader ($action $customField.id $customField.name $fieldLayoutItem.required $displayParameters $auiparams)
+#if ($value)
+ #set ($selectedValues = $value)
+#end
+
+
+
+#customControlFooter ($action $customField.id $fieldLayoutItem.fieldDescription $displayParameters $auiparams)
+$!{auiparams.clear()}
diff --git a/iconselect/src/main/resources/templates/customfields/icon-multi-select-cf/view.vm b/iconselect/src/main/resources/templates/customfields/icon-multi-select-cf/view.vm
new file mode 100644
index 0000000..4a9d006
--- /dev/null
+++ b/iconselect/src/main/resources/templates/customfields/icon-multi-select-cf/view.vm
@@ -0,0 +1,11 @@
+#* @vtlvariable name="loggedInUser" type="com.atlassian.crowd.embedded.api.User" *#
+#* @vtlvariable name="customField" type="com.atlassian.jira.issue.fields.CustomField" *#
+#* @vtlvariable name="labelUtil" type="com.atlassian.jira.issue.label.LabelUtil" *#
+#if ($value)
+
+ #foreach ($singleValue in $value)
+
+
${singleValue.value}#if ($velocityCount != $value.size()),#end
+ #end
+
+#end
diff --git a/iconselect/src/main/resources/templates/customfields/icon-multi-select-cf/xml.vm b/iconselect/src/main/resources/templates/customfields/icon-multi-select-cf/xml.vm
new file mode 100644
index 0000000..131e529
--- /dev/null
+++ b/iconselect/src/main/resources/templates/customfields/icon-multi-select-cf/xml.vm
@@ -0,0 +1,8 @@
+#disable_html_escaping()
+#if ($value)
+ #foreach ($singleValue in $value)
+ #set ($avatarId = ${iconOptionUtil.getAvatarId($singleValue)})
+ #set ($url = "${baseurl}/secure/viewavatar?size=xsmall&avatarId=${avatarId}&avatarType=iconselectlist")
+
+ #end
+#end
diff --git a/iconselect/src/main/resources/templates/customfields/icon-multi-select-searcher/label.vm b/iconselect/src/main/resources/templates/customfields/icon-multi-select-searcher/label.vm
new file mode 100644
index 0000000..62d4000
--- /dev/null
+++ b/iconselect/src/main/resources/templates/customfields/icon-multi-select-searcher/label.vm
@@ -0,0 +1,7 @@
+#if ($value)
+ #if ($urlPrefix && $urlPrefix != '')
+ $value
+ #else
+ $value
+ #end
+#end
\ No newline at end of file
diff --git a/iconselect/src/main/resources/templates/customfields/icon-multi-select-searcher/search.vm b/iconselect/src/main/resources/templates/customfields/icon-multi-select-searcher/search.vm
new file mode 100644
index 0000000..bde7b6c
--- /dev/null
+++ b/iconselect/src/main/resources/templates/customfields/icon-multi-select-searcher/search.vm
@@ -0,0 +1,30 @@
+#disable_html_escaping()
+#if ($value)
+ #set ($selectedValues = $value)
+#end
+
+$!{auiparams.put("controlHeaderClass", "aui-field-multiselect")}
+#searcherEditHeader (${customField.id} ${customField.name})
+
+
+
+
+#searcherEditFooter (${customField.id} ${customField.descriptionProperty.viewHtml})
+$!{auiparams.clear()}
\ No newline at end of file
diff --git a/iconselect/src/main/resources/templates/customfields/icon-multi-select-searcher/view.vm b/iconselect/src/main/resources/templates/customfields/icon-multi-select-searcher/view.vm
new file mode 100644
index 0000000..96c69dc
--- /dev/null
+++ b/iconselect/src/main/resources/templates/customfields/icon-multi-select-searcher/view.vm
@@ -0,0 +1,15 @@
+#disable_html_escaping()
+#searcherHeader ($customField)
+
+ #foreach ($option in $selectedOptions)
+ #set ($name = $textutils.htmlEncode($!option.toString()))
+
+ #if ($invalidOptions.contains($option))
+ $name#commaonly($selectedOptions)
+ #else
+ $name#commaonly($selectedOptions)
+ #end
+ #end
+
+
+#searcherFooter ($customField)
\ No newline at end of file
diff --git a/iconselect/src/main/resources/templates/customfields/icon-select-cf/edit.vm b/iconselect/src/main/resources/templates/customfields/icon-select-cf/edit.vm
new file mode 100644
index 0000000..355f725
--- /dev/null
+++ b/iconselect/src/main/resources/templates/customfields/icon-select-cf/edit.vm
@@ -0,0 +1,19 @@
+#disable_html_escaping()
+#customControlHeader ($action $customField.id $customField.name $fieldLayoutItem.required $displayParameters $auiparams)
+
+#customControlFooter ($action $customField.id $fieldLayoutItem.fieldDescription $displayParameters $auiparams)
diff --git a/iconselect/src/main/resources/templates/customfields/icon-select-cf/view.vm b/iconselect/src/main/resources/templates/customfields/icon-select-cf/view.vm
new file mode 100644
index 0000000..fa432b1
--- /dev/null
+++ b/iconselect/src/main/resources/templates/customfields/icon-select-cf/view.vm
@@ -0,0 +1,9 @@
+#* @vtlvariable name="loggedInUser" type="com.atlassian.crowd.embedded.api.User" *#
+#* @vtlvariable name="customField" type="com.atlassian.jira.issue.fields.CustomField" *#
+#* @vtlvariable name="labelUtil" type="com.atlassian.jira.issue.label.LabelUtil" *#
+#if ($value)
+
+
+
${value.value}
+
+#end
\ No newline at end of file
diff --git a/iconselect/src/main/resources/templates/customfields/icon-select-cf/xml.vm b/iconselect/src/main/resources/templates/customfields/icon-select-cf/xml.vm
new file mode 100644
index 0000000..a410065
--- /dev/null
+++ b/iconselect/src/main/resources/templates/customfields/icon-select-cf/xml.vm
@@ -0,0 +1,6 @@
+#disable_html_escaping()
+#if ($value)
+ #set ($avatarId = ${iconOptionUtil.getAvatarId($value)})
+ #set ($url = "${baseurl}/secure/viewavatar?size=xsmall&avatarId=${avatarId}&avatarType=iconselectlist")
+
+#end
diff --git a/iconselect/src/main/resources/templates/iconselect-config-page.soy b/iconselect/src/main/resources/templates/iconselect-config-page.soy
new file mode 100644
index 0000000..82f0080
--- /dev/null
+++ b/iconselect/src/main/resources/templates/iconselect-config-page.soy
@@ -0,0 +1,70 @@
+{namespace com.codebarrel.iconselect.config.page}
+
+/**
+ * @param customFieldName
+ * @param fieldConfigName
+ * @param returnUrl
+ **/
+{template .main}
+ {call aui.page.document}
+ {param extraClasses}iconselect-config-page{/param}
+ {param windowTitle: getText('icon.options.conifgure.option') /}
+ {param headContent}
+
+
+
+ {/param}
+ {param content}
+ {getText('icon.options.conifgure.option.for.field', $customFieldName)}
+ {getText('icon.options.conifgure.option.description1', $fieldConfigName)}
+ {getText('icon.options.conifgure.option.description2')}
+ {getText('icon.options.configure.options.return')}
+
+
+ {getText('icon.options.conifgure.icon.attribution')} Emoji One
+ {/param}
+ {/call}
+{/template}
+
+/**
+ * @param options
+ * @param contextPath
+ **/
+{template .viewOptions}
+
+
+ {foreach $option in $options}
+ -
+
+ {$option.label}
+
+ {ifempty}
+ {getText('icon.options.conifgure.option.none')}
+ {/foreach}
+
+{/template}
+
+/**
+ **/
+{template .permissionViolation}
+ {call aui.page.document}
+ {param windowTitle: getText('perm.violation.title') /}
+ {param headContent}
+
+ {/param}
+ {param content}
+ {call aui.message.warning}
+ {param titleContent: getText('perm.violation.title') /}
+ {param content}
+ {getText('perm.violation.desc')}
+ {/param}
+ {/call}
+ {/param}
+ {/call}
+{/template}
+
+/**
+ **/
+{template .test}
+ test
+{/template}
\ No newline at end of file
diff --git a/iconselect/src/main/resources/templates/iconselect-restfulltable.soy b/iconselect/src/main/resources/templates/iconselect-restfulltable.soy
new file mode 100644
index 0000000..4e8c374
--- /dev/null
+++ b/iconselect/src/main/resources/templates/iconselect-restfulltable.soy
@@ -0,0 +1,42 @@
+{namespace com.codebarrel.iconselect.config.restfulltable}
+
+/**
+ * The edit view for the icon chooser for Icon Select Options Config
+ *
+ * @param name the field name
+ * @param value the value of the field
+ * @param contextPath the app conext path
+ */
+{template .iconEditView}
+
+
+
+
+
+
+
+
+ {getText('icon.option.select.icon')}
+ 130000000
+
+
+{/template}
+
+/**
+ * The read view for the icon chooser for Icon Select Options Config
+ *
+ * @param value the value of the field
+ * @param contextPath the app conext path
+ */
+{template .iconReadView}
+
+
+
+{/template}
+
+/**
+ **/
+{template .operations}
+ {getText('icon.option.enable')}
+ {getText('icon.option.disable')}
+{/template}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..816eae8
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,158 @@
+
+ 4.0.0
+ com.codebarrel
+ base-pom
+ 1.0.3
+ Archetype - base-pom
+ http://maven.apache.org
+
+
+ com.atlassian.jira
+ jira-api
+ ${jira.version}
+ provided
+
+
+ com.atlassian.jira
+ jira-core
+ ${jira.version}
+ provided
+
+
+ com.atlassian.plugin
+ atlassian-spring-scanner-annotation
+ ${atlassian.spring.scanner.version}
+ compile
+
+
+ com.atlassian.plugin
+ atlassian-spring-scanner-runtime
+ ${atlassian.spring.scanner.version}
+ runtime
+
+
+ javax.inject
+ javax.inject
+ 1
+ provided
+
+
+ org.slf4j
+ slf4j-api
+ 1.6.6
+ provided
+
+
+ org.mockito
+ mockito-all
+ 1.8.5
+ test
+
+
+ org.apache.httpcomponents
+ httpclient
+ 4.1.1
+ test
+
+
+ javax.servlet
+ servlet-api
+ 2.4
+ provided
+
+
+ javax.xml.bind
+ jaxb-api
+ 2.1
+ provided
+
+
+ com.atlassian.plugins.rest
+ atlassian-rest-common
+ 3.2.2
+ provided
+
+
+ com.atlassian.jira
+ jira-rest-api
+ ${jira.version}
+ provided
+
+
+ com.atlassian.sal
+ sal-api
+ 2.6.0
+ provided
+
+
+ org.apache.wink
+ wink-client
+ 1.1.3-incubating
+ test
+
+
+ org.apache.felix
+ org.apache.felix.framework
+ 4.0.0
+ provided
+
+
+
+
+
+
+
+
+
+
+
+
+ com.atlassian.activeobjects
+ activeobjects-plugin
+ ${ao.version}
+ provided
+
+
+ com.atlassian.plugins
+ atlassian-plugins-osgi-javaconfig
+ 0.2.0
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+
+
+
+
+
+
+ 8
+
+
+
+
+ pom
+
+
+ iconselect
+
+
+
+ 9.12.0
+ 8.2.0
+ 3.0.0
+ 0.2.0
+ 2.0.2
+ 1.2.13
+
+ ${project.groupId}.${project.artifactId}
+ 6.3.11
+ 6.1.13
+ 1.18.12
+
+