/* =============================================================================== * * Part of the InfoGlue Content Management Platform (www.infoglue.org) * * =============================================================================== * * Copyright (C) * * This program is free software; you can redistribute it and/or modify it under * the terms of the GNU General Public License version 2, as published by the * Free Software Foundation. See the file LICENSE.html for more information. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY, including the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along with * this program; if not, write to the Free Software Foundation, Inc. / 59 Temple * Place, Suite 330 / Boston, MA 02111-1307 / USA. * * =============================================================================== */ package org.infoglue.deliver.taglib.structure; import java.util.Locale; import javax.servlet.jsp.JspException; import org.infoglue.cms.security.InfoGluePrincipal; import org.infoglue.cms.util.CmsPropertyHandler; import org.infoglue.cms.util.StringManager; import org.infoglue.cms.util.StringManagerFactory; import org.infoglue.deliver.taglib.component.ComponentLogicTag; /** * This taglib creates the needed html so a user can click on a link and get the save page part dialog. * * @author Mattias Bogeblad */ public class SavePagePartTemplateTag extends ComponentLogicTag { private static final long serialVersionUID = 3257850991142318897L; private String html; private boolean showInPublishedMode = false; private boolean showInDecoratedMode = true; public int doEndTag() throws JspException { produceResult(getSavePagePartTemplateHTML()); html = null; showInPublishedMode = false; showInDecoratedMode = false; return EVAL_PAGE; } private String getSavePagePartTemplateHTML() { String result = ""; try { String componentEditorUrl = "" + CmsPropertyHandler.getComponentEditorUrl(); if(html == null) { InfoGluePrincipal principal = getController().getPrincipal(); String cmsUserName = (String)getController().getHttpServletRequest().getSession().getAttribute("cmsUserName"); if(cmsUserName != null && !CmsPropertyHandler.getAnonymousUser().equalsIgnoreCase(cmsUserName)) principal = getController().getPrincipal(cmsUserName); Locale locale = getController().getLocaleAvailableInTool(principal); String savePagePartTemplateHTML = getLocalizedString(locale, "deliver.editOnSight.savePagePartTemplateHTML"); html = "<a href=\"javascript:saveComponentStructure('$saveUrl');\">" + savePagePartTemplateHTML + "</a>"; } String url = "" + componentEditorUrl + "CreatePageTemplate!input.action?contentId=" + this.getController().getSiteNode().getMetaInfoContentId() + "&componentId=" + this.getComponentLogic().getInfoGlueComponent().getId(); result = html.replaceAll("\\$saveUrl", url); } catch (Exception e) { e.printStackTrace(); } return result; } public String getLocalizedString(Locale locale, String key) { StringManager stringManager = StringManagerFactory.getPresentationStringManager("org.infoglue.cms.applications", locale); return stringManager.getString(key); } public void setHtml(final String html) throws JspException { this.html = evaluateString("EditOnSightTag", "html", html); } public void setShowInPublishedMode(boolean showInPublishedMode) { this.showInPublishedMode = showInPublishedMode; } public void setShowInDecoratedMode(boolean showInDecoratedMode) throws JspException { this.showInDecoratedMode = showInDecoratedMode; } }