Inicio de mvnForum Bienvenido Guest   | Iniciar sesión
  Búsqueda  
  Indice  | Temas Recientes  | Quién Está en Línea  | Lista de Usuarios  | Nuevo Usuario  | Búsqueda  | Ayuda  | RSS feeds


Ir a »
Estado del tema: Normal
Total de mensajes en este tema: 5
[Añadir a Mis Favoritos] [Añadir un aviso a este tema] [Publicar nuevo tema]
Autor
Tema Anterior Este tema ha sido visto 8241 veces y tiene 4 respuestas Tema Siguiente
Masculino rogelio.lamas
Stranger



Ingresó: 30-oct-2012
Mensajes: 6
Estado: Desconectados

confused   ¿Alguien que se haya peleado con A_CmsListReport con éxito? Responder a este mensaje
Responder citando

Buenos días a todos

¿alguien ha tenido la desagradable tarea de generar un A_CmsListReport y que no haya muerto en el intento?

Es que estoy leyendo el código fuente de como lo hacen los demás módulos y no me entero de misa la mitad.

Gracias

Saluditos
[31-ene-2014 8:53:44] Mostrar la Versión Imprimible        Send Private Message [Enlace] Reportar mensaje ofensivo: por favor inicie sesión primero  Ir al inicio 
Masculino sergio
Administrador
Avatar del Miembro

España
Ingresó: 27-sep-2006
Mensajes: 2470
Estado: Desconectados
Re: ¿Alguien que se haya peleado con A_CmsListReport con éxito? Responder a este mensaje
Responder citando

Eso es para hacer un punto de administración no?? la verdad que yo me desesperé ya hace tiempo y prefiero ni volver a intentarlo ....
----------------------------------------
---------------------------------------------------
Sergio Rapos Vargas.
Administrador de OpenCmsHispano.
sergio.raposo@opencmshispano.es
[01-feb-2014 14:18:54] Mostrar la Versión Imprimible        Send Private Message [Enlace] Reportar mensaje ofensivo: por favor inicie sesión primero  Ir al inicio 
Masculino rogelio.lamas
Stranger



Ingresó: 30-oct-2012
Mensajes: 6
Estado: Desconectados

Re: ¿Alguien que se haya peleado con A_CmsListReport con éxito? Responder a este mensaje
Responder citando

Jajaja, la verdad es que desespera bastante hacer un modulo de administración porque no hay documentación de nada.

Bueno, si lo consigo os lo publico por estos lares. Que a cabezón no me ganan jejeje

Saludos
[05-feb-2014 13:34:08] Mostrar la Versión Imprimible        Send Private Message [Enlace] Reportar mensaje ofensivo: por favor inicie sesión primero  Ir al inicio 
Masculino rogelio.lamas
Stranger



Ingresó: 30-oct-2012
Mensajes: 6
Estado: Desconectados

Re: ¿Alguien que se haya peleado con A_CmsListReport con éxito? Responder a este mensaje
Responder citando

Bueno, tal y como prometí aquí tenéis una miniguía:

Primero deberemos crear una clase que herede de A_CmsListReport.
Debemos sobreescribir el método initializeThread(). El cual generará un objeto de tipo A_CmsReportThread (la cual extenderemos creando nuestra propia clase) y retornaremos como resultado de la función anteriormente descrita.

A tener en cuenta que si a nuestro A_CmsListReport queremos pasarle un parámetro este debe cumplir unas condiciones respecto del nombre. sus métodos getter y setter serán tal que getParam[NOMBRE_DEL_PARAMETRO]. Donde [NOMBRE_DEL_PARAMETRO] debe cumplir que empieza por mayúscula y el resto minúsculas. Ya que probé con MiParametro, y no lo cogía, pero si pruebas con Miparametro si.

Importante en la clase A_CmsReportThread sobreescribir el método run() que es el que hará los distintos procesos y los pintará en la lista.

MyFirstReport.java
public class MyFirstReport extends A_CmsListReport {
public static final String PARAM_PARAMETRO = "parametro";
private String m_paramParametro;

public MyFirstReport(CmsJspActionElement jsp) {
super(jsp);
}

public MyFirstReport(PageContext context, HttpServletRequest req, HttpServletResponse res) {
super(context, req, res);
}

@Override
public I_CmsReportThread initializeThread() {
if (getParamParametro() == null) {
throw new CmsIllegalArgumentException(Messages.get().container(
Messages.ERR_MISSING_PARAM_1,
PARAM_PARAMETRO));
}

// aqui podemos modificar el constructor para pasarle parametros extra si lo deseamos
CustomCmsReportThread thread = new CustomCmsReportThread(getCms());
return thread;
}


public String getParamParametro() {
return m_paramConfiguration;
}

public void setParamParametro(String paramParametro) {
this.m_paramParametro = paramParametro;
}


@Override
protected void initWorkplaceRequestValues(CmsWorkplaceSettings settings, HttpServletRequest request) {
super.initWorkplaceRequestValues(settings, request);
}
}


CustomCmsReportThread.java
public class CustomCmsReportThread extends A_CmsReportThread {

/** The last error occurred. */
private Throwable m_error;

public CmsParsingReportThread(CmsObject cms) {
super(cms, Messages.get().getBundle().key(Messages.GUI_PARSING_THREAD_NAME_0));
initHtmlReport(cms.getRequestContext().getLocale());
}

@Override
public Throwable getError() {
return m_error;
}

@Override
public String getReportUpdate() {
return getReport().getReportUpdate();
}

@Override
public void run() {
// start message
getReport().println(Messages.get().container(Messages.RPT_BEGIN_0), I_CmsReport.FORMAT_HEADLINE);

try {
/* Aquí lo que tengamos que hacer. Es posible que tengamos que llamar a otra clase para realizar
alguna tarea compleja, lo mejor es pasarle como parámetro el report con getReport() como parámetro
y usarlo igual que usaríamos el logger.debug() */

// end message
getReport().println(Messages.get().container(Messages.RPT_END_0), I_CmsReport.FORMAT_HEADLINE);
} catch (Throwable exc) {
// error message
getReport().println(org.opencms.search.Messages.get().container(Messages.RPT_FAILED_0), I_CmsReport.FORMAT_WARNING);
getReport().println(exc);
m_error = exc;
}
}

}


Para llamar al report, en mi caso desde un botón que esta dentro de una lista. Debemos hacer lo siguiente:

Crear el fichero report.jsp

<%@ page import="es.ejemplo.report.*, org.opencms.workplace.list.A_CmsListReport" %>
<%
A_CmsListReport wp = new MyFirstReport(pageContext, request, response);
wp.displayDialog();
%>


y en las propiedades de report.jsp

admintoolhandler-args = params:action=initial&parametro=${param.mobilecontent}|path:/mimodulo/report
admintoolhandler-class = org.opencms.workplace.tools.CmsInvisibleToolHandler // esto es para que no salga en la barra de menus


Y luego desde la lista A_CmsListDialog en el método executeListSingleActions()

if (LIST_ACTION_EXECUTE_REPORT.equals(getParamListAction())) {
Map<String, String> params = new HashMap<String, String>();
params.put(MyFirstReport.PARAM_PARAMETRO, getSelectedItem().get(LIST_COLUMN_NAME).toString());
params.put(CmsDialog.PARAM_ACTION, CmsDialog.DIALOG_INITIAL);

// comprobar en las propiedades del jsp que hemos rellenado con el path correcto su toolHandler-args
// params:action=initial&parametro=${param.configuration}|path:/mimodulo/report
getToolManager().jspForwardTool(this, this.getCurrentToolPath() + "/report", params);
}


En fin, espero que os sirva de algo. Si tenéis dudas preguntarme, aunque más allá de esto no se si podré ayudaros jejeje.

Saludos
[10-feb-2014 16:04:16] Mostrar la Versión Imprimible        Send Private Message [Enlace] Reportar mensaje ofensivo: por favor inicie sesión primero  Ir al inicio 
Masculino rogelio.lamas
Stranger



Ingresó: 30-oct-2012
Mensajes: 6
Estado: Desconectados

Re: ¿Alguien que se haya peleado con A_CmsListReport con éxito? Responder a este mensaje
Responder citando

Hay un par de erratas, en las últimas lineas donde pone {param.XXX} poner {param.parametro} es decir, el nombre que contiene la constante PARAM_PARAMETRO.
[10-feb-2014 16:06:22] Mostrar la Versión Imprimible        Send Private Message [Enlace] Reportar mensaje ofensivo: por favor inicie sesión primero  Ir al inicio 
[Versión imprimible] [Publicar nuevo tema]