X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=source%2Fmircoders%2Fservlet%2FServletModuleComment.java;h=de606b0fa583e1ba99343d012c291886eb5891e0;hb=4451d4c8c25d46e9c405e966ff6bd016a1512f4f;hp=c8ef0fa58fa945687f521d8042955aeeaef6df1d;hpb=1afc8d3728d0d841c164861bb5ac341dd2f80a1f;p=mir.git diff --git a/source/mircoders/servlet/ServletModuleComment.java b/source/mircoders/servlet/ServletModuleComment.java index c8ef0fa5..de606b0f 100755 --- a/source/mircoders/servlet/ServletModuleComment.java +++ b/source/mircoders/servlet/ServletModuleComment.java @@ -35,10 +35,10 @@ import java.util.Iterator; import java.util.List; import java.util.Locale; import java.util.Map; + import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import mir.config.MirPropertiesConfiguration; import mir.entity.adapter.EntityAdapterModel; import mir.entity.adapter.EntityIteratorAdapter; import mir.log.LoggerWrapper; @@ -62,12 +62,12 @@ import mircoders.storage.DatabaseContent; * ServletModuleComment - controls navigation for Comments * * - * @author RK + * @author the mir-coders */ public class ServletModuleComment extends ServletModule { - private ModuleContent moduleContent; + private ModuleContent moduleContent; private static ServletModuleComment instance = new ServletModuleComment(); public static ServletModule getInstance() { return instance; } @@ -75,11 +75,6 @@ public class ServletModuleComment extends ServletModule private ServletModuleComment() { logger = new LoggerWrapper("ServletModule.Comment"); try { - configuration = MirPropertiesConfiguration.instance(); - templateListString = configuration.getString("ServletModule.Comment.ListTemplate"); - templateObjektString = configuration.getString("ServletModule.Comment.ObjektTemplate"); - templateConfirmString = configuration.getString("ServletModule.Comment.ConfirmTemplate"); - mainModule = new ModuleComment(DatabaseComment.getInstance()); moduleContent = new ModuleContent(DatabaseContent.getInstance()); } @@ -88,24 +83,28 @@ public class ServletModuleComment extends ServletModule } } - public void delete(HttpServletRequest req, HttpServletResponse res) throws ServletModuleExc, ServletModuleUserExc, ServletModuleFailure { - if (!configuration.getString("Mir.Localizer.Admin.AllowDeleteArticle", "0").equals("1")) - throw new ServletModuleExc("Operation not permitted"); + public void delete(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc, ServletModuleUserExc, ServletModuleFailure { + try { + MirGlobal.accessControl().general().assertMayDeleteComments(ServletHelper.getUser(aRequest)); - super.delete(req, res); + super.delete(aRequest, aResponse); + } + catch (Throwable t) { + throw new ServletModuleFailure(t); + } } - public void edit(HttpServletRequest req, HttpServletResponse res) throws ServletModuleExc + public void edit(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc { - String idParam = req.getParameter("id"); + String idParam = aRequest.getParameter("id"); if (idParam == null) throw new ServletModuleExc("Invalid call: id not supplied "); - showComment(idParam, req, res); + editObject(aRequest, aResponse, idParam); } - public void showComment(String anId, HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc { + public void editObject(HttpServletRequest aRequest, HttpServletResponse aResponse, String anId) throws ServletModuleExc { try { HTTPRequestParser requestParser = new HTTPRequestParser(aRequest); Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, new Locale[] {getLocale(aRequest), getFallbackLocale(aRequest)}); @@ -136,17 +135,17 @@ public class ServletModuleComment extends ServletModule responseData.put("returnurl", requestParser.getParameter("returnurl")); responseData.put("thisurl", urlBuilder.getQuery()); - ServletHelper.generateResponse(aResponse.getWriter(), responseData, templateObjektString); + ServletHelper.generateResponse(aResponse.getWriter(), responseData, editGenerator); } catch (Throwable e) { throw new ServletModuleFailure(e); } } - public void attach(HttpServletRequest req, HttpServletResponse res) throws ServletModuleExc + public void attach(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc { - String mediaIdParam = req.getParameter("mid"); - String commentId = req.getParameter("commentid"); + String mediaIdParam = aRequest.getParameter("mid"); + String commentId = aRequest.getParameter("commentid"); if (commentId == null || mediaIdParam==null) throw new ServletModuleExc("smod comment :: attach :: commentid/mid missing"); @@ -158,13 +157,15 @@ public class ServletModuleComment extends ServletModule throw new ServletModuleFailure(e); } - showComment(commentId, req, res); + logAdminUsage(aRequest, commentId, "media " + mediaIdParam + " attached"); + + editObject(aRequest, aResponse, commentId); } - public void dettach(HttpServletRequest req, HttpServletResponse res) throws ServletModuleExc + public void dettach(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc { - String commentId = req.getParameter("commentid"); - String midParam = req.getParameter("mid"); + String commentId = aRequest.getParameter("commentid"); + String midParam = aRequest.getParameter("mid"); if (commentId == null) throw new ServletModuleExc("smod comment :: dettach :: commentid missing"); if (midParam == null) @@ -178,7 +179,9 @@ public class ServletModuleComment extends ServletModule throw new ServletModuleFailure(e); } - showComment(commentId, req, res); + logAdminUsage(aRequest, commentId, "media " + midParam + " deattached"); + + editObject(aRequest, aResponse, commentId); } @@ -190,7 +193,7 @@ public class ServletModuleComment extends ServletModule String order = requestParser.getParameterWithDefault("order", "webdb_create desc"); int offset = requestParser.getIntegerWithDefault("offset", 0); - returnCommentList(aRequest, aResponse, where, order, offset); + returnList(aRequest, aResponse, where, order, offset); } public void search(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc @@ -224,40 +227,39 @@ public class ServletModuleComment extends ServletModule if (searchOrder.length()>0) { if (searchOrder.equals("datedesc")) - queryBuilder.appendAscendingOrder("webdb_create"); - else if (searchOrder.equals("dateasc")) queryBuilder.appendDescendingOrder("webdb_create"); + else if (searchOrder.equals("dateasc")) + queryBuilder.appendAscendingOrder("webdb_create"); else if (searchOrder.equals("articletitle")) queryBuilder.appendAscendingOrder("(select content.title from content where content.id = comment.to_media)"); else if (searchOrder.equals("creator")) queryBuilder.appendDescendingOrder("creator"); } - returnCommentList(aRequest, aResponse, queryBuilder.getWhereClause(), queryBuilder.getOrderByClause(), 0); + returnList(aRequest, aResponse, queryBuilder.getWhereClause(), queryBuilder.getOrderByClause(), 0); } - public void articlecomments(HttpServletRequest req, HttpServletResponse res) throws ServletModuleExc + public void articlecomments(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc { - String articleIdString = req.getParameter("articleid"); + String articleIdString = aRequest.getParameter("articleid"); int articleId; try { articleId = Integer.parseInt(articleIdString); - returnCommentList( req, res, "to_media="+articleId, "webdb_create desc", 0); + returnList( aRequest, aResponse, "to_media="+articleId, "webdb_create desc", 0); } catch (Throwable e) { throw new ServletModuleFailure(e); } } - public void returnCommentList(HttpServletRequest aRequest, HttpServletResponse aResponse, + public void returnList(HttpServletRequest aRequest, HttpServletResponse aResponse, String aWhereClause, String anOrderByClause, int anOffset) throws ServletModuleExc { HTTPRequestParser requestParser = new HTTPRequestParser(aRequest); URLBuilder urlBuilder = new URLBuilder(); EntityAdapterModel model; - int nrCommentsPerPage = 20; int count; try { @@ -266,8 +268,8 @@ public class ServletModuleComment extends ServletModule Object commentList = new CachingRewindableIterator( - new EntityIteratorAdapter( aWhereClause, anOrderByClause, nrCommentsPerPage, - MirGlobal.localizer().dataModel().adapterModel(), "comment", nrCommentsPerPage, anOffset) + new EntityIteratorAdapter( aWhereClause, anOrderByClause, nrEntitiesPerListPage, + MirGlobal.localizer().dataModel().adapterModel(), "comment", nrEntitiesPerListPage, anOffset) ); responseData.put("nexturl", null); @@ -296,26 +298,64 @@ public class ServletModuleComment extends ServletModule responseData.put("offset" , new Integer(anOffset).toString()); responseData.put("thisurl" , urlBuilder.getQuery()); - if (count>=anOffset+nrCommentsPerPage) { - urlBuilder.setValue("offset", anOffset + nrCommentsPerPage); + if (count>=anOffset+nrEntitiesPerListPage) { + urlBuilder.setValue("offset", anOffset + nrEntitiesPerListPage); responseData.put("nexturl" , urlBuilder.getQuery()); } if (anOffset>0) { - urlBuilder.setValue("offset", Math.max(anOffset - nrCommentsPerPage, 0)); + urlBuilder.setValue("offset", Math.max(anOffset - nrEntitiesPerListPage, 0)); responseData.put("prevurl" , urlBuilder.getQuery()); } responseData.put("comments", commentList); responseData.put("from" , Integer.toString(anOffset+1)); responseData.put("count", Integer.toString(count)); - responseData.put("to", Integer.toString(Math.min(anOffset+nrCommentsPerPage, count))); + responseData.put("to", Integer.toString(Math.min(anOffset+nrEntitiesPerListPage, count))); - ServletHelper.generateResponse(aResponse.getWriter(), responseData, "commentlist.template"); + ServletHelper.generateResponse(aResponse.getWriter(), responseData, listGenerator); } catch (Throwable e) { throw new ServletModuleFailure(e); } } -} + public void update(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc + { + try { + HTTPRequestParser requestParser = new HTTPRequestParser(aRequest); + + String returnUrl = requestParser.getParameter("returnurl"); + + String idParam = aRequest.getParameter("id"); + if (idParam == null) + throw new ServletModuleExc("Wrong call: (id) is missing"); + + Map withValues = getIntersectingValues(aRequest, DatabaseComment.getInstance()); + + String content_id = aRequest.getParameter("id"); + + if (!withValues.containsKey("is_published")) + withValues.put("is_published","0"); + if (!withValues.containsKey("is_html")) + withValues.put("is_html","0"); + + String webdbCreate = (String) withValues.get("webdb_create"); + if (webdbCreate==null || webdbCreate.trim().length()==0) + withValues.remove("webdb_create"); + + String id = mainModule.set(withValues); + + logAdminUsage(aRequest, id, "object modified"); + + if (returnUrl!=null){ + redirect(aResponse, returnUrl); + } + else + editObject(aRequest, aResponse, idParam); + } + catch (Throwable e) { + throw new ServletModuleFailure(e); + } + } +} \ No newline at end of file