¡Hola a tod@s!
La versión 1.8.2 de SPIP está disponible en la dirección
Se trata de la última versión de la serie 1.8, pues el desarrollo de SPIP cambia de sistema (pasamos de CVS a SVN), y se decidirá sobre rupturas importantes — notablemente, el paso de los ficheros con extensiones .php3
a las extensiones .php
, la reorganización de los directorios, etc.
Esta versión corrige la mayor parte de los bugs (conocidos) de la versión 1.8.1, y debería ser en general más fiable.
Principales novedades:
Interfaz y funcionamiento
- Numerosas mejoras de compatibilidad XHTML en la función
propre()
y respecto a la integración de los documentos en el texto.
- Mejor «accesibilidad» de las tablas.
- Seguimiento por RSS de los foros internos del sitio, de la mensajería personal, y de los artículos/breves, etc. propuestos para su publicación.
- Opciones suplementarias para la sindicación de sitios: se puede «despublicar» automáticamente los enlaces que ya no figuren en el archivo de sindicación del sitio sindicado, y/o borrarlos de la base de datos después de cierto tiempo. Por otra parte, el lector de archivos de sindicación sabe leer más elementos, y especialmente :
- los documentos distantes (podcasting o enclosure, ver más abajo);
- las fechas de actualización
- los cambios de título o de contenido
- La posibilidad, en el espacio privado, de regular de manera más fina la hora (y no sólo el día) de publicación de un artículo.
Gestión de los documentos
- Documentos distantes.
En el bloque que permite descargar un documento asociado con un artículo, ahora es posible mencionar la URL de un documento «distante», que se integrará en la base de datos como si fuese un documento «local», pero sin que el propio archivo esté en el directorio IMG/
Estos documentos distantes son referenciados de la misma manera que los documentos locales: se puede modificar su título, su descripción; SPIP controla la existencia de estos archivos y su tamaño; y, en el caso de las imágenes, prepara una copia local para fabricar automáticamente las miniaturas.
Es posible repatriar sistemáticamente estos documentos distantes, a partir de un filtro que se añade en los esqueletos: |copie_locale
. Este filtro funciona de la siguiente manera: después de hacer, si es el caso, una copia local del documento (lo cual puede ser largo, si el documento tiene varios Mb.), devuelve simplemente la dirección local del documento.
Por fin, SPIP integra este concepto de documento distante en la sindicación: por una parte, lee los flujos de sindicación que apuntan a documentos adjuntos (podcasting); por otra parte, el esqueleto dist/backend.html
publica con el mismo formato los documentos asociados con el artículo y que no figuren en el texto del propio artículo (dicho de otro modo, es el equivalente a lo que aparece, en el espacio privado, en la parte portafolio / documentos adjuntos del artículo).
- Indexación de los documentos. Los títulos y descripciones de todos los documentos están indexados, y por lo tanto son utilizables en una búsqueda<BOUCLE(DOCUMENTS){recherche}{par points}{inverse}>
Cuando es posible, SPIP también intenta indexar el contenido de los documentos (especialmente para los documentos en formatos HTML, TXT, PDF, RTF y DOC). Esta característica es extensible a otros formatos escribiendo scripts «extractores» (es fácil imaginar tales scripts para los formatos MP3 u OpenOffice).
- Zip para el «upload». Cuando se sube un documento «prohibido», o en todo caso no previsto en la tabla spip_types_documents (por ejemplo un archivo .php), SPIP propone ahora «comprimir» el documento. (Antes ignoraba silenciosamente la petición de subida.)
Calendario en el espacio público
SPIP 1.8.2 permite ver en el espacio público los calendarios del espacio privado, y construir agendas que aprovechen las herramientas de compaginación de esos calendarios. Esta posibilidad se ofrece mediante un nuevo criterio de bucle y tres nuevos filtros.
Para saber más, leer el artículo « article 3183 ».
Nuevos filtros
- Nuevo filtro |inserer_attribut{variable, valor}
, que permite forzar el atributo de una etiqueta HTML.
Ejemplo de uso :[(#LOGO_ARTICLE|#URL_ARTICLE||inserer_attribut{alt,#TITRE})]
- Nuevo filtro |alterner
, que permite realizar alternancias de colores en una lista (por ejemplo, mediante [(#COMPTEUR_BOUCLE|alterner{1,2,3})]
); el número de argumentos marca el periodo de la alternancia, que por lo tanto no es forzosamente una sucesión de tipo «par/impar». Por ejemplo:
-
[(#COMPTEUR_BOUCLE{'yellow','blue'})]
puede utilizarse para poner colores diferentes en las líneas pares e impares de una tabla. - Este bucle muestra una tabla con un máximo de 17 artículos, en 5 filas y 4 columnas, completando con una casilla vacía en la última fila si es necesario:
<B_ar>
<table border="1">
<BOUCLE_ar(ARTICLES){0,17}{par hasard}>
[(#COMPTEUR_BOUCLE|alterner{'<tr>','','',''})]
<td>#ID_ARTICLE</td>
[(#COMPTEUR_BOUCLE|alterner{'','','','</tr>'})]
</BOUCLE_ar>
[(#TOTAL_BOUCLE|alterner{'<td colspan="3"></td></tr>','<td colspan="2"></td></tr>','<td></td></tr>',''})]
</table>
</B_ar>
Observación: al ser este filtro puramente «numérico», si se aplica en la forma [(#ID_ARTICLE|alterner{1,2})]
, mostrará un «1» para los artículos cuyo identificador sea impar, y un «2» para los identificadores pares.
- Filtros de URLs «absolutas». Todos los enlaces que devuelve SPIP (a partir de los atajos [->article 11]
o de las balizas del tipo #URL_ARTICLE
) son enlaces «relativos», que no indican la dirección completa del recurso enlazado. Pero para ciertos usos, como por ejemplo la sindicación, resulta útil tener la dirección absoluta. Para ello se han introducido dos filtros:
- |url_absolue
que se aplica a las URLs: [(#URL_ARTICLE|url_absolue)]
;
- |liens_absolus
que se aplica a los textos y transforma la dirección de los enlaces y de las imágenes: [(#TEXTE|liens_absolus)]
.
(El filtro |abs_url
resume estos dos filtros en uno solo, y aplica |url_absolue
a los #URL_ARTICLE
, y |liens_absolus
a los elementos de tipo #TEXTE
.)
- El filtro |reduire_image
ahora es capaz de reducir las imágenes en el interior de un texto, y por lo tanto se puede aplicar a la baliza #TEXTE
. Otra modificación de este filtro: si se indica el tamaño 0 en vertical o en horizontal, significa que sólo se tendrá en cuenta la otra dimensión para el cambio. Así [(#LOGO_ARTICLE||reduire_image{60,0})]
pasará el logo a una dimensión horizontal de 60 pixels como máximo (la dimensión vertical se calculará de forma que conserve las proporciones).
Mejora de la sintaxis de los esqueletos
- Los esqueletos por omisión pasan a estar en formato XHTML 1.0 transicional.
- Una baliza #DOSSIER_SQUELETTE
permite utilizar con mayor facilidad varios juegos de esqueletos instalados en subdirectorios.
- #FORMULAIRE_FORUM
acepta un argumento que indica la página a la que se debe reenviar a una visitante que escribe en un foro. Por omisión, en realidad, este lugar suele ser #URL_FORUM
; pero ciertos usos pueden requerir que se vuelva a la misma página (notación : [(#FORMULAIRE_FORUM{#SELF})]
), o hacia otra página especificada ([(#FORMULAIRE_FORUM{gracias.php})]
).
- Se generalizan las construcciones con la forma [(#BALIZA|filtro{[(#OTRA_BALIZA|otro_filtro)]})]
con cualquier nivel de anidamiento. Esta posibilidad se extiende igualmente a los criterios en el interior de los bucles, haciendo que los corchetes ya no sean necesarios (e incluso rechazados).
- Por razones de uniformidad de la sintaxis, la baliza #EXPOSE
pasa a reemplazar a la antigua baliza #EXPOSER
. La única diferencia reside en el hecho de que hay que escribir [(#EXPOSE{on,off})]
y no [(#EXPOSER|on,off)]
- Cuando un bucle utiliza el criterio {statut}
, desaparece la regulación por omisión del estado de los elementos ligados a ese bucle. Dicho de otro modo, si los bucles (ARTICLES) normales siguen sin seleccionar más que los artículos cuyo estado es 'publicado'
, un bucle <BOUCLE_a(ARTICLES){statut=prop}>
seleccionará los artículos propuestos.
De la misma forma el bucle <BOUCLE_indy(BREVES){statut IN prop, publie}>
seleccionará todas las breves propuestas o publicadas; la baliza #STATUT
permite mostrar para cada una de ellas su estado correspondiente (y, por ejemplo, aplicarle una clase css diferente en función de su estado).
- el criterio {par ...}
acepta ahora nombres de campos SQL especificados dinámicamente, en especial por la baliza #ENV
, y su ausencia no provoca un error SQL. Por otra parte, este criterio admite ahora la sintaxis {!par ...}
para ordenar a la inversa todas las columnas indicadas (esto puede reemplazar el criterio {inverse}
, en especial cuando se quiere hacer una clasificación compleja que afecte a varias columnas). Para tener una clasificación en orden creciente para ciertas columnas y decreciente para otras, basta con escribir varios criterios par
.
Todo esto permite escribir fácilmente esqueletos para presentar una tabla con varias columnas que incorporen botones de ordenación en cada una de sus columnas, como en una hoja de cálculo. Se da un ejemplo aquí.
* *
Como de costumbre, estas novedades se integrarán progresivamente en la documentación.