# Personalización

- Modifica tablas básicas.

- Aprovecha lo disponible.

SIVeL puede personalizarse para adaptarse mejor a su proyecto, al menos de 4 formas:

- Configurando detalles de la interfaz (i.e la presentación que ven los usuarios finales cuando abren SIVeL en un navegador).

- Modificando tablas básicas para que reflejen mejor los datos de su proyecto (por ejemplo las posibles profesiones de las víctimas, los posibles sectores sociales e incluso la tipificación de violencia).

- Empleando campos existentes que su proyecto no requiere para representar otros que si requiere. Por ejemplo si su proyecto requiere especificar etnia de una víctima, más que el sector social al que pertenece, puede emplear el campo sector social y adaptar la tabla para que tenga justamente las etnias posibles.

- Modificar fuentes. Lo cual es plenamente legal --aunque nos alegraría mucho que compartiera sus cambios en la lista sivel-desarrollo@lists.sourceforge.net.

## Tablas básicas

- Puede ver y editar información disponible en tablas básicas

- Puede añadir o eliminar registros a tablas básicas

Es la forma más directa de personalización como se explica en la sección correspondiente (ver ).

## Detalles de la interfaz de usuario

El logo que se presenta en el fondo puede remplazarse, se trata del archivo `imagen/FondoSecc.jpg` de las fuentes de SIVeL. Los estilos empleados pueden configurarse en la hoja `estilo.css`.

La única página que no requiere autenticación es `consulta_web.php` Aunque si ingresa un usuario autenticado del rol apropiado puede mostrar más opciones que puede habilitar para que los casos de su organización sean consultados desde el web. Por seguridad, se recomienda que la base pública sea una segunda base, copia de la información pública de la base real.

Algunos detalles de la interfaz también pueden configurarse en variables del archivo `aut/conf.php`. A continuación se listan las variables de configuración, algunas se tratan en detalle en las siguientes secciones:

&varconfphp;

## Casos de personalización reinterpretando

Algunos nombres en la interfaz de usuario pueden cambiarse desde un sólo sitio para que una organización pueda reinterpretar uno o más campos típicos de SIVeL (aunque no es lo más recomendable si se piensa en compartir información con otras organizaciones que empleen SIVeL).

Lo que queremos decir con reinterpretar posiblemente se entienda con un ejemplo: En una organización donde se registran casos relacionados con iglesias, se prefirió emplear la tabla filiación política para registrar la iglesia de la víctima.

En tal caso basta editar valores de la variable `etiqueta` del archivo `aut/conf.php`. Este archivo está organizado en el mismo orden de las pestañas de la ficha de captura. Para el ejemplo mencionado bastaría añadir datos con iglesias a la tabla básica Filiación, deshabilitar los originales y cambiar la línea:

    'filiacion'=> 'Filiación política',

por

    'filiacion'=> 'Iglesia',

## Modificaciones simples a las fuentes

Aunque modificar las fuentes de SIVeL, como con cualquier otro proyecto requiere previo estudio de estas, algunos detalles facilitarán la labor: se emplean estándares de programación de Pear; se cuenta con pruebas de regresión que facilitan la detección de errores que podrían introducirse al modificar las fuentes; se emplean librerías estándares de Pear (resaltamos `DB_DataObject_FormBuilder`).

### Modificaciones a la ficha de captura

Modificar la ficha de captura es posiblemente la operación más compleja en las fuentes de SIVeL, pues puede requerir cambiar la estructura de la base de datos, cambiar la forma de las búsquedas, los reportes y los conteos. El diseño actual de SIVeL permite hacer varios cambios al formulario de captura con relativa facilidad así como añadir tablas básicas y que las búsquedas por Consulta Externa operen sobre nuevos datos añadidos a la ficha. Para esto tenga en cuenta:

- El único dato indispensable para abrir un caso es la fecha. Para agregar un presunto responsable requiere una clasificación de violencia. Para agregar una víctima requiere clasificación de violencia y presunto responsable.

- Considere nuevos datos que se pondrán y su ubicación.

- Modifique el modelo de datos para dar espacio a nuevos datos, preferiblemente en una nueva tabla o en su defecto en una tabla existente.

Se sugiere que los cambios que deban hacerse a la base se especifiquen en SQL en un script nuevo (digamos `miorganizaion.sql`) que pueda ejecutarse después de crear la base típica de SIVeL (i.e procurar no modificar `estructura.sql`). También se sugiere no eliminar campos ni tablas de la base de datos, sino más bien no hacerlos visibles en la interfaz.

Si requiere agregar una nueva tabla tenga en cuenta:

- Agregar definición en `miorganizacion.sql` y ejecutar con `bin/psql.sh`.

- Agregar alfabéticamente definición de tabla y llaves en `sivel.ini` e integridad referencial en `sivel.links.ini` --en el primero los códigos resultan de la suma de:

      128 NOT NULL
      1 INTEGER
      2 VARCHAR o TEXT
      4 DATE
      8 TIME
      16 BOOLEAN
      32 LOG TEXT
      64 BLOB

- Crear archivo con datos de tabla como descendiente de DB_DataObject, el nombre debe ser el mismo de la tabla primera letra mayúscula y demás minúsculas. Esta clase deberá tener toda la información necesaria para editar información de la tabla desde el menú tablas básicas (uno simple para emplear como plantilla es `Escrito_caso.php`)

- Si efectivamente la tabla agregada es una tabla básica agregar referencia en la variable `tablas_basicas` en el archivo `aut/conf.php`

Para efectuar cambios a la interfaz tener en cuenta:

- Puede crear o modificar una pestaña, cada pestaña corresponde a un archivo de interfaz, cuyo nombre comienza con `Pag` (`PagMemo.php` es uno simple para comenzar)

- Algunos detalles de la presentación de la información de una pestaña se determinan en las clases que corresponden a tablas, y que son descendientes de `DB_DataObject`. Los detalles por cuadrar los específica la librería `DB_DataObject_FormBuilder`. En estas mismas clases puede cuadrar otros detalles con las funciones `preGenerateForm` y `postGenerateForm` que se llaman antes y después de generar el formulario.

- Si necesita agregar o eliminar pestañas asegure que se referencian las pestañas en el orden que se desean en la variable `ficha_tabuladores` de `aut/conf.php`. Puede verse la descripción de las funciones por definir en `PagBaseSimple` (ver documentación técnica) y como orden posible para probar después de hacer cambios se sugiere:

  1. Vea que la interfaz sea como la espera modificando la constructora de la clase y las funciones `iniVar`, `nullVar`, `formularioAgrega` y `formularioValores`.

  2. Verifique que se procesen los datos examinando la base de datos después de cambiarse de pestaña. Note que tras procesar cada pestaña debe llamarse la función `funcionario_caso`

  3. Agregue instrucciones para eliminar en las funciones `eliminaDep` y `elimina`.

  4. Agregue información para búsquedas desde Consulta Web en la función `datosBusqueda`.