Implement template remove.
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/TemplateRemove.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/TemplateRemove.java
deleted file mode 100644
index 80ae5af..0000000
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/TemplateRemove.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. The ASF licenses this file to You
- * under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License. For additional information regarding
- * copyright in this work, please see the NOTICE file in the top level
- * directory of this distribution.
- */
-
-package org.apache.roller.weblogger.ui.struts2.editor;
-
-import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.roller.weblogger.WebloggerException;
-import org.apache.roller.weblogger.business.WeblogManager;
-import org.apache.roller.weblogger.business.WebloggerFactory;
-import org.apache.roller.weblogger.pojos.ThemeTemplate;
-import org.apache.roller.weblogger.pojos.Weblog;
-import org.apache.roller.weblogger.pojos.WeblogTemplate;
-import org.apache.roller.weblogger.pojos.WeblogTheme;
-import org.apache.roller.weblogger.ui.struts2.util.UIAction;
-import org.apache.roller.weblogger.util.Utilities;
-import org.apache.roller.weblogger.util.cache.CacheManager;
-import org.apache.struts2.convention.annotation.AllowedMethods;
-
-/**
- * Remove a template.
- */
-// TODO: make this work @AllowedMethods({"execute","remove","cancel"})
-public class TemplateRemove extends UIAction {
-
- private static Log log = LogFactory.getLog(TemplateRemove.class);
-
- // id of template to remove
- private String removeId = null;
-
- // template object that we will remove
- private WeblogTemplate template = null;
-
- public TemplateRemove() {
- this.actionName = "templateRemove";
- this.desiredMenu = "editor";
- this.pageTitle = "editPages.title.removeOK";
- }
-
- @Override
- public void myPrepare() {
- if (StringUtils.isNotEmpty(getRemoveId())) {
- try {
- setTemplate(
- WebloggerFactory.getWeblogger().getWeblogManager().getTemplate(getRemoveId()));
- } catch (WebloggerException ex) {
- log.error("Error looking up template by id - " + getRemoveId(), ex);
- addError("editPages.remove.notFound", getRemoveId());
- }
- }
- }
-
- /**
- * Display the remove template confirmation.
- */
- @Override
- public String execute() {
- return "confirm";
- }
-
- /**
- * Remove a new template.
- */
- public String remove() {
-
- if (getTemplate() != null) {
- try {
- if (!getTemplate().isRequired()
- || !WeblogTheme.CUSTOM.equals(getActionWeblog().getEditorTheme())) {
-
- WeblogManager mgr = WebloggerFactory.getWeblogger().getWeblogManager();
-
- // if weblog template remove custom style sheet also
- if (getTemplate().getName().equals(WeblogTemplate.DEFAULT_PAGE)) {
-
- Weblog weblog = getActionWeblog();
-
- ThemeTemplate stylesheet = getActionWeblog().getTheme().getStylesheet();
-
- // Delete style sheet if the same name
- if (stylesheet != null
- && getActionWeblog().getTheme().getStylesheet() != null
- && stylesheet.getLink().equals(
- getActionWeblog().getTheme().getStylesheet().getLink())) {
-
- // Same so OK to delete
- WeblogTemplate css =
- mgr.getTemplateByLink(getActionWeblog(), stylesheet.getLink());
-
- if (css != null) {
- mgr.removeTemplate(css);
- }
- }
- }
-
- // notify cache
- CacheManager.invalidate(getTemplate());
- mgr.removeTemplate(getTemplate());
- WebloggerFactory.getWeblogger().flush();
-
- return SUCCESS;
- } else {
- addError("editPages.remove.requiredTemplate");
- }
-
- } catch (Exception ex) {
- log.error("Error removing page - " + getRemoveId(), ex);
- addError("editPages.remove.error");
- }
- }
-
- return "confirm";
- }
-
-
- @Override
- public String cancel() {
- return CANCEL;
- }
-
- public String getRemoveId() {
- return removeId;
- }
-
- public void setRemoveId(String removeId) {
- this.removeId = removeId;
- }
-
- public WeblogTemplate getTemplate() {
- return template;
- }
-
- public void setTemplate(WeblogTemplate template) {
- this.template = template;
- }
-
-}
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Templates.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Templates.java
index ff92a8a..d9eb4d9 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Templates.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Templates.java
@@ -23,14 +23,14 @@
import org.apache.commons.logging.LogFactory;
import org.apache.roller.util.RollerConstants;
import org.apache.roller.weblogger.WebloggerException;
+import org.apache.roller.weblogger.business.WeblogManager;
import org.apache.roller.weblogger.business.WebloggerFactory;
-import org.apache.roller.weblogger.pojos.CustomTemplateRendition;
+import org.apache.roller.weblogger.pojos.*;
import org.apache.roller.weblogger.pojos.TemplateRendition.RenditionType;
import org.apache.roller.weblogger.pojos.TemplateRendition.TemplateLanguage;
import org.apache.roller.weblogger.pojos.ThemeTemplate.ComponentType;
-import org.apache.roller.weblogger.pojos.WeblogTemplate;
-import org.apache.roller.weblogger.pojos.WeblogTheme;
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
+import org.apache.roller.weblogger.util.cache.CacheManager;
import org.apache.struts2.convention.annotation.AllowedMethods;
import java.util.ArrayList;
@@ -58,6 +58,9 @@
private String newTmplName = null;
private ComponentType newTmplAction = null;
+ // id of template to remove
+ private String removeId = null;
+
public Templates() {
this.actionName = "templates";
this.desiredMenu = "editor";
@@ -201,6 +204,68 @@
return execute();
}
+ /**
+ * Remove a new template.
+ */
+ public String remove() {
+
+ WeblogTemplate template = null;
+ try {
+ template = WebloggerFactory.getWeblogger().getWeblogManager().getTemplate(getRemoveId());
+ } catch (WebloggerException e) {
+ addError("Error deleting template - check Roller logs");
+ }
+
+ if (template != null) {
+ try {
+ if (!template.isRequired()
+ || !WeblogTheme.CUSTOM.equals(getActionWeblog().getEditorTheme())) {
+
+ WeblogManager mgr = WebloggerFactory.getWeblogger().getWeblogManager();
+
+ // if weblog template remove custom style sheet also
+ if (template.getName().equals(WeblogTemplate.DEFAULT_PAGE)) {
+
+ Weblog weblog = getActionWeblog();
+
+ ThemeTemplate stylesheet = getActionWeblog().getTheme().getStylesheet();
+
+ // Delete style sheet if the same name
+ if (stylesheet != null
+ && getActionWeblog().getTheme().getStylesheet() != null
+ && stylesheet.getLink().equals(
+ getActionWeblog().getTheme().getStylesheet().getLink())) {
+
+ // Same so OK to delete
+ WeblogTemplate css =
+ mgr.getTemplateByLink(getActionWeblog(), stylesheet.getLink());
+
+ if (css != null) {
+ mgr.removeTemplate(css);
+ }
+ }
+ }
+
+ // notify cache
+ CacheManager.invalidate(template);
+ mgr.removeTemplate(template);
+ WebloggerFactory.getWeblogger().flush();
+
+ } else {
+ addError("editPages.remove.requiredTemplate");
+ }
+
+ } catch (Exception ex) {
+ log.error("Error removing page - " + getRemoveId(), ex);
+ addError("editPages.remove.error");
+ }
+ } else {
+ addError("editPages.remove.error");
+ }
+
+ return execute();
+ }
+
// validation when adding a new template
private void myValidate() {
@@ -270,4 +335,11 @@
this.newTmplAction = newTmplAction;
}
+ public String getRemoveId() {
+ return removeId;
+ }
+
+ public void setRemoveId(String removeId) {
+ this.removeId = removeId;
+ }
}
diff --git a/app/src/main/resources/struts.xml b/app/src/main/resources/struts.xml
index 63d5bb3..bc92b4b 100644
--- a/app/src/main/resources/struts.xml
+++ b/app/src/main/resources/struts.xml
@@ -556,9 +556,9 @@
<action name="templates"
class="org.apache.roller.weblogger.ui.struts2.editor.Templates">
<result name="list" type="tiles">.Templates</result>
- <allowed-methods>add,execute</allowed-methods>
+ <allowed-methods>add,remove,execute</allowed-methods>
</action>
-
+
<action name="templateEdit"
class="org.apache.roller.weblogger.ui.struts2.editor.TemplateEdit">
<result name="list" type="chain">templates</result>
diff --git a/app/src/main/webapp/WEB-INF/jsps/editor/TemplateRemove.jsp b/app/src/main/webapp/WEB-INF/jsps/editor/TemplateRemove.jsp
deleted file mode 100644
index 67d26cb..0000000
--- a/app/src/main/webapp/WEB-INF/jsps/editor/TemplateRemove.jsp
+++ /dev/null
@@ -1,55 +0,0 @@
-<%--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. The ASF licenses this file to You
- under the Apache License, Version 2.0 (the "License"); you may not
- use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License. For additional information regarding
- copyright in this work, please see the NOTICE file in the top level
- directory of this distribution.
---%>
-<%@ include file="/WEB-INF/jsps/taglibs-struts2.jsp" %>
-
-<p class="subtitle">
- <s:text name="pageRemove.subtitle" />
-</p>
-
-<p>
- <s:text name="pageRemove.youSure">
- <s:param value="template.name" />
- </s:text>
- <br/>
- <br/>
- <span class="warning">
- <s:text name="pageRemoves.youSureWarning" />
- </span>
-</p>
-
-<p>
- <s:text name="pageRemove.pageId" /> = [<s:property value="template.id" />]
- <br />
- <s:text name="pageRemove.pageName" /> = [<s:property value="template.name" />]
-</p>
-
-<table>
- <tr>
- <td>
- <s:form action="templateRemove!remove">
- <s:hidden name="salt" />
-
- <s:hidden name="removeId" />
- <s:hidden name="weblog" value="%{actionWeblog.handle}" />
-
- <s:submit value="%{getText('generic.yes')}" />
- <s:submit value="%{getText('generic.no')}" action="templateRemove!cancel" />
- </s:form>
- </td>
- </tr>
-</table>
diff --git a/app/src/main/webapp/WEB-INF/jsps/editor/Templates.jsp b/app/src/main/webapp/WEB-INF/jsps/editor/Templates.jsp
index fefbab6..05bd6cb 100644
--- a/app/src/main/webapp/WEB-INF/jsps/editor/Templates.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/editor/Templates.jsp
@@ -30,7 +30,7 @@
<p><s:text name="pagesForm.themesReminder"><s:param value="actionWeblog.editorTheme"/></s:text></p>
</s:if>
-<s:form action="templateRemove!remove" theme="bootstrap" cssClass="form-horizontal">
+<s:form action="templates!remove" theme="bootstrap" cssClass="form-horizontal">
<s:hidden name="salt"/>
<s:hidden name="weblog" value="%{actionWeblog.handle}"/>
<s:hidden name="removeId" id="removeId"/>
@@ -104,8 +104,7 @@
function confirmTemplateDelete(templateId, templateName) {
$('#removeId').val(templateId);
if (window.confirm('<s:text name="pageRemove.confirm"/>: \'' + templateName + '\'?')) {
- document.templateRemove.action = "<s:url action='templateRemove!remove' />";
- document.templateRemove.submit();
+ document.getElementById("templates").submit();
}
}
</script>
diff --git a/app/src/main/webapp/WEB-INF/jsps/editor/TemplatesSidebar.jsp b/app/src/main/webapp/WEB-INF/jsps/editor/TemplatesSidebar.jsp
index 38e3df0..a5bdc60 100644
--- a/app/src/main/webapp/WEB-INF/jsps/editor/TemplatesSidebar.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/editor/TemplatesSidebar.jsp
@@ -20,7 +20,7 @@
<h3><s:text name="pagesForm.addNewPage"/></h3>
<hr size="1" noshade="noshade"/>
-<s:form action="templates!add" theme="bootstrap" cssClass="form-horizontal">
+<s:form action="templates!add" theme="bootstrap" cssClass="form-horizontal" id="templateAdd">
<s:hidden name="salt"/>
<s:hidden name="weblog"/>