-/*
- * Copyright (C) 2001, 2002 The Mir-coders group
- *
- * This file is part of Mir.
- *
- * Mir is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * Mir is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Mir; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * In addition, as a special exception, The Mir-coders gives permission to link
- * the code of this program with the com.oreilly.servlet library, any library
- * licensed under the Apache Software License, The Sun (tm) Java Advanced
- * Imaging library (JAI), The Sun JIMI library (or with modified versions of
- * the above that use the same license as the above), and distribute linked
- * combinations including the two. You must obey the GNU General Public
- * License in all respects for all of the code used other than the above
- * mentioned libraries. If you modify this file, you may extend this exception
- * to your version of the file, but you are not obligated to do so. If you do
- * not wish to do so, delete this exception statement from your version.
- */
-
-package mircoders.servlet;
-
-import java.util.*;
-
-import javax.servlet.*;
-import javax.servlet.http.*;
-
-import mir.servlet.*;
-import mir.entity.adapter.*;
-import mir.log.*;
-
-import mircoders.global.*;
-import mircoders.localizer.*;
-import mircoders.storage.*;
-import mircoders.entity.*;
-import mircoders.module.*;
-
-public class ServletModuleLocalizer extends ServletModule {
- private static ServletModuleLocalizer instance = new ServletModuleLocalizer();
- public static ServletModule getInstance() { return instance; }
-
- private ModuleContent contentModule;
- private ModuleComment commentModule;
-
- private ServletModuleLocalizer() {
- try {
- contentModule = new ModuleContent(DatabaseContent.getInstance());
- commentModule = new ModuleComment(DatabaseComment.getInstance());
-
- logger = new LoggerWrapper("ServletModule.Localizer");
- }
- catch (Exception e) {
- logger.error("ServletModuleLocalizer could not be initialized: " + e.getMessage());
- }
- }
-
- public void commentoperation(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleException {
- String idString = aRequest.getParameter("id");
- String operationString = aRequest.getParameter("operation");
- String returnUrlString = aRequest.getParameter("returnurl");
-
- MirAdminInterfaceLocalizer.MirSimpleEntityOperation operation;
- EntityAdapter comment;
- EntityComment entity;
-
- try {
- entity = (EntityComment) commentModule.getById(idString);
-
- if (entity!=null) {
- comment = MirGlobal.localizer().dataModel().adapterModel().makeEntityAdapter("comment", entity);
- operation = MirGlobal.localizer().adminInterface().simpleCommentOperationForName(operationString);
- operation.perform(comment);
- }
-
- redirect(aResponse, returnUrlString);
- }
- catch (Throwable e) {
- e.printStackTrace(System.out);
- throw new ServletModuleException(e.getMessage());
- }
- }
-
- public void articleoperation(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleException {
- String articleIdString = aRequest.getParameter("articleid");
- String operationString = aRequest.getParameter("operation");
- String returnUrlString = aRequest.getParameter("returnurl");
-
- MirAdminInterfaceLocalizer.MirSimpleEntityOperation operation;
- EntityAdapter article;
- EntityContent entity;
-
- try {
- entity = (EntityContent) contentModule.getById(articleIdString);
-
- if (entity!=null) {
- article = MirGlobal.localizer().dataModel().adapterModel().makeEntityAdapter("content", entity);
- operation = MirGlobal.localizer().adminInterface().simpleArticleOperationForName(operationString);
- operation.perform(article);
- }
-
- redirect(aResponse, returnUrlString);
- }
- catch (Throwable e) {
- e.printStackTrace(System.out);
- throw new ServletModuleException(e.getMessage());
- }
- }
-
- public void batchedarticleoperation(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleException {
- String articleIdString = aRequest.getParameter("articleid");
- String operationString = aRequest.getParameter("operation");
- String returnUrlString = aRequest.getParameter("returnurl");
-
- MirAdminInterfaceLocalizer.MirSimpleEntityOperation operation;
- EntityAdapter article;
- EntityContent entity;
-
- try {
- entity = (EntityContent) contentModule.getById(articleIdString);
-
- if (entity!=null) {
- article = MirGlobal.localizer().dataModel().adapterModel().makeEntityAdapter("content", entity);
- operation = MirGlobal.localizer().adminInterface().simpleArticleOperationForName(operationString);
- operation.perform(article);
- }
-
- redirect(aResponse, returnUrlString);
- }
- catch (Throwable e) {
- e.printStackTrace(System.out);
- throw new ServletModuleException(e.getMessage());
- }
- }
-
+/*\r
+ * Copyright (C) 2001, 2002 The Mir-coders group\r
+ *\r
+ * This file is part of Mir.\r
+ *\r
+ * Mir is free software; you can redistribute it and/or modify\r
+ * it under the terms of the GNU General Public License as published by\r
+ * the Free Software Foundation; either version 2 of the License, or\r
+ * (at your option) any later version.\r
+ *\r
+ * Mir is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License\r
+ * along with Mir; if not, write to the Free Software\r
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\r
+ *\r
+ * In addition, as a special exception, The Mir-coders gives permission to link\r
+ * the code of this program with the com.oreilly.servlet library, any library\r
+ * licensed under the Apache Software License, The Sun (tm) Java Advanced\r
+ * Imaging library (JAI), The Sun JIMI library (or with modified versions of\r
+ * the above that use the same license as the above), and distribute linked\r
+ * combinations including the two. You must obey the GNU General Public\r
+ * License in all respects for all of the code used other than the above\r
+ * mentioned libraries. If you modify this file, you may extend this exception\r
+ * to your version of the file, but you are not obligated to do so. If you do\r
+ * not wish to do so, delete this exception statement from your version.\r
+ */\r
+\r
+package mircoders.servlet;\r
+\r
+import java.util.*;\r
+\r
+import javax.servlet.*;\r
+import javax.servlet.http.*;\r
+\r
+import mir.servlet.*;\r
+import mir.entity.adapter.*;\r
+import mir.log.*;\r
+import mir.util.*;\r
+\r
+import mircoders.global.*;\r
+import mircoders.localizer.*;\r
+import mircoders.storage.*;\r
+import mircoders.entity.*;\r
+import mircoders.module.*;\r
+\r
+public class ServletModuleLocalizer extends ServletModule {\r
+ private static ServletModuleLocalizer instance = new ServletModuleLocalizer();\r
+ public static ServletModule getInstance() { return instance; }\r
+\r
+ private ModuleContent contentModule;\r
+ private ModuleComment commentModule;\r
+\r
+ private ServletModuleLocalizer() {\r
+ try {\r
+ contentModule = new ModuleContent(DatabaseContent.getInstance());\r
+ commentModule = new ModuleComment(DatabaseComment.getInstance());\r
+\r
+ logger = new LoggerWrapper("ServletModule.Localizer");\r
+ }\r
+ catch (Exception e) {\r
+ logger.error("ServletModuleLocalizer could not be initialized: " + e.getMessage());\r
+ }\r
+ }\r
+\r
+ public void performCommentOperation(String anId, String anOperation) {\r
+ MirAdminInterfaceLocalizer.MirSimpleEntityOperation operation;\r
+ EntityAdapter comment;\r
+ EntityComment entity;\r
+\r
+ try {\r
+ entity = (EntityComment) commentModule.getById(anId);\r
+\r
+ if (entity != null) {\r
+ comment = MirGlobal.localizer().dataModel().adapterModel().makeEntityAdapter("comment", entity);\r
+ operation = MirGlobal.localizer().adminInterface().simpleCommentOperationForName(anOperation);\r
+ operation.perform(comment);\r
+ logger.info("Operation " + anOperation + " successfully performed on comment " + anId);\r
+ }\r
+ logger.error("Error while performing " + anOperation + " on comment " + anId + ": comment is null");\r
+ }\r
+ catch (Throwable e) {\r
+ logger.error("Error while performing " + anOperation + " on comment " + anId + ": " + e.getMessage());\r
+ }\r
+ }\r
+\r
+ public void commentoperation(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleException {\r
+ String commentIdString = aRequest.getParameter("id");\r
+ String operationString = aRequest.getParameter("operation");\r
+ String returnUrlString = aRequest.getParameter("returnurl");\r
+\r
+ performCommentOperation(commentIdString, operationString);\r
+\r
+ redirect(aResponse, returnUrlString);\r
+ }\r
+\r
+ public void commentoperationbatch(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleException {\r
+ String returnUrlString = aRequest.getParameter("returnurl");\r
+\r
+ String[] operations = aRequest.getParameterValues("operation");\r
+\r
+ for (int i=0; i<operations.length; i++) {\r
+ if (operations[i].length()>0) {\r
+ List parts = StringRoutines.splitString(operations[i], ";");\r
+\r
+ if (parts.size() != 2) {\r
+ logger.error("commentoperationbatch: operation string invalid: " +\r
+ operations[i]);\r
+ }\r
+ else {\r
+ String commentIdString = (String) parts.get(0);\r
+ String operationString = (String) parts.get(1);\r
+\r
+ performCommentOperation(commentIdString, operationString);\r
+ }\r
+ }\r
+ }\r
+\r
+ redirect(aResponse, returnUrlString);\r
+ }\r
+\r
+ public void performArticleOperation(String anId, String anOperation) {\r
+ MirAdminInterfaceLocalizer.MirSimpleEntityOperation operation;\r
+ EntityAdapter article;\r
+ EntityContent entity;\r
+\r
+ try {\r
+ entity = (EntityContent) contentModule.getById(anId);\r
+\r
+ if (entity != null) {\r
+ article = MirGlobal.localizer().dataModel().adapterModel().\r
+ makeEntityAdapter("content", entity);\r
+ operation = MirGlobal.localizer().adminInterface().\r
+ simpleArticleOperationForName(anOperation);\r
+ operation.perform(article);\r
+ logger.info("Operation " + anOperation + " successfully performed on article " + anId);\r
+ }\r
+ logger.error("Error while performing " + anOperation + " on article " + anId + ": article is null");\r
+ }\r
+ catch (Throwable e) {\r
+ logger.error("Error while performing " + anOperation + " on article " + anId + ": " + e.getMessage());\r
+ }\r
+ }\r
+\r
+ public void articleoperation(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleException {\r
+ String articleIdString = aRequest.getParameter("articleid");\r
+ String operationString = aRequest.getParameter("operation");\r
+ String returnUrlString = aRequest.getParameter("returnurl");\r
+\r
+ performArticleOperation(articleIdString, operationString);\r
+ redirect(aResponse, returnUrlString);\r
+ }\r
+\r
+ public void articleoperationbatch(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleException {\r
+ String returnUrlString = aRequest.getParameter("returnurl");\r
+\r
+ String[] operations = aRequest.getParameterValues("operation");\r
+\r
+ for (int i=0; i<operations.length; i++) {\r
+ if (operations[i].length()>0) {\r
+ List parts = StringRoutines.splitString(operations[i], ";");\r
+\r
+ if (parts.size() != 2) {\r
+ logger.error("articleoperationbatch: operation string invalid: " +\r
+ operations[i]);\r
+ }\r
+ else {\r
+ String articleIdString = (String) parts.get(0);\r
+ String operationString = (String) parts.get(1);\r
+\r
+ performArticleOperation(articleIdString, operationString);\r
+ }\r
+ }\r
+ }\r
+\r
+ redirect(aResponse, returnUrlString);\r
+ }\r
+\r
}
\ No newline at end of file
</tr>
</table>
</form>
-<table border="0" cellpadding="2" cellspacing="1">
- <if comments>
- <tr><td>
- <if prevurl>
- <a href="${config.actionRoot}?${prevurl}">${lang("list.previous")}</a>
- </if>
- <if nexturl>
- <a href="${config.actionRoot}?${nexturl}">${lang("list.next")}</a>
- </if>
- </td></tr>
- </if>
- <tr class="pink">
- <td><p class="head">${lang("comment.date")}</p></td>
- <td><p class="head">${lang("comment.title")}/ ${lang("comment.creator")}<br>
- ${lang("comment.text")}</p></td>
- </tr>
- <if comments>
- <list comments as entry>
- <tr <if grey=="1"><assign grey="0">class="list1"<else><assign grey="1">class="list2"</if>>
-
- <td>${entry.creationdate.formatted["dd.mm.yyyy"]}<br>
- <if entry.is_published=="0"><span class="spezialtext">hidden</span><else>-</if>
- </td>
+<if comments>
+ <if config["Mir.Localizer.Admin.ListOperationsFlavor"]!="0">
+ <form method="post" action="${config.actionRoot}">
+ <input type="hidden" name="module" value="Localizer">
+ <input type="hidden" name="do" value="commentoperationbatch">
+ <input type="hidden" name="returnurl" value="${utility.encodeHTML(thisurl)}">
+
+ <p>
+ <input class="majorbutton" type="submit" name="save" value="${lang("save")}">
+ </p>
+ </if>
+
+ <table border="0" cellpadding="2" cellspacing="1">
+ <if comments>
+ <tr><td>
+ <if prevurl>
+ <a href="${config.actionRoot}?${prevurl}">${lang("list.previous")}</a>
+ </if>
+ <if nexturl>
+ <a href="${config.actionRoot}?${nexturl}">${lang("list.next")}</a>
+ </if>
+ </td></tr>
+ </if>
+ <tr class="pink">
+ <td><p class="head">${lang("comment.date")}</p></td>
+ <td><p class="head">${lang("comment.title")}/ ${lang("comment.creator")}<br>
+ ${lang("comment.text")}</p></td>
+ </tr>
- <td>
- <span class="small">
- ${lang("comment.article")}
- <a href="${config.actionRoot}?module=Content&do=edit&id=${entry.to_content.id}">
- ${utility.encodeHTML(entry.to_content.title)}
- </a>
- <br>
- <a name="${entry.id}"></a>
- <span class="x-small">
- <if entry.status>${lang("commentstatus." + entry.status.name)} - </if>
+ <list comments as entry>
+ <tr <if grey=="1"><assign grey="0">class="list1"<else><assign grey="1">class="list2"</if>>
+
+ <td>${entry.creationdate.formatted["dd.mm.yyyy"]}<br>
+ <if entry.is_published=="0"><span class="spezialtext">hidden</span><else>-</if>
+ </td>
+
+ <td>
+ <span class="small">
+ ${lang("comment.article")}
+ <a href="${config.actionRoot}?module=Content&do=edit&id=${entry.to_content.id}">
+ ${utility.encodeHTML(entry.to_content.title)}
+ </a>
+ <br>
+ <a name="${entry.id}"></a>
+ <span class="x-small">
+ <if entry.status>${lang("commentstatus." + entry.status.name)} - </if>
+ </span>
+ <b>${entry.title}</b><br>
+
+ <if entry.creator>${lang("comment.creator")}: ${entry.creator}<br></if>
+ <span class="small">${entry.description}</span>
+ <if entry.main_url><br>URL: ${entry.main_url}</if>
+ <br>
+ <if config["Mir.Localizer.Admin.ListOperationsFlavor"]=="0">
+ <list entry.operations as op>
+ [<a href="${config.actionRoot}?module=Localizer&do=commentoperation&operation=${op}&id=${entry.id}&returnurl=${utility.encodeURI(thisurl + "#" + entry.id)}">${op}</a>]
+ </list>
+ </if>
+ <if config["Mir.Localizer.Admin.ListOperationsFlavor"]=="1">
+ <list entry.operations as op>
+ [<input type="checkbox" name="operation" value="${entry.id};${op}">${op}]
+ </list>
+ </if>
+ <if config["Mir.Localizer.Admin.ListOperationsFlavor"]=="2">
+ <select name="operation">
+ <option value="" selected> </option>
+ <list entry.operations as op>
+ <option value="${entry.id};${op}">${op}</option>
+ </list>
+ </select>
+ </if>
+ <if entry.operations>|</if>
+ <a href="${config.actionRoot}?module=Comment&do=edit&id=${entry.id}">${lang("edit")}</a>
+ </span>
+ </td>
+
+ <td>
+ <span class="text">
+ <a href="${config.actionRoot}?module=Comment&do=delete&id=${entry.id}">${lang("delete")}</a>
</span>
- <b>${entry.title}</b><br>
-
- <if entry.creator>${lang("comment.creator")}: ${entry.creator}<br></if>
- <span class="small">${entry.description}</span>
- <if entry.main_url><br>URL: ${entry.main_url}</if>
- <br><a href="${config.actionRoot}?module=Comment&do=edit&id=${entry.id}">${lang("edit")}</a>
- <if entry.operations>|</if>
-
- <list entry.operations as op>
- [<a href="${config.actionRoot}?module=Localizer&do=commentoperation&operation=${op}&id=${entry.id}&returnurl=${utility.encodeURI(thisurl + "#" + entry.id)}">${op}</a>]
- </list>
- </span>
- </td>
-
- <td>
- <span class="text">
- <a href="${config.actionRoot}?module=Comment&do=delete&id=${entry.id}">${lang("delete")}</a>
- </span>
- </td>
-
- </tr>
- </list>
+ </td>
+
+ </tr>
+ </list>
+
+ <tr class="pink">
+ <td colspan="3">${count} ${lang("records")} / ${lang("show_from_to", from, to)}</span></td>
+ </tr>
+ <tr><td>
+ <if prevurl>
+ <a href="${config.actionRoot}?${prevurl}">${lang("list.previous")}</a>
+ </if>
+ <if nexturl>
+ <a href="${config.actionRoot}?${nexturl}">${lang("list.next")}</a>
+ </if>
+ </td></tr>
+ </table>
+
+ <if config["Mir.Localizer.Admin.ListOperationsFlavor"]!="0">
+ <p>
+ <input class="majorbutton" type="submit" name="save" value="${lang("save")}">
+ </p>
+ </form>
+ </if>
- <tr class="pink">
- <td colspan="3">${count} ${lang("records")} / ${lang("show_from_to", from, to)}</span></td>
- </tr>
- <tr><td>
- <if prevurl>
- <a href="${config.actionRoot}?${prevurl}">${lang("list.previous")}</a>
- </if>
- <if nexturl>
- <a href="${config.actionRoot}?${nexturl}">${lang("list.next")}</a>
- </if>
- </td></tr>
- <else>
- <tr><td align="center">${lang("no_matches_found")}</td></tr>
- </if>
-</table>
+<else>
+ <P align="center">${lang("no_matches_found")}</p>
+</if>
<include "foot.template">
<include "head.template">
<if articles>
- <table border="0" width="100%" cellspacing="0" cellpadding="2">
- <tr class="darkgrey">
- <td><span class="witesmall">
- ${lang("content.creationdate")}<br>
- ${lang("content.modificationdate")}<br>
- ${lang("content.status")}</span></td>
- <td><span class="witesmall">
- ${lang("content.type")} - ${lang("content.title")} <br>
- ${lang("content.creator")}</span></td>
- <td width="25%"><span class="witesmall">
- ${lang("content.comment")}</span></td>
- <td class="darkgrey"> </td>
- </tr>
- <assign grey="0">
- <list articles as entry>
- <tr <if grey=="1"><assign grey="0">class="list1"<else>class="list2"<assign grey="1"></if>>
- <td>
- <span class="x-small">
- ${entry.creationdate.formatted["dd.MM.yyyy hh:mm"]}<br>
- ${entry.changedate.formatted["dd.MM.yyyy hh:mm"]}<br>
- <if entry.is_published!="0">F<else>-</if><if entry.is_html!="0">H<else>-</if>
- </span>
- </td>
- <td>
- <span class="small">
- <b>
- <span class="x-small">
- ${lang("articletypes." + entry.article_type.name)} -
- </span>
- ${entry.title}
- </b><br>
- ${entry.creator}
- <a href="${config.actionRoot}?module=Content&do=edit&id=${entry.id}&returnurl=${utility.encodeURI(thisurl)}">${lang("edit")}</a>
- |
- <list entry.operations as op>
- [<a href="${config.actionRoot}?module=Localizer&do=articleoperation&operation=${op}&articleid=${entry.id}&returnurl=${utility.encodeURI(thisurl)}">${op}</a>]
- </list>
- </span>
- </td>
- <td width="20%" <if grey=="1">class="list3"<else>class="list4"</if> valign="top"><span class="x-small">
+<if config["Mir.Localizer.Admin.ListOperationsFlavor"]!="0">
+ <form method="post" action="${config.actionRoot}">
+ <input type="hidden" name="module" value="Localizer">
+ <input type="hidden" name="do" value="articleoperationbatch">
+ <input type="hidden" name="returnurl" value="${utility.encodeHTML(thisurl)}">
- ${entry.comment} </span></td>
- <td class0"litegrey">
- <span class="text">
- <a href="${config.actionRoot}?module=Content&do=delete&id=${entry.id}&where=${utility.encodeURI(where)}&order=${utility.encodeURI(order)}&offset=${utility.encodeURI(offset)}">${lang("delete")}</a>
- </span>
- </td>
- </tr>
- </list>
- <tr class="darkgrey">
- <td colspan="4"><span class="witesmall">${count} ${lang("records")}
- / ${lang("show_from_to", from, to)}</span></td></tr>
- </table>
+ <p>
+ <input class="majorbutton" type="submit" name="save" value="${lang("save")}">
+ </p>
+</if>
+
+ <table border="0" width="100%" cellspacing="0" cellpadding="2">
+ <tr class="darkgrey">
+ <td><span class="witesmall">
+ ${lang("content.creationdate")}<br>
+ ${lang("content.modificationdate")}<br>
+ ${lang("content.status")}</span></td>
+ <td><span class="witesmall">
+ ${lang("content.type")} - ${lang("content.title")} <br>
+ ${lang("content.creator")}</span></td>
+ <td width="25%"><span class="witesmall">
+ ${lang("content.comment")}</span></td>
+ <td class="darkgrey"> </td>
+ </tr>
+ <assign grey="0">
+
+ <list articles as entry>
+ <tr <if grey=="1"><assign grey="0">class="list1"<else>class="list2"<assign grey="1"></if>>
+ <td>
+ <span class="x-small">
+ ${entry.creationdate.formatted["dd.MM.yyyy hh:mm"]}<br>
+ ${entry.changedate.formatted["dd.MM.yyyy hh:mm"]}<br>
+ <if entry.is_published!="0">F<else>-</if><if entry.is_html!="0">H<else>-</if>
+ </span>
+ </td>
+ <td>
+ <span class="small">
+ <b>
+ <span class="x-small">
+ ${lang("articletypes." + entry.article_type.name)} -
+ </span>
+ ${entry.title}
+ </b><br>
+ ${entry.creator}<br>
+
+ <if config["Mir.Localizer.Admin.ListOperationsFlavor"]=="0">
+ <list entry.operations as op>
+ [<a href="${config.actionRoot}?module=Localizer&do=articleoperation&operation=${op}&articleid=${entry.id}&returnurl=${utility.encodeURI(thisurl)}">${op}</a>]
+ </list>
+ </if>
+ <if config["Mir.Localizer.Admin.ListOperationsFlavor"]=="1">
+ <list entry.operations as op>
+ [<input type="checkbox" name="operation" value="${entry.id};${op}">${op}]
+ </list>
+ </if>
+ <if config["Mir.Localizer.Admin.ListOperationsFlavor"]=="2">
+ <select name="operation">
+ <option value="" selected> </option>
+ <list entry.operations as op>
+ <option value="${entry.id};${op}">${op}</option>
+ </list>
+ </select>
+ </if>
+ <if entry.operations>
+ |
+ </if>
+ <a href="${config.actionRoot}?module=Content&do=edit&id=${entry.id}&returnurl=${utility.encodeURI(thisurl)}">${lang("edit")}</a>
+ <a href="${config.actionRoot}?module=Comment&do=articlecomments&articleid=${entry.id}">${lang("contentlist.comments")}</a>
+ </span>
+ </td>
+ <td width="20%" <if grey=="1">class="list3"<else>class="list4"</if> valign="top"><span class="x-small">
+
+ ${entry.comment} </span></td>
+ <td class0"litegrey">
+ <span class="text">
+ <a href="${config.actionRoot}?module=Content&do=delete&id=${entry.id}&where=${utility.encodeURI(where)}&order=${utility.encodeURI(order)}&offset=${utility.encodeURI(offset)}">${lang("delete")}</a>
+ </span>
+ </td>
+ </tr>
+ </list>
+ <tr class="darkgrey">
+ <td colspan="4"><span class="witesmall">${count} ${lang("records")}
+ / ${lang("show_from_to", from, to)}</span></td></tr>
+ </table>
+<if config["Mir.Localizer.Admin.ListOperationsFlavor"]!="0">
+ <p>
+ <input class="majorbutton" type="submit" name="save" value="${lang("save")}">
+ </p>
+
+ </form>
+</if>
<P>
<if prevurl || nexturl>