diff --git a/src/main/java/org/codelibs/fess/app/web/admin/plugin/AdminPluginAction.java b/src/main/java/org/codelibs/fess/app/web/admin/plugin/AdminPluginAction.java index b641853ef..b57f08beb 100644 --- a/src/main/java/org/codelibs/fess/app/web/admin/plugin/AdminPluginAction.java +++ b/src/main/java/org/codelibs/fess/app/web/admin/plugin/AdminPluginAction.java @@ -28,6 +28,7 @@ import org.codelibs.fess.app.web.base.FessAdminAction; import org.codelibs.fess.helper.PluginHelper; import org.codelibs.fess.helper.PluginHelper.Artifact; import org.codelibs.fess.helper.PluginHelper.ArtifactType; +import org.codelibs.fess.util.RenderDataUtil; import org.lastaflute.web.Execute; import org.lastaflute.web.response.HtmlResponse; import org.lastaflute.web.ruts.process.ActionRuntime; @@ -45,7 +46,7 @@ public class AdminPluginAction extends FessAdminAction { protected void setupHtmlData(final ActionRuntime runtime) { super.setupHtmlData(runtime); runtime.registerData("helpLink", systemHelper.getHelpLink(fessConfig.getOnlineHelpNamePlugin())); - // runtime.registerData("availableArtifactItems", getAllAvailableArtifacts()); + //runtime.registerData("availableArtifactItems", getAllAvailableArtifacts()); runtime.registerData("installedArtifactItems", getAllInstalledArtifacts()); } @@ -76,10 +77,32 @@ public class AdminPluginAction extends FessAdminAction { @Execute public HtmlResponse install(final InstallForm form) { - // TODO + validate(form, messages -> {}, () -> { + return asHtml(path_AdminPlugin_AdminPluginInstallpluginJsp); + }); + verifyToken(() -> { + return asHtml(path_AdminPlugin_AdminPluginInstallpluginJsp); + }); + Artifact artifact = new Artifact(form.name, form.version, form.url); + try { + pluginHelper.installArtifact(artifact); + saveInfo(messages -> messages.addSuccessInstallPlugin(GLOBAL, artifact.getFileName())); + } catch (Exception e) { + logger.warn("Failed to install " + artifact.getFileName(), e); + saveError(messages -> messages.addErrorsFailedToInstallPlugin(GLOBAL, artifact.getFileName())); + } return redirect(getClass()); } + + @Execute + public HtmlResponse installplugin() { + saveToken(); + return asHtml(path_AdminPlugin_AdminPluginInstallpluginJsp).renderWith(data -> { + RenderDataUtil.register(data, "availableArtifactItems", getAllAvailableArtifacts()); + }).useForm(InstallForm.class, op -> op.setup(form -> {})); + } + private HtmlResponse asListHtml() { return asHtml(path_AdminPlugin_AdminPluginJsp).useForm(DeleteForm.class); } @@ -107,6 +130,7 @@ public class AdminPluginAction extends FessAdminAction { item.put("type", ArtifactType.getType(artifact).getId()); item.put("name", artifact.getName()); item.put("version", artifact.getVersion()); + item.put("url", artifact.getUrl()); return item; } } diff --git a/src/main/java/org/codelibs/fess/app/web/admin/plugin/InstallForm.java b/src/main/java/org/codelibs/fess/app/web/admin/plugin/InstallForm.java index 714120a1a..62bc969e3 100644 --- a/src/main/java/org/codelibs/fess/app/web/admin/plugin/InstallForm.java +++ b/src/main/java/org/codelibs/fess/app/web/admin/plugin/InstallForm.java @@ -28,4 +28,7 @@ public class InstallForm { @Size(max = 100) public String version; + @Size(max = 200) + public String url; + } diff --git a/src/main/java/org/codelibs/fess/mylasta/action/FessHtmlPath.java b/src/main/java/org/codelibs/fess/mylasta/action/FessHtmlPath.java index a850721d4..5b3574bd8 100644 --- a/src/main/java/org/codelibs/fess/mylasta/action/FessHtmlPath.java +++ b/src/main/java/org/codelibs/fess/mylasta/action/FessHtmlPath.java @@ -291,6 +291,9 @@ public interface FessHtmlPath { /** The path of the HTML: /admin/plugin/admin_plugin.jsp */ HtmlNext path_AdminPlugin_AdminPluginJsp = new HtmlNext("/admin/plugin/admin_plugin.jsp"); + /** The path of the HTML: /admin/plugin/admin_plugin_installplugin.jsp */ + HtmlNext path_AdminPlugin_AdminPluginInstallpluginJsp = new HtmlNext("/admin/plugin/admin_plugin_installplugin.jsp"); + /** The path of the HTML: /admin/relatedcontent/admin_relatedcontent.jsp */ HtmlNext path_AdminRelatedcontent_AdminRelatedcontentJsp = new HtmlNext("/admin/relatedcontent/admin_relatedcontent.jsp"); diff --git a/src/main/java/org/codelibs/fess/mylasta/action/FessLabels.java b/src/main/java/org/codelibs/fess/mylasta/action/FessLabels.java index a30894edc..f07330711 100644 --- a/src/main/java/org/codelibs/fess/mylasta/action/FessLabels.java +++ b/src/main/java/org/codelibs/fess/mylasta/action/FessLabels.java @@ -2952,8 +2952,8 @@ public class FessLabels extends UserMessages { /** The key of the message: Reload */ public static final String LABELS_reload_doc_index_button = "{labels.reload_doc_index_button}"; - /** The key of the message: Plugin Manager */ - public static final String LABELS_plugin_management = "{labels.plugin_management}"; + /** The key of the message: Plugin */ + public static final String LABELS_plugin_title = "{labels.plugin_title}"; /** The key of the message: Plugin List */ public static final String LABELS_plugin_list_name = "{labels.plugin_list_name}"; @@ -2970,6 +2970,9 @@ public class FessLabels extends UserMessages { /** The key of the message: Delete */ public static final String LABELS_plugin_delete = "{labels.plugin_delete}"; + /** The key of the message: Install */ + public static final String LABELS_plugin_install = "{labels.plugin_install}"; + /** * Assert the property is not null. * @param property The value of the property. (NotNull) diff --git a/src/main/java/org/codelibs/fess/util/ResourceUtil.java b/src/main/java/org/codelibs/fess/util/ResourceUtil.java index 5a089f0a6..152b8d5f0 100644 --- a/src/main/java/org/codelibs/fess/util/ResourceUtil.java +++ b/src/main/java/org/codelibs/fess/util/ResourceUtil.java @@ -112,7 +112,7 @@ public class ResourceUtil { } public static Path getPluginPath(final String... names) { - return getPath("plutin", names); + return getPath("plugin", names); } public static Path getProjectPropertiesFile() { diff --git a/src/main/resources/fess_label.properties b/src/main/resources/fess_label.properties index 4c7b68614..7719d26b4 100644 --- a/src/main/resources/fess_label.properties +++ b/src/main/resources/fess_label.properties @@ -976,9 +976,10 @@ labels.download_diagnostic_logs_button=Download Logs labels.reload_doc_index=Reload Doc Index labels.reload_doc_index_button=Reload -labels.plugin_management=Plugin Manager +labels.plugin_title=Plugin labels.plugin_list_name=Plugin List labels.plugin_type=Type labels.plugin_name=Name labels.plugin_version=Version labels.plugin_delete=Delete +labels.plugin_install=Install \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/view/admin/plugin/admin_plugin.jsp b/src/main/webapp/WEB-INF/view/admin/plugin/admin_plugin.jsp index ddf068244..6ad400c29 100644 --- a/src/main/webapp/WEB-INF/view/admin/plugin/admin_plugin.jsp +++ b/src/main/webapp/WEB-INF/view/admin/plugin/admin_plugin.jsp @@ -3,7 +3,7 @@ <la:message key="labels.admin_brand_title" /> | <la:message - key="labels.plugin_management" /> + key="labels.plugin_title" /> @@ -16,7 +16,7 @@

- +

@@ -31,7 +31,7 @@
- +
@@ -63,15 +63,14 @@ ${f:h(artifact.name)} ${f:h(artifact.version)} - -