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 @@
|
+ key="labels.plugin_title" />
@@ -16,7 +16,7 @@
@@ -63,15 +63,14 @@
${f:h(artifact.name)} |
${f:h(artifact.version)} |
-
">
+ data-toggle="modal" data-target='#confirmToDelete-${f:h(artifact.name)}-${f:h(artifact.version).replace(".", "\\.")}'
+ value="">
-
+
- |
diff --git a/src/main/webapp/WEB-INF/view/admin/plugin/admin_plugin_installplugin.jsp b/src/main/webapp/WEB-INF/view/admin/plugin/admin_plugin_installplugin.jsp
new file mode 100644
index 000000000..ad7a3753b
--- /dev/null
+++ b/src/main/webapp/WEB-INF/view/admin/plugin/admin_plugin_installplugin.jsp
@@ -0,0 +1,89 @@
+<%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <%-- Message --%>
+
+ <%-- List --%>
+
+
+
+
+
+
+ |
+ |
+ |
+ |
+
+
+
+ ${f:h(artifact.type)} |
+ ${f:h(artifact.name)} |
+ ${f:h(artifact.version)} |
+
+
+
+
+
+ ">
+
+
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+