Extendiendo Simple

Nuevos tipos de campos

1 Extender la clase Campo y almacenarla en:

  • application/models

2 Editar el método factory de la clase Campo para agregar el nuevo Campo.

2 Reimplemento la función display($modo,$dato,$etapa_id)

// Funcion que debe retornar el html con que se despliega el campo en el formulario HTML.

// $modo => edicion : visualizacion
// $dato => El dato que esta almacenado actualmente y se quiere desplegar en el campo
// $etapa_id (Opcional) => Identificador de la etapa en la cual se esta desplegando el campo

display($modo,$dato,$etapa_id)

3 Opcionalmente puedo reimplementar las siguientes funciones:

// Campos adicionales en el formulario de ingreso de campos en editor de formularios
backendExtraFields()

// Validaciones adicionales en el formulario de ingreso de campos en editor de formularios
backendExtraValidate()

4 Editar los archivos de controladores y vistas necesarias para agregar a la interfaz gráfica la posibilidad de agregar estos nuevos campos:

  • application/controllers/backend/formularios.php
  • application/views/backend/formularios/editar.php

Nuevos tipos de acciones

1 Extiendo la clase Accion y almacenarla en:

  • application/models

2 Editar el método setTableDefinition de la clase Accion para agregar la nueva Accion

2 Reimplementar la función ejecutar(Etapa $etapa)

// Código que se debe ejecutar con la acción

//$etapa => Etapa en la que se esta ejecutando la acción.
ejecutar(Etapa $etapa)

3 Reimplemento la función displayForm()

// Debe retornar el formulario que se debe desplegar para configurar la acción
displayForm()

4 Reimplemento la función validateForm()

// Debe establecer las reglas de validación en los campos que configuran la acción
validateForm()

Nuevas funciones de evaluación

El lenguaje de expresiones Simple tiene un Whitelist con las funciones permitidas PHP que pueden ser ejecutadas.

El Whitelist puede ser editado en el archivo:

application/libraries/SaferEval.php

Si se desea agregar una nueva función PHP al Whitelist basta con agregarla al arreglo $this->allowedCalls

Si la función que se desea agregar es custom, es decir, no existe en la distribución de PHP, se deben seguir los siguientes pasos:

1- Crear un nuevo archivo helper en la carpeta application/helpers. El nombre debe seguir la nomenclatura MY_foo_helper donde foo es el nombre de tu helper.

2- En este archivo helper, escribes la función deseada. Por ejemplo, esta es una función que convierte una tabla JSON a HTML:

function matrix_to_html($matrix){
    $html='<table class="table" >';
    foreach($matrix as $row){
        $html.='<tr>';
        foreach($row as $data){
            $html.='<td>'.$data.'</td>';
        }
        $html.='</tr>';
    }
    $html.='</table>';
    return $html;
}

3- Editar el archivo application/config/autoload.php. En el arreglo de helpers agregar el nombre de tu helper.

4- Agregar el nombre de tu funcion al Whitelist en:

application/libraries/SaferEval.php

Nuevas funciones de validación

Simple trae una gama de funciones incoporadas para hacer validaciones sobre el input del usuario en campos de los formularios. Trae incorporado todo el set de funciones de validación ya incluidos en Codeigniter:

http://www.codeigniter.com/userguide2/libraries/form_validation.html#rulereference

Ademas Simple incorpora otras funciones de validación custom como:

Función Parametro Descripción
alpha_space string Valida si el string tiene solo caracteres alfa-numéricos y/o espacios.
is_unique valor => string, json => json Función que chequea si el valor es único. Es decir, no se encuentra dentro del conjunto json.

Si uno desea incorporar funciones de validación adicionales se debe editar el archivo:

application/libraries/MY_Form_validation.php

En este archivo se debe incorporar la función de validación que se desea.

La función recibe como primer parámetro el string con que se lleno el campo del formulario. A continuación va cualquier otro parametro adicional que se requiera.

La función debe retornar true si la validación es correcta y false en caso contrario.

Modificar y/o agregar nuevos tipos de documentos

Simple viene incorporado con dos tipos de documentos:

  • Blanco: Documento en blanco sin ningún formato adicional. El usuario modelador de trámites puede incorporar HTML como contenido.

  • Certificado: Documento con formato de certificado. Incorpora un header y footer con un diseño gráfico de certificado. Tiene elementos distintivos como logos, validadores QR, estampillas y firmas.

El template de cualquiera de estos certificados puede ser editado modificando los templates existentes:

  • application/libraries/blancopdf.php
  • application/libraries/certificadopdf.php

Ambas son clases que extienden de TCPDF. Ambas reimplementan los siguientes métodos:

// Constructor. Se pasan todos los parametros necesarios para el renderizado.
function __construct($parametro1, $parametro2, ..., $parametron)

// Se genera el contenido que ira en el header del documento (El header se repite en todas las páginas)
public function Header()

// Se genera el contenido del cuerpo del documento
public function Content()

// Se genera el contenido que ira en el footer del documento (El footer se repite en todas las páginas)
public function Footer()

// Funcion que genera el output y su formato. Por ejemplo, si debe ser descargable como archivo,
// el nombre del archivo, etc.
public function Output($name = 'doc.pdf', $dest = 'I')

Si uno quisiera agregar un nuevo tipo de documento se deben seguir los siguientes pasos:

1- Crear clase generadora de documentos que extienda de TCPDF. Almacenar la clase en application/libraries/

2- Modificar el archivo application/models/documento y su función render(). Agregar una nueva condicion para inicializar el nuevo generador cuando el tipo de documento corresponda.