[opencms-dev] Solved: Printer Version Class
Salvador Santander
dominion.salvador.ext at juntadeandalucia.es
Fri Aug 8 12:11:01 CEST 2003
Here is a class for obtain a printer version of your pages. ( sorry... the
spanish comments )
The use of this class is very easy, you must compile this class( substitute
the name of package ) and copy the classess generated by the compiler in the
directory occlasses/company/template/ . In your template you must write a
default template and a printer version template: <TEMPLATE
name="VersionImprimible"> for the printer friendly page and when you want to
open the printer friendly page you must use the method eGetUrlPrinterVersion
that returns the url of the printer version page.
package company.template;
/**
* Clase que da soporte a la version imprimible de paginas. Para utilizar
esta clase
* debe estar definida demas de la plantilla por defecto una
"VersionImprimible" que
* contenga la plantilla para impresión ( sin menus... ) y para que se elija
esta plantilla
* se debe llamar a pagina.html?version=imprimible
* @author Salvador Santander Gutiérrez
* @company dominion t.i. ( www.dominion.es )
*/
import com.opencms.template.*;
import com.opencms.file.*;
import com.opencms.core.*;
import java.util.*;
import javax.servlet.http.*;
import java.io.*;
public class PrinterVersionXmlTemplate extends CmsXmlTemplate{
public byte[] getContent( CmsObject cms, String templateFile, String
elementName,
Hashtable parameters,String templateSelector )
throws CmsException
{
String versionPagina; // Version de la pagina ( imprimible o
no imprimible )
String plantillaSeleccionada; // Plantilla que se va a seleccionar
para interpretar la pagina
CmsXmlTemplateFile ficheroPlantilla; // Fichero asociado a la
plantilla
// Incializacion de variables
versionPagina = null;
plantillaSeleccionada = templateSelector;
// Obtenemos la plantilla
ficheroPlantilla = getOwnTemplateFile( cms, templateFile,
elementName,
parameters,
templateSelector );
// Obtenemos la cadena de parametros
if ( ( cms.getRequestContext() != null )
&& ( cms.getRequestContext().getRequest() != null ) )
{
versionPagina =
cms.getRequestContext().getRequest().getParameter( "version" );
}
if ( ( versionPagina != null ) && (
versionPagina.toUpperCase().equals( "IMPRIMIBLE" ) ) )
{
plantillaSeleccionada = "VersionImprimible";
// Ahora procesamos la pagina con la plantilla correspondiente
return startProcessing( cms, ficheroPlantilla, elementName,
parameters, plantillaSeleccionada );
}
else
return super.getContent( cms, templateFile, elementName,
parameters, templateSelector );
}
/***
* Método que devuelve la cadena de parametros originales
* @return Devuelve la cadena de parámetros originales de la forma
"?par1=val1..."
* o cadena vacia si no hay parametros.
*/
private String getOriginalQueryString( CmsObject cms, String tagContent,
A_CmsXmlContent doc, Object userObject ) throws CmsException
{
if ( this.getQueryString( cms, tagContent, doc, userObject ) !=
null )
{
return ( String ) this.getQueryString( cms, tagContent, doc,
userObject );
}
else
return "";
}
/***
* Método que devuelve la url que se ha llamado
* @ cms Objeto cms de donde sacar la URL
* @return Devuelve la url original
*/
private String getOriginalURL( CmsObject cms, String tagContent,
A_CmsXmlContent doc, Object userObject )
throws CmsException
{
String cadena = "";
if ( ( cms.getRequestContext().getUri().length() > 0 )
&& ( cms.getRequestContext().getUri().charAt( 0 ) == '/' ) )
{
cadena = ( String ) this.getServletPath( cms, tagContent, doc,
userObject )
+ cms.getRequestContext().getUri().substring( 1 );
}
else if ( ( cms.getRequestContext().getUri().length() > 0 )
&& ( cms.getRequestContext().getUri().charAt( 0 ) == '\\' ) )
{
cadena = ( String ) this.getServletPath( cms, tagContent, doc,
userObject )
+ cms.getRequestContext().getUri().substring( 1 );
}
else
{
cadena = ( String ) this.getServletPath( cms, tagContent, doc,
userObject )
+ cms.getRequestContext().getUri();
}
return cadena;
}
/***
* Método que devuelve la url para sacar la version imprimible
* @return Devuelve la cadena con la url y los parametros
correspondientes
*/
public Object eGetUrlPrinterVersion( CmsObject cms, String tagContent,
A_CmsXmlContent doc, Object userObject )
throws CmsException
{
CmsXmlTemplateFile ficheroPlantilla; // Fichero asociado a la
plantilla
String cadenaParametros; // Cadena de paramentros
originales de la pagina
String urlResult; // URL resultado con todos los
parametros
String urlPagina; // URL de la pagina
Enumeration parametros;
cadenaParametros = getOriginalQueryString( cms, tagContent, doc,
userObject );
urlPagina = getOriginalURL( cms, tagContent, doc,
userObject );
if ( ( cadenaParametros != null ) && ( cadenaParametros.length() >
0 ) )
urlResult = urlPagina + cadenaParametros + "&version=imprimible";
else
urlResult = urlPagina + "?version=imprimible";
return ( Object )urlResult;
}
}
More information about the opencms-dev
mailing list