You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@roller.apache.org by sn...@apache.org on 2006/05/02 00:23:34 UTC
svn commit: r398712 [24/32] - in /incubator/roller/trunk/src/org/apache: ./
roller/ roller/business/ roller/business/hibernate/
roller/business/referrers/ roller/business/runnable/
roller/business/search/ roller/business/search/operations/ roller/busin...
Added: incubator/roller/trunk/src/org/apache/roller/presentation/weblog/actions/WeblogEntryFormAction.java
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/src/org/apache/roller/presentation/weblog/actions/WeblogEntryFormAction.java?rev=398712&view=auto
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/presentation/weblog/actions/WeblogEntryFormAction.java (added)
+++ incubator/roller/trunk/src/org/apache/roller/presentation/weblog/actions/WeblogEntryFormAction.java Mon May 1 15:23:02 2006
@@ -0,0 +1,842 @@
+/*
+* 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.presentation.weblog.actions;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.net.HttpURLConnection;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.net.URLEncoder;
+import java.sql.Timestamp;
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ListIterator;
+import java.util.Map;
+import java.util.ResourceBundle;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import javax.mail.MessagingException;
+import javax.mail.Session;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.struts.action.ActionError;
+import org.apache.struts.action.ActionErrors;
+import org.apache.struts.action.ActionForm;
+import org.apache.struts.action.ActionForward;
+import org.apache.struts.action.ActionMapping;
+import org.apache.struts.action.ActionMessage;
+import org.apache.struts.action.ActionMessages;
+import org.apache.struts.actions.DispatchAction;
+import org.apache.struts.util.RequestUtils;
+import org.apache.velocity.VelocityContext;
+import org.apache.roller.RollerException;
+import org.apache.roller.RollerPermissionsException;
+import org.apache.roller.config.RollerConfig;
+import org.apache.roller.model.IndexManager;
+import org.apache.roller.model.PagePluginManager;
+import org.apache.roller.model.Roller;
+import org.apache.roller.model.RollerFactory;
+import org.apache.roller.model.UserManager;
+import org.apache.roller.model.WeblogManager;
+import org.apache.roller.pojos.CommentData;
+import org.apache.roller.pojos.PermissionsData;
+import org.apache.roller.pojos.UserData;
+import org.apache.roller.pojos.WeblogEntryData;
+import org.apache.roller.pojos.WebsiteData;
+import org.apache.roller.presentation.RollerContext;
+import org.apache.roller.presentation.RollerRequest;
+import org.apache.roller.presentation.RollerSession;
+import org.apache.roller.presentation.cache.CacheManager;
+import org.apache.roller.presentation.weblog.formbeans.WeblogEntryFormEx;
+import org.apache.roller.util.MailUtil;
+import org.apache.roller.util.StringUtils;
+import org.apache.roller.util.Utilities;
+
+
+
+/////////////////////////////////////////////////////////////////////////////
+/**
+ * Supports Weblog Entry form actions edit, remove, update, etc.
+ *
+ * @struts.action name="weblogEntryFormEx" path="/editor/weblog"
+ * scope="request" parameter="method"
+ *
+ * @struts.action-forward name="weblogEdit.page" path=".WeblogEdit"
+ * @struts.action-forward name="weblogEntryRemove.page" path=".WeblogEntryRemove"
+ */
+public final class WeblogEntryFormAction extends DispatchAction {
+ private static Log mLogger =
+ LogFactory.getFactory().getInstance(WeblogEntryFormAction.class);
+
+ //-----------------------------------------------------------------------
+ /**
+ * Allow user to create a new weblog entry.
+ */
+ public ActionForward create(
+ ActionMapping mapping,
+ ActionForm actionForm,
+ HttpServletRequest request,
+ HttpServletResponse response)
+ throws IOException, ServletException {
+ ActionForward forward = mapping.findForward("weblogEdit.page");
+ try {
+ RollerSession rses = RollerSession.getRollerSession(request);
+ RollerRequest rreq = RollerRequest.getRollerRequest(request);
+ if (rreq.getWebsite() != null
+ && rses.isUserAuthorized(rreq.getWebsite())) {
+ WeblogEntryFormEx form = (WeblogEntryFormEx)actionForm;
+ form.initNew(request, response);
+ form.setCreatorId(rses.getAuthenticatedUser().getId());
+ form.setWebsiteId(rreq.getWebsite().getId());
+ form.setAllowComments(rreq.getWebsite().getDefaultAllowComments());
+ form.setCommentDays(new Integer(rreq.getWebsite().getDefaultCommentDays()));
+
+ request.setAttribute("model",
+ new WeblogEntryPageModel(request, response, mapping,
+ (WeblogEntryFormEx)actionForm,
+ WeblogEntryPageModel.EDIT_MODE));
+ } else {
+ forward = mapping.findForward("access-denied");
+ }
+ } catch (Exception e) {
+ request.getSession().getServletContext().log("ERROR",e);
+ throw new ServletException(e);
+ }
+ return forward;
+ }
+
+ //-----------------------------------------------------------------------
+ /**
+ * Allow user to edit a weblog entry.
+ */
+ public ActionForward edit(
+ ActionMapping mapping,
+ ActionForm actionForm,
+ HttpServletRequest request,
+ HttpServletResponse response)
+ throws IOException, ServletException {
+ ActionForward forward = mapping.findForward("weblogEdit.page");
+ try {
+ RollerRequest rreq = RollerRequest.getRollerRequest(request);
+ RollerSession rses = RollerSession.getRollerSession(request);
+ WeblogManager wmgr = RollerFactory.getRoller().getWeblogManager();
+ WeblogEntryData entry = rreq.getWeblogEntry();
+ WeblogEntryFormEx form = (WeblogEntryFormEx)actionForm;
+ if (entry == null && form.getId() != null) {
+ entry = wmgr.getWeblogEntry(form.getId());
+ }
+ if (entry == null) {
+ ResourceBundle resources = ResourceBundle.getBundle(
+ "ApplicationResources", request.getLocale());
+ request.setAttribute("javax.servlet.error.message",
+ resources.getString("weblogEntry.notFound"));
+ forward = mapping.findForward("error");
+ } else if (rses.isUserAuthorized(entry.getWebsite())
+ || (rses.isUserAuthorized(entry.getWebsite()) && !entry.isPublished())) {
+ form.copyFrom(entry, request.getLocale());
+ WeblogEntryPageModel pageModel = new WeblogEntryPageModel(
+ request, response, mapping, form,
+ WeblogEntryPageModel.EDIT_MODE);
+ pageModel.setWebsite(entry.getWebsite());
+ request.setAttribute("model", pageModel);
+ } else {
+ forward = mapping.findForward("access-denied");
+ }
+ } catch (Exception e) {
+ request.getSession().getServletContext().log("ERROR",e);
+ throw new ServletException(e);
+ }
+ return forward;
+ }
+
+ //-----------------------------------------------------------------------
+ public ActionForward preview(
+ ActionMapping mapping,
+ ActionForm actionForm,
+ HttpServletRequest request,
+ HttpServletResponse response)
+ throws IOException, ServletException {
+ // we need to save any new entries before Previewing
+ WeblogEntryFormEx form = (WeblogEntryFormEx)actionForm;
+ if (form.getId() == null) {
+ save(mapping, actionForm, request, response);
+ }
+ return display(WeblogEntryPageModel.PREVIEW_MODE,
+ mapping, actionForm, request, response);
+ }
+
+ //-----------------------------------------------------------------------
+ public ActionForward returnToEditMode(
+ ActionMapping mapping,
+ ActionForm actionForm,
+ HttpServletRequest request,
+ HttpServletResponse response)
+ throws IOException, ServletException {
+ return display(WeblogEntryPageModel.EDIT_MODE,
+ mapping, actionForm, request, response);
+ }
+
+ //-----------------------------------------------------------------------
+ private ActionForward display(
+ WeblogEntryPageModel.PageMode mode,
+ ActionMapping mapping,
+ ActionForm actionForm,
+ HttpServletRequest request,
+ HttpServletResponse response)
+ throws IOException, ServletException {
+ ActionForward forward = mapping.findForward("weblogEdit.page");
+ try {
+ RollerRequest rreq = RollerRequest.getRollerRequest(request);
+ RollerSession rollerSession =
+ RollerSession.getRollerSession(request);
+ WeblogEntryPageModel pageModel = new WeblogEntryPageModel(
+ request, response, mapping, (WeblogEntryFormEx)actionForm, mode);
+ if (rollerSession.isUserAuthorized(
+ pageModel.getWeblogEntry().getWebsite())) {
+ request.setAttribute("model", pageModel);
+ } else {
+ forward = mapping.findForward("access-denied");
+ }
+ } catch (Exception e) {
+ request.getSession().getServletContext().log("ERROR",e);
+ throw new ServletException(e);
+ }
+ return forward;
+ }
+
+ //-----------------------------------------------------------------------
+ /**
+ * Saves weblog entry and flushes page cache so that new entry will appear
+ * on users weblog page.
+ */
+ public ActionForward save(
+ ActionMapping mapping,
+ ActionForm actionForm,
+ HttpServletRequest request,
+ HttpServletResponse response)
+ throws IOException, ServletException {
+
+ ActionForward forward = mapping.findForward("weblogEdit.page");
+ ActionMessages uiMessages = new ActionMessages();
+ try {
+ WeblogEntryFormEx form = (WeblogEntryFormEx)actionForm;
+ Roller roller = RollerFactory.getRoller();
+ RollerSession rses = RollerSession.getRollerSession(request);
+ UserManager userMgr = roller.getUserManager();
+ WeblogManager weblogMgr = roller.getWeblogManager();
+ UserData ud = userMgr.getUser(form.getCreatorId());
+ WebsiteData site = userMgr.getWebsite(form.getWebsiteId());
+ WeblogEntryData entry = null;
+
+ if ( rses.isUserAuthorizedToAuthor(site)
+ || (rses.isUserAuthorized(site)
+ && !form.getStatus().equals(WeblogEntryData.PUBLISHED) )) {
+
+ ActionErrors errors = validateEntry(null, form);
+ if (errors.size() > 0) {
+ saveErrors(request, errors);
+ request.setAttribute("model",
+ new WeblogEntryPageModel(request, response, mapping,
+ (WeblogEntryFormEx)actionForm,
+ WeblogEntryPageModel.EDIT_MODE));
+ return forward;
+ }
+
+ if (form.getId() == null || form.getId().trim().length()==0) {
+ entry = new WeblogEntryData();
+ entry.setCreator(ud);
+ entry.setWebsite( site );
+ } else {
+ entry = weblogMgr.getWeblogEntry(form.getId());
+ }
+
+ mLogger.debug("setting update time now");
+ form.setUpdateTime(new Timestamp(new Date().getTime()));
+
+ if ("PUBLISHED".equals(form.getStatus()) &&
+ "0/0/0".equals(form.getDateString())) {
+ mLogger.debug("setting pubtime now");
+
+ /* NOTE: the wf.copyTo() method will override this value
+ * based on data submitted with the form if that data is
+ * not null. check the method to verify.
+ *
+ * this means that setting the pubtime here only takes
+ * effect if the entry is being published for the first
+ * time.
+ */
+ form.setPubTime(form.getUpdateTime());
+ }
+
+ mLogger.debug("copying submitted form data to entry object");
+ form.copyTo(entry, request.getLocale(),request.getParameterMap());
+
+ // Fetch MediaCast content type and length
+ mLogger.debug("Checking MediaCast attributes");
+ if (!checkMediaCast(entry, uiMessages)) {
+ mLogger.debug("Invalid MediaCast attributes");
+ } else {
+ mLogger.debug("Validated MediaCast attributes");
+ }
+
+ // Store value object (creates new or updates existing)
+ entry.setUpdateTime(new Timestamp(new Date().getTime()));
+
+ // make sure we have an anchor value set
+ if(entry.getAnchor() == null || entry.getAnchor().trim().equals("")) {
+ entry.setAnchor(weblogMgr.createAnchor(entry));
+ }
+
+ mLogger.debug("Saving entry");
+ weblogMgr.saveWeblogEntry(entry);
+ RollerFactory.getRoller().flush();
+
+ mLogger.debug("Populating form");
+ form.copyFrom(entry, request.getLocale());
+
+ request.setAttribute(
+ RollerRequest.WEBLOGENTRYID_KEY, entry.getId());
+
+ // Reindex entry, flush caches, etc.
+ reindexEntry(RollerFactory.getRoller(), entry);
+ mLogger.debug("Removing from cache");
+ RollerRequest rreq = RollerRequest.getRollerRequest(request);
+ //PageCacheFilter.removeFromCache(request, entry.getWebsite());
+ CacheManager.invalidate(entry);
+
+ // Queue applicable pings for this update.
+ if(entry.isPublished()) {
+ RollerFactory.getRoller().getAutopingManager().queueApplicableAutoPings(entry);
+ }
+
+ // Clean up session objects we used
+ HttpSession session = request.getSession(true);
+ session.removeAttribute("spellCheckEvents");
+ session.removeAttribute("entryText");
+
+ // Load up request with data for view
+ request.setAttribute("model",
+ new WeblogEntryPageModel(request, response, mapping,
+ (WeblogEntryFormEx)actionForm,
+ WeblogEntryPageModel.EDIT_MODE));
+
+ if (!rses.isUserAuthorizedToAuthor(site) &&
+ rses.isUserAuthorized(site) && entry.isPending()) {
+ // implies that entry just changed to pending
+ notifyWebsiteAuthorsOfPendingEntry(request, entry);
+ uiMessages.add(null,
+ new ActionMessage("weblogEdit.submittedForReview"));
+
+ // so clear entry from editor
+ actionForm = new WeblogEntryFormEx();
+ request.setAttribute(mapping.getName(), actionForm);
+ forward = create(mapping, actionForm, request, response);
+ } else {
+ uiMessages.add(null,
+ new ActionMessage("weblogEdit.changesSaved"));
+ }
+ saveMessages(request, uiMessages);
+ mLogger.debug("operation complete");
+
+ } else {
+ forward = mapping.findForward("access-denied");
+ }
+ } catch (RollerPermissionsException e) {
+ ActionErrors errors = new ActionErrors();
+ errors.add(null, new ActionError("error.permissions.deniedSave"));
+ saveErrors(request, errors);
+ forward = mapping.findForward("access-denied");
+ } catch (Exception e) {
+ throw new ServletException(e);
+ }
+ return forward;
+ }
+
+ /**
+ * Inform authors and admins of entry's website that entry is pending.
+ * @param entry
+ * @throws RollerException
+ * @throws MalformedURLException
+ */
+ private void notifyWebsiteAuthorsOfPendingEntry(
+ HttpServletRequest request, WeblogEntryData entry) {
+ try {
+ Roller roller = RollerFactory.getRoller();
+ UserManager umgr = roller.getUserManager();
+ javax.naming.Context ctx = (javax.naming.Context)
+ new InitialContext().lookup("java:comp/env");
+ Session mailSession =
+ (Session)ctx.lookup("mail/Session");
+ if (mailSession != null) {
+ String userName = entry.getCreator().getUserName();
+ String from = entry.getCreator().getEmailAddress();
+ String cc[] = new String[] {from};
+ String bcc[] = new String[0];
+ String to[];
+ String subject;
+ String content;
+
+ // list of enabled website authors and admins
+ ArrayList reviewers = new ArrayList();
+ List websiteUsers =
+ umgr.getUsers(entry.getWebsite(), Boolean.TRUE);
+
+ // build list of reviewers (website users with author permission)
+ Iterator websiteUserIter = websiteUsers.iterator();
+ while (websiteUserIter.hasNext()) {
+ UserData websiteUser = (UserData)websiteUserIter.next();
+ if (entry.getWebsite().hasUserPermissions(
+ websiteUser, PermissionsData.AUTHOR)
+ && websiteUser.getEmailAddress() != null) {
+ reviewers.add(websiteUser.getEmailAddress());
+ }
+ }
+ to = (String[])reviewers.toArray(new String[reviewers.size()]);
+
+ // Figure URL to entry edit page
+ RollerContext rc = RollerContext.getRollerContext();
+ String rootURL = rc.getAbsoluteContextUrl(request);
+ if (rootURL == null || rootURL.trim().length()==0) {
+ rootURL = RequestUtils.serverURL(request)
+ + request.getContextPath();
+ }
+ String editURL = rootURL
+ + "/editor/weblog.do?method=edit&entryid=" + entry.getId();
+
+ ResourceBundle resources = ResourceBundle.getBundle(
+ "ApplicationResources", request.getLocale());
+ StringBuffer sb = new StringBuffer();
+ sb.append(
+ MessageFormat.format(
+ resources.getString("weblogEntry.pendingEntrySubject"),
+ new Object[] {
+ entry.getWebsite().getName(),
+ entry.getWebsite().getHandle()
+ }));
+ subject = sb.toString();
+ sb = new StringBuffer();
+ sb.append(
+ MessageFormat.format(
+ resources.getString("weblogEntry.pendingEntryContent"),
+ new Object[] { userName, userName, editURL })
+ );
+ content = sb.toString();
+ MailUtil.sendTextMessage(
+ mailSession, from, to, cc, bcc, subject, content);
+ }
+ } catch (NamingException e) {
+ mLogger.error("ERROR: Notification email(s) not sent, "
+ + "Roller's mail session not properly configured");
+ } catch (MessagingException e) {
+ mLogger.error("ERROR: Notification email(s) not sent, "
+ + "due to Roller configuration or mail server problem.");
+ } catch (MalformedURLException e) {
+ mLogger.error("ERROR: Notification email(s) not sent, "
+ + "Roller site URL is malformed?");
+ } catch (RollerException e) {
+ throw new RuntimeException(
+ "FATAL ERROR: unable to find Roller object");
+ }
+ }
+
+ private boolean checkMediaCast(WeblogEntryData entry, ActionMessages uiMessages) {
+ boolean valid = false;
+ String url = entry.findEntryAttribute("att_mediacast_url");
+ boolean empty = (url == null) || (url.trim().length() == 0);
+ if (!empty) {
+ // fetch MediaCast content type and length
+ valid = false;
+ try {
+ mLogger.debug("Sending HTTP HEAD");
+ HttpURLConnection con = (HttpURLConnection)
+ new URL(url).openConnection();
+ mLogger.debug("Getting response code");
+ con.setRequestMethod("HEAD");
+ if (con.getResponseCode() != 200) {
+ mLogger.debug("Response code indicates error");
+ mLogger.error("ERROR " + con.getResponseCode() + " return from MediaCast URL");
+ uiMessages.add(null,new ActionMessage("weblogEdit.mediaCastResponseError"));
+ } else if (con.getContentType()==null || con.getContentLength()==-1) {
+ mLogger.debug("Content type + (" + con.getContentType() + " is null or content length (" +
+ con.getContentLength() + ") is -1 (indeterminate).");
+ uiMessages.add(null,new ActionMessage("weblogEdit.mediaCastLacksContentTypeOrLength"));
+ } else {
+ if (mLogger.isDebugEnabled()) {
+ mLogger.debug("Got good response: Content type " +
+ con.getContentType() + " [length = " + con.getContentLength() + "]" );
+ }
+ entry.putEntryAttribute(
+ "att_mediacast_type", con.getContentType());
+ entry.putEntryAttribute(
+ "att_mediacast_length", ""+con.getContentLength());
+ valid = true;
+ }
+ } catch (MalformedURLException mfue) {
+ mLogger.debug("Malformed MediaCast url: " + url);
+ uiMessages.add(null, new ActionMessage("weblogEdit.mediaCastUrlMalformed"));
+ } catch (Exception e) {
+ mLogger.error("ERROR while checking MediaCast URL: " + url + ": " + e.getMessage());
+ uiMessages.add(null, new ActionMessage("weblogEdit.mediaCastFailedFetchingInfo"));
+ }
+ } else {
+ mLogger.debug("No MediaCast specified, but that is OK");
+ valid = true;
+ }
+ if (!valid || empty) {
+ mLogger.debug("Removing MediaCast attributes");
+ try {
+ entry.removeEntryAttribute("att_mediacast_url");
+ entry.removeEntryAttribute("att_mediacast_type");
+ entry.removeEntryAttribute("att_mediacast_length");
+ } catch (RollerException e) {
+ mLogger.error("ERROR removing invalid MediaCast attributes");
+ }
+ }
+ mLogger.debug("operation complete");
+ return valid;
+ }
+
+
+ //-----------------------------------------------------------------------
+ /**
+ * Responds to request to remove weblog entry. Forwards user to page
+ * that presents the 'are you sure?' question.
+ */
+ public ActionForward removeOk(
+ ActionMapping mapping,
+ ActionForm actionForm,
+ HttpServletRequest request,
+ HttpServletResponse response)
+ throws IOException, ServletException {
+ ActionForward forward = mapping.findForward("weblogEntryRemove.page");
+ try {
+ Roller roller = RollerFactory.getRoller();
+ WeblogEntryFormEx wf = (WeblogEntryFormEx)actionForm;
+ WeblogEntryData wd =
+ roller.getWeblogManager().getWeblogEntry(wf.getId());
+ RollerSession rses =
+ RollerSession.getRollerSession(request);
+ if ( rses.isUserAuthorizedToAuthor(wd.getWebsite())
+ || (rses.isUserAuthorized(wd.getWebsite()) && wd.isDraft()) ) {
+ wf.copyFrom(wd, request.getLocale());
+ if (wd == null || wd.getId() == null) {
+ ResourceBundle resources = ResourceBundle.getBundle(
+ "ApplicationResources", request.getLocale());
+ request.setAttribute("javax.servlet.error.message",
+ resources.getString("weblogEntry.notFound"));
+ forward = mapping.findForward("error");
+ }
+ } else {
+ forward = mapping.findForward("access-denied");
+ }
+ } catch (Exception e) {
+ throw new ServletException(e);
+ }
+ return forward;
+ }
+
+ //-----------------------------------------------------------------------
+ /**
+ * Responds to request from the 'are you sure you want to remove?' page.
+ * Removes the specified weblog entry and flushes the cache.
+ */
+ public ActionForward remove(
+ ActionMapping mapping,
+ ActionForm actionForm,
+ HttpServletRequest request,
+ HttpServletResponse response)
+ throws IOException, ServletException {
+ try {
+ WeblogManager mgr = RollerFactory.getRoller().getWeblogManager();
+ WeblogEntryData wd =
+ mgr.getWeblogEntry(request.getParameter("id"));
+ RollerSession rses =
+ RollerSession.getRollerSession(request);
+ if ( rses.isUserAuthorizedToAuthor(wd.getWebsite())
+ || (rses.isUserAuthorized(wd.getWebsite()) && wd.isDraft()) ) {
+
+ // remove the index for it
+ // TODO: can we do this in a better way?
+ wd.setStatus(WeblogEntryData.DRAFT);
+ reindexEntry(RollerFactory.getRoller(), wd);
+
+ // remove entry itself
+ mgr.removeWeblogEntry(wd);
+ RollerFactory.getRoller().flush();
+
+ // flush caches
+ CacheManager.invalidate(wd);
+
+ ActionMessages uiMessages = new ActionMessages();
+ uiMessages.add(null,
+ new ActionMessage("weblogEdit.entryRemoved"));
+ saveMessages(request, uiMessages);
+
+ RollerRequest.getRollerRequest().setWebsite(wd.getWebsite());
+ } else {
+ return mapping.findForward("access-denied");
+ }
+ } catch (Exception e) {
+ throw new ServletException(e);
+ }
+
+ // need to reset all values to empty (including 'id')
+ actionForm = new WeblogEntryFormEx();
+ actionForm.reset(mapping, request);
+ request.setAttribute(mapping.getName(), actionForm);
+ return create(mapping, actionForm, request, response);
+ }
+
+ /**
+ *
+ */
+ public ActionForward sendTrackback(
+ ActionMapping mapping,
+ ActionForm actionForm,
+ HttpServletRequest request,
+ HttpServletResponse response) throws RollerException {
+ ActionMessages resultMsg = new ActionMessages();
+ ActionForward forward = mapping.findForward("weblogEdit.page");
+ ActionErrors errors = new ActionErrors();
+ WeblogEntryData entry = null;
+ try {
+ WeblogEntryFormEx form = (WeblogEntryFormEx)actionForm;
+ String entryid = form.getId();
+ if ( entryid == null ) {
+ entryid =
+ request.getParameter(RollerRequest.WEBLOGENTRYID_KEY);
+ }
+ Roller roller = RollerFactory.getRoller();
+ RollerContext rctx= RollerContext.getRollerContext();
+ WeblogManager wmgr= roller.getWeblogManager();
+ entry = wmgr.getWeblogEntry(entryid);
+
+ RollerSession rses = RollerSession.getRollerSession(request);
+ if (rses.isUserAuthorizedToAuthor(entry.getWebsite())) {
+ // Run entry through registered PagePlugins
+ PagePluginManager ppmgr = roller.getPagePluginManager();
+ Map plugins = ppmgr.createAndInitPagePlugins(
+ entry.getWebsite(),
+ RollerContext.getRollerContext().getServletContext(),
+ RollerContext.getRollerContext().getAbsoluteContextUrl(),
+ new VelocityContext());
+
+ String content = "";
+ if (!StringUtils.isEmpty(entry.getText())) {
+ content = entry.getText();
+ } else {
+ content = entry.getSummary();
+ }
+ content = ppmgr.applyPagePlugins(entry, plugins, content, true);
+
+ String title = entry.getTitle();
+ String excerpt = StringUtils.left( Utilities.removeHTML(content),255 );
+
+ String url = rctx.createEntryPermalink(entry, request, true);
+ String blog_name = entry.getWebsite().getName();
+
+ if (form.getTrackbackUrl() != null) {
+ // by default let all trackbacks to be sent
+ boolean allowTrackback = true;
+
+ String allowedURLs = RollerConfig.getProperty("trackback.allowedURLs");
+ if (allowedURLs != null && allowedURLs.trim().length() > 0) {
+ // in the case that the administrator has enabled trackbacks
+ // for only specific URLs, set it to false by default
+ allowTrackback = false;
+ String[] splitURLs = allowedURLs.split("\\|\\|");
+ for (int i=0; i<splitURLs.length; i++) {
+ Matcher m = Pattern.compile(splitURLs[i]).matcher(form.getTrackbackUrl());
+ if (m.matches()) {
+ allowTrackback = true;
+ break;
+ }
+ }
+ }
+
+ if(!allowTrackback) {
+ errors.add(ActionErrors.GLOBAL_ERROR,
+ new ActionError("error.trackbackNotAllowed"));
+ } else {
+ try {
+ // Construct data
+
+ String data = URLEncoder.encode("title", "UTF-8")
+ +"="+URLEncoder.encode(title, "UTF-8");
+
+ data += ("&" + URLEncoder.encode("excerpt", "UTF-8")
+ +"="+URLEncoder.encode(excerpt,"UTF-8"));
+
+ data += ("&" + URLEncoder.encode("url", "UTF-8")
+ +"="+URLEncoder.encode(url,"UTF-8"));
+
+ data += ("&" + URLEncoder.encode("blog_name", "UTF-8")
+ +"="+URLEncoder.encode(blog_name,"UTF-8"));
+
+ // Send data
+ URL tburl = new URL(form.getTrackbackUrl());
+ HttpURLConnection conn = (HttpURLConnection)tburl.openConnection();
+ conn.setDoOutput(true);
+
+ OutputStreamWriter wr =
+ new OutputStreamWriter(conn.getOutputStream());
+ BufferedReader rd = null;
+ try {
+ wr.write(data);
+ wr.flush();
+
+ // Get the response
+ boolean inputAvailable = false;
+ try {
+ rd = new BufferedReader(new InputStreamReader(
+ conn.getInputStream()));
+ inputAvailable = true;
+ } catch (Throwable e) {
+ mLogger.debug(e);
+ }
+
+ // read repsonse only if there is one
+ if (inputAvailable) {
+ String line;
+ StringBuffer resultBuff = new StringBuffer();
+ while ((line = rd.readLine()) != null) {
+ resultBuff.append(
+ Utilities.escapeHTML(line, true));
+ resultBuff.append("<br />");
+ }
+ resultMsg.add(ActionMessages.GLOBAL_MESSAGE,
+ new ActionMessage("weblogEdit.trackbackResults",
+ resultBuff));
+ }
+
+ // add response code to messages
+ if (conn.getResponseCode() > 399) {
+ errors.add(ActionErrors.GLOBAL_ERROR,
+ new ActionError("weblogEdit.trackbackStatusCodeBad",
+ new Integer(conn.getResponseCode())));
+ } else {
+ resultMsg.add(ActionMessages.GLOBAL_MESSAGE,
+ new ActionMessage("weblogEdit.trackbackStatusCodeGood",
+ new Integer(conn.getResponseCode())));
+ }
+ } finally {
+ if (wr != null) wr.close();
+ if (rd != null) rd.close();
+ }
+ } catch (IOException e) {
+ errors.add(ActionErrors.GLOBAL_ERROR,
+ new ActionError("error.trackback",e));
+ }
+ }
+ } else {
+ errors.add(ActionErrors.GLOBAL_ERROR,
+ new ActionError("error.noTrackbackUrlSpecified"));
+ }
+
+ form.setTrackbackUrl(null);
+ } else {
+ forward = mapping.findForward("access-denied");
+ }
+ } catch (Exception e) // unexpected
+ {
+ mLogger.error(e);
+ String msg = e.getMessage();
+ if ( msg == null ) {
+ msg = e.getClass().getName();
+ }
+ errors.add(ActionErrors.GLOBAL_ERROR,
+ new ActionError("error.general",msg));
+ }
+
+ saveErrors(request, errors);
+ saveMessages(request, resultMsg);
+
+ request.setAttribute("model",
+ new WeblogEntryPageModel(request, response, mapping,
+ (WeblogEntryFormEx)actionForm,
+ WeblogEntryPageModel.EDIT_MODE));
+
+ return forward;
+ }
+
+ //-----------------------------------------------------------------------
+ public ActionForward cancel(
+ ActionMapping mapping,
+ ActionForm actionForm,
+ HttpServletRequest request,
+ HttpServletResponse response)
+ throws IOException, ServletException {
+ return (mapping.findForward("weblogEdit"));
+ }
+
+ //-----------------------------------------------------------------------
+ public ActionForward unspecified(
+ ActionMapping mapping,
+ ActionForm actionForm,
+ HttpServletRequest request,
+ HttpServletResponse response)
+ throws Exception {
+ return create(mapping, actionForm, request, response);
+ }
+
+ /**
+ * Attempts to remove the Entry from the Lucene index and
+ * then re-index the Entry if it is Published. If the Entry
+ * is being deleted then mark it published = false.
+ * @param entry
+ */
+ private void reindexEntry(Roller roller, WeblogEntryData entry)
+ throws RollerException {
+ IndexManager manager = roller.getIndexManager();
+
+ // remove entry before (re)adding it, or in case it isn't Published
+ //manager.removeEntryIndexOperation(entry);
+
+ // if published, index the entry
+ if (entry.isPublished()) {
+ manager.addEntryReIndexOperation(entry);
+ }
+ }
+
+ public ActionErrors validateEntry(ActionErrors errors, WeblogEntryFormEx form) {
+ if (errors == null) errors = new ActionErrors();
+ if (StringUtils.isEmpty(form.getTitle())) {
+ errors.add(null, new ActionError("weblogEdit.error.incompleteEntry"));
+ }
+ return errors;
+ }
+
+
+}
+
+
Added: incubator/roller/trunk/src/org/apache/roller/presentation/weblog/actions/WeblogEntryManagementAction.java
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/src/org/apache/roller/presentation/weblog/actions/WeblogEntryManagementAction.java?rev=398712&view=auto
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/presentation/weblog/actions/WeblogEntryManagementAction.java (added)
+++ incubator/roller/trunk/src/org/apache/roller/presentation/weblog/actions/WeblogEntryManagementAction.java Mon May 1 15:23:02 2006
@@ -0,0 +1,240 @@
+/*
+* 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.presentation.weblog.actions;
+
+import java.io.IOException;
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.util.Date;
+import java.util.List;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.struts.action.ActionForm;
+import org.apache.struts.action.ActionForward;
+import org.apache.struts.action.ActionMapping;
+import org.apache.struts.actions.DispatchAction;
+import org.apache.roller.RollerException;
+import org.apache.roller.model.RollerFactory;
+import org.apache.roller.model.WeblogManager;
+import org.apache.roller.pojos.WeblogCategoryData;
+import org.apache.roller.pojos.WeblogEntryData;
+import org.apache.roller.pojos.WebsiteData;
+import org.apache.roller.presentation.BasePageModel;
+import org.apache.roller.presentation.RollerRequest;
+import org.apache.roller.presentation.RollerSession;
+import org.apache.roller.presentation.weblog.formbeans.WeblogEntryManagementForm;
+import org.apache.roller.util.DateUtil;
+
+
+/////////////////////////////////////////////////////////////////////////////
+/**
+ * Query weblog entries and display the results in tabular form.
+ *
+ * @struts.action path="/editor/weblogEntryManagement" name="weblogEntryManagementForm"
+ * scope="request" parameter="method"
+ *
+ * @struts.action-forward name="weblogEntryManagement.page" path=".WeblogEntryManagement"
+ *
+ * @author Dave Johnson
+ */
+public final class WeblogEntryManagementAction extends DispatchAction
+{
+ //-----------------------------------------------------------------------
+ /**
+ * Respond to request to add a new or edit an existing weblog entry.
+ * Loads the appropriate model objects and forwards the request to
+ * the edit weblog page.
+ */
+ public ActionForward query(
+ ActionMapping mapping,
+ ActionForm actionForm,
+ HttpServletRequest request,
+ HttpServletResponse response)
+ throws IOException, ServletException, RollerException
+ {
+ WeblogEntryManagementForm form = (WeblogEntryManagementForm)actionForm;
+ RollerRequest rreq = RollerRequest.getRollerRequest(request);
+ WeblogManager wmgr = RollerFactory.getRoller().getWeblogManager();
+ RollerSession rses = RollerSession.getRollerSession(request);
+
+ // ensure that weblog is specfied and user has permission to work there
+ if (rreq.getWebsite() != null && rses.isUserAuthorized(rreq.getWebsite())) {
+ String status= form.getStatus().equals("ALL") ? null : form.getStatus();
+ request.setAttribute("model", new PageModel(
+ request,
+ response,
+ mapping,
+ rreq.getWebsite(),
+ form));
+ }
+ else
+ {
+ return mapping.findForward("access-denied");
+ }
+ return mapping.findForward("weblogEntryManagement.page");
+ }
+
+ public class PageModel extends BasePageModel {
+ private List entries = null;
+ private RollerRequest rollerRequest = null;
+ private HttpServletRequest request = null;
+ private WebsiteData website = null;
+ private String category = null;
+ private Date startDate = null;
+ private Date endDate = null;
+ private String status = WeblogEntryData.PUBLISHED;
+ private Integer maxEntries = null;
+ private boolean more = false;
+ private WeblogEntryManagementForm queryForm = null;
+
+ public PageModel(
+ HttpServletRequest request,
+ HttpServletResponse response,
+ ActionMapping mapping,
+ WebsiteData website,
+ WeblogEntryManagementForm queryForm) throws RollerException {
+ super("weblogEntryQuery.title", request, response, mapping);
+ rollerRequest = RollerRequest.getRollerRequest(request);
+ this.request = request;
+ this.queryForm = queryForm;
+ this.website = website;
+
+ if (null != queryForm.getCategoryId() && !queryForm.getCategoryId().equals("")) {
+ WeblogManager wmgr = RollerFactory.getRoller().getWeblogManager();
+ WeblogCategoryData cd = wmgr.getWeblogCategory(queryForm.getCategoryId());
+ category = cd.getPath();
+ }
+
+ final DateFormat df =
+ DateFormat.getDateInstance(DateFormat.SHORT, request.getLocale());
+ String start = queryForm.getStartDateString();
+ if (null != start && start.trim().length() > 0) {
+ try {
+ startDate = DateUtil.getStartOfDay(df.parse(start));
+ } catch (ParseException e) {
+ throw new RollerException("ERROR parsing start date.");
+ }
+ }
+
+ String end = queryForm.getEndDateString();
+ if (null != end && end.trim().length() > 0) {
+ try {
+ endDate = DateUtil.getEndOfDay(df.parse(end));
+ } catch (ParseException e) {
+ throw new RollerException("ERROR parsing end date.");
+ }
+ }
+
+ this.status = "ALL".equals(queryForm.getStatus()) ? null: queryForm.getStatus();
+ this.maxEntries = maxEntries;
+
+ entries = RollerFactory.getRoller().getWeblogManager().getWeblogEntries(
+ website,
+ startDate,
+ endDate,
+ category,
+ status,
+ queryForm.getSortby(),
+ queryForm.getOffset(),
+ queryForm.getCount() + 1);
+ if (entries.size() > queryForm.getCount()) {
+ more = true;
+ entries.remove(entries.size()-1);
+ }
+ }
+
+ public String getBaseURL() {
+ return getRequest().getContextPath();
+ }
+
+ /**
+ * Get recent weblog entries using request parameters to determine
+ * username, date, and category name parameters.
+ * @return List of WeblogEntryData objects.
+ * @throws RollerException
+ */
+ public List getRecentWeblogEntries() throws RollerException {
+ return entries;
+ }
+
+ public int getWeblogEntryCount() {
+ return entries.size();
+ }
+
+ public List getCategories() throws Exception {
+ RollerRequest rreq = RollerRequest.getRollerRequest(request);
+ List categories = RollerFactory.getRoller().getWeblogManager()
+ .getWeblogCategories(rreq.getWebsite());
+ return categories;
+ }
+
+ public Date getEarliestDate() {
+ Date date = null;
+ if (entries.size() > 0) {
+ WeblogEntryData earliest = (WeblogEntryData)entries.get(entries.size()-1);
+ date = earliest.getPubTime();
+ }
+ return date;
+ }
+
+ public Date getLatestDate() {
+ Date date = null;
+ if (entries.size() > 0) {
+ WeblogEntryData latest = (WeblogEntryData)entries.get(0);
+ date = latest.getPubTime();
+ }
+ return date;
+ }
+
+ public String getNextLink() {
+ if (more) {
+ int offset = queryForm.getOffset() + queryForm.getCount();
+ offset = (offset < 0) ? 0 : offset;
+ return getQueryLink() + "&offset=" + offset;
+ } else {
+ return null;
+ }
+ }
+
+ public String getPrevLink() {
+ if (queryForm.getOffset() > 0) {
+ int offset = queryForm.getOffset() - queryForm.getCount();
+ offset = (offset < 0) ? 0 : offset;
+ return getQueryLink() + "&offset=" + offset;
+ } else {
+ return null;
+ }
+ }
+
+ private String getQueryLink() {
+ StringBuffer sb = new StringBuffer();
+ sb.append(request.getContextPath());
+ sb.append("/editor/weblogEntryManagement.do"); // TODO: get path from Struts
+ sb.append("?method=query");
+ sb.append("&weblog=");
+ sb.append(getWebsite().getHandle());
+ sb.append("&count=");
+ sb.append(queryForm.getCount());
+ return sb.toString();
+ }
+ }
+}
Added: incubator/roller/trunk/src/org/apache/roller/presentation/weblog/actions/WeblogEntryPageModel.java
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/src/org/apache/roller/presentation/weblog/actions/WeblogEntryPageModel.java?rev=398712&view=auto
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/presentation/weblog/actions/WeblogEntryPageModel.java (added)
+++ incubator/roller/trunk/src/org/apache/roller/presentation/weblog/actions/WeblogEntryPageModel.java Mon May 1 15:23:02 2006
@@ -0,0 +1,395 @@
+/*
+* 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.
+*/
+/* Created on Mar 10, 2004 */
+package org.apache.roller.presentation.weblog.actions;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.ListIterator;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.lang.builder.HashCodeBuilder;
+import org.apache.struts.action.ActionForward;
+import org.apache.struts.action.ActionMapping;
+import org.apache.roller.RollerException;
+import org.apache.roller.model.RollerFactory;
+import org.apache.roller.pojos.UserData;
+import org.apache.roller.pojos.WeblogEntryData;
+import org.apache.roller.presentation.BasePageModel;
+import org.apache.roller.presentation.RollerContext;
+import org.apache.roller.presentation.RollerRequest;
+import org.apache.roller.presentation.RollerSession;
+import org.apache.roller.presentation.tags.calendar.CalendarModel;
+import org.apache.roller.presentation.weblog.actions.WeblogEntryPageModel.PageMode;
+import org.apache.roller.presentation.weblog.formbeans.WeblogEntryFormEx;
+import org.apache.roller.presentation.weblog.tags.EditWeblogCalendarModel;
+import org.apache.roller.util.StringUtils;
+
+//import com.swabunga.spell.event.SpellCheckEvent;
+import java.util.Map;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.velocity.VelocityContext;
+import org.apache.roller.model.PagePluginManager;
+import org.apache.roller.model.Roller;
+
+/**
+ * All data needed to render the edit-weblog page.
+ * @author David M Johnson
+ */
+public class WeblogEntryPageModel extends BasePageModel
+{
+ private static Log logger =
+ LogFactory.getFactory().getInstance(WeblogEntryPageModel.class);
+
+ private RollerRequest rollerRequest = null;
+ private PageMode mode = null;
+ private ArrayList words = null;
+ private WeblogEntryFormEx form;
+ private WeblogEntryData weblogEntry;
+
+ public static class PageMode {
+ private String name;
+ public PageMode(String name) {
+ this.name = name;
+ }
+ public boolean equals(Object obj) {
+ return ((PageMode)obj).name.equals(name);
+ }
+ public int hashCode() {
+ return HashCodeBuilder.reflectionHashCode(this);
+ }
+ }
+
+ public static final PageMode EDIT_MODE = new PageMode("EDIT_MODE");
+ public static final PageMode SPELL_MODE = new PageMode("SPELL_MODE");
+ public static final PageMode PREVIEW_MODE = new PageMode("PREVIEW_MODE");
+
+
+ public WeblogEntryPageModel(
+ HttpServletRequest request,
+ HttpServletResponse response,
+ ActionMapping mapping,
+ WeblogEntryFormEx form,
+ PageMode mode,
+ ArrayList words) throws RollerException
+ {
+ this(request, response, mapping, form, mode);
+ this.words = words;
+ }
+
+ public WeblogEntryPageModel(
+ HttpServletRequest request,
+ HttpServletResponse response,
+ ActionMapping mapping,
+ WeblogEntryFormEx form,
+ PageMode mode) throws RollerException
+ {
+ super("dummy", request, response, mapping);
+ this.rollerRequest = RollerRequest.getRollerRequest(request);
+ this.form = form;
+ this.mode = mode;
+ getRequest().setAttribute("leftPage","/weblog/WeblogEditSidebar.jsp");
+ }
+
+ public String getTitle()
+ {
+ if (StringUtils.isEmpty(form.getId()))
+ {
+ return bundle.getString("weblogEdit.title.newEntry");
+ }
+ return bundle.getString("weblogEdit.title.editEntry");
+ }
+
+ /**
+ * Get recent weblog entries using request parameters to determine
+ * username, date, and category name parameters.
+ * @return List of WeblogEntryData objects.
+ * @throws RollerException
+ */
+ public List getRecentPublishedEntries() throws RollerException
+ {
+ RollerSession rollerSession = RollerSession.getRollerSession(getRequest());
+ return RollerFactory.getRoller().getWeblogManager()
+ .getWeblogEntries(
+ getWeblogEntry().getWebsite(), // userName
+ null, // startDate
+ null, // endDate
+ null, // catName
+ WeblogEntryData.PUBLISHED, // status
+ null, // sortby (null for pubTime)
+ new Integer(20)); // maxEntries
+ }
+
+ /**
+ * Get recent weblog entries using request parameters to determine
+ * username, date, and category name parameters.
+ * @return List of WeblogEntryData objects.
+ * @throws RollerException
+ */
+ public List getRecentDraftEntries() throws RollerException
+ {
+ RollerSession rollerSession = RollerSession.getRollerSession(getRequest());
+ return RollerFactory.getRoller().getWeblogManager()
+ .getWeblogEntries(
+ getWeblogEntry().getWebsite(),
+ null, // startDate
+ null, // endDate
+ null, // catName
+ WeblogEntryData.DRAFT, // status
+ "updateTime", // sortby
+ new Integer(20)); // maxEntries
+ }
+
+ /**
+ * Get recent weblog entries using request parameters to determine
+ * username, date, and category name parameters.
+ * @return List of WeblogEntryData objects.
+ * @throws RollerException
+ */
+ public List getRecentPendingEntries() throws RollerException
+ {
+ RollerSession rollerSession = RollerSession.getRollerSession(getRequest());
+ return RollerFactory.getRoller().getWeblogManager()
+ .getWeblogEntries(
+ getWeblogEntry().getWebsite(),
+ null, // startDate
+ null, // endDate
+ null, // catName
+ WeblogEntryData.PENDING, // status
+ "updateTime", // sortby
+ new Integer(20)); // maxEntries
+ }
+
+ public List getHoursList()
+ {
+ List ret = new LinkedList();
+ for (int i=0; i<24; i++)
+ {
+ ret.add(new Integer(i));
+ }
+ return ret;
+ }
+
+ public List getMinutesList()
+ {
+ List ret = new LinkedList();
+ for (int i=0; i<60; i++)
+ {
+ ret.add(new Integer(i));
+ }
+ return ret;
+ }
+
+ public List getSecondsList()
+ {
+ return getMinutesList();
+ }
+
+ public boolean getHasPagePlugins()
+ {
+ boolean ret = false;
+ try {
+ Roller roller = RollerFactory.getRoller();
+ PagePluginManager ppmgr = roller.getPagePluginManager();
+ ret = ppmgr.hasPagePlugins();
+ } catch (RollerException e) {
+ logger.error(e);
+ }
+ return ret;
+ }
+
+ public List getPagePlugins()
+ {
+ List list = new ArrayList();
+ try {
+ if (getHasPagePlugins())
+ {
+ Roller roller = RollerFactory.getRoller();
+ PagePluginManager ppmgr = roller.getPagePluginManager();
+ Map plugins = ppmgr.createAndInitPagePlugins(
+ getWebsite(),
+ RollerContext.getRollerContext().getServletContext(),
+ RollerContext.getRollerContext().getAbsoluteContextUrl(),
+ new VelocityContext());
+ Iterator it = plugins.values().iterator();
+ while (it.hasNext()) list.add(it.next());
+ }
+ } catch (Exception e) {
+ logger.error(e);
+ }
+ return list;
+ }
+
+ public String getEditorPage()
+ {
+ // Select editor page selected by user (simple text editor,
+ // DHTML editor, Ekit Java applet, etc.
+ RollerSession rollerSession = RollerSession.getRollerSession(getRequest());
+ String editorPage = weblogEntry.getWebsite().getEditorPage();
+ if (StringUtils.isEmpty( editorPage ))
+ {
+ editorPage = "editor-text.jsp";
+ }
+ return editorPage;
+ }
+
+ public CalendarModel getCalendarModel() throws Exception
+ {
+ // Determine URL to self
+ ActionForward selfForward = getMapping().findForward("editWeblog");
+ String selfUrl= getRequest().getContextPath()+selfForward.getPath();
+
+ // Setup weblog calendar model
+ CalendarModel model = new EditWeblogCalendarModel(
+ rollerRequest, getResponse(), selfUrl );
+ return model;
+ }
+
+ public UserData getUser()
+ {
+ RollerSession rollerSession = RollerSession.getRollerSession(getRequest());
+ return rollerSession.getAuthenticatedUser();
+ }
+
+ public List getCategories() throws Exception
+ {
+ RollerSession rollerSession = RollerSession.getRollerSession(getRequest());
+ return RollerFactory.getRoller().getWeblogManager()
+ .getWeblogCategories(weblogEntry.getWebsite(), false);
+ }
+
+ public WeblogEntryFormEx getWeblogEntryForm() throws RollerException
+ {
+ return this.form;
+ }
+
+ /** returns a dummied-up weblog entry object */
+ public WeblogEntryData getWeblogEntry() throws RollerException
+ {
+ if (weblogEntry == null)
+ {
+ weblogEntry = new WeblogEntryData();
+ weblogEntry.setWebsite(getWebsite());
+ form.copyTo(weblogEntry,
+ getRequest().getLocale(), getRequest().getParameterMap());
+ weblogEntry.setWebsite(weblogEntry.getWebsite());
+ }
+ return weblogEntry;
+ }
+
+ public String getPermaLink() throws RollerException
+ {
+ String context = RollerContext
+ .getRollerContext()
+ .getAbsoluteContextUrl(rollerRequest.getRequest());
+ return context + getWeblogEntry().getPermaLink();
+ }
+
+ public static String makeSelect(String word, List words)
+ {
+ StringBuffer buf = new StringBuffer("<select name=\"");
+ buf.append("replacementWords\" style=\"font-size: 10px;\">");
+ buf.append("<option selected=\"selected\" value=\"").append(word);
+ buf.append("\">").append(word).append("</option>");
+ if (words == null || words.size() < 1)
+ {
+ buf.append("<option value=\"").append(word);
+ buf.append("\">No Suggestions</option>");
+ }
+ else
+ {
+ for (Iterator it2=words.iterator(); it2.hasNext();)
+ {
+ word = it2.next().toString();
+ buf.append("<option value=\"").append(word);
+ buf.append("\">").append(word).append("</option>");
+ }
+ }
+ buf.append("</select>");
+ return buf.toString();
+ }
+
+ /**
+ * @return Returns the mode.
+ */
+ public PageMode getMode() {
+ return mode;
+ }
+
+ /**
+ * @param mode The mode to set.
+ */
+ public void setMode(PageMode mode) {
+ this.mode = mode;
+ }
+
+ public boolean getEditMode()
+ {
+ return mode.equals(EDIT_MODE);
+ }
+
+ public boolean getSpellMode()
+ {
+ return mode.equals(SPELL_MODE);
+ }
+
+ public boolean getPreviewMode()
+ {
+ return mode.equals(PREVIEW_MODE);
+ }
+
+ /**
+ * @return Returns the words.
+ */
+ public ArrayList getWords() {
+ return words;
+ }
+ /**
+ * @param words The words to set.
+ */
+ public void setWords(ArrayList words) {
+ this.words = words;
+ }
+
+ public boolean getUserAuthorized() throws RollerException
+ {
+ return getRollerSession().isUserAuthorized(getWeblogEntry().getWebsite());
+ }
+
+ public boolean getUserAuthorizedToAuthor() throws RollerException
+ {
+ return getRollerSession().isUserAuthorizedToAuthor(getWeblogEntry().getWebsite());
+ }
+
+ public PageMode getEDIT_MODE() {
+ return EDIT_MODE;
+ }
+
+ public int getCommentCount() {
+ // Don't check for comments on unsaved entry (fixed ROL-970)
+ if (weblogEntry.getId() == null) return 0;
+ List comments = comments = weblogEntry.getComments(false, false);
+ return comments != null ? comments.size() : 0;
+ }
+}
+
Added: incubator/roller/trunk/src/org/apache/roller/presentation/weblog/actions/package.html
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/src/org/apache/roller/presentation/weblog/actions/package.html?rev=398712&view=auto
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/presentation/weblog/actions/package.html (added)
+++ incubator/roller/trunk/src/org/apache/roller/presentation/weblog/actions/package.html Mon May 1 15:23:02 2006
@@ -0,0 +1,27 @@
+<!--
+ 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.
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+ <title></title>
+</head>
+<body>
+Struts actions for weblog entries, categories and pings.
+
+</body>
+</html>
Added: incubator/roller/trunk/src/org/apache/roller/presentation/weblog/formbeans/BakeWeblogForm.java
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/src/org/apache/roller/presentation/weblog/formbeans/BakeWeblogForm.java?rev=398712&view=auto
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/presentation/weblog/formbeans/BakeWeblogForm.java (added)
+++ incubator/roller/trunk/src/org/apache/roller/presentation/weblog/formbeans/BakeWeblogForm.java Mon May 1 15:23:02 2006
@@ -0,0 +1,34 @@
+/*
+* 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.presentation.weblog.formbeans;
+
+import org.apache.struts.action.ActionForm;
+
+/**
+ * Holds the name of the theme chosen or
+ * the template being edited.
+ *
+ * @struts.form name="bakeWeblogForm"
+ *
+ * @author llavandowska
+ */
+public class BakeWeblogForm extends ActionForm
+{
+
+
+}
Added: incubator/roller/trunk/src/org/apache/roller/presentation/weblog/formbeans/CategoriesForm.java
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/src/org/apache/roller/presentation/weblog/formbeans/CategoriesForm.java?rev=398712&view=auto
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/presentation/weblog/formbeans/CategoriesForm.java (added)
+++ incubator/roller/trunk/src/org/apache/roller/presentation/weblog/formbeans/CategoriesForm.java Mon May 1 15:23:02 2006
@@ -0,0 +1,80 @@
+/*
+* 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.presentation.weblog.formbeans;
+
+import org.apache.roller.RollerException;
+import org.apache.roller.pojos.WeblogCategoryData;
+import org.apache.roller.presentation.forms.WeblogCategoryForm;
+
+
+/**
+ * @struts.form name="categoriesForm"
+ */
+public class CategoriesForm extends WeblogCategoryForm
+{
+ private String mParentId = null;
+ private boolean mMoveContents = false;
+ private String mMoveToCategoryId = null;
+ private String[] mSelectedCategories = null;
+
+ public CategoriesForm()
+ {
+ super();
+ }
+
+ public CategoriesForm( WeblogCategoryData catData, java.util.Locale locale ) throws RollerException
+ {
+ super(catData, locale);
+ }
+
+ public String getParentId()
+ {
+ return mParentId;
+ }
+
+ public void setParentId(String parentId)
+ {
+ mParentId = parentId;
+ }
+
+ //-------------------------------------------------- Property moveContents
+
+ /** If true then contents should be moved when this Category is removed */
+ public boolean getMoveContents() { return mMoveContents; }
+
+ /** If true then contents should be moved when this Category is removed */
+ public void setMoveContents( boolean flag ) { mMoveContents = flag;}
+
+ //----------------------------------------------- Property moveToCategoryId
+
+ /** Category where contents should be moved if this Category is removed */
+ public String getMoveToCategoryId() { return mMoveToCategoryId; }
+
+ /** Category where contents should be moved if this Category is removed */
+ public void setMoveToCategoryId( String id ) { mMoveToCategoryId = id;}
+
+ //--------------------------------------------- Property selectedCategories
+
+ /** Get selected Categories */
+ public String[] getSelectedCategories() { return mSelectedCategories; }
+
+ /** Set selected Categories */
+ public void setSelectedCategories( String[] f ) {mSelectedCategories = f;}
+}
+
Added: incubator/roller/trunk/src/org/apache/roller/presentation/weblog/formbeans/CategoryDeleteForm.java
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/src/org/apache/roller/presentation/weblog/formbeans/CategoryDeleteForm.java?rev=398712&view=auto
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/presentation/weblog/formbeans/CategoryDeleteForm.java (added)
+++ incubator/roller/trunk/src/org/apache/roller/presentation/weblog/formbeans/CategoryDeleteForm.java Mon May 1 15:23:02 2006
@@ -0,0 +1,151 @@
+/*
+* 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.
+*/
+/*
+ * Created on Jan 19, 2004
+ */
+package org.apache.roller.presentation.weblog.formbeans;
+
+import java.util.List;
+
+import org.apache.struts.action.ActionForm;
+
+/**
+ * @struts.form name="categoryDeleteForm"
+ */
+public class CategoryDeleteForm extends ActionForm
+{
+ private String name;
+ private String categoryId = null;
+ private String moveToWeblogCategoryId = null;
+ private List cats = null;
+ private Boolean inUse = Boolean.FALSE;
+ private Boolean confirmDelete = null;
+
+ /**
+ * @return
+ */
+ public List getCats()
+ {
+ return cats;
+ }
+
+ /**
+ * @return
+ */
+ public String getCategoryId()
+ {
+ return categoryId;
+ }
+
+ /**
+ * @return
+ */
+ public Boolean isInUse()
+ {
+ return inUse;
+ }
+
+ /**
+ * @return
+ */
+ public String getMoveToWeblogCategoryId()
+ {
+ return moveToWeblogCategoryId;
+ }
+
+ /**
+ * @param list
+ */
+ public void setCats(List list)
+ {
+ cats = list;
+ }
+
+ /**
+ * @param string
+ */
+ public void setCategoryId(String string)
+ {
+ categoryId = string;
+ }
+
+ /**
+ * @param b
+ */
+ public void setInUse(Boolean b)
+ {
+ inUse = b;
+ }
+
+ /**
+ * @param string
+ */
+ public void setMoveToWeblogCategoryId(String string)
+ {
+ moveToWeblogCategoryId = string;
+ }
+
+ /**
+ * @return
+ */
+ public Boolean isDelete()
+ {
+ return confirmDelete;
+ }
+
+ /**
+ * @param b
+ */
+ public void setConfirmDelete(Boolean b)
+ {
+ confirmDelete = b;
+ }
+
+ /**
+ * @return
+ */
+ public String getName()
+ {
+ return name;
+ }
+
+ /**
+ * @param string
+ */
+ public void setName(String string)
+ {
+ name = string;
+ }
+
+ /**
+ * @return Returns the delete.
+ */
+ public Boolean getConfirmDelete()
+ {
+ return confirmDelete;
+ }
+
+ /**
+ * @return Returns the inUse.
+ */
+ public Boolean getInUse()
+ {
+ return inUse;
+ }
+
+}
Added: incubator/roller/trunk/src/org/apache/roller/presentation/weblog/formbeans/CommentFormEx.java
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/src/org/apache/roller/presentation/weblog/formbeans/CommentFormEx.java?rev=398712&view=auto
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/presentation/weblog/formbeans/CommentFormEx.java (added)
+++ incubator/roller/trunk/src/org/apache/roller/presentation/weblog/formbeans/CommentFormEx.java Mon May 1 15:23:02 2006
@@ -0,0 +1,120 @@
+/*
+* 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.presentation.weblog.formbeans;
+
+import java.util.Locale;
+
+import javax.servlet.ServletRequest;
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.struts.action.ActionMapping;
+import org.apache.roller.RollerException;
+import org.apache.roller.pojos.CommentData;
+import org.apache.roller.presentation.forms.CommentForm;
+
+/**
+ * Extends the WeblogEntryForm so that additional properties may be added.
+ * These properties are not persistent and are only needed for the UI.
+ *
+ * @struts.form name="commentFormEx"
+ * @author Lance Lavandowska
+ */
+public class CommentFormEx extends CommentForm
+{
+ private String[] deleteComments = null;
+ private String[] spamComments = null;
+ private String mEntryId = null;
+
+ public CommentFormEx()
+ {
+ super();
+ }
+
+ public CommentFormEx(CommentData entryData, java.util.Locale locale ) throws RollerException
+ {
+ super(entryData, locale);
+ }
+
+ public String[] getDeleteComments()
+ {
+ return deleteComments;
+ }
+
+ public void setDeleteComments(String[] deleteIds)
+ {
+ deleteComments = deleteIds;
+ }
+
+ /**
+ * @return
+ */
+ public String[] getSpamComments()
+ {
+ return spamComments;
+ }
+
+ public void setSpamComments(String[] spamIds)
+ {
+ spamComments = spamIds;
+ }
+
+ /**
+ * @return
+ */
+ public String getWeblogEntryId()
+ {
+ return mEntryId;
+ }
+
+ /**
+ * @param string
+ */
+ public void setWeblogEntryId(String string)
+ {
+ mEntryId = string;
+ }
+
+ /**
+ * @see org.apache.struts.action.ActionForm#reset(org.apache.struts.action.ActionMapping, javax.servlet.http.HttpServletRequest)
+ */
+ public void reset(ActionMapping mapping, HttpServletRequest request)
+ {
+ super.reset(mapping, request);
+ deleteComments = null;
+ spamComments = null;
+ }
+
+ /**
+ * @see org.apache.struts.action.ActionForm#reset(org.apache.struts.action.ActionMapping, javax.servlet.ServletRequest)
+ */
+ public void reset(ActionMapping mapping, ServletRequest request)
+ {
+ super.reset(mapping, request);
+ deleteComments = null;
+ spamComments = null;
+ }
+
+ public void copyTo(org.apache.roller.pojos.CommentData dataHolder, Locale locale)
+ throws RollerException
+ {
+ super.copyTo(dataHolder, locale);
+ if (getSpam() == null) dataHolder.setSpam(Boolean.FALSE);
+ if (getNotify() == null) dataHolder.setNotify(Boolean.FALSE);
+ }
+}
+
Added: incubator/roller/trunk/src/org/apache/roller/presentation/weblog/formbeans/CommentManagementForm.java
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/src/org/apache/roller/presentation/weblog/formbeans/CommentManagementForm.java?rev=398712&view=auto
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/presentation/weblog/formbeans/CommentManagementForm.java (added)
+++ incubator/roller/trunk/src/org/apache/roller/presentation/weblog/formbeans/CommentManagementForm.java Mon May 1 15:23:02 2006
@@ -0,0 +1,278 @@
+/*
+* 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.presentation.weblog.formbeans;
+
+import java.text.DateFormat;
+import java.text.ParseException;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Locale;
+
+import javax.servlet.ServletRequest;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import org.apache.struts.action.ActionMapping;
+import org.apache.roller.pojos.CommentData;
+import org.apache.roller.util.DateUtil;
+import org.apache.roller.util.Utilities;
+
+/**
+ * @struts.form name="commentManagementForm"
+ * @author Dave Johnson
+ */
+public class CommentManagementForm
+ extends org.apache.struts.action.ActionForm
+ implements java.io.Serializable {
+
+ private static Log logger =
+ LogFactory.getFactory().getInstance(CommentManagementForm.class);
+
+ private String entryid = null;
+ private String handle = null;
+
+ private String searchString = null;
+ private String startDateString;
+ private String endDateString;
+
+ /** ALL, NO_SPAM or ONLY_SPAM */
+ private String spamString = "ALL";
+
+ /** ALL, NO_APPROVED or ONLY_APPROVED */
+ private String approvedString = "ALL";
+
+ /** max comments displayed per page */
+ private int count = 30;
+
+ /** offset into current query results */
+ private int offset = 0;
+
+ /** IDs of comments to mark as spam */
+ private String[] spamComments = new String[0];
+
+ /** IDs of comments to mark as approved */
+ private String[] approvedComments = new String[0];
+
+ /** IDs of comments to delete */
+ private String[] deleteComments = new String[0];
+
+ /** Limit updates to just this set of comma-separated IDs */
+ private String ids = null;
+
+
+ public void reset(ActionMapping mapping, ServletRequest request) {
+ // reset time fields to current time
+ Calendar cal = Calendar.getInstance(request.getLocale());
+ Date now = new Date();
+ cal.setTime(now);
+
+ DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, request.getLocale());
+ setEndDateString(df.format(now));
+
+ cal.set(Calendar.DAY_OF_MONTH, 1);
+ setStartDateString(df.format(cal.getTime()));
+ }
+
+ public void loadCheckboxes(List comments) {
+ ArrayList all = new ArrayList();
+ ArrayList approvedList = new ArrayList();
+ ArrayList spamList = new ArrayList();
+ Iterator it = comments.iterator();
+ while (it.hasNext()) {
+ CommentData comment = (CommentData)it.next();
+ all.add(comment.getId());
+ if (comment.getApproved().booleanValue()) {
+ approvedList.add(comment.getId());
+ }
+ if (comment.getSpam().booleanValue()) {
+ spamList.add(comment.getId());
+ }
+ }
+ String[] idArray = (String[])all.toArray(
+ new String[all.size()]);
+ ids = Utilities.stringArrayToString(idArray,",");
+
+ approvedComments = (String[])approvedList.toArray(
+ new String[approvedList.size()]);
+ spamComments = (String[])spamList.toArray(
+ new String[spamList.size()]);
+ }
+
+ public Date getStartDate(Locale locale) {
+ Date startDate = null;
+ final DateFormat df =
+ DateFormat.getDateInstance(DateFormat.SHORT, locale);
+ if (null != getStartDateString() && getStartDateString().trim().length() > 0) {
+ try {
+ startDate = DateUtil.getStartOfDay(df.parse(getStartDateString()));
+ } catch (ParseException e) {
+ // what!?! calendar widget handed us a bad date?
+ logger.debug("Parsing startDate", e);
+ }
+ }
+ return startDate;
+ }
+
+ public Date getEndDate(Locale locale) {
+ Date endDate = null;
+ final DateFormat df =
+ DateFormat.getDateInstance(DateFormat.SHORT, locale);
+ if (null != getEndDateString() && getEndDateString().trim().length() > 0) {
+ try {
+ endDate = DateUtil.getEndOfDay(df.parse(getEndDateString()));
+ } catch (ParseException e) {
+ // what!?! calendar widget handed us a bad date?
+ logger.debug("Parsing endDate", e);
+ }
+ }
+ return endDate;
+ }
+
+ public Boolean getSpam() {
+ if (spamString.equals("ONLY_SPAM")) {
+ return Boolean.TRUE;
+ } else if (spamString.equals("NO_SPAM")) {
+ return Boolean.FALSE;
+ }
+ return null;
+ }
+
+ public Boolean getPending() {
+ if (approvedString.equals("ONLY_PENDING")) {
+ return Boolean.TRUE;
+ }
+ return null;
+ }
+
+ public Boolean getApproved() {
+ if (approvedString.equals("ONLY_APPROVED")) {
+ return Boolean.TRUE;
+ } else if (approvedString.equals("ONLY_DISAPPROVED")) {
+ return Boolean.FALSE;
+ }
+ return null;
+ }
+
+ public int getCount() {
+ return count;
+ }
+
+ public void setCount(int count) {
+ this.count = count;
+ }
+
+ public int getOffset() {
+ return offset;
+ }
+
+ public void setOffset(int offset) {
+ this.offset = offset;
+ }
+
+ public String getStartDateString() {
+ return startDateString;
+ }
+
+ public void setStartDateString(String startDateString) {
+ this.startDateString = startDateString;
+ }
+
+ public String getEndDateString() {
+ return endDateString;
+ }
+
+ public void setEndDateString(String endDateString) {
+ this.endDateString = endDateString;
+ }
+
+ public String getSpamString() {
+ return spamString;
+ }
+
+ public void setSpamString(String spamString) {
+ this.spamString = spamString;
+ }
+
+ public String getPendingString() {
+ return approvedString;
+ }
+
+ public void setPendingString(String pendingString) {
+ this.approvedString = pendingString;
+ }
+
+ public String getIds() {
+ return ids;
+ }
+
+ public void setIds(String ids) {
+ this.ids = ids;
+ }
+
+ public String getSearchString() {
+ return searchString;
+ }
+
+ public void setSearchString(String searchString) {
+ this.searchString = searchString;
+ }
+
+ public String getEntryid() {
+ return entryid;
+ }
+
+ public void setEntryid(String entryid) {
+ this.entryid = entryid;
+ }
+
+ public String getWeblog() {
+ return handle;
+ }
+
+ public void setWeblog(String handle) {
+ this.handle = handle;
+ }
+
+ public String[] getDeleteComments() {
+ return deleteComments;
+ }
+
+ public void setDeleteComments(String[] deleteComments) {
+ this.deleteComments = deleteComments;
+ }
+
+ public String[] getSpamComments() {
+ return spamComments;
+ }
+
+ public void setSpamComments(String[] commentsToMarkAsSpam) {
+ this.spamComments = commentsToMarkAsSpam;
+ }
+
+ public String[] getApprovedComments() {
+ return approvedComments;
+ }
+
+ public void setApprovedComments(String[] approvedComments) {
+ this.approvedComments = approvedComments;
+ }
+
+}
Added: incubator/roller/trunk/src/org/apache/roller/presentation/weblog/formbeans/CommentQueryForm.java
URL: http://svn.apache.org/viewcvs/incubator/roller/trunk/src/org/apache/roller/presentation/weblog/formbeans/CommentQueryForm.java?rev=398712&view=auto
==============================================================================
--- incubator/roller/trunk/src/org/apache/roller/presentation/weblog/formbeans/CommentQueryForm.java (added)
+++ incubator/roller/trunk/src/org/apache/roller/presentation/weblog/formbeans/CommentQueryForm.java Mon May 1 15:23:02 2006
@@ -0,0 +1,26 @@
+/*
+* 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.presentation.weblog.formbeans;
+
+/**
+ * @struts.form name="commentQueryForm"
+ * @author Dave Johnson
+ */
+public class CommentQueryForm extends CommentManagementForm
+ implements java.io.Serializable {
+}