X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=source%2Fmircoders%2Fservlet%2FServletModuleContent.java;h=d09fd7f7960801bcc4364b8c530087704edd4fea;hb=95c2e3a74f492f6f61d4dbe8bb47996f43af0627;hp=912df40f9ba1d75b12542c3f9387cb96894c46d7;hpb=d1fe8297d584e69a5d2bed84cc979d8bdd13cb31;p=mir.git diff --git a/source/mircoders/servlet/ServletModuleContent.java b/source/mircoders/servlet/ServletModuleContent.java index 912df40f..d09fd7f7 100755 --- a/source/mircoders/servlet/ServletModuleContent.java +++ b/source/mircoders/servlet/ServletModuleContent.java @@ -30,58 +30,58 @@ package mircoders.servlet; +import java.util.ArrayList; +import java.util.Collections; import java.util.GregorianCalendar; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Locale; import java.util.Map; -import java.util.Vector; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import mir.entity.adapter.EntityAdapter; import mir.entity.adapter.EntityAdapterModel; import mir.entity.adapter.EntityIteratorAdapter; +import mir.entity.adapter.EntityAdapterEngine; +import mir.generator.Generator; import mir.log.LoggerWrapper; import mir.misc.StringUtil; import mir.servlet.ServletModule; import mir.servlet.ServletModuleExc; import mir.servlet.ServletModuleFailure; -import mir.util.CachingRewindableIterator; import mir.util.HTTPRequestParser; import mir.util.JDBCStringRoutines; import mir.util.SQLQueryBuilder; import mir.util.StringRoutines; import mir.util.URLBuilder; -import mircoders.entity.*; +import mircoders.entity.EntityContent; +import mircoders.entity.EntityUsers; import mircoders.global.MirGlobal; import mircoders.module.ModuleContent; import mircoders.storage.DatabaseContent; import mircoders.storage.DatabaseContentToTopics; -/* - * ServletModuleContent - - * deliver html for the article admin form. - * - * @version $Id: ServletModuleContent.java,v 1.52.2.14 2004/01/18 17:31:00 zapata Exp $ - * @author rk, mir-coders - * +/** + * Article admin interface code */ -public class ServletModuleContent extends ServletModule -{ +public class ServletModuleContent extends ServletModule { private static ServletModuleContent instance = new ServletModuleContent(); public static ServletModule getInstance() { return instance; } private static ModuleContent contentModule; private ServletModuleContent() { super(); + propagatedParameters.add("selectarticleurl"); logger = new LoggerWrapper("ServletModule.Content"); try { - contentModule = new ModuleContent(DatabaseContent.getInstance()); + definition = "content"; + contentModule = new ModuleContent(); mainModule = contentModule; } catch (Throwable e) { @@ -89,18 +89,6 @@ public class ServletModuleContent extends ServletModule } } - public void list(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc - { - HTTPRequestParser requestParser = new HTTPRequestParser(aRequest); - - String where = requestParser.getParameter("where"); - String order = requestParser.getParameterWithDefault("order", "webdb_create desc"); - int offset = requestParser.getIntegerWithDefault("offset", 0); - String selectArticleUrl = requestParser.getParameter("selectarticleurl"); - - returnList(aRequest, aResponse, where, order, offset, selectArticleUrl); - } - public void search(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc, ServletModuleFailure { try { HTTPRequestParser requestParser = new HTTPRequestParser(aRequest); @@ -110,7 +98,6 @@ public class ServletModuleContent extends ServletModule String searchOrder = requestParser.getParameterWithDefault("searchorder", ""); String searchispublished = requestParser.getParameterWithDefault("searchispublished", ""); String searchArticleType = requestParser.getParameterWithDefault("searcharticletype", ""); - String selectArticleUrl = requestParser.getParameter("selectarticleurl"); if (searchValue.length()>0) { if (searchField.equals("id")) @@ -148,7 +135,7 @@ public class ServletModuleContent extends ServletModule queryBuilder.appendAscendingOrder("creator"); } - returnList(aRequest, aResponse, queryBuilder.getWhereClause(), queryBuilder.getOrderByClause(), 0, selectArticleUrl); + returnList(aRequest, aResponse, queryBuilder.getWhereClause(), queryBuilder.getOrderByClause(), 0); } catch (Throwable e) { throw new ServletModuleFailure(e); @@ -159,8 +146,7 @@ public class ServletModuleContent extends ServletModule editObject(aRequest, aResponse, null); } - public void insert(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc - { + public void insert(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc { try { Map withValues = getIntersectingValues(aRequest, DatabaseContent.getInstance()); @@ -181,8 +167,6 @@ public class ServletModuleContent extends ServletModule String id = mainModule.add(withValues); logAdminUsage(aRequest, id, "object added"); - List topics; - DatabaseContentToTopics.getInstance().setTopics(id, aRequest.getParameterValues("to_topic")); editObject(aRequest, aResponse, id); @@ -192,8 +176,7 @@ public class ServletModuleContent extends ServletModule } } - public void edit(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc - { + public void edit(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc { String idParam = aRequest.getParameter("id"); if (idParam == null) throw new ServletModuleExc("Invalid call: id not supplied "); @@ -202,10 +185,8 @@ public class ServletModuleContent extends ServletModule /** * Attaches media to an article - * */ - public void attach(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc - { + public void attach(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc { String mediaIdParam = aRequest.getParameter("mid"); String articleId = aRequest.getParameter("articleid"); @@ -263,9 +244,7 @@ public class ServletModuleContent extends ServletModule { HTTPRequestParser requestParser = new HTTPRequestParser(aRequest); - String returnUrl = requestParser.getParameter("returnurl"); - - String idParam = aRequest.getParameter("id"); + String idParam = requestParser.getParameter("id"); if (idParam == null) throw new ServletModuleExc("Wrong call: (id) is missing"); @@ -286,9 +265,7 @@ public class ServletModuleContent extends ServletModule { HTTPRequestParser requestParser = new HTTPRequestParser(aRequest); - String returnUrl = requestParser.getParameter("returnurl"); - - String idParam = aRequest.getParameter("id"); + String idParam = requestParser.getParameter("id"); if (idParam == null) throw new ServletModuleExc("Wrong call: (id) is missing"); @@ -309,9 +286,7 @@ public class ServletModuleContent extends ServletModule { HTTPRequestParser requestParser = new HTTPRequestParser(aRequest); - String returnUrl = requestParser.getParameter("returnurl"); - - String idParam = aRequest.getParameter("id"); + String idParam = requestParser.getParameter("id"); if (idParam == null) throw new ServletModuleExc("Wrong call: (id) is missing"); @@ -333,9 +308,7 @@ public class ServletModuleContent extends ServletModule try { HTTPRequestParser requestParser = new HTTPRequestParser(aRequest); - String returnUrl = requestParser.getParameter("returnurl"); - - String idParam = aRequest.getParameter("id"); + String idParam = requestParser.getParameter("id"); if (idParam == null) throw new ServletModuleExc("Wrong call: (id) is missing"); @@ -344,8 +317,6 @@ public class ServletModuleContent extends ServletModule Map withValues = getIntersectingValues(aRequest, DatabaseContent.getInstance()); - String content_id = aRequest.getParameter("id"); - withValues.put("is_produced", "0"); if (!withValues.containsKey("is_published")) withValues.put("is_published","0"); @@ -407,7 +378,7 @@ public class ServletModuleContent extends ServletModule responseData.put("mayUnlock", new Boolean(MirGlobal.accessControl().article().mayUnlockArticle(user, id))); } else { - List fields = DatabaseContent.getInstance().getFields(); + List fields = DatabaseContent.getInstance().getFieldNames(); responseData.put("new", Boolean.TRUE); article = new HashMap(); Iterator i = fields.iterator(); @@ -426,7 +397,7 @@ public class ServletModuleContent extends ServletModule } responseData.put("article", article); - List topicsList = new Vector(); + List topicsList = new ArrayList(); String[] topicCategories = configuration.getStringArray("Mir.Localizer.Admin.TopicLists"); @@ -435,18 +406,15 @@ public class ServletModuleContent extends ServletModule categoryMap.put("key", "topic"); categoryMap.put("listtype", "0"); categoryMap.put("listparameter", "3"); - categoryMap.put("items", - new EntityIteratorAdapter("", "title", - 20, MirGlobal.localizer().dataModel().adapterModel(), "topic")); + categoryMap.put("items", EntityAdapterEngine.retrieveAdapterList(model, "topic", "", "title", -1, 0)); topicsList.add(categoryMap); } - else - { - + else { for (int i = 0; i < topicCategories.length; i++) { try { Map categoryMap = new HashMap(); List parts = StringRoutines.splitString(topicCategories[i], ":"); + String key = null; String listtype = "0"; String listparameter = "5"; @@ -468,9 +436,7 @@ public class ServletModuleContent extends ServletModule categoryMap.put("key", key); categoryMap.put("listtype", listtype); categoryMap.put("listparameter", listparameter); - categoryMap.put("items", - new EntityIteratorAdapter(where, order, - 20, MirGlobal.localizer().dataModel().adapterModel(), "topic")); + categoryMap.put("items", EntityAdapterEngine.retrieveAdapterList(model, "topic", where, order, -1, 0)); topicsList.add(categoryMap); } } @@ -492,91 +458,7 @@ public class ServletModuleContent extends ServletModule } } - public void returnList(HttpServletRequest aRequest, HttpServletResponse aResponse, - String aWhereClause, String anOrderByClause, int anOffset) throws ServletModuleExc { - this.returnList(aRequest, aResponse, aWhereClause, anOrderByClause, anOffset, null); - } - - public void returnList( - HttpServletRequest aRequest, - HttpServletResponse aResponse, - String aWhereClause, - String anOrderByClause, - int anOffset, - String aSelectArticleUrl) throws ServletModuleExc { - - HTTPRequestParser requestParser = new HTTPRequestParser(aRequest); - URLBuilder urlBuilder = new URLBuilder(); - EntityAdapterModel model; - int count; - - try { - Map responseData = ServletHelper.makeGenerationData(aRequest, aResponse, new Locale[] { getLocale(aRequest), getFallbackLocale(aRequest)}); - model = MirGlobal.localizer().dataModel().adapterModel(); - - Object articleList = - new CachingRewindableIterator( - new EntityIteratorAdapter( aWhereClause, anOrderByClause, nrEntitiesPerListPage, - MirGlobal.localizer().dataModel().adapterModel(), "content", nrEntitiesPerListPage, anOffset) - ); - - responseData.put("nexturl", null); - responseData.put("prevurl", null); - - count=mainModule.getSize(aWhereClause); - - urlBuilder.setValue("module", "Content"); - urlBuilder.setValue("do", "list"); - urlBuilder.setValue("where", aWhereClause); - urlBuilder.setValue("order", anOrderByClause); - - - urlBuilder.setValue("searchfield", requestParser.getParameter("searchfield")); - urlBuilder.setValue("searchvalue", requestParser.getParameter("searchvalue")); - urlBuilder.setValue("searchispublished", requestParser.getParameter("searchispublished")); - urlBuilder.setValue("searchorder", requestParser.getParameter("searchorder")); - urlBuilder.setValue("searcharticletype", requestParser.getParameter("searcharticletype")); - urlBuilder.setValue("selectarticleurl", aSelectArticleUrl); - - responseData.put("searchfield", requestParser.getParameter("searchfield")); - responseData.put("searchvalue", requestParser.getParameter("searchvalue")); - responseData.put("searchispublished", requestParser.getParameter("searchispublished")); - responseData.put("searchorder", requestParser.getParameter("searchorder")); - responseData.put("searcharticletype", requestParser.getParameter("searcharticletype")); - responseData.put("selectarticleurl", aSelectArticleUrl); - - urlBuilder.setValue("offset", anOffset); - responseData.put("offset" , new Integer(anOffset).toString()); - responseData.put("thisurl" , urlBuilder.getQuery()); - - if (count>=anOffset+nrEntitiesPerListPage) { - urlBuilder.setValue("offset", (anOffset + nrEntitiesPerListPage)); - responseData.put("nexturl" , urlBuilder.getQuery()); - } - - if (anOffset>0) { - urlBuilder.setValue("offset", Math.max(anOffset - nrEntitiesPerListPage, 0)); - responseData.put("prevurl" , urlBuilder.getQuery()); - } - - responseData.put("articles", articleList); - - responseData.put("from" , Integer.toString(anOffset+1)); - responseData.put("count", Integer.toString(count)); - responseData.put("to", Integer.toString(Math.min(anOffset+nrEntitiesPerListPage, count))); - responseData.put("offset" , Integer.toString(anOffset)); - responseData.put("order", anOrderByClause); - responseData.put("where" , aWhereClause); - - ServletHelper.generateResponse(aResponse.getWriter(), responseData, listGenerator); - } - catch (Throwable e) { - throw new ServletModuleFailure(e); - } - } - - public void selectparent(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc - { + public void selectparent(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc { try { HTTPRequestParser requestParser = new HTTPRequestParser(aRequest); URLBuilder urlBuilder = new URLBuilder(); @@ -586,15 +468,15 @@ public class ServletModuleContent extends ServletModule urlBuilder.setValue("childid", requestParser.getParameter("id")); urlBuilder.setValue("returnurl", requestParser.getParameter("returnurl")); - returnList(aRequest, aResponse, "", "", 0, urlBuilder.getQuery()); + returnList(aRequest, aResponse, "", "", 0, + Collections.singletonMap("selectarticleurl", urlBuilder.getQuery())); } catch (Throwable e) { throw new ServletModuleFailure(e); } } - public void listchildren(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc - { + public void listchildren(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc { try { HTTPRequestParser requestParser = new HTTPRequestParser(aRequest); String articleId = requestParser.getParameter("article_id"); @@ -602,7 +484,7 @@ public class ServletModuleContent extends ServletModule if (articleId == null) throw new ServletModuleExc("ServletModuleContent.listchildren: article_id not set!"); - returnList(aRequest, aResponse, "to_content = " + articleId, "", 0, null); + returnList(aRequest, aResponse, "to_content = " + articleId, "webdb_create desc", 0, null); } catch (Throwable e) { throw new ServletModuleFailure(e); @@ -612,9 +494,9 @@ public class ServletModuleContent extends ServletModule public void setparent(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc { HTTPRequestParser requestParser = new HTTPRequestParser(aRequest); - String articleId = aRequest.getParameter("childid"); - String parentId = aRequest.getParameter("id"); - String returnUrl = aRequest.getParameter("returnurl"); + String articleId = requestParser.getParameter("childid"); + String parentId = requestParser.getParameter("id"); + String returnUrl = requestParser.getParameter("returnurl"); if (!MirGlobal.accessControl().article().mayEditArticle(ServletHelper.getUser(aRequest), articleId)) throw new ServletModuleExc("Article has been locked"); @@ -631,7 +513,7 @@ public class ServletModuleContent extends ServletModule throw new ServletModuleFailure(e); } - redirect(aResponse, returnUrl); + ServletHelper.redirect(aResponse, returnUrl); } public void clearparent(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc @@ -654,6 +536,24 @@ public class ServletModuleContent extends ServletModule throw new ServletModuleFailure("ServletModuleContent.clearparent: " + e.getMessage(), e); } - redirect(aResponse, returnUrl); + ServletHelper.redirect(aResponse, returnUrl); + } + + public void showPreview(HttpServletRequest aRequest, HttpServletResponse aResponse) throws ServletModuleExc { + try { + HTTPRequestParser requestParser = new HTTPRequestParser(aRequest); + String articleId = requestParser.getParameter("id"); + EntityAdapter article = model.makeEntityAdapter("content", mainModule.getById(articleId)); + String preview = requestParser.getParameterWithDefault("preview", "default"); + + Map generationValues = new HashMap(); + Generator generator = + MirGlobal.localizer().adminInterface().prepareArticlePreview(preview, article, generationValues); + + generator.generate(aResponse.getWriter(), generationValues, logger); + } + catch (Exception e) { + throw new ServletModuleFailure(e); + } } }