Макрос Confluence для отображения установленных пользователем приложений Confluence - malikovalibek/groovyForJira GitHub Wiki
Обзор При работе в Confluence полезно знать, какие приложения установлены и какие возможности они предоставляют. Этот сценарий предоставляет макрос для отображения списка приложений, установленных пользователем на своем экземпляре, и макросов, которые они предоставляют.
пример Я руководитель проекта, готовлю отчет. Я хотел бы увидеть полный список всех установленных приложений и их макросов, чтобы я мог использовать все доступные возможности для настройки и улучшения своего отчета.
import com.atlassian.confluence.xhtml.api.XhtmlContent import com.atlassian.plugin.PluginAccessor import com.atlassian.plugin.PluginState import com.atlassian.plugin.metadata.PluginMetadataManager import com.atlassian.sal.api.component.ComponentLocator import groovy.xml.MarkupBuilder import groovyx.net.http.HTTPBuilder import groovyx.net.http.HttpResponseException import org.json.JSONObject
// Plugin Manager and Accessor def pluginAccessor = ComponentLocator.getComponent(PluginAccessor) def pluginMetadata = ComponentLocator.getComponent(PluginMetadataManager) def plugins = pluginAccessor.plugins
// HTTP Request to Marketplace def httpBuilder = new HTTPBuilder("https://marketplace.atlassian.com")
// Content access def xhtmlContent = ComponentLocator.getComponent(XhtmlContent)
def writer = new StringWriter() def builder = new MarkupBuilder(writer)
builder.table { tbody { tr { th { p("App Name") } th { p("Vendor") } th { p("Installed Version") } th { p("Status") } th { p("License Type") } th { p("Expiry Date") } th { p("Marketplace Version") } th { p("Description") } }
plugins.each { plugin -> if (pluginMetadata.isUserInstalled(plugin)) { def addonsData try { addonsData = httpBuilder.get( path: "/rest/latest/addons/${plugin.key}" ) as JSONObject } catch (HttpResponseException ex) { addonsData = new JSONObject("{}") }
def latestVersionData try { latestVersionData = httpBuilder.get( path: "/rest/latest/addons/${plugin.key}/versions/latest" ) as JSONObject } catch (HttpResponseException ex) { latestVersionData = new JSONObject("{}") }
tr { td { p(plugin.name) } td { p(plugin.pluginInformation.vendorName) } td { p(plugin.pluginInformation.version) } if (plugin.pluginState == PluginState.ENABLED) { td { p { "ac:emoticon"("ac:name": "tick") } } } else { td { p("") } } td { p("") } td { p("") } if (latestVersionData.has("name")) { td { p(latestVersionData["name"]) } } else { td { p("") } } if (addonsData.has("summary")) { td { p(addonsData["summary"]) } } else { td { p("") } } } } } } }
xhtmlContent.convertStorageToView(writer.toString(), context)