1 16 package com.blandware.atleap.webapp.action.core.menuItem; 17 18 import com.blandware.atleap.common.Constants; 19 import com.blandware.atleap.model.core.MenuItem; 20 import com.blandware.atleap.service.core.MenuManager; 21 import com.blandware.atleap.webapp.action.core.BaseAction; 22 import com.blandware.atleap.webapp.form.MenuItemForm; 23 import com.blandware.atleap.webapp.util.core.LocaleUtil; 24 import com.blandware.atleap.webapp.util.core.WebappConstants; 25 import com.blandware.atleap.webapp.util.core.WebappUtil; 26 import org.apache.commons.validator.GenericValidator; 27 import org.apache.struts.action.ActionForm; 28 import org.apache.struts.action.ActionForward; 29 import org.apache.struts.action.ActionMapping; 30 import org.apache.struts.action.ActionMessage; 31 import org.apache.struts.action.ActionMessages; 32 33 import javax.servlet.http.HttpServletRequest ; 34 import javax.servlet.http.HttpServletResponse ; 35 import java.util.LinkedList ; 36 import java.util.List ; 37 38 57 public final class CallUpdateMenuItemAction extends BaseAction { 58 67 public ActionForward execute(ActionMapping mapping, ActionForm form, 68 HttpServletRequest request, HttpServletResponse response) throws Exception { 69 70 MenuItemForm menuItemForm = (MenuItemForm) form; 71 72 Long ownerId = null; 73 if ( !GenericValidator.isBlankOrNull(menuItemForm.getOwnerId()) ) { 74 ownerId = Long.valueOf(menuItemForm.getOwnerId()); 75 } else if ( request.getSession().getAttribute(WebappConstants.OWNER_ID_KEY) != null ) { 76 ownerId = (Long ) request.getSession().getAttribute(WebappConstants.OWNER_ID_KEY); 77 } else { 78 if ( log.isWarnEnabled() ) { 79 log.warn("Missing owner ID. Returning to index..."); 80 } 81 return mapping.findForward("admin"); 82 } 83 84 request.getSession().setAttribute(WebappConstants.OWNER_ID_KEY, ownerId); 85 86 request.getSession().removeAttribute(WebappConstants.BROWSER_LOCALE_SUFFIX_KEY); 88 89 Long menuItemId = null; 90 if ( !GenericValidator.isBlankOrNull(menuItemForm.getId()) ) { 91 menuItemId = Long.valueOf(menuItemForm.getId()); 92 } else { 93 if ( log.isWarnEnabled() ) { 94 log.warn("Missing menu item ID. Returning to list..."); 95 } 96 return mapping.findForward("listMenuItems"); 97 } 98 99 if ( isCancelled(request) ) { 100 String url = (String ) request.getSession().getAttribute(WebappConstants.REDIRECT_URL_KEY); 102 if (!GenericValidator.isBlankOrNull(url)) { 103 request.getSession().removeAttribute(WebappConstants.REDIRECT_URL_KEY); 104 return new ActionForward(url, true); 105 } 106 return mapping.findForward("listMenuItems"); 107 } 108 109 if ( !request.isUserInRole("core-menuItem-update") ) { 110 response.sendError(HttpServletResponse.SC_FORBIDDEN); 111 return null; 112 } 113 114 String redirectUrl = request.getParameter("redirectUrl"); 115 if ( GenericValidator.isBlankOrNull(redirectUrl) ) { 116 redirectUrl = (String ) request.getAttribute(WebappConstants.REDIRECT_URL_KEY); 117 } 118 if ( GenericValidator.isBlankOrNull(redirectUrl) ) { 119 redirectUrl = (String ) request.getSession().getAttribute(WebappConstants.REDIRECT_URL_KEY); 120 } 121 if ( !GenericValidator.isBlankOrNull(redirectUrl) ) { 122 request.getSession().setAttribute(WebappConstants.REDIRECT_URL_KEY, redirectUrl); 123 } else { 124 request.getSession().removeAttribute(WebappConstants.REDIRECT_URL_KEY); 125 } 126 127 MenuManager menuManager = (MenuManager) getBean(Constants.MENU_MANAGER_BEAN); 128 MenuItem menuItem = menuManager.retrieveMenuItem(menuItemId); 129 if ( menuItem == null ) { 130 ActionMessages errors = new ActionMessages(); 132 errors.add("menuItemNotFound", new ActionMessage("core.menuItem.errors.notFound")); 133 saveErrors(request, errors); 134 return mapping.findForward("listMenuItems"); 135 } 136 137 if ( menuItem.isRedefinition() || !menuItem.isDynamic() || !menuItem.getOwner().getId().equals(ownerId) ) { 138 if ( log.isWarnEnabled() ) { 140 log.warn("Tried to update item, which is hardcoded or defined on another layer. It is prohibited. Returning to list."); 141 } 142 return mapping.findForward("listMenuItems"); 143 } 144 145 WebappUtil.copyProperties(menuItemForm, menuItem, request); 146 menuItemForm.setTitleMap(menuItem.getTitle()); 147 menuItemForm.setToolTipMap(menuItem.getToolTip()); 148 menuItemForm.setOwnerId(ownerId.toString()); 149 150 List contentLocales = LocaleUtil.getInstance(servlet.getServletContext()).getAvailableLocales(); 151 152 request.getSession().setAttribute(WebappConstants.CONTENT_LOCALES_COLLECTION_KEY, contentLocales); 153 154 request.setAttribute(WebappConstants.OWNER_INFO_KEY, WebappUtil.getLocalizableInfo(ownerId, request)); 156 157 MenuItem parentItem = menuItem.getParentItem(); 159 if ( parentItem != null ) { 160 LinkedList parents = new LinkedList (); 162 while ( parentItem != null ) { 163 parents.addFirst(parentItem); 164 parentItem = parentItem.getParentItem(); 165 } 166 request.setAttribute(WebappConstants.MENU_ITEM_PARENTS_LIST_KEY, parents); 167 } 168 169 saveToken(request); 171 172 return mapping.findForward("updateMenuItem"); 173 } 174 175 } | Popular Tags |