/**********************************************************************************
* $URL: https://source.sakaiproject.org/svn/metaobj/trunk/metaobj-util/tool-lib/src/java/org/sakaiproject/metaobj/utils/mvc/impl/TemplateJstlView.java $
* $Id: TemplateJstlView.java 105079 2012-02-24 23:08:11Z ottenhoff@longsight.com $
***********************************************************************************
*
* Copyright (c) 2004, 2005, 2006, 2008 The Sakai Foundation
*
* Licensed under the Educational Community 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.opensource.org/licenses/ECL-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.
*
**********************************************************************************/
package org.sakaiproject.metaobj.utils.mvc.impl;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.sakaiproject.component.cover.ComponentManager;
import org.sakaiproject.metaobj.utils.mvc.intf.CommonModelController;
import org.sakaiproject.portal.api.Editor;
import org.sakaiproject.portal.api.PortalService;
import org.sakaiproject.tool.api.Placement;
import org.sakaiproject.tool.cover.ToolManager;
import org.sakaiproject.util.EditorConfiguration;
import org.sakaiproject.util.ResourceLoader;
import org.springframework.web.servlet.view.JstlView;
/**
* Created by IntelliJ IDEA.
* User: John Ellis
* Date: Apr 30, 2004
* Time: 8:29:53 AM
* To change this template use File | Settings | File Templates.
*/
public class TemplateJstlView extends JstlView {
private String rightMenu = null;
private String leftMenu = null;
private String header = null;
private String footer = null;
private String body = null;
private String template = null;
private String title = null;
private String defaultTemplateDefName = "defaultTemplateDef";
private String commonModelControllerName = "commonModelController";
/**
* Prepares the view given the specified model, merging it with static
* attributes and a RequestContext attribute, if necessary.
* Delegates to renderMergedOutputModel for the actual rendering.
*
* @see #renderMergedOutputModel
*/
public void render(Map model, HttpServletRequest request, HttpServletResponse response) throws Exception {
// Added to be able to conform to the locale in JSTL jsp's
ResourceLoader rb = new ResourceLoader();
model.put("locale", rb.getLocale().toString());
SimpleBeanWrapper mapWrapper = (SimpleBeanWrapper)
getWebApplicationContext().getBean(defaultTemplateDefName);
Map defaultTemplateDef = (Map) mapWrapper.getWrappedBean();
addComponent("_rightMenu", rightMenu, request, defaultTemplateDef);
addComponent("_leftMenu", leftMenu, request, defaultTemplateDef);
addComponent("_header", header, request, defaultTemplateDef);
addComponent("_footer", footer, request, defaultTemplateDef);
addComponent("_body", body, request, defaultTemplateDef);
addComponent("_title", title, request, defaultTemplateDef);
template = addComponent("_template", template, request, defaultTemplateDef);
PortalService portalService = (PortalService) ComponentManager.get(PortalService.class);
Placement placement = ToolManager.getCurrentPlacement();
Editor editor = portalService.getActiveEditor(placement);
String preloadScript = editor.getPreloadScript() == null ? ""
: "<script type=\"text/javascript\" language=\"JavaScript\">" + editor.getPreloadScript() + "</script>\n";
String editorScript = editor.getEditorUrl() == null ? ""
: "<script type=\"text/javascript\" language=\"JavaScript\" src=\"" + editor.getEditorUrl() + "\"></script>\n";
String launchScript = editor.getLaunchUrl() == null ? ""
: "<script type=\"text/javascript\" language=\"JavaScript\" src=\"" + editor.getLaunchUrl() + "\"></script>\n";
StringBuilder headJs = new StringBuilder();
headJs.append("<script type=\"text/javascript\" language=\"JavaScript\" src=\"/library/js/headscripts.js\"></script>\n");
headJs.append("<script type=\"text/javascript\" language=\"JavaScript\">var sakai = sakai || {}; sakai.editor = sakai.editor || {}; \n");
headJs.append("sakai.editor.collectionId = '" + portalService.getBrowserCollectionId(placement) + "';\n");
headJs.append("sakai.editor.enableResourceSearch = " + EditorConfiguration.enableResourceSearch() + ";</script>\n");
headJs.append(preloadScript);
headJs.append(editorScript);
headJs.append(launchScript);
request.setAttribute("editorHeadScript", headJs.toString());
CommonModelController controller =
(CommonModelController) getWebApplicationContext().getBean(commonModelControllerName);
controller.fillModel(model, request, response);
this.setUrl(template);
super.render(model, request, response);
}
protected String addComponent(String menuTag, String menuName, HttpServletRequest request, Map defaultTemplateDef) {
if (menuName == null) {
menuName = (String) defaultTemplateDef.get(menuTag);
}
if (menuName != null) {
request.setAttribute(menuTag, menuName);
}
return menuName;
}
public String getRightMenu() {
return rightMenu;
}
public void setRightMenu(String rightMenu) {
this.rightMenu = rightMenu;
}
public String getLeftMenu() {
return leftMenu;
}
public void setLeftMenu(String leftMenu) {
this.leftMenu = leftMenu;
}
public String getHeader() {
return header;
}
public void setHeader(String header) {
this.header = header;
}
public String getFooter() {
return footer;
}
public void setFooter(String footer) {
this.footer = footer;
}
public String getBody() {
return body;
}
public void setBody(String body) {
this.body = body;
}
public String getDefaultTemplateDefName() {
return defaultTemplateDefName;
}
public void setDefaultTemplateDefName(String defaultTemplateDefName) {
this.defaultTemplateDefName = defaultTemplateDefName;
}
public String getTemplate() {
return template;
}
public void setTemplate(String template) {
this.template = template;
}
public String getCommonModelControllerName() {
return commonModelControllerName;
}
public void setCommonModelControllerName(String commonModelControllerName) {
this.commonModelControllerName = commonModelControllerName;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}