1 16 package com.blandware.atleap.webapp.action.news; 17 18 import com.blandware.atleap.common.NewsModuleConstants; 19 import com.blandware.atleap.model.news.NewsItem; 20 import com.blandware.atleap.model.core.ContentLocale; 21 import com.blandware.atleap.service.news.NewsManager; 22 import com.blandware.atleap.webapp.action.core.BaseAction; 23 import com.blandware.atleap.webapp.form.NewsItemForm; 24 import com.blandware.atleap.webapp.util.core.LocaleUtil; 25 import com.blandware.atleap.webapp.util.core.WebappConstants; 26 import com.blandware.atleap.webapp.util.core.WebappUtil; 27 import com.blandware.atleap.webapp.util.news.NewsModuleWebConstants; 28 import org.apache.commons.validator.GenericValidator; 29 import org.apache.struts.action.ActionForm; 30 import org.apache.struts.action.ActionForward; 31 import org.apache.struts.action.ActionMapping; 32 import org.apache.struts.action.ActionMessage; 33 import org.apache.struts.action.ActionMessages; 34 35 import javax.servlet.http.HttpServletRequest ; 36 import javax.servlet.http.HttpServletResponse ; 37 import java.util.List ; 38 import java.util.Map ; 39 import java.util.Iterator ; 40 41 60 public final class CallUpdateNewsItemAction extends BaseAction { 61 70 public ActionForward execute(ActionMapping mapping, ActionForm form, 71 HttpServletRequest request, HttpServletResponse response) throws Exception { 72 73 request.getSession().removeAttribute(NewsModuleWebConstants.NEWS_ITEM_SUBMITTED_ACTION_KEY); 74 75 if ( isCancelled(request) ) { 76 return mapping.findForward("listNewsItems"); 77 } 78 79 if ( !request.isUserInRole("news-item-update") ) { 80 response.sendError(HttpServletResponse.SC_FORBIDDEN); 81 return null; 82 } 83 84 NewsItemForm newsItemForm = (NewsItemForm) form; 85 Long newsItemId = null; 86 if ( newsItemForm.getId() != null ) { 87 newsItemId = Long.valueOf(newsItemForm.getId()); 88 } else if ( request.getAttribute(NewsModuleWebConstants.NEWS_ITEM_ID_KEY) != null ) { 89 newsItemId = (Long ) request.getAttribute(NewsModuleWebConstants.NEWS_ITEM_ID_KEY); 90 } else if ( request.getSession().getAttribute(NewsModuleWebConstants.NEWS_ITEM_ID_KEY) != null ) { 91 newsItemId = (Long ) request.getSession().getAttribute(NewsModuleWebConstants.NEWS_ITEM_ID_KEY); 92 } else { 93 if ( log.isWarnEnabled() ) { 94 log.warn("Missing news item ID. Returning to list..."); 95 } 96 return mapping.findForward("listNewsItems"); 97 } 98 99 String redirectUrl = request.getParameter("redirectUrl"); 100 if ( GenericValidator.isBlankOrNull(redirectUrl) ) { 101 redirectUrl = (String ) request.getAttribute(WebappConstants.REDIRECT_URL_KEY); 102 } 103 if ( !GenericValidator.isBlankOrNull(redirectUrl) ) { 104 request.getSession().setAttribute(WebappConstants.REDIRECT_URL_KEY, redirectUrl); 105 } else { 106 request.getSession().removeAttribute(WebappConstants.REDIRECT_URL_KEY); 107 } 108 109 String localesMode = newsItemForm.getLocalesMode(); 110 if ( !"current".equalsIgnoreCase(localesMode) && !"all".equalsIgnoreCase(localesMode) ) { 111 localesMode = "selected"; 112 } 113 newsItemForm.setLocalesMode(localesMode); 114 115 NewsManager newsManager = (NewsManager) getBean(NewsModuleConstants.NEWS_MANAGER_BEAN); 116 NewsItem newsItem = newsManager.retrieveNewsItem(newsItemId); 117 if ( newsItem == null ) { 118 ActionMessages errors = new ActionMessages(); 120 errors.add("newsItemNotFound", new ActionMessage("news.errors.notFound")); 121 saveErrors(request, errors); 122 return mapping.findForward("listNewsItems"); 123 } 124 WebappUtil.copyProperties(newsItemForm, newsItem, request); 125 newsItemForm.setTitleMap(newsItem.getTitle()); 126 newsItemForm.setAnnotationMap(newsItem.getAnnotation()); 127 newsItemForm.setBodyMap(newsItem.getBody()); 128 129 List contentLocales = LocaleUtil.getInstance(servlet.getServletContext()).getAvailableLocales(); 130 131 if ("selected".equalsIgnoreCase(localesMode)) { 132 Map annotationCheckedBoxes = newsItemForm.getAnnotationCheckedBoxes(); 134 for (Iterator i = contentLocales.iterator(); i.hasNext();) { 135 ContentLocale contentLocale = (ContentLocale) i.next(); 136 annotationCheckedBoxes.put(contentLocale.getIdentifier(), Boolean.TRUE); 137 } 138 139 if ("selected".equalsIgnoreCase(localesMode)) { 141 request.setAttribute(WebappConstants.SELECT_ALL_LOCALES_CHECKBOX_IS_CHECKED, Boolean.TRUE); 142 } 143 } 144 145 request.getSession().setAttribute(WebappConstants.CONTENT_LOCALES_COLLECTION_KEY, contentLocales); 146 147 saveToken(request); 149 return mapping.findForward("updateNewsItem"); 150 } 151 152 } | Popular Tags |