SPIP 1.9

1ro de Julio de 2006 : cinco años después de la salida de la primer versión pública, sale SPIP 1.9.

Puedes bajar esta versión en la dirección:
http://www.spip.net/fr_download

o utilizar el nuevo spip_loader que descarga directamente el paquete zip a tu servidor, y lanza la instalación.

* * *

He aquí las principales novedades de esta nueva versión respecto a la precedente versión estable (SPIP 1.8.3).

1. El espacio público

Nuevos esqueletos de la distribución

Los esqueletos por omisión fueron “refrescados”, y respectan mejor los estandar W3C y los criterios de accesibilidad. Se volvió a pensar la navegación. Las hojas de estilo CSS fueron simplificadas y documentadas para facilitar la personalización de la presentación.

Estos esqueletos están construidos con inclusiones : tres, para el menú de navegación por secciones, el encabezado y el pié de página, que se repiten en cada página, y dos más para los foros y las firmas de peticiones.

Los formularios de SPIP también fueron rediseñados. Para una mejor accesibilidad, cada campo de ingreso está etiquetado de un <label>, y se agrupan más rigurosamente estos diferentes elementos en «bloques lógicos» gracias a las balizas dedicadas <fieldset> y <legend>. Además, se facilita notablemente su presentación gráfica con CSS : ¡Qué formularios más bonitos! (tracucción por completar).

Sindicación avanzada

Los esqueletos de hilos de sindicación (backend) pasan al formato RSS 2.0. Una opción en la configuración del sitio permite especificar si se quiere difundir la totalidad del contenido en los hilos RSS o solamente un resúmen. El hilo de sindicación también comporta información acerca de la sección del artículo, de las palabras claves y de los archivos que le son asociados (podcasting). En lectura, cuando tu sitio en SPIP sindica otro sitio que dispone de un hilo enriquecido, también sabe analizar esos datos. Leer el artículo La syndication de contenus (por traducir).

Formatos de documentos adicionales

El formato SVG (Scalable Vector Graphics), intepretado por y nativo en Firefox y Opera desde hace poco, se admite como nuevo tipo de documentos integrables en un texto (con el atajo <emb1>). Al incorporar este formato javascript, se asegura su carga en el sitio de la manera siguiente:
-  en caso de ser subido por un simple redactor, SPIP pourga el documento de todo código javascript y de toda referencia a un archivo javascript;
-  en caso de ser subido por un administrador, SPIP acepta el documento tal cual.

También se toman en cuenta otros formatos: Abiword (abw), Blender (blend), Flash Video (flv), fuentes de cararcteres truetype (ttf), así como el conjunto de formatos de tipo «open document» (OpenOffice.org).

Direcciones de las páginas

Los archivos article.php3 etc., que estaban instalados en la raíz del sitio para llamar el esqueleto article, ya no son necesarios y desaparecieron.

Estos archivos ya no aparecen en las URLs por omisión (que ahora se llaman «urls página» y son de la forma /spip.php?article12 (para elart&iculo número 12) o también /spip.php?page=plan (para.. ¡el plano!).

Cabe notar :
-  se proporciona un archivo htaccess.txt para permitir que los visitantes (y motores de búsqueda) que conocen estas antiguas direcciones sean servidos correctamente. En la mayoría de hospedajes alcanza con copiar este archivo bajo el nombre .htaccess (archivo invisible) para activarlo. Este archivo permite además servir los otros modos de gestión de las direcciones de páginas («URLs propres», etc).
-  en el caso de una migración, si dejas los antiguos archivos article.php3 etc en la raíz, continúan a funcionar gracias al archivo fantasma inc-public.php3 — pero cuidado esta compatibilidad desaparecerá con la siguiente versión de SPIP.
-  la gestión de la duración de validez de la caché (variable $delais) ahora se la encarga a la baliza #CACHE que se inscribe directamente en el esqueleto (la variable $delais, no obstante, continúa funcionando si está presente).

Para elegir otro modo de gestión de las direcciones siempre es posible modificar la variable $type_urls en el archivo ecrire/mes_options.php.

Archivos php o php3 ?

De manera general, todos los archivos .php3se nombran ahora .php, pero SPIP aún entiende los antiguos nombres, lo que permite que tus archivos personalizados (mes_fonctions.php3, ecrire/inc_connect.php3 o ecrire/mes_options.php3) siempre se tomen en cuenta.

Pero ya no será el caso con SPIP 2.0: piensa en cambiar el nombre de estos tres archivos cuanto antes.

Compatibilidad: SPIP necesita una versión de php superior a 4.0.8, y es compatible con las versiones 5.x. Su compatibilidad con MySQL 4 y 5 fue retocada y mejorada.

Filtros gráficos

Una importante colección de nuevos filtros permite aplicar tratamientos gráficos a las imágenes.

Necesitan la presencia de GD2 en el servidor.

Ciertos filtros tienen que ver con el color (pasar a blanco y negro, a sepia, oscurecer, aclarar, ...), otros permiten la rotación, hacer borrosa la imagen, aplicarle un efecto de espejo, volverla semi-transparente, aplicar una «máscara» de transparencia, etc.

Un artículo presenta el conjunto de estos nuevos filtros de tratamiento gráfico (aún por traducir).

El filtro |couleur_extraire permite extraer un color de una imagen (logo, documento adjunto...) para aplicarlo a otros elementos de la página (bloques de color, estilo CSS, imágen tipográfica, etc.). Se pueden así automatizar variaciones de colores entre las diferentes páginas del sitio, conservando cierta coherencia gráfica.

Una serie de filtros permite luego modificar este color (aclararlo, oscurecerlo, etc.) para crear una paleta completa de colores. Un artículo presenta la utilización de estos filtros sobre los colores de imágenes (aún por traducir).

Igualmente, aparece el filtro |image_typo que permite crear imágenes tipográficas, es decir imágenes que representan texto en una fuente de caracteres presente en el servidor, lo que garantiza una presentación uniforme en todos los navegadores cuyas fuentes de caracteres particulares no serán solicitadas. Un artículo presenta la utilización completa de estos filtros image_typo (aún por traducir). Además de GD2, este filtro requiere la presencia de Freetype en el servidor (en general se instala con GD2).

Mejora de la reducción de imágenes

En la configuración del sitio, pestaña «Funciones avanzadas», se aconseja vivamente seleccionar el método GD2 (si está disponible en el servidor, evidentemente). En efecto, la reducción realizada ahora con este método es mucho más precisa: conserva las zonas transparentes de las imágenes GIF y PNG.

El filtro |reduire_image se transforma en |image_reduire (todos los filtors de tratmiento de imágenes empiezan así por |image_). La antigua denominación aún está disponible.

Un nuevo filtro, |image_reduire_par reduce las dimensiones de una imagen según cierto factor (por ejemplo: |image_reduire_par{2} reduce las dimensiones de la imagen a la mitad).

Nuevas balizas

  • #CACHE. Los $delais de las páginas pueden ahora ser fijadas en los mismos esqueletos, con #CACHE{duracion} (notar : se puede indicar, como antes, una expresión del estilo 24*3600). Esta nueva escritura tiene como ventaja suplementaria producir igualmente un encabezado HTTP avisándole al cliente (y a la cadena de proxys) que la página no va a cambiar durante cierto tiempo.
  • #HTTP_HEADER permite definir los encabezados HTTP d las páginas. Ejemplo: #HTTP_HEADER{Content-Type: text/css}. IMPORTANTE: el hecho de utilizar esta baliza provoca la supresión por SPIP de los botones de administración : remplaza pués la antigua variable global $flag_preserver, que será abandonada en SPIP 2.0.
  • #CHEMIN{fichier} (como «CAMINO», mejora la baliza #DOSSIER_SQUELETTE). #CHEMIN{xxx} devuelve el camino completo hacia el archivo xxx, que se encuentre a la raíz, en la carpeta de esqueletos, en dist/, etc.
  • #DESCRIPTIF_SITE_SPIP devuelve, como su nombre en francés indica, el descriptivo del sitio, que se define en la página de configuración general del sitio. Útil para las balizas meta.
  • Modificación de #LOGO_SITE_SPIP: de aquí en adelante diferente del logo por omisión de las secciones (rubon0.jpg), #LOGO_SITE_SPIP devuelve ahora el logo del sitio (siteon0.jpg), que se agrega, como el titulo y el descriptivo del sitio, en la página de configuración general del sitio.
  • Sitios sindicados: creación de las balizas #SOURCE y #URL_SOURCE que permiten mostrar respectivamente el nombre y la dirección de la fuente original de un contenido sindicado a través de un portal. En los contenidos sindicados, la baliza #TAGS muestra en forma de microformatos los enlaces hacia los documentos adjuntos, las palabras claves y la sección.
    Para mas detalles leer La syndication de contenus (aun no traducido...).
  • la baliza técnica #CONFIG permite mostrar el valor de un parámetro guardado en la tabla spip_meta
  • muy técnico también, #EVAL{} evaluará la expresion PHP puesta entre corchetes. #EVAL{2*7} da pués 14, #EVAL{_DIR_IMG_PACK} da el camino hacia la carpeta ecrire/img_pack/ (utilizar con modéración)
  • Se dispone ahora de une notación simplificada para los INCLURE donde sólo se especifica el nombre del esqueleto por incluir, bajo la forma <INCLURE {fond=esqueleto2} {id_article}>. (Nota: no se ha decidido aún si esta notación llevara a un almacenamiento «interno» del trozo de archivo cache en la página corriente.)
  • en materia de seguridad, es ahora posible de desactivar totalmente los filtros de seguridad sobre una baliza aplicándole un doble asterisco (ejemplo: [(#TEXTE**)] permite compilar php insertado en un artículo — pero si dejas esta posibilidad tal cual en un esqueleto, te expones a serios problemas... ).
  • las balizas con argumentos, es decir seguidas de un par de corchetes, benefician de una escritura alivianada, ya no siendo obligatorios corchetes y paréntesis: así que se puede escribir _ #EXPOSE{rojo} en vez de
    [(#EXPOSE{rojo})].

Paginación automática de bucles

Se integra un sistema genérico de paginación de resultados de un bucle: utiliza el criterio {pagination} (que puede tomar en argumento el número de elementos a mostrar por pagina: {pagination 5}) y las balizas #PAGINATION y #ANCRE_PAGINATION. Los esqueletos por omisión comprenden numerosos ejemplos de paginación (leer el artículo de documentación Le système de pagination - aún por traducir...). Nótese que este sistema es incompatible con la contrib’ que despejó ampliamente el tema.

Criterios

-  El criterio {inverse} puede tomar en parámetro cualquier baliza para variar dinámicamente el sentido del orden. Es posible escribir: <BOUCLE_ejemplo(ARTICLES){par #ENV{orden}}{inverse #ENV{sentidorden}}>, lo que permite elegir la columna de clasificación y el sentido del orden por la URL (&sentidorden=1 o &sentidorden=0)

-  la possibilidad de hacer condicional un criterio ({lang?}>) se generaliza y beneficia de una compilación minuciosa, evitando provocar un «jointure SQL» cuando finalmente no será necesario.

-  el criterio {xxx IN 1,2,3} acepta ahora que un cuadro de valores le sea pasado en la URL (ver definición del criterio IN - por traducir...).

Mejor gestión de la caché

El archivo de caché ya no depende solo de la página, sino también del nombre de dominio, del valor de $dossier_squelettes y del valor de una variable global nombrada $marqueur, que se puede fijar libremente. Esto permite, entre otros, cambiar los esqueletos «al vuelo» y seguir beneficiando de la caché (personalización, funcionalidad «var_skel»...).

Igualmente, el archivo de caché ya no se comprime si es pequeño (< 16 ko) para ganar un poco de tiempo en los esqueletos que tienen muchas (pequeñas) inclusiones.

Idioma y caracteres

-  de aquí en adelante, SPIP se instala por omisión con el juego de caracteres «universal» utf-8. Propone un botón en el espacio privado, para transformar el sitio a ese juego de caracteres (pero esto no tiene nada de obligatorio).

Para facilitar esta conversión, si tus esqueletos comportan caracteres acentuados, seran transformados al vuelo (al momento de calcular la página) hacia el juego de caracteres especificado para el sitio.

-  Se propone un nuevo idioma: el bosnio.

-  Un filtro |direction_css permite «invertir» un archivo CSS para los idiomas que se escriben de derecha a izquierda. Si la css por invertir se llama por ejemplo estilo.css, este filtro utiliza (en el caso en que el idioma corriente se escriba de derecha a izquierda) una eventual hoja de estilos estilo_rtl.css; si no existe, crea automáticamente una hoja RTL remplazando todas las ocurrencias de left por right y vice-versa (y la guarda en la carpeta IMG/cache-css/). En general se aplica a una baliza #CHEMIN: [(#CHEMIN{estilo.css}|direction_css)].

2. El espacio privado y la administración

Introducción de AJAX

El espacio privado integra, de manera experimental (ciertas funcionalidades no son activas con MSIE), elementos de navegación AJAX (o mas bien AJAH, los elementos HTML son fabricados directamente por el servidor). Estos autorizan una navegación más rica sin recargar la integralidad de la página. Estas formas de navegación están destinadas, esencialmente, a los «grandes» sitios (es decir que comportan numerosas secciones y artículos).

A partir de cierto numero de secciones, el menú desplegable que permite seleccionar en que sección se encuentra el elemento corriente (por ejemplo un artículo) se transforma en un pequeño navegador de cuatro columnas que muestra la estructura del sitio:

Este pequeño navegador, además de una navegación más clara en la estructura del sitio, propone su propio motor de búsqueda.

Las listas de elementos (en particular los artículos) se benefician de AJAX de dos maneras:
— cuando hay numerosos elementos la presentación de 10 en 10 (artículos 1 a 10, luego 11 a 20, etc.) se hace sin recargar la integralidad de la página, solo la lista se vuelve a mostrar; el pequeño botón «Plus» arriba a la derecha permite mostrar la integralidad de la lista, también sin volver a cargar toda la página;
— en los artículos, cuando el sitio es multilingue la sigla «Micrófono» que marca el multilinguismo hace bascular la presentación de la lista en un modo que permite seguir el estado de las traducciones.

Rapidez de impresión en pantalla

La presentación del espacio privado era muy lenta bajo Internet Explorer 6 ; un código específico fue desarrollado para este navegador que logra ahora una velocidad de presentación comparable a lo que se obtiene con otros navegadores. ¡Pero qué esto no te disuada de pasar a Firefox!

Por otro lado, se desactivó la compresión de páginas del espacio privado para obtener una impresión final más rápida.

Rediseño del estatuto de administradores restringidos

Este estatuto sufría algunas incoherencias y fue totalmente revisado. Para aprovechar plenamente las nuevas atribuciones, es preferible que este estatuto se aplique exclusivamente a sectores (las secciones de primer nivel), pese a que su aplicación a otras sub-secciones siga siendo posible.

Los administradores restringidos pueden ahora manejar los foros de sus sectores, instalar documentos subidos por FTP a la carpeta upload/login, hacer un respaldo XML de sus secciones (guardado en esa misma carpeta), visualizar las estadísticas. En la página principal del espacio privado, un cartucho arriba a la derecha procura enlaces directos a las secciones que administran, y sistemáticamente la página de una sección indica en un cartucho similar la lista de administradores restringidos de la sección.

A la inversa, las posibilidades transversales a la administración de una sección (creación de palabras claves, apertura de cuentas, vaciado de la caché) ya no les son accesibles (ciertas lo eran, mas o menos fácilmente) para que los administradores puedan dominar la evolución del sitio. (evitar las palabras claves casi idénticas, conocer los nuevos redactores).

Mejora del sistema de respaldo

El sistema para importar/exportar tablas SQL al formato XML ahora toma en cuenta las tablas externas. Además es más robusto frente a las interrupciones del proceso de respaldo cuando la base es voluminosa, y muestra más a menudo la progresión.

También se acelera la restauración, y es más robusta respecto a archivos de respaldo de antiguas versiones de SPIP. Permite restaurar directamente un respaldo realizado con phpmyadmin.

Mejora de la indexación

Se ha vuelto a escribir el código de manera genérica para tomar en cuenta cualquier tabla declarada que comporte un campo idx : SPIP puede pues indexar tablas adicionales , y restituirlas normalmente a través de bucles con el criterio {recherche}.

El peso de los diferentes campos en la indexación es parametrable.

Se fusionan en una sola las diferentes tablas de indexación.

Mejora del descuento de estadísticas

Un análisis más fino del los enlaces entrantes permite un descuento más significativo, y ya no es necesario establecer una conexión a la base de datos a cada visita, lo que puede alivianar considerablemente la carga del servidor.

Por otro lado, la lista de sitios referers propone miniaturas de la portada de éstos (en todo caso de la gran mayoría). Por omisión, la fuente de estas miniaturas es Thumbshots.org. Es posible modificar el sitio proveedor, con una u otra de las configuraciones siguientes:

$source_vignettes = "http://open.thumbshots.org/image.pxf?url=http://";
$source_vignettes = "http://msnsearch.srv.girafa.com/srv/i?s=MSNSEARCH&r=http://";
$source_vignettes = "http://pthumbnails.alexa.com/image_server.cgi?id=www.monsite.net&size=small&url=http://";

3. La interfaz de programación

Se prosiguió la reescritura del código para ofrecer a termino una interfaz de programación estandar. Se proveen las informaciones de este párrafo para permitir a las diferentes extensiones de SPIP (en particular las miles de contribuciones disponibles en SPIP-Contrib) poder funcionar sobre esta nueva versión, incluso en el caso de una instalación mutualizada. No obstante, estas informaciones no garantizan la presencia de tal o tal funcionalidad en versiones ulteriores de SPIP, para las cuales la problemática de la interfaz de programación será totalmente revisitada.

Reorganización de los archivos y carpetas

Como visto, desaparecieron los archivos de extensión .php3, corroborando el abandono de la compatibilidad con PHP3, operada ya con SPIP 1.8. Este cambio de nombre indispensable para levantar la ambigüedad de contenidos se acompañó de una reorganización completa de las carpetas.

La raíz ya no contiene ni esqueletos ni hojas de estilo, que ahora figuran en la carpeta dist, indispensable y que no se debe borrar.

Como script, la raíz sólo contiene spip.php, y su alias index.php (un reglage interno permite poner ./ en lugar de spip.php en las URL: define('_SPIP_SCRIPT', '') pero por omisión es define('_SPIP_SCRIPT', 'spip.php') ya que no se puede estar absolutamente seguro que la raíz del sitio va a llamar ese script (bien puede ser prioritario un simple index.html con una página estática).

Los otros scripts fueron desplazados a sub-carpetas de ecrire/ y se reparten así:

  • exec/ => los scripts que producen páginas del espacio privado;
  • action/ => los scripts que modifican la base sin constuir una página que sea devuelta al cliente (por ejemplo el cambio de estatuto accionado por un indicador de lista);
  • base/ => las funciones que tratan la base de datos;
  • inc/ => les bibliotecas de funciones utilizadas por SPIP.

Sobrecarga de archivos estandar

Con la organización que se acaba de describir, es posible cambiar el comportamiento de SPIP en el espacio privado sin por eso tener que modificar directamente su código fuente.

Ahora, a cualquier script s del espacio privado se lo llama con una URL de la forma ecrire/?exec=s..... SPIP va entonces a mirar cada una de las carpetas que figuran en la constante SPIP_PATH si existe un archivo exec/s.php. El primero encontrado será cargado, y se supone que define la función exec_s, que será entonces aplicada. En último recurso, SPIP cambiará cargara el archivo standard ecrire/exec/s.php que contiene la definición de la función exec_s_dist que será aplicada.

Así mismo, se desarrolla un comportamiento similar para las funciones action_a_dist definidas en los archivos action/a.php.

También se pueden sobrecargar las bibliotecas estandar, que son cargadas por la función include_spip y ya no include_ecrire (qui esta declarada obsoleta, pero continúa a funcionar). En una llamada de include_spip('inc/nombre') SPIP va igualmente a buscar un archivo homónimo en una subcarpeta inc de las carpetas de SPIP_PATH que será cargado en lugar del archivo estandar.

Ya habrás entendido que esta interfaz también permite agregarle a SPIP scripts y bibliotecas, siempre sin modificar su código fuente.

El llamado de scripts a través de una función, y ya no directamente, también presenta el interés de forzar la nomenclatura de variables globales, lo que tiene ventajas en términos de seguridad.

Este trabajo tiene dos desenlaces importantes: la integración de un sistema de plugins, y la posibilidad de mutualizar el código de ejecución de SPIP entre varios sitios.

Plugins

Introducción de un systema de plugins ; un nuevo sub-menú aparece en el menú de «Configuración» cuando se detecta una carpeta nombrada plugins/ a la raíz del sitio. Se puede entonces activar uno à uno los plugins instalados en esta carpeta. Para mayores informaciones, ver el artículo instalar plugins (por traducir...).

Numerosos plugins están en preparación; su desarrollo se hace esencialmente en SPIP Zone http://zone.spip.org/trac/spip-zone..., y su documentación sen encontrara en el sitio SPIP Contrib.

Mutualización de los códigos fuentes

Una reescritura importante de todo el código de SPIP permite ahora a una misma distribución servir a varios sitios a la vez sin tener que copiar los archivos del código fuente. Pueden desplegar esta funcionalidad tanto una persona hospedada que tiene varios sitios en un hospedaje (con varias cuentas MySQL o incluso con una sola gracias al prefijo de tabla) como la administración de un hospedaje que desea ofrecer SPIP «llave en mano» al conjunto de sus hospedados (para optimizar sur accesos disco). Tal instalación no impide la personalización de SPIP por cada uno de los usuarios, gracias al sistema de sobrecarga descrito en el párrafo anterior de este artículo. Exije, no obstante, que el hospedaje autorice ciertas directivas Apache (Alias o RewriteRule) en los .htaccess de sus hospedados, o que se encargue directamente de ésto en su httpd.conf (directiva VirtualHost).

Detección automática de tablas SQL y de uniones SQL

En un esqueleto que comporta BOUCLE_a(xxx), la tabla xxx puede ser cualquier tabla SQL conocida del servidor MySQL. SPIP preguntará entonces al servidor SQL describir esta tabla, lo que le permitirá compilar un esqueleto interpretando cualquier baliza #NOMBRE como un acceso al campo `xxx`.nombre si existe. Estos campos también se identifican en los criterios de bucles.

En un esqueleto que comporta BOUCLE_a(tabla tabla1 ... tablen), las tablas adicionales serán vistas como candidatas a una unión SQL, a través de campos homónimos. Ejemplos más concretos serán proporcionados en la documentación.

Otras mejoras

-  Si el seguimiento de revisiones está activado, se dispone ahora de la posibilidad de volver a una versión precedente de un artículo.

-  La barra de edición también está disponible para Safari.

Instalación y actualización

spip_loader : para la instalación automática de SPIP 1.9, se ha desarrollado un nuevo spip_loader.php (/spip-dev/INSTALL/). Baja directamente el mismo archivo zip que para una instalación manual y toma a cargo la descompresión. Otras novedades respecto a spip_loader: es ahora multilingue, y es muy fácil editarlo para que instale la versión de desarrollo (SVN) en vez de la versión estable.

Para la actualización desde una versión anterior de SPIP, puedes copiar todos los archivos de SPIP 1.9 sobre tu instalación existente como antes. Sin embargo, dada la profunda reorganización de archivos, obtendrás una mezcla poco satisfactoria de antiguos y nuevos archivos. Una documentación más completa explica como hacer una actualización «sana»: Migración hacia SPIP 1.9.

Todas las novedades serán progresivamente integradas a las páginas de referencia de la documentación. Artículos más detallados están en preparación sobre los puntos más técnicos.

De manera general, se necesita ayuda para mejorar la documentación de SPIP: no dudes en participar a la redacción, la corrección y la organización de esta documentación.

Muchísimas gracias a todas y todos los que contribuyeron a esta nueva versión dando ideas o señalando problemas (en las listas o en trac), brindando código, imágenes, documentación o dando «soporte» a los usuarios, formaciones y en todo caso aportando... cariño.

Autor o autora dani Publicado el: Actualizado: 26/10/12

Traducciones: عربي, català, Deutsch, English, Español, français, italiano, Türkçe