1 24 package org.riotfamily.riot.editor.ui; 25 26 import java.util.HashMap ; 27 28 import javax.servlet.http.HttpServletRequest ; 29 import javax.servlet.http.HttpServletResponse ; 30 31 import org.riotfamily.common.util.ResourceUtils; 32 import org.riotfamily.riot.editor.CustomEditorDefinition; 33 import org.riotfamily.riot.editor.EditorConstants; 34 import org.riotfamily.riot.editor.EditorRepository; 35 import org.springframework.util.Assert; 36 import org.springframework.web.servlet.ModelAndView; 37 import org.springframework.web.servlet.mvc.Controller; 38 39 public class CustomEditorController implements Controller { 40 41 private EditorRepository editorRepository; 42 43 private String viewName = ResourceUtils.getPath( 44 CustomEditorController.class, "CustomEditorView.ftl"); 45 46 47 public CustomEditorController(EditorRepository repository) { 48 this.editorRepository = repository; 49 } 50 51 public ModelAndView handleRequest(HttpServletRequest request, 52 HttpServletResponse response) throws Exception { 53 54 String editorId = (String ) request.getAttribute(EditorConstants.EDITOR_ID); 55 Assert.notNull(editorId, "No editorId in request scope"); 56 57 CustomEditorDefinition editorDef = (CustomEditorDefinition) 58 editorRepository.getEditorDefinition(editorId); 59 60 Assert.notNull(editorDef, "No such editor: " + editorId); 61 62 String objectId = request.getParameter(EditorConstants.OBJECT_ID); 63 String parentId = request.getParameter(EditorConstants.PARENT_ID); 64 65 HashMap model = new HashMap (); 66 model.put(EditorConstants.EDITOR_ID, editorId); 67 model.put(EditorConstants.OBJECT_ID, objectId); 68 model.put(EditorConstants.PARENT_ID, parentId); 69 model.put("editorUrl", editorDef.getTargetUrl(objectId, parentId)); 70 71 return new ModelAndView(viewName, model); 72 } 73 74 public static String getUrl(String editorId, String objectId, String parentId) { 75 StringBuffer sb = new StringBuffer (); 76 sb.append("/custom/").append(editorId); 77 if (objectId != null) { 78 sb.append("?objectId=").append(objectId); 79 } 80 else if (parentId != null) { 81 sb.append("?parentId=").append(parentId); 82 } 83 return sb.toString(); 84 } 85 86 } 87 | Popular Tags |