SPIP 2.0

SPIP passa a la versió 2.0, set anys desprès del llançament de la versió 1.0, vuit anys desprès de la versió d’uZine, i gairebé dos anys desprès de la versió anterior.

La branca 1 d’SPIP era un sistema de publicació integrat, és a dir fonamentat en un esquema únic de base de dades, llest per a ser utilitzat. Les seves funcionalitats, en particular el seu sistema d’esquelets de compaginació, han fet sorgir noves necessitats que no estaven previstes en un principi. El nou compilador d’esquelets d’SPIP 1.8 havia augmentat la seva expressivitat, que moltes contribucions han utilitzat llavors per presentar tot tipus d’informacions imprevistes: catàlegs, informacions geogràfiques, sèries d’esdeveniments... SPIP 1.9 havia introduït diferents mètodes d’extensions, càrregues excessives, punts d’entrada, connectors (els plugins). L’èxit dels llocs de contribucions a SPIP va contribuir-hi i molts col·laboradors han vingut a reforçar a l’equip de desenvolupadors. Però només els programadors tenien accés a aquestes novetats; per tant, la interfície de programació havia de guanyar en maduresa.

La branca 2 d’SPIP es presenta, per tant, a la vegada com el sistema de publicació integrat (compatible amb les versions anteriors), i com a una plataforma de desenvolupament de mutiservidors SQL per qui vol anar més enllà. Aquesta plataforma proposa, en sí mateixa, dos nivells d’habilitats, permetent conservar la progressó de la corba d’aprenentatge d’SPIP tot augmentant el nombre de serveis tornats.

  • El primer nivell, ja present a les versions d’SPIP anteriors, s’adreça a aquells que volen innovar gràficament, sense haver de programar en SQL, PHP i JavaScript. Coneixent HTML i CSS i disposats a aprendre el sistema d’esquelets d’SPIP, poden compaginar de manera innovadora informacions resultants de bases de dades eventualment heterogènies.
  • El segon nivell s’adreça als programadors, els quals podran escriure extensions transferibles a diferents servidors SQL, amb l’ajuda d’una interfície de programació basada en un servidor virtual SQL. Aquesta interfície fins i tot es pot utilitzar independentment de la base de dades instal·lada per SPIP.

Tenint en compte l’abundància de novetats, la descripció d’aquesta nova versió d’SPIP s’articula a l’entorn de tres temes, fent-nos anar, a vegades, cap a articles dedicats:

-  SPIP i la publicació Web,

  • URLs simbòliques gestionant el seu històric i permetent les notacions en forma d’arbre;
  • incrustació a dins dels textos de diversos mitjans;
  • fòrums que permeten la inclusió de documents;
  • nombroses funcionalitats noves a l’entorn de les peticions;
  • gestió d’edicions concurrents;
  • instal·lació automàtica de plugins;
  • accés simultani a diversos servidors (MySQL PostGres, SQLite2 i 3), fusió d’extracció de bases, esquelets automàtics;
  • mutualització facilitada, sobretot pels hostatjadors;

-  SPIP i el disseny Web

  • esquelets fonamentats en CSS LayoutGala;
  • nous filtres;
  • nous modes d’inclusió, sobretot de formularis en AJAX;
  • novetats a les etiquetes, sobretot d’aquelles que gestionen URL i clau primària;
  • novetats en els criteris, sobretot pel que fa a les condicions i al motor de cerca;
  • gestió automàtica de les cadenes de llengua a traduir;
  • validdor XML integrat aplicable a un conjunt de pàgines;

-  SPIP i la programació Web

  • servidor SQL virtual que es recolza directament damunt de les capes base de PHP;
  • nous pipelines (punts d’entrada);
  • declaracions de biblioteques externes.

Assenyalem finalment que a partir d’aquesta versió, SPIP es distribueix sota llicència GNU/GPL 3. Aquesta llicència, que succeeix a la llicència GNU/GPL 2 que ja té 15 anys, té més en compte el drets d’autors d’altres països que no siguin els Estats Units, i també l’evolució de la pràctica del programari lliure. Explicacions completes i argumentacions per la Free Software Foundation i Richard Stallman :
— la llicència
— la llicència en francès (traducció no oficial)
— traducció catalana (no oficial)
— Perquè evolucionar cap a la versió GPLv3

Com sempre, gràcies a tots aquelles i aquells que han contribuït de prop o més lluny en aquesta nova versió. Gràcies, primer de tot, als traductors, sobretot als nouvinguts que permeten que SPIP estigui disponible, a partir d’ara, en indonesi, en birmà, en khmer (cambotjà) i en suec.
Gràcies a aquelles i aquells que han seguit la versió en desenvolupament gairebé dia a dia, gràcies per la seva paciència davant de la immensitat dels treballs d’implementació i les pistes falses que a vegades els hi havíem donat, gràcies per la seva confiança malgrat les dificultats que ens hem trobat.

SPIP i la publicació Web

SPIP és un sistema de creació i de gestió de llocs Web equipat amb una interfície que inclou estructures editorials fiables, és a dir perennes i evolutives [1]. Després de la seva instal·lació, amb l’única introducció de cinc formularis Web, està llest immediatament per a ser utilitzat, i permet donar vida, sol o amb un equip de redactors, a un lloc Web dotat de les millors tecnologies del moment.

Per SPIP 2.0, la interfície i l’ergonomia han estat enriquides, les normes XHTML i CSS es respecten més, les interaccions amb el sistema s’han accelerat, sobretot per l’ús sistemàtic d’AJAX [2]. La incorporació de documents de diversos tipus s’ha unificat, tot permetent-ne un ús diversificat. Aquestes «suavitzacions» progressives fan que els nous usuaris es beneficiïn d’una interfície provada, i els antics mantenen les seves (bones) costums.

-  Joc d’URLs simbòlics

Nous URLs anomenats propis permeten tenir diversos noms d’URL associats a un mateix objecte, particularment modificar el títol d’un article, cosa que crearà lel nou URL sense invalidar l’anterior. A més, un client HTTP que els demani serà definitivament redirigit cap al nou.

Aquests URLs estan actualment administrats en una taula SQL separada de la que són la clau primària, cosa que accelera el seu ús. La compatibilitat amb els antics URLs propis està assegurada durant l’actualització del lloc.

Aquests nous URLs són la finalització del treball pioner fet pel difunt Toggg (http://web.archive.org/web/20070309220121/toggg.com/spip/spip.php?article19 i http://web.archive.org/web/20070309220112/toggg.com/spip/spip.php?article18) a la memòria del qual dediquem aquesta nova versió d’SPIP (http://www.spip-contrib.net/Adieu-l-ami).

Un nou joc d’URLs, anomenat arbo, s’ha introduït també, oferint una notació en forma d’arbre, com:

http://www.elmeulloc.com/sector/seccio1/seccio2/article

Finalment, un simple clic en una taula que es visualitza a les pàgines d’administració permet actualment escollir el joc d’URLs. L’antic mètode utilitzant la variable global PHP $type_urls encara funciona, però us aconsellem que elimineu aquesta variable del vostre fitxer mes_options.php, per tal que us aparegui aquesta taula de configuració. Si teniu un joc d’URLs personal al directori urls del vostre SPIP_PATH, aquest apareixerà automàticament en aquesta taula.

-  Incrustació en els textos de diversos mitjans

Els models img i emb que permeten incrustar un document al cos d’un text s’han repensat totalment. Actualment es recolzen en la nomenclatura oficial dels tipus MIME, utilitzant filtres homònims d’aquests. Aquesta arquitectura permet regular més finament la incrustació d’un document de qualsevol tipus; està descrit a article 3715 que completa l’article Utilitzar els models escrit en el moment de la sortida d’SPIP 1.9.1.

Els redactors també poden incrustar un nombre més gran de tipus de documents que abans. És així com SPIP presenta automàticament en HTML el contingut d’un fitxer CSV resultant d’un full de càlcul. De la mateixa manera, un fitxer txt serà incrustat d’aquesta manera després de la transcodificació de les cometes i la col·locació en una etiqueta pre per tal d’aparèixer literal. Finalment, per un document HTML, els seus fulls d’estil seran automàticament importats, cosa que permet en particular transformar un lloc estàtic en un lloc sota SPIP.

-  Enviament de documents als fòrums

La opció es regula llistant les extensions de fitxers acceptats, per exemple «gif,png,jpg,mp3», el símbol * indicant que s’accepta qualsevol tipus de documents, excepte aquells que presentin forats de seguretat potencials.

-  Nombroses funcionalitats noves a l’entorn de les peticions

Moltes novetats descrites a Les pétitions sous SPIP: cerca i classificacions múltiples signants, paginació, flux RSS, estadístiques diàries i mensuals, interfície pel full de càlcul, peticions multilingües.

-  Gestió d’edicions concurrents

L’espai privat d’SPIP gestiona els conflictes d’edició concurrent d’articles, seccions, breus, paraules clau, autors i llocs.

L’escenari és el següent: suposem que l’Alícia i en Bob obren al mateix temps el mateix article en edició, a continuació cadascú envia les seves modificacions, primer l’Alícia i després en Bob.

Es poden donar diverses situacions:

  • L’Alícia ha modificat el títol, Bob el text: s’accepten les dues modificacions, el títol d’en Bob (sense canviar) no esborra el títol de l’Alícia;
  • L’Alícia modifica el títol, en Bob també:
    • si tots dos han posat el mateix títol: cap problema;
    • si el títol és diferent: s’avisa a en Bob, se li mostra el títol que acaba d’enviar, el que està emmagatzemat a la base, la diferència entre els dos, i un formulari per copiar/enganxar les seves modificacions. El títol enviat no s’ha enregistrat a la base.

Aquests elements es tracten camp per camp de manera independent: d’aquesta manera si hi ha conflicte al títol però no a l’encapçalament, aquest s’enregistra, i el missatge d’error només afecta al títol.

-  Facilitar l’ús dels plugins

— Instal·lació manual i/o automàtica

Els plugins s’instal·len en una carpeta /plugins. Creant una subcarpeta /plugins/auto, s’activa la instal·lació automàtica de plugins.

Es possible afegir, via la instal·lació automàtica:

  • plugins individuals, indicant l’URL d’un fitxer Zip,
  • llistes de plugins inscrits en un directori d’un flux RSS.

— Trobar plugins

Tres espais permeten als usuaris trobar plugins segons diferents orientacions (desenvolupadors, contribuïdors, referenciadors):

  • tots els plugins desenvolupats a la Zone poden aparèixer, per iniciativa dels seus autors, al directori http://files.spip.org/spip-zone/;
  • SPIP-Contrib evoluciona per millorar la cerca de plugins;
  • posat en marxa amb motiu d’aquesta nova motorització d’SPIP, el lloc Plugins.spip proposa un referenciament més fi, per temes, per compatibilitats de versió, per llengües...

Els llocs Plugins.spip i SPIP-contrib proposen fluxes RSS directament utilitzables per la instal·lació automàtica de plugins compatibles amb SPIP 2.0.

-  Accés a diverses bases i servidors, fusió parcial i esquelets automàtics

SPIP està disponible actualment no només a través d’un servidor MySQL sinó a través d’un servidor PostGreSQL i a través de les extensions SQLite 2 i 3 de PHP. La tria es proposa a l’iniciar-se la instal·lació i després es memoritza en el fitxer de connexió. A tenir en compte que el format de còpies de seguretat és comú a totes les versions, de manera que és possible tornar a la tria inicial restaurant una còpia de seguretat després de tornar a instal·lar SPIP en un altre servidor SQL.

Aquesta nova portabilitat d’SPIP ha permès estabilitzar una funcionalitat que fins ara presentava llacunes, saber l’ús d’esquelets en diverses bases SQL a la vegada.

Un formulari comparable al de la instal·lació, accessible al menú manteniment del lloc, permet declarar els seus idenfiticants de connexió en una altra base, i produeix un fitxer de connexió semblant al del lloc principal, suficient per utilitzar aquesta base. En cas d’una base creada per un altre lloc que funcioni sota SPIP, aquesta declaració es pot reduir a una simple còpia del seu fitxer de connexió.

Aquesta declaració feta, es pot aplicar els esquelets del lloc cridant les taules d’un altre lloc, simplement afegint a l’URL del lloc cridant un paràmetre suplementari, connect, tenint com a valor el nom del seu fitxer de connexió (sense l’extensió .php). També es pot barrejar en un mateix esquelet bucles que es trobin en bases diferents, obrint SPIP tantes connexions com siguin necessàries i passant de l’una a l’altre quan sigui necessari. A tenir en compte que aquestes bases poden ser gestionades per altres implementacions SQL que les del lloc principal, jugant SPIP un papaer d’agregador d’extraccions de diverses bases.

Per permetre explorar ràpidament les taules d’una base, un mecanisme de creació automàtica d’un esquelet s’activa quan el valor del paràmetre d’URL page és de la forma table:la taula.

Aquest vertebrador visualitza el contingut de la taula segons diversos modes de navegació, i permet salvaguardar l’esquelet creat.

És així de fàcil desenvolupar un utilitari de gestió de bases de dades amb SPIP, i, per tant, eventualment servidors múltiples.

Per raons de confidencialitat, aquest mecanisme només és accessible al webmestre principal però pot ser obert carregant la funció autoriser_webmestre.

Una altre funcionalitat estabilitzada amb motiu del transport a servidors múltiples: la còpia de seguretat de només una part de la base, i la seva fusió posterior amb la base d’un altre lloc.

Una presentació sintetitzada de les funcionalitats a les bases SQL les podreu trobar descrites en un article complet : Les bases de dades a SPIP. Proposa en concret posar noms de fitxers de connexió de tal manera que totes les bases dels llocs instal·lats es coneguin uns als altres sense cap mena de declaració suplementària.

-  Mutualització de les fonts

La mutualització de les fonts d’SPIP, proposada a partir d’SPIP 1.9, s’aplica actualment siguin quins siguin els directoris de dades d’SPIP, ja que s’ha tret la limitació al camí del directori IMG.

La mutualització es recomana als webmestres que administren diversos lloc, per tal de facilitar-los les seves tasques de manteniment. Els assegura també un màxim confort si es volen aprofitar de les bases múltiples, descrites en altres bandes d’aquest article.

Convidem també a tots els hostatjadors a investigar sobre aquesta funcionalitat, ja que ells també podran economitzar espai de disc i disminuir globalment el número de càrregues de les moltes còpies d’SPIP que poden existir als seus servidors. S’han desenvolupat diverses extensions que fan automàticament aquestes configuracions. Vegeu la secció Mutualització d’SPIP-Contrib. En aquesta configuració, SPIP actua com un bloc sòlid o com un servidor de CMS.

SPIP i el disseny Web

-  Esquelets fonamentats en CSS LayoutGala

SPIP proporciona a la vegada esquelets estàndards estructurats que utilitzen els mètodes moderns i eines destinades als webmestres (el llenguatge de bucles, etiquetes i criteris i filtres) que li permeten personalitzar progressivament el seu lloc ultrapassant la utilització d’esquelets «claus en mà».

Els esquelets lliurats en estàndard, la «dis », es recolzen a partir d’ara en l’estructura HTML « Layout Gala », que permet modificar la disposició de diferents blocs si es modifiquen algunes línies de CSS:

<div id="page">
	<div id="entete">Encapçalament</div>
	<div id="conteneur">
		<div id="contenu">Contingut</div>
	</div>
	<div id="navigation">Navegació</div>
	<div id="extra">Extra</div>
	<div id="pied">Peu de pàgina</div>
</div>

El codi HTML d’esquelets integra per defecte els Microformats.

Els esquelets respecten l’XHTML 1.0 estricte, així com els scripts de l’espai privat. No obstant, el Doctype declarat és l’XHTML transicional, amb la finalitat de no obligar als redactors a aprendre una norma difícil i força criticable (veure el primer paràgraf de l’article sobre El validador XML integrat).

La gestió de dreceres ha evolucionat i noves variables permeten personalitzarles. (Cf. : http://archives.rezo.net/spip-core....)

-  Personalització d’etiquetes inserides per SPIP per la cursiva i la negreta:

$debut_italique = '<i>' ;
$fin_italique = '</i>'  ;
$debut_gras = '<strong>' ;
$fin_gras = </strong>' ;

-  Paràgrafs: tots els textos són des d’ara dividits en paràgrafs per SPIP de manera idèntica i coherent. Si volem retrobar el funcionament anterior, en tenim prou ajustant la variable de personalització $toujours_paragrapher a false :

$GLOBALS['toujours_paragrapher'] = false;

-  Suppressió de class="spip" a les p, i, strong i li. La variable de personalització per tornar-les a posar és (atenció, fixeu-vos en l’espai inicial!):

$class_spip = ' class="spip"';

Remarqueu que, a les notes, <p class="spip_note"> es conserva si <p class="spip"> es conserva (per compatibilitat ascendent), sinó també desapareix.

Es pot intervenir més finament, per exemple, per treure el class="spip" dels paràgrafs però no de les cursives:

$class_spip = '';
$debut_italique = '<i class="spip">';
$debut_gras = '<strong class="spip">';

A més a més, si volem veritablement treure el class="spip" de les altres dreceres (ul, ol, taules, hr, h3 i blockquote generals per les dreceres), es pot fer:

$class_spip_plus = '';

-  Poesia: el codi creat per la drecera SPIP <poesie> esdevé: <blockquote class="spip_poesie">

-  Data de primera publicació: assenyalem finalment aquí una altra variable de personalització, tot i que ella no fa referència als estils. Per defecte, l’any de la data de publicació queda lliure. Per forçar la publicació d’un menú desplegable a partir d’un cert any (com per la data de publicació en línia), es pot personalitzar la variable $debut_date_publication, per exemple:

$debut_date_publication = 1997;

-  Novetats als filtres

— image_typo funciona (de manera experimental) amb l’àrab (i evidentment l’hebreu). La presència de caràcters àrabs i hebreus es detecta automàticament, cosa que fa que s’activin llavors un cert nombre d’automatismes destinats a invertir l’ordre de les lletres (de dreta a esquerre) i a gestionar el complex sistema d’unions de l’àrab.

— Apareixen tres filtres nous de manipulació dels colors: couleur_saturation, couleur_web i couleur_4096.

El filtre couleur_saturation admet un valor entre 0 i 1 indicant la saturació del color:

  • 0: blanc
  • 1: color completament saturat (atenció: el color totalment saturat no és el negre).

Aquest filtre és molt pràctic per fabricar una gamma de colors, allà on les funcions couleur_eclaircir i couleur_foncer no tenen precisió i, sobretot, afebleixen els colors (no jugant amb la saturació sinó amb la lluminositat).

El filtre couleur_web retorna un arrodoniment del color en una gamma de 256 colors. La finalitat no és realment realitzar una publicació per pantalla de 256 colors (existeixen encara pantalles d’aquestes?), sinó més aviat limitar el número de colors possibles aplicats a un filtre gràfic (per exemple, acolorir una imatge tipogràfica o canviar un full d’estil) i evitar d’aquesta manera obtenir potencialment 16 milions de variants d’aquest fitxer.

El filtre couleur_4096 retorna un arrodoniment del color en una gamma de 4096 colors.

— Finalment, el filtre couleur_extreme admet ara una variable opcional, entre 0 i 1 (per defecte: 0.5), per regular el llindar de lluminositat a partir del qual es balanceja cap el negre o el blanc.

De passada, les funcions de conversió entre RGB, HSL i HSV s’han integrat a les fonts (per l’ús intern de les funcions de manipulació dels colors). El pas a HSL és a més utilitzat a partir d’ara a couleur_extreme, el que fa que el balanceig negre-blanc es faci en una base «visual», i no només sobre la mitjana de components.

— El filtre gràfic image_aplatir accepta a partir d’ara un quart paràmetre, permetent conservar la transparència (sobretot per la conversió cap el format GIF).

— El nou filtre gràfic image_format permet forçar el pas d’un format a un altre, conservant la transparència en el cas del PNG i del GIF. Es tracta d’una drecera (simplificada, per tant) de la funció image_aplatir.

Atenció, en el cas d’una conversió de PNG amb transparència cap a GIF, aquesta funció no permet escollir el color cap el que es realitza la transformació dels punt semitransparents; en aquesta situació, és per tant image_aplatir la que s’haurà d’utiilitzar.

— Els filtres de tractament d’imatge han estat enriquits amb un mecanisme automàtic de recollida i neteja de les imatges temporals. Així, al llarg de la successió de diversos filtres en una mateixa expressió, només es conserva la imatge final, cosa que permet reduir l’espai de disc emprat.

— El nou filtre compacte_head compacta els diferents fitxers JavaScript i CSS cridats a partir d’un esquelet, en dos fitxers únics de mida reduïda, el que permet accelerar la càrrega de les pàgines visitades (d’aquesta manera no es criden diversos fitxers JavaScript sinó només un, i aquest fitxer és més lleuger). Si s’utilitza (com és el cas de l’esquelet de la dist) una "noisette" inc-head.html que reuneixi les crides JavaScript i CSS, aquesta funció s’activarà automàticament gràcies a una regulació a la pàgina de configuració d’SPIP.

-  Nous modes d’inclusions, sobretot amb AJAX

L’etiqueta #INCLURE interpreta l’argument {env} com la transmissió de tot l’entorn a l’esquelet incloure. Aquesta notació funciona també amb <INCLURE ...>. Si hi ha present altres arguments, els valors que indiquen per les seves variables seran prioritaris sobre l’entorn incloure:

 <INCLURE{fond=gribouille/rubrique}{env}{lang=en}>

inclourà gribouille/rubrique passant-li els {id_rubrique} i {debut_pages} del context incloent (de l’URL, dit d’una altra manera), però forçant la llengua anglesa encara que l’URL comporti ?lang=XX.

L’argument {ajax} afegit a una etiqueta #INCLURE o a <INCLURE ...> permet d’ajaxar automàticament tots els enllaços de classe ajax i tots els enllaços continguts en una classe paginació. Per tenir-ne més detalls, us podeu dirigir a `ajax` pour les `inclure`

Assenyalem que l’etiqueta INCLURE admet una barra (slash) final opcional, per tal d’acostars-se a la sintaxi XML.

Un altra cas d’inclusió, les etiquetes anomenades dinàmiques, el nom de les quals comencen per #FORMULAIRE_ ja que produeixen formularis. Aquests formularis de l’espai públic, i també d’una part de l’espai privat, s’han reescrit amb l’ajuda d’un nou mètode, CVT (carregar, verificar, tractar). Permet crear nous formularis escrvint només esquelets, encarregnat-se SPIP de reparar els formularis mal emplenats, i sinó inserint enregistraments a la bas de dades.

Així, prive/contenu/ conté els esquelets d’interpretació dels objectes editorials, i prive/editer/ els esquelets d’edició corresponents, que fan crides a la sèrie de #FORMULAIRE_EDITER_... situats a prive/formulaires. Esdevé possible personalitzar aquestes pàgines en funció dels números de secció amb un sufix -xx.html com per qualsevol altre esquelet.

Aquestes noves possiblitats es troben detallades a Formulaires CVT par l’exemple i Les formulaires CVT de SPIP.

-  Novetats a les etiquetes

— Les etiquetes que comencen per URL_ són tractades genèricament, cosa que generalitza aquelles disponibles anteriorment. Si l’etiqueta no té argument, com en URL_type, el compilador d’SPIP produeix una crida a la funció generer_url_entite aplicat a $id_type (que ha de ser definit en el context), i sobre type. D’aquests manera es retroben les habituals URL_ARTICLE, URL_RUBRIQUE etc, fonamentades en les funcions generer_url_article, generer_url_rubrique etc. que actualment estan obsoletes ja que no tenen generalitat. Si l’etiqueta té un argument, és sobre aquest i no sobre $id_type que s’aplicarà generer_url_entite. Tota aquesta família d’etiquetes té en compte un eventual accés a diverses bases SPIP (veure més amunt). Aquesta funcionalitat de navegació a distància permet en particular provar un nou joc d’esquelets en un lloc en funcionament sense modificar la seva instal·lació.

— L’etiqueta #EXPOSE (veure Exposer un article dans une liste) amplia el seu mode d’aplicació. Pren la clau primària del bucle immediatament englobant (o d’aquella explícitament designada si es fa servir la sintaxi #nom:EXPOSE ara autoritzada aquí) i compara el seu valor actual en cada iteració amb el valor del paràmetre homònim a l’URL de crida. Llavors mostra el seu primer argument si aquests dos valors són iguals, sinó el segon. Aquesta comparació s’estén a la jerarquia de la clau considerada, és a dir que en un bucle SECCIONS es compararà la clau primària d’aquest bucle amb el número de secció de l’article considerat, i en un bucle GROUPES_MOTS, es compararà la seva clau primària amb el número del molt considerat.

— Una nova etiqueta, #FILTRE inserida en un esquelet permet aplicar un filtre a la totalitat de la pàgina generada. D’aquesta manera, inserint el següent codi en un esquelet:

#FILTRE{compacte_head}

la totalitat de la pàgina generada per aquest esquelet es passarà al filtre compacte_head.

— Per modificar els punts de continuació de l’etiqueta #INTRODUCTION, des d’ara es pot fer simplement a mes_fonctions.php (o mes_options):

define('_INTRODUCTION_SUITE', '&nbsp;(...)');

o

define('_INTRODUCTION_SUITE', '');

— Cridat implícitament per aquesta etiqueta, el filtre couper pot ser cridat independentment i accepta un paràmetre suplementari que indica quina cadena de caràcters serà inserida a final del text tallat:

[(#TITRE|couper{10,'...'})]

— Una nova etiqueta, #SESSION, permet accedir a les informacions lligades a l’internauta identificat (id_auteur, i altres informacions lligades) i diferenciar automàticament la memòria cau en funció del visitant.

-  Novetats en els criteris

A partir d’ara és possible provocar una unió entre dues taules SQL escrivint directament la notació TABLE.NOM en un criteri. La unió serà possible si la taula indicada té un camp homònim d’un camp de la taula principal del bucle, sent la clau primària. En cas de criteri sense operador explícit {TABLE.NOM}, el valor implícit pres és el valor del NOM en el context actual (en particular, al primer nivell, a l’URL). Heus aquí, per exemple, un bucle que cerca les signatures de peticions associades a les traduccions d’un mateix article:

<BOUCLE_signatures(SIGNATURES){articles.id_trad}  />

La taula SQL signatures que té en comú amb la taula articles el camp id_article, donat el valor d’un camp id_trad a l’URL provocarà la selecció en una taula signatures de totes aquelles que estiguin associades a un article que tingui aquest valor de id_trad a la taula articles.

Aquesta funcionalitat també està disponible amb criteris condionals. Heus aquí, per exemple, un bucle que llista les signatures ja siguin d’una petició d’un article donat (id_article present en el context), ja siguin peticions associades a les traduccions d’un mateix article (si és id_trad que hi és present):

<BOUCLE_signatures(SIGNATURES){id_article?} {articles.id_trad ?}  />

Aquesta nova funcionalitat torna obsolets certs criteris (comtitre_mot per exemple), però es conserven per obligacions de compatibilitat.

Un altre canvi important en els criteris fa referència a la cerca. Abans SPIP es servia d’una taula SQL suplementària per efectuar la indexació d’elements del lloc a la seva creació. Els operadors de cerca de servidors SQL actuals són suficientment ràpids per dispensar-se d’aquest tractament previ costós en l’indret, i el criteri cerca es fonamenta per tant al present sobre ells. Admet, a més, al present un argument opcional que indica la cadena a cerca. Si no hi és, és sempre la variable d’URL recherche la que es fa servir; hi ha per tant equivalència entre <BOUCLE_t(ARTICLES){recherche}> i <BOUCLE_t(ARTICLES){recherche #ENV{recherche}}>.

L’interès d’aquesta extensió és múltiple:

  • cercar una cadena donada pel context intern a l’esquelet com a
    <BOUCLE_m(MOTS){id_mot}>
     <BOUCLE_r(ARTICLES){recherche #TITRE}>...
      </BOUCLE_r>
    </BOUCLE_m>
    
  • transmetre la cadena a cercar en un esquelet inclusiu, com a
    <INCLURE{fond=x}{recherche=NNN}>
    
  • utilització en un model per seleccionar objectes que els seu camps contenen la cadena com a
    <modele1|recherche=spip>
    

En el cas d’un ús condicional d’aquest criteri, es vetllarà per evitar espais entre l’interrogant i el valor indicat:

{recherche ?#ENV{rech}}

i no

{recherche ? #ENV{rech}}

excepte si es vol, efectivament, un espai abans de la cadena cerca.

-  Amb Salvatore, my plugin spricht разных språk

Salvatore és lleig, rústec, geperut, una mica boig, i parla totes les llengües (si, si, vegem!).

Salvatore és la nostra nova eina que permet desenvolupar un plugin multilingüe, sincronitzant automàticament el seu fitxer de llengua a SPIP-Zone amb l’espai de traducció (que reuneix les traductors d’SPIP). Consultar i participar a la seva documentació.

-  Validació XML

El validador integrat s’enriqueix d’una nova funcionalitat: si el seu argument és un directori, i no un URL, s’aplica sobre tots els fitxers d’aquest directori l’extensió del qual és igual al valor del paràmetre d’URL ext. En la seva absència, s’agafa l’extensió .php, i si no existeix cap fitxer .php, té en compte tots els fitxers .html, vistos com esquelets. Els arguments esperats per aquests esquelets es generen automàticament, desprès d’analitzar el seu contingut. Aquest anàlisi no és possible pels scripts, ja que PHP està teclejat dinàmicament, però l’arquitectura general d’SPIP, sobretot l’absència d’ús de l’instrucció exit, permet al validador un test cec ja molt informatiu.

La influència d’XML sobre SPIP es fa sentir també en una petita innovació sintàctica. Els bucles sense cos disposen actualment d’una notació abreujada, inspirada en la notació XML.

Per exemple, el següent bucle:

<BOUCLE_message(FORUMS){id_article}>
</BOUCLE_message>
#TOTAL_BOUCLE messages
</B_message>

es pot escriure des d’ara:

<BOUCLE_message(FORUMS){id_article} />
#TOTAL_BOUCLE messages
<//B_message>

SPIP i el desenvolupament Web

Aquesta secció descriu les eines de desenvolupament utilitzades per l’equip d’SPIP, eines que els desenvolupadors han de dominar per proporcionar extensions portàtils.

Molts llocs Web, per la interacció que proposen amb els visitants, són en ells mateixos aplicacions en línia. Nombrosos desenvolupaments de la branca 2 estan des d’ara destinats a abordar la creació de llocs Web 2.0: gestió de sessions d’usuaris, col·laboracions sobre el lloc públic, millor gestió des esdeveniments datats...

-  El servidor SQL virtual

La nova versió d’SPIP ha necessitat un llarg treball de reescriptura de les peticions SQL per tal de tornar-les portàtils. Aquests transports reposen damunt d’una interfície de programació que en té prou d’utilitzar per tal que una extensió d’SPIP sigui ella mateixa portàtil. Proporciona també una gestió dels problemes de seguretat del tipus atac per injecció de codi.

Aquesta interfície ne descansa damunt de biblioteques que existeixen prèviament, ja que el seu nivell d’abstracció es insuficient per resoldre tots els problemes posats, però sobre un joc d’una trentena de funcions virtuals deduïdes per abstracció del codi anterior d’SPIP. La seva generalitat li permet fins i tot servir per la integració de bases SQL heterogènies, independentment d’altres serveis tornats per SPIP.

La interfície inclou un gestor de les seves pròpies versions, que permetrà executar simultàniament extensions d’SPIP utilitzant diferents versions d’aquesta interfície en cas que aquesta hagués d’evolucionar.

Aquesta reescriptura completa s’aprofita igualment de MySQL ja que les construccions SQL les més costoses, han estat eliminades. Així la coherència de la base s’assegura progressivament i no per una neteja completa periòdica. El tancament global del servidor ha estat sistemàticament substituït per obligacions SQL refusant automàticament una escriptura concurrent a la que hi ha en curs.

Alguns índex s’han tornat a definir per millorar la seva eficàcia. Finalment, el compilador analitza més finament la necessitat de juntures, sent el codi SQL produït molt més proper a allò que és òptim en aquest punt.

Aquestes millores són visibles sobretot amb l’ajuda d’un perfilador SQL disponible actualment en el desbrossador d’SPIP.

El procés d’actualització també s’ha reescrit i repensat totalment. Administra actualment sense fallar bases el volum important de les quals exigia abans eines específiques del servidor SQL.

Aquest nou aspecte d’SPIP està descrit en un article específic: La interfície d’SPIP amb SQL.

-  Nous punts d’entrada (pipelines), cridats molt més àmpliament

El número de punts d’entrada (pipelines) s’enriqueix a uns 50, i també el seu número de crides amb més de 180 punts d’entrada.

En particular

  • els pipelines pre_edition i post_edition es criden sistemàticament abans i després de l’enregistrament a la base de dades d’un objecte editorial, ja sigui durant la creació, la modfiicació o el canvi d’estat;
  • el pipeline recuperer_fond permet actuar damunt del resultat de tot l’esquelet inclós en el moment de la seva avaluació;
  • els pipeline pre_boucle i post_boucle permeten modifcar el comportament d’un bucle sense sobrecàrrega.

Aquesta extensió dels pipeline permet als plugins actuar encara més sobre el comportament d’SPIP sempre amb menys risc d’incompatiblitat entre ells.

-  Biblioteques externes

SPIP fa com phpMyAdmin per connectar-se a mysql: si l’extensió no s’ha carregat, utilitza un carregament dinàmic dl('mysql.so'), després d’haver verificat curosament que estava autoritzat. Això permet instal·lar en servidors configurats d’aquesta manera (ubuntu, per exemple).

Una funció SPIP permet demanar una càrrega dinàmica: charger_php_extension('mysql').

A vosaltres us toca jugar!

Aquestes evolucions d’SPIP permeten des d’ara desenvolupar, a més de llocs Internet comuns, aplicacions tipus intranet i qualsevol altre tipus d’aplicacions en línia, barrejant sessions d’usuaris, AJAX, pàgines personalitzades o interfícies interactives evoliucionades.

Notes

[1Concebre i mantenir l’estructura editorial d’un lloc enriquit regularment no és res més que una evidència; això demana una certa experiència. Una estructura editorial mal concebuda acaba per desqualificar un lloc, ja que les actualitzacions poden esdevenir cada cop més pesades, La lògica de la publicació d’SPIP té tendència a comportar estructures editorials com que el lloc resterà ben organitzat, fins i tot amb dotzenes de milers d’articles.

[2AJAX: conjunt de funcions JavaScript que permeten manipular l’estructura de la pàgina HTML, carregar elements de pàgina individualment els uns dels altres i crear fàcilment animacions visuals a les pàgines HTML.

Autor merce Publié le : Mis à jour : 23/08/23

Traductions : عربي, català, corsu, English, Español, français, Nederlands, Türkçe