/* * This library is part of OpenCms - * the Open Source Content Management System * * Copyright (c) Alkacon Software GmbH (http://www.alkacon.com) * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * For further information about Alkacon Software GmbH, please see the * company website: http://www.alkacon.com * * For further information about OpenCms, please see the * project website: http://www.opencms.org * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ package org.opencms.workplace.tools.workplace.rfsfile; import org.opencms.jsp.CmsJspActionElement; import java.io.IOException; import java.util.LinkedList; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.jsp.JspException; import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.PageContext; /** * Displays a certain amount of lines starting from a certain starting line * which are specified in the <code>{@link org.opencms.workplace.CmsWorkplaceManager}'s</code> * <code>{@link org.opencms.util.CmsRfsFileViewer}</code>.<p> * * @since 6.0.0 */ public class CmsRfsFileViewDialog extends A_CmsRfsFileWidgetDialog { /** * Boolean request parameter that switches between serving the content of the file * to the iframe of the page that is generated if the switch is false. <p> */ String m_paramShowlog; /** * Public constructor with JSP action element.<p> * * @param jsp the CmsJspActionElement */ public CmsRfsFileViewDialog(CmsJspActionElement jsp) { super(jsp); } /** * Public constructor with JSP variables.<p> * * @param context the JSP page context * @param req the JSP request * @param res the JSP response */ public CmsRfsFileViewDialog(PageContext context, HttpServletRequest req, HttpServletResponse res) { this(new CmsJspActionElement(context, req, res)); } /** * @see org.opencms.workplace.CmsWidgetDialog#displayDialog() */ public void displayDialog() throws JspException, IOException, ServletException { if (!Boolean.valueOf(getParamShowlog()).booleanValue()) { super.displayDialog(); } else { StringBuffer result = new StringBuffer(1024); // wrap a box with scrollbars around the file content: try { result.append("<pre>"); result.append(m_logView.readFilePortion()); result.append("</pre>"); } catch (Throwable f) { List commitErrors = getCommitErrors(); if (commitErrors == null) { commitErrors = new LinkedList(); } commitErrors.add(f); setCommitErrors(commitErrors); } JspWriter out = getJsp().getJspContext().getOut(); out.print(result.toString()); } } /** * Returns true whether the content of the file should be written to the response or false * if the page content should be generated.<p> * * @return true whether the content of the file should be written to the response or false * if the page content should be generated */ public String getParamShowlog() { return m_paramShowlog; } /** * Set the value to decide whether page content or the file content has to be shown to the response.<p> * * @param value the value to decide whether page content or the file content has to be shown to the response to set */ public void setParamShowlog(String value) { m_paramShowlog = value; } /** * Returns the dialog HTML for all defined widgets of the named dialog (page).<p> * * This overwrites the method from the super class to create a layout variation for the widgets.<p> * * @param dialog the dialog (page) to get the HTML for * @return dialog HTML for all defined widgets of the named dialog (page) */ protected String createDialogHtml(String dialog) { StringBuffer result = new StringBuffer(1024); // create widget table result.append(createWidgetTableStart()); // show error header once if there were validation errors result.append(createWidgetErrorHeader()); String fileContentHeader; if (m_logView.getFilePath() == null) { fileContentHeader = key(Messages.GUI_WORKPLACE_LOGVIEW_NO_FILE_SELECTED_0); } else { fileContentHeader = m_logView.getFilePath().replace('\\', '/'); } result.append(createWidgetBlockStart(fileContentHeader)); result.append("<iframe style=\"overflow: auto;\" src=\""); result.append(getJsp().link("/system/workplace/admin/workplace/logfileview/index.jsp?showlog=true")); result.append("\" width=\"100%\" height=\"400\" border=\"0\" frameborder=\"0\"></iframe>"); result.append(createWidgetBlockEnd()); // result.append(createFileContentBoxEnd()); // close widget table result.append(createWidgetTableEnd()); return result.toString(); } /** * @see org.opencms.workplace.CmsWidgetDialog#defineWidgets() */ protected void defineWidgets() { super.defineWidgets(); // no widgets as controls on the front page are just links to "Edit Settings" } }