[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