diff --git a/i18n/src/main/resources/openfire_i18n.properties b/i18n/src/main/resources/openfire_i18n.properties index 9c7bdd4151..02e4cdd504 100644 --- a/i18n/src/main/resources/openfire_i18n.properties +++ b/i18n/src/main/resources/openfire_i18n.properties @@ -3160,7 +3160,6 @@ plugin.available.file_size=File Size plugin.available.install=Install plugin.available.no_plugin=No new plugins available. plugin.available.download=Download and Install -plugin.available.open_source= Open Source Plugins plugin.available.installation.success = plugin installed successfully. plugin.available.commercial_plugins = Commercial Plugins plugin.available.outdated = The list of plugins below requires a newer version of the server. diff --git a/i18n/src/main/resources/openfire_i18n_cs_CZ.properties b/i18n/src/main/resources/openfire_i18n_cs_CZ.properties index d81d3b8cf4..cdd9ff9d98 100644 --- a/i18n/src/main/resources/openfire_i18n_cs_CZ.properties +++ b/i18n/src/main/resources/openfire_i18n_cs_CZ.properties @@ -2094,7 +2094,6 @@ plugin.available.author=Autor plugin.available.install=Instalovat plugin.available.no_plugin=Žádné doplňky nejsou dostupné. plugin.available.download=Stáhnout a nainstalovat -plugin.available.open_source= Open Source doplňky plugin.available.installation.success = doplněk úspěšně nainstalován. plugin.available.commercial_plugins = Komerční doplňky plugin.available.outdated = Níže uvedený seznam doplňků vyžaduje novější verzi Openfire. diff --git a/i18n/src/main/resources/openfire_i18n_de.properties b/i18n/src/main/resources/openfire_i18n_de.properties index b50fa42347..6c6bea3a69 100644 --- a/i18n/src/main/resources/openfire_i18n_de.properties +++ b/i18n/src/main/resources/openfire_i18n_de.properties @@ -2872,7 +2872,6 @@ plugin.available.author=Autor plugin.available.install=Installiere plugin.available.no_plugin=Keine neuen Plugins verfüegbar. plugin.available.download=Herunterladen und installieren -plugin.available.open_source=Open-Source Plugins plugin.available.installation.success=Plugin erfolgreich installiert. plugin.available.commercial_plugins=Gewerbliche Plugins plugin.available.outdated=Die untere Pluginliste erfordert eine neuere Openfire Version. diff --git a/i18n/src/main/resources/openfire_i18n_es.properties b/i18n/src/main/resources/openfire_i18n_es.properties index afd9cadbb9..19e7688341 100644 --- a/i18n/src/main/resources/openfire_i18n_es.properties +++ b/i18n/src/main/resources/openfire_i18n_es.properties @@ -2823,7 +2823,6 @@ plugin.available.file_size=Tamaño de Archivo plugin.available.install=Instalar plugin.available.no_plugin=No se han encontrados nuevos plugins. plugin.available.download=Descargar e Instalar -plugin.available.open_source= Plugins de Código Abierto plugin.available.installation.success = plugin instalado exitosamente. plugin.available.commercial_plugins = Plugins Comericales plugin.available.outdated = La lista de plugins a continuación requiere una nueva versión de Openfire. diff --git a/i18n/src/main/resources/openfire_i18n_fr.properties b/i18n/src/main/resources/openfire_i18n_fr.properties index 5e62cd5e5c..105ebd738b 100644 --- a/i18n/src/main/resources/openfire_i18n_fr.properties +++ b/i18n/src/main/resources/openfire_i18n_fr.properties @@ -1944,7 +1944,6 @@ plugin.available.author = Auteur plugin.available.install = Installer plugin.available.no_plugin = Aucun nouveau plugin disponible. plugin.available.download = Télécharger et Installer -plugin.available.open_source = Plugins Open Source plugin.available.installation.success = l'installation du plugin est terminée. plugin.available.commercial_plugins = Plugins Commerciaux plugin.available.outdated = La liste des plugins suivant nécéssite une version plus récente de Openfire. diff --git a/i18n/src/main/resources/openfire_i18n_he.properties b/i18n/src/main/resources/openfire_i18n_he.properties index 117529b4d4..a4755fd4e8 100644 --- a/i18n/src/main/resources/openfire_i18n_he.properties +++ b/i18n/src/main/resources/openfire_i18n_he.properties @@ -2846,7 +2846,6 @@ plugin.available.file_size=גודל קובץ plugin.available.install=התקן plugin.available.no_plugin=No new plugins available. plugin.available.download=הורד והתקן -plugin.available.open_source= תוספים קוד פתוח plugin.available.installation.success = תוסף הותקן בהצלחה. plugin.available.commercial_plugins = תוספים מסחריים plugin.available.outdated = The list of plugins below requires a newer version of the server. diff --git a/i18n/src/main/resources/openfire_i18n_ja_JP.properties b/i18n/src/main/resources/openfire_i18n_ja_JP.properties index e79eb73529..969fcd8cf0 100644 --- a/i18n/src/main/resources/openfire_i18n_ja_JP.properties +++ b/i18n/src/main/resources/openfire_i18n_ja_JP.properties @@ -2051,7 +2051,6 @@ plugin.available.author=作者 plugin.available.install=インストール plugin.available.no_plugin=利用可能な新規のプラグインがありません。 plugin.available.download=ダウンロードとインストール -plugin.available.open_source= オープンソースプラグイン plugin.available.installation.success = プラグインが正常にインストールされました。 plugin.available.commercial_plugins = 商用プラグイン plugin.available.outdated = 下のプラグインのリストは、より新しいバージョンのサーバーが要求されます。 diff --git a/i18n/src/main/resources/openfire_i18n_nl.properties b/i18n/src/main/resources/openfire_i18n_nl.properties index 0e25ad5b53..dfe5c13553 100644 --- a/i18n/src/main/resources/openfire_i18n_nl.properties +++ b/i18n/src/main/resources/openfire_i18n_nl.properties @@ -2827,7 +2827,6 @@ plugin.available.file_size=Bestandsgrootte plugin.available.install=Install plugin.available.no_plugin=No new plugins available. plugin.available.download=Download and Install -plugin.available.open_source= Open Source Plugins plugin.available.installation.success = plugin installed successfully. plugin.available.commercial_plugins = Commercial Plugins plugin.available.outdated = The list of plugins below requires a newer version of Openfire. diff --git a/i18n/src/main/resources/openfire_i18n_pl_PL.properties b/i18n/src/main/resources/openfire_i18n_pl_PL.properties index c6b6215eee..9c3e256eda 100644 --- a/i18n/src/main/resources/openfire_i18n_pl_PL.properties +++ b/i18n/src/main/resources/openfire_i18n_pl_PL.properties @@ -1964,7 +1964,6 @@ plugin.available.author=Autor plugin.available.install=Zainstaluj plugin.available.no_plugin=Brak nowych wtyczek. plugin.available.download=Ściągnij i zainstaluj -plugin.available.open_source= Wtyczki Open Source plugin.available.installation.success = Zainstalowano wtyczkę. plugin.available.commercial_plugins = Wtyczki komercyjne plugin.available.outdated = Lista wtyczek poniżej wymaga nowszej wersji serwera Openfire. diff --git a/i18n/src/main/resources/openfire_i18n_pt_BR.properties b/i18n/src/main/resources/openfire_i18n_pt_BR.properties index d53fd76a61..a263d0445a 100644 --- a/i18n/src/main/resources/openfire_i18n_pt_BR.properties +++ b/i18n/src/main/resources/openfire_i18n_pt_BR.properties @@ -2063,7 +2063,6 @@ plugin.available.author=Autor plugin.available.install=Instalar plugin.available.no_plugin=Nenhum novo plugin disponível. plugin.available.download=Baixar e Instalar -plugin.available.open_source= Plugins de Código Aberto plugin.available.installation.success = plugin instalado com sucesso. plugin.available.commercial_plugins = Plugins Comerciais plugin.available.outdated = A lista de plugins abaixo requerem uma versão mais nova do Openfire. diff --git a/i18n/src/main/resources/openfire_i18n_pt_PT.properties b/i18n/src/main/resources/openfire_i18n_pt_PT.properties index 4c978eee34..f5fce713ce 100644 --- a/i18n/src/main/resources/openfire_i18n_pt_PT.properties +++ b/i18n/src/main/resources/openfire_i18n_pt_PT.properties @@ -2211,7 +2211,6 @@ plugin.available.author=Autor plugin.available.install=Instalar plugin.available.no_plugin=Nenhum novo plugin disponível. plugin.available.download=Baixar e Instalar -plugin.available.open_source= Plugins de Código Aberto plugin.available.installation.success = plugin instalado com sucesso. plugin.available.commercial_plugins = Plugins Comerciais plugin.available.outdated = A lista de plugins abaixo requerem uma versão mais nova do Openfire. diff --git a/i18n/src/main/resources/openfire_i18n_ru_RU.properties b/i18n/src/main/resources/openfire_i18n_ru_RU.properties index 70066a9d4f..c4d3eaadb4 100644 --- a/i18n/src/main/resources/openfire_i18n_ru_RU.properties +++ b/i18n/src/main/resources/openfire_i18n_ru_RU.properties @@ -2570,7 +2570,6 @@ plugin.available.author=Разработчик plugin.available.install=Установить plugin.available.no_plugin=Нет новых плагинов. plugin.available.download=Скачать и установить -plugin.available.open_source= Бесплатные плагины plugin.available.installation.success = плагин успешно установлен. plugin.available.commercial_plugins = Коммерческие плагины plugin.available.outdated = Список плагинов ниже требует более новой версии сервера. diff --git a/i18n/src/main/resources/openfire_i18n_sk.properties b/i18n/src/main/resources/openfire_i18n_sk.properties index cf889973e0..0a62b5e760 100644 --- a/i18n/src/main/resources/openfire_i18n_sk.properties +++ b/i18n/src/main/resources/openfire_i18n_sk.properties @@ -1951,7 +1951,6 @@ plugin.available.author=Autor plugin.available.install=Nainštalovať plugin.available.no_plugin=Nie sú dostupné žiadne nové zásuvné moduly. plugin.available.download=Stiahnuť a nainštalovať -plugin.available.open_source= Open source zásuvné moduly plugin.available.installation.success = Zásuvný modul bol úspešne nainštalovaný. plugin.available.commercial_plugins = Komerčné zásuvné moduly plugin.available.outdated = Zoznam zásuvných modulov vyžaduje novšiu verziu servera. diff --git a/i18n/src/main/resources/openfire_i18n_uk_UA.properties b/i18n/src/main/resources/openfire_i18n_uk_UA.properties index 68b4168eec..4f816d2cc6 100644 --- a/i18n/src/main/resources/openfire_i18n_uk_UA.properties +++ b/i18n/src/main/resources/openfire_i18n_uk_UA.properties @@ -2838,7 +2838,6 @@ plugin.available.file_size=Розмір файлу plugin.available.install=Встановити plugin.available.no_plugin=Немає нових плагінів. plugin.available.download=Завантажте та встановіть -plugin.available.open_source= Плагіни з відкритим кодом plugin.available.installation.success = плагін успішно встановлено. plugin.available.commercial_plugins = Комерційні плагіни plugin.available.outdated = Для наведеного нижче списку плагінів потрібна новіша версія сервера. diff --git a/i18n/src/main/resources/openfire_i18n_zh_CN.properties b/i18n/src/main/resources/openfire_i18n_zh_CN.properties index 9205662a59..02c37f80d9 100644 --- a/i18n/src/main/resources/openfire_i18n_zh_CN.properties +++ b/i18n/src/main/resources/openfire_i18n_zh_CN.properties @@ -2897,7 +2897,6 @@ plugin.available.file_size=文件大小 plugin.available.install=安装 plugin.available.no_plugin=没有可用的新插件。 plugin.available.download=下载并安装 -plugin.available.open_source= 开源插件 plugin.available.installation.success = 插件安装成功。 plugin.available.commercial_plugins = 商用插件 plugin.available.outdated = 下面的插件列表需要较新版本的服务器。 diff --git a/xmppserver/src/main/java/org/jivesoftware/openfire/update/AvailablePlugin.java b/xmppserver/src/main/java/org/jivesoftware/openfire/update/AvailablePlugin.java index a89f126aeb..8dcab96081 100644 --- a/xmppserver/src/main/java/org/jivesoftware/openfire/update/AvailablePlugin.java +++ b/xmppserver/src/main/java/org/jivesoftware/openfire/update/AvailablePlugin.java @@ -37,8 +37,6 @@ public class AvailablePlugin extends PluginMetadata { private static final Logger Log = LoggerFactory.getLogger( AvailablePlugin.class ); - private static final DateFormat RELEASE_DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd"); - private static final DateFormat RELEASE_DATE_DISPLAY_FORMAT = DateFormat.getDateInstance(DateFormat.MEDIUM); /** * URL from where the latest version of the plugin can be downloaded. @@ -141,15 +139,7 @@ public static AvailablePlugin getInstance( Element plugin ) minJavaVersion = new JavaSpecVersion( minJavaVersionValue ); } - String releaseDate = null; - final String releaseDateString = plugin.attributeValue("releaseDate"); - if( releaseDateString!= null) { - try { - releaseDate = RELEASE_DATE_DISPLAY_FORMAT.format(RELEASE_DATE_FORMAT.parse(releaseDateString)); - } catch (final ParseException e) { - Log.warn("Unexpected exception parsing release date: " + releaseDateString, e); - } - } + final String releaseDate = plugin.attributeValue("releaseDate"); long fileSize = -1; String fileSizeValue = plugin.attributeValue("fileSize"); diff --git a/xmppserver/src/main/java/org/jivesoftware/openfire/update/UpdateManager.java b/xmppserver/src/main/java/org/jivesoftware/openfire/update/UpdateManager.java index eba3ea01e7..6440765120 100644 --- a/xmppserver/src/main/java/org/jivesoftware/openfire/update/UpdateManager.java +++ b/xmppserver/src/main/java/org/jivesoftware/openfire/update/UpdateManager.java @@ -730,6 +730,7 @@ private void saveAvailablePluginsInfo() { Element component = xml.addElement("plugin"); component.addAttribute("name", plugin.getName()); component.addAttribute("latest", plugin.getVersion() != null ? plugin.getVersion().getVersionString() : null); + component.addAttribute("releaseDate", plugin.getReleaseDate()); component.addAttribute("changelog", plugin.getChangelog() != null ? plugin.getChangelog().toExternalForm() : null ); component.addAttribute("url", plugin.getDownloadURL() != null ? plugin.getDownloadURL().toExternalForm() : null ); component.addAttribute("author", plugin.getAuthor()); diff --git a/xmppserver/src/main/webapp/available-plugins.jsp b/xmppserver/src/main/webapp/available-plugins.jsp index 270b9978cd..fb531dc7ea 100644 --- a/xmppserver/src/main/webapp/available-plugins.jsp +++ b/xmppserver/src/main/webapp/available-plugins.jsp @@ -1,6 +1,6 @@ <%@ page contentType="text/html; charset=UTF-8" %> <%-- - - Copyright (C) 2017-2023 Ignite Realtime Foundation. All rights reserved. + - Copyright (C) 2017-2025 Ignite Realtime Foundation. All rights reserved. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. @@ -114,6 +114,10 @@ padding: 5px; } +.regular:hover { + background-color: white; +} + .line-bottom-border { font-family: verdana, arial, helvetica, sans-serif; font-size: 9pt; @@ -240,8 +244,7 @@   - - + @@ -252,13 +255,13 @@ - + - - + + Plugin @@ -268,47 +271,43 @@ - + - +
+
+ +
- - "> - + target="_blank"> + - - "> - - - - - - - - - + - +
-
+
+
+ + + + - + - + - + <fmt:message key="> @@ -320,7 +319,7 @@ - ${admin:escapeHTMLTags(notInstalledPlugin.name)} + ${admin:escapeHTMLTags(notInstalledPlugin.name)} diff --git a/xmppserver/src/main/webapp/plugin-admin.jsp b/xmppserver/src/main/webapp/plugin-admin.jsp index 19945d0c78..ad218a9050 100644 --- a/xmppserver/src/main/webapp/plugin-admin.jsp +++ b/xmppserver/src/main/webapp/plugin-admin.jsp @@ -1,6 +1,6 @@ <%@ page contentType="text/html; charset=UTF-8" %> <%-- - - Copyright (C) 2005-2008 Jive Software, 2017-2024 Ignite Realtime Foundation. All rights reserved. + - Copyright (C) 2005-2008 Jive Software, 2017-2025 Ignite Realtime Foundation. All rights reserved. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. @@ -267,6 +267,10 @@ tr.regular td { border-color: #e3e3e3; } +tr.regular:hover { + background-color: white; +} + tr.update td { font-size: 8pt; background: #E7FBDE; @@ -314,6 +318,9 @@ tr.lowerhalf > td:last-child { border-right-width: 1px; border-bottom-width: 1px; } +.table-data:hover { + background-color: white; +} @@ -384,9 +391,8 @@ tr.lowerhalf > td:last-child {
- - - + + @@ -439,48 +445,44 @@ tr.lowerhalf > td:last-child { - - - - - - - - - - -
  - - + +
+ +
+
"> - - - - - "> - + target="_blank"> +
- - - - + id="${update.hashCode()}-version"> - - + +
+ + + + +
+ + " ><fmt:message key= ${plugin.name}"> + ')) { location.replace('plugin-admin.jsp?csrf=${csrf}&deleteplugin=${admin:urlEncode( plugin.canonicalName )}'); } " title="" ><fmt:message key= ${plugin.name}"> @@ -500,11 +502,7 @@ tr.lowerhalf > td:last-child {