Esta página se está traducido el 2014-12-08.
Es posible que la versión inglés se actualizaba desde luego.
Temas de Alaveteli
Alaveteli utiliza temas para que el sitio tenga un aspecto y un funcionamiento distintos del predeterminado.. Los cambios pequeños, como el color y el logotipo, son relativamente sencillos, pero los temas también pueden controlar detalles más complejos, como el comportamiento del sitio.
Al personalizar su sitio basado en Alaveteli, existen numerosos detalles que puede modificar con tan solo editar los ajustes de configuración. Pero si desea modificar el aspecto del sitio o añadir comportamientos más específicos, necesitará elaborar un tema.
No necesita ser programador para realizar pequeños cambios, pero necesitará tener la suficiente confianza para copiar y modificar algunos archivos. Si no está seguro sobre este tema, ¡pida ayuda!
Qué le puede interesar cambiar
El requisito más habitual es añadir una marca al sitio, por lo menos, insertar su propio logotipo y su esquema de colores. Es posible que también desee modificar los distintos estados en los que puede hallarse una solicitud. También querrá editar las categorías en las que los organismos públicos pueden aparecer (por ejemplo, los grupos a mano izquierda de la página «View authorities» en WhatDoTheyKnow).
Es posible que desee personalizar otras opciones; escriba a la lista de correo de desarrollo para comentar sus necesidades. ¡Seguimos trabajando para encontrar el mejor método de llevar a cabo este tipo de modificaciones!
En todo caso, el principio importante a tener en cuenta es que cuanto menos sobrescriba y personalice el código, más sencillo será el mantenimiento de su sitio a largo plazo. Toda personalización es posible, pero para cada modificación más allá de los casos sencillos aquí documentados, pregúntese (o pregunte a su cliente): «¿podemos vivir sin esto?». Si la respuesta es «no», considere iniciar un debate sobre una forma de implementar los cambios mediante un complemento en lugar de sobrescribir el código central.
Principios generales
Intentamos encapsular todas las funcionalidades específicas del sitio en uno de los siguientes lugares:
- Configuración del sitio
(por ejemplo, el nombre de su sitio, los idiomas
disponibles, etc., en
config/general.yml
). - Datos (por ejemplo, los organismos públicos a lso que deben dirigirse las solicitudes).
- Un tema, instalado en
lib/themes
.
Este documento trata sobre lo que puede hacer en un tema.
Por defecto, el tema de muestra («alavetelitheme») ya está instalado.
Consulte la opción
THEME_URLS
en general.yml
para obtener información.
También puede instalar el tema de muestra manualmente ejecutando:
bundle exec rake themes:install
El tema de muestra contiene ejemplos para prácticamente todo lo que pueda interesarle personalizar. Probablemente le interese efectuar una copia, renombrarla y utilizarla como base para su propio tema.
Asegúrese de que su tema es lo más ligero posible
Cuanto más añade a su tema, más difícil resulta actualizarlo a versiones futuras de Alaveteli. Toda la información que añade a su tema sobrescribe detalles del tema central, así que, si elabora una nueva «plantilla principal», los nuevos widgets que aparezcan en el tema principal no aparecerán en su sitio web.
Por tanto, debería considerar cómo puede adaptar el sitio a su marca sin modificar el tema principal en exceso. Lo ideal sería que pudiese adaptar el sitio modificando únicamente los estilos CSS. También necesitará añadir páginas de ayuda personalizadas, como se describe a continuación.
Adaptar el sitio a su marca
Las plantillas principales que comprenden la apariencia y la interfaz de usuario de un
sitio basado en Alaveteli se hallan en app/views/
y utilizan la sintaxis ERB de Rails.
Por ejemplo, la plantilla para la página de inicio se encuentra en
app/views/general/frontpage.html.erb
y la correspondiente a la página de información
del sitio, en app/views/help/about.html.erb
.
Evidentemente podría editar directamente estos archivos centrales, pero no sería una buena idea, puedes cada vez le resultaría más difícil aplicar actualizaciones. Dicho esto, a veces le interesará modificar las plantillas centrales de forma que ofrezcan ventajas para todo el mundo, en cuyo caso, puede debatir los cambios en la lista de correo, aplicarlos en una adaptación de Alaveteli y publicar una solicitud de extracción (pull request).
Sin embargo, normalmente debería sobrescribir estas páginas en su propio
tema, situándolas en la ubicación correspondiente dentro del directorio
lib/
del tema. Es decir, se mostrará el archivo ubicado en
lib/themes/alavetelitheme/lib/views/help/about.html.erb
en
lugar del archivo principal de información sobre el sitio.
Modificar el logotipo
Alaveteli utiliza el flujo de atributos de Rails para convertir y comprimir las hojas de estilos escritas en
Sass,
la extensión del lenguaje CSS, en CSS minimizados y concatenados. Los atributos se almacenan en el núcleo de Alaveteli, en app/assets
, como fonts
, images
, javascripts
y stylesheets
.
El tema predeterminado incluye los directorios de atributos correspondientes en alavetelitheme/assets
. Los archivos añadidos a estos directorios tendrán prioridad sobre los ubicados en los directorios centrales. Al igual que con las plantillas, aparecerá el archivo lib/themes/alavetelitheme/assets/images/logo.png
en el sitio en lugar del logotipo app/assets/images/logo.png
.
Modificar el esquema de colores
Alaveteli utiliza un conjunto básico de módulos de
Sass
para definir la apariencia del sitio en dispositivos de distintos tamaños, así como algunos estilos básicos. Estos módulos se hallan en app/assets/stylesheets/responsive
. Los colores y fuentes se añaden en el tema, alavetelitheme los define en lib/themes/alavetelitheme/assets/stylesheets/responsive/custom.scss
. Los colores utilizados en el tema se definen como variables en la parte superior de este archivo, donde pueden editarse.
Modificar otros detalles de estilo
Para modificar otras opciones de estilo, puede añadir o editar los estilos en lib/themes/alavetelitheme/assets/stylesheets/responsive/custom.scss
. Los estilos definidos aquí tendrán prioridad sobre los ubicados en los módulos Sass, en app/assets/stylesheets/responsive
, pues serán importados en último lugar por app/assets/stylesheets/responsive/all.scss
. Sin embargo, si desea modificar significativamente el modo en que se muestra una parte concreta del sitio, puede interesarle sobrescribir uno de los módulos principales Sass. Puede sobrescribir la apariencia de la página de inicio, por ejemplo copiando app/assets/stylesheets/responsive/_frontpage_layout.scss
a lib/themes/alavetelitheme/assets/stylesheets/responsive/_frontpage_layout.scss
y editándolo después.
Puede cargar hojas de estilos y archivos javascript adicionales añadiéndolos a lib/themes/alavetelitheme/lib/views/general/_before_head_end.html.erb
.
Añadir sus propias categorías de organismos públicos
En Alaveteli las categorías se implementan utilizando etiquetas. Pueden utilizarse etiquetas específicas para agrupar autoridades en categorías. Las categorías se agrupan a su vez bajo encabezados de categoría en el margen de la página de visualización de autoridades, «View authorities». Puede crear, editar y reorganizar categorías y encabezados de categoría desde la interfaz de administración, en el elemento «Categories» del menú. Puede aplicar las etiquetas de categoría creadas a las autoridades en el elemento «Authorities» del menú de administración. Para que una autoridad aparezca dentro de una categoría, la etiqueta de dicha categoría debe ser una de las aplicadas a la autoridad en cuestión.
Personalizar los estados de solicitud
Como ya se ha mencionado, si puede vivir con los
estados de solicitud predeterminados de Alaveteli,
es buena idea hacerlo. Tenga en cuenta que puede definir tras cuántos días se considera
que una solicitud está «fuera de plazo» en el archivo de configuración principal del sitio: consulte
REPLY_LATE_AFTER_DAYS
.
Si no puede vivir con los estados tal y como están, existe un método muy básico para añadir otros
(que se irá mejorando con el tiempo). Actualmente no existe una forma sencilla de eliminar
un estado. Hay un ejemplo sobre cómo llevar a cabo estos cambios en el tema alavetelitheme
.
Para añadir estados, cree dos módulos en su tema,
InfoRequestCustomStates
y RequestControllerCustomStates
. El primero
debe contener estos métodos:
theme_calculate_status
: devuelve una etiqueta para identificar el estado actual de la solicitud.theme_extra_states
: devuelve una lista de etiquetas para identificar los estados adicionales que desea soportar.theme_display_status
: devuelve cadenas de texto legibles por humanos correspondientes a dichas etiquetas.
El segundo debe contener el siguietne método:
theme_describe_state
: devuelve un aviso para el usuario correspondiente tras haber clasificado una solicitud y lo redirige a la página siguiente correspondiente.
Una vez añadidos los estados adicionales, necesitará crear los siguientes archivos en su tema:
lib/views/general/_custom_state_descriptions.html.erb
: descripciones sobre sus nuevos estados, adecuadas para mostrar a usuarios finales.lib/views/general/_custom_state_transitions_complete.html.erb
: descripciones de estados nuevos que desee caracterizar como estados de «completación», para mostrar en el formulario de clasificación que requerimos que rellenen los solicitantes.lib/views/general/_custom_state_transitions_pending.html.erb
: igual que el anterior, pero para estados nuevos que desee caracterizar como estados «pendientes».
Puede consultar ejemplos de estas personalizaciones en
este commit
para la versión de Kosovo de Alaveteli, Informata Zyrtare (ignore el
archivo lib/views/general/_custom_state_transitions.html.erb
, no se utiliza).
Añadir nuevas páginas en la navegación
alavetelitheme/lib/config/custom-routes.rb
le permite extender las rutas básicas de
Alaveteli. El ejemplo de alavetelitheme
añade una página de ayuda adicional.
También peude utilizar esta función para sobrescribir el comportamiento de páginas
especificas, si es necesario.
Añadir o sobrescribir modelos o controladores
Si necesita añadir o extender el comportamiento de Alaveteli a nivel de modelo o controlador, consulte alavetelitheme/lib/controller_patches.rb
y alavetelitheme/lib/model_patches.rb
para obtener algunos ejemplos.
Trabajar con temas
Puede utilizar script/switch-theme.rb
para definir el tema actual, si está trabajando con múltiples temas. Esta opción puede resultar útil para cambiar entre el tema predeterminado alavetelitheme
y uno de su propia adaptación.