[SPIP] Propone : SPIP 4.0

SPIP

Artículo propuesto

El artículo « SPIP 4.0
(https://www.spip.net/ecrire/?exec=article&id_article=6675) » ha sido
propuesto para publicación desde el Sábado 21 de agosto de 2021.


SPIP 4.0

Sábado 21 de agosto de 2021 , por
henry

Sumario

  • Interfase
  • Compatibilidad PHP
  • Base de datos
  • Sintaxis de esqueleto extendido
  • Cambios y contribuciones para los esqueletos.
  • Otras contribuciones
  • Correcciones
  • Limpiezas
  • Deprecaciones
  • Plugins

Interfase |Volver al sumario

Área privada renovada

Se ha iniciado una gran cantidad de trabajo ergonómico para eventualmente
hacer que el espacio privado se adapte a todos los tamaños de pantalla
para facilitar su uso.

El área privada se adapta mejor al ancho de la pantalla, y comienza a
utilizar diferentes variables CSS para facilitar el mantenimiento.

(https://www.spip.net/IMG/png/espace_prive_spip_40.png) **Aperçu de l’espace privé de SPIP 4.0 **

L’espace privé de SPIP 4.0 dans le site SPIP Contrib.

(https://www.spip.net/IMG/png/article_vue.png) **Vue d’un article (avec la couleur grise) ** (https://www.spip.net/IMG/png/article_edit.png) **Édition d’un article (avec la couleur grise) **

Una elegante pantalla de inicio de sesión

La página de inicio de sesión predeterminada (login.html) está
completamente rediseñada, con el color SPIP rosa en el fondo.

(https://www.spip.net/IMG/png/login_spip_40.png) **Écran de connexion par défaut à SPIP 4.0 **

L’écran de connexion sur le site SPIP.net.

Y si el rosa te sorprende, ¡que no cunda el pánico! Existe un nuevo
formulario en la configuración de identidad del sitio. Te permite elegir
el color que quieras. Y mejor: incluso te permite colocar una magnífica
imagen de fondo.

(https://www.spip.net/IMG/png/login_spip_40_avec_image.png) **Écran de connexion avec une image, dans SPIP 4.0 **

Iconographie en SVG

Gran parte de los iconos e ilustraciones del área privada de SPIP y sus
complementos se han convertido a SVG.

Documentos & Logos

Un amplio trabajo en los documentos y logotipos:

  • Los logotipos de los artículos y otros objetos editoriales se
    almacenan como documentos (en spip_documents en la base de datos, y en IMG
    / logo / en el disco manteniendo el nombre del archivo). Una fase de
    migración mueve los logotipos a su nueva ubicación en el disco.
  • Los logotipos, los documentos de imagen y los filtros de imagen aceptan
    y admiten el formato SVG.
  • El filtro balise_img
    (https://www.spip.net/ecrire/?exec=article&id_article=4003) le permite
    administrar archivos SVG y declarar su tamaño.
  • El nuevo filtro balise_svg le permite incrustar el código fuente de
    un archivo de imagen SVG en el código HTML directamente. Puede ser útil,
    por ejemplo, para iconos pequeños.
  • Los documentos / logotipos se pueden cargar arrastrando y soltando, sea
    cual sea su tamaño (integración del complemento BigUp en plugins-dist,
    mejorado para la ocasión). El tamaño máximo autorizado es configurable.
  • Los modelos de documentos (<docXX>, <imgXX>, ...) se han revisado y
    simplificado, ahora utilizan la etiqueta <figure>. Commit fa13018a
    (https://git.spip.net/SPIP/medias/commit/fa13018a9ef63c633e78da253106867d6bac8a78).
    Atención: Los modelos doc.html, img.html et emb.html ya no se
    utilizan (y, por lo tanto, ya no se cargará estos archivos en complementos
    (plugins) o esqueletos). En cambio, se usará los modelos image.html,
    audio.html, video.html et file.html, correspondiente al tipo de
    documento. El modo de documento ya no se tiene en cuenta para el cálculo
    del modelo.
  • Posibilidad de rechazar los archivos HTML de los modelos de documento
    por tipo de archivo detallado (tipo mime): file_text_csv.html o
    principal: file_text.html ; o por extensión: video_mp4.html. En
    consecuencia, sus variantes personalizadas doc_ [variante].html
    correspondientes al acceso directo<docN|variante> dejará de funcionar y
    se rechazará: image_[variante].html, video_[variante].html, etc.
  • Escribir atajos de SPIP para modelos de documentos <docXX>, <imgXX>
    o <embXX> se vuelve equivalente. La escritura recomendada es <docXX>
    (donde XX es el número de documento).
  • La noción de cartera y modo de documento / imagen en los documentos
    desaparece.Commit 9cf774b9
    (https://git.spip.net/SPIP/medias/commit/9cf774b9eb06f5dd0c52deaa18c04101aa98598c).
  • La constante _COMPORTEMENT_HISTORIQUE_PORTFOLIO definida a true
    permite rehabilitar la antigua funcionalidad.

Compatibilidad PHP |Volver al sumario

Limitación de la compatibilidad de SPIP 4.0 con PHP de 7.3 a 8.0. También
se han corregido muchos avisos, deprecaciones. Ten en cuenta que SPIP 3.2
será, por tanto, la última versión de SPIP compatible con PHP 5.

Base de datos|Volver al sumario

SPIP 4.0 funciona con Mysql o Sqlite. Puede actualizar una base de datos
resultante de un SPIP> = 2.0.0.

Para una actualización de un SPIP anterior a 3.2, será necesario un paso
previo de migración a SPIP 3.2.

Sintaxis de esqueleto extendido [|Volver al

sumario](#s-Sintaxis-de-esqueleto-extendido)

Soporte agregado para bucles anónimos: <BOUCLE(ARTICLES)>

¿Cansado de archivar? ¡un bucle anónimo no necesita especificar su
nombre!
Se le asignará automáticamente un identificador de forma interna.

[


(


#REM


)

 Un bucle con nombre

]


<B_mon_nom>


    <ul>


<BOUCLE_mon_nom


(ARTICLES)


{id_article}


{0,5}


>


    <li>

#TITRE

</li>


</BOUCLE_mon_nom>


    </ul>


</B_mon_nom>


[


(


#REM


)

 Un bucle anónimo

]


<B>
    <ul>
<BOUCLE(ARTICLES)

{id_article}


{0,5}

>
    <li>

#TITRE

</li>


</BOUCLE>


    </ul>
</B>

Y si eres ambicioso, puedes poner tantos bucles como quieras en un
esqueleto, ¡e incluso anidarlos! Pero bueno, piensa en tus sucesores para
no hacer que el código sea demasiado anónimo y luego no se pueda
encontrar su camino :slight_smile:

<B>
    <ul class="rubriques">
<BOUCLE(RUBRIQUES)

{racine}


{par num titre, titre}

>
    <li>
        <h3>

#TITRE

</h3>
        <B>
            <ul class="articles">
        <BOUCLE(ARTICLES)

{id_rubrique}


{!par date}


{0,5}

>
            <li><a href="

#URL_ARTICLE

">

#TITRE

</a></li>


</BOUCLE>


            </ul>
        </B>
    </li>


</BOUCLE>


    </ul>
</B>

Agregar partes incondicionales de bucles, antes <BB_boucle> y después
</BB_boucle>

Se agrega a los bucles una sintaxis para las partes no condicionales: este
contenido siempre se mostrará, ya sea que haya un resultado o no, mientras
se permite el uso de las balisas propias del bucle.
(#TOTAL_BOUCLE, #TRI, etc).
Esta sintaxis es particularmente útil para matrices de elementos con
ordenación y filtrado. Si el bucle no devuelve ningún elemento, aún
queremos mostrar los filtros (para desmarcarlos / modificarlos).

[


(


#REM


)

 Una parte no condicional antes / después del bucle. 

]


<BB_non_conditionnel>


[


(


#REM


)

 esta parte se muestra incluso si el bucle no devuelve ningún

artículo

]


    <h3>Les articles</h3>
    Nombre :  

#TOTAL_BOUCLE

<br>


<BOUCLE_non_conditionnel


(ARTICLES)


{id_article?}


{id_rubrique?}


{!par date}


{0,5}


{', '}


>


    <a href="

#URL_ARTICLE

">

#TITRE

</a>


</BOUCLE_non_conditionnel>


[


(


#REM


)

 esta parte se muestra incluso si el bucle no devuelve ningún

artículo

]


   <nav class="pagination" role="navigation">

#PAGINATION

</nav>


</BB_non_conditionnel>

Esto completa las partes condicionales de los bucles frontales <B_boucle>
y después </B_boucle> que se muestran solo si el bucle tiene al menos un
resultado.

[


(


#REM


)

 Una parte condicional antes / después del bucle 

]


<B_conditionnel>


[


(


#REM


)

 esta parte solo se muestra si el bucle devuelve artículos

]


    <h3>Les articles</h3>
    Nombre :  

#TOTAL_BOUCLE

<br>


<BOUCLE_conditionnel


(ARTICLES)


{id_article}


{id_article?}


{id_rubrique?}


{!par date}


{0,5}


{', '}


>


    <a href="

#URL_ARTICLE

">

#TITRE

</a>


</BOUCLE_conditionnel>


[


(


#REM


)

 esta parte solo se muestra si el bucle devuelve artículos 

]


    <nav class="pagination" role="navigation">

#PAGINATION

</nav>


</B_conditionnel>


    <h3>Aucun article</h3>


<//B_conditionnel>

La parte incondicional de los bucles se puede acoplar con la parte
condicional: en este caso, enmarca la parte condicional.

[


(


#REM


)

 Mezcla incondicional / condicional antes / después 

]


<BB_mix>


<div class="articles">
   <h3>Les articles</h3>


<B_mix>


    <ul>


<BOUCLE_mix


(ARTICLES)


{id_article}


{id_article}


{!par date}


{0,5}


{', '}


>


    <li>

#TITRE

</li>


</BOUCLE_mix>


    </ul>
    <nav class="pagination" role="navigation">

#PAGINATION

</nav>


</B_mix>


</div>


</BB_mix>

** Se agregó soporte para bucles en la parte condicional de las etiquetas
(balisas).**

Sí ! ¡Ahora podemos poner bucles en las etiquetas!
Si si ! En las partes condicionales de las etiquetas.

Algunos ejemplos:

[


(


#BALISE


)

 <BOUCLE(ARTICLES) 

{0,1}

>

#TITRE


</BOUCLE>


]


[

<BOUCLE(ARTICLES) 

{0,1}

>

#TITRE


</BOUCLE>


(


#BALISE


)


]


[


(


#ENV


{documents}


|oui


)


<B_docs>


    <ul>


<BOUCLE_docs


(DOCUMENTS)


{id_article}


{par num titre, titre}


{mode=document}


>


    <li>
        <a href="

#URL_DOCUMENT

">


[


(


#TITRE


|sinon


{Document n°

#ID_DOCUMENT

}


)


]


\

(


#EXTENSION


\

)


        </a>
    </li>


</BOUCLE_docs>


    <ul>


</B_docs>


]

Cambios y contribuciones para los esqueletos. [|Volver al

sumario](#s-Cambios-y-contribuciones-para-los-esqueletos)

** Las balisas #PAGINATION requieren un cambio en la sintaxis y los
argumentos. **

El cambio es 1) en la etiqueta englobante, que debe ser nav 2) en los
argumentos.

  1. La etiqueta englobante ahora debería ser <nav class="pagination">.

Hasta SPIP 3.2, escribimos, por ejemplo:

  1. [

    ( #PAGINATION ) ]

Con SPIP 4.0, ahora se debe usar:

  1. [ ( #PAGINATION ) ]
  1. Solo queda un modelo de paginación. Por lo tanto, las diferencias de
    representación de paginación se realizan pasándole argumentos.
  • afficher_lien_precedent=oui para mostrar el < a resultados
    anteriores
  • afficher_lien_suivant=oui para mostrar el > lo que conduce a los
    siguientes resultados
  • afficher_lien_tous=oui para mostrar un enlace que permite ver todos
    los resultados simultáneamente. En este caso, el texto del enlace es
    «  » por defecto, pero es posible especificar otra etiqueta con el
    argumento label_tous. Ejemplo: label_tous=todos.
  • nombre_liens_max le permite definir el número máximo de enlaces de
    paginación que muestra el modelo. También podemos usar la constante
    _PAGINATION_NOMBRE_LIENS_MAX para espacio público o
    _PAGINATION_NOMBRE_LIENS_MAX_ECRIRE para espacio privado.

El primer argumento puede indicar qué tipo de paginación desea. También
se puede indicar con un argumento.type_pagination.
Ejemplo: `

#PAGINATION

{naturel}

es equivalente a

#PAGINATION

{type_pagination=naturel}

` .

  • type_pagination=page para mostrar los números de página: 1, 2, 3,
    4…
  • type_pagination=rang para mostrar los rangos: 0, 10, 20, 30…
  • type_pagination=naturel para mostrar las filas con 1 en lugar de 0:
    1, 10, 20, 30…
  • type_pagination=resultats para mostrar las filas de 10 en 10 desde 1:
    1, 11, 21, 31…
  • type_pagination=page_precedent_suivant es la combinación de una
    paginación de tipo page con enlaces anteriores y siguientes.

El uso de la etiqueta en el área privada se detecta automáticamente, por
lo que no es necesario pasar el argumento type_pagination=prive. Sin
embargo, estando asegurada la compatibilidad con la sintaxis antigua en
este punto, se podrá conservar, en esqueletos antiguos, el argumento de la
versión antigua de la siguiente manera:

  1. [ ( #PAGINATION {prive} )
]

Criterio {id_?}

El criterio {id_?} permite realizar todas las conexiones posibles con
variables de entorno. Por tanto, se comporta como otros criterios {id_xxx ?} que sea posible para el bucle dado.

Ver id_ ? (https://www.spip.net/ecrire/?exec=article&id_article=6645)

Función lister_champs_id_conditionnel y tubería
exclure_id_conditionnel

El criterio {id_?} se basa directamente en la función
lister_champs_id_conditionnel($table) que devuelve una lista de posibles
campos de selección condicional para esta tabla.

El cálculo se realiza a partir de campos que comienzan con ’id_’ en la
tabla, así como con un posible campo de ’objeto’. Luego, las tablas
editoriales se completan con las claves primarias, que se pueden vincular
fácilmente.

Finalmente, el resultado cruza la tubería exclure_id_conditionnel que le
permite excluir ciertos campos de la lista calculada por la función
lister_champs_id_conditionnel. Ver ejemplo en el complemento Breves o el
complemento SVP.

Criterio {par_ordre_liste champ,#LISTE{...}}

Nuevo critère par_ordre_liste
(https://www.spip.net/ecrire/?exec=article&id_article=6646) para ordenar un
bucle en un orden específico.

Criterio {fusion_supprimer}

Este criterio entra en el Núcleo. Anteriormente se definía en el
complemento SPIP-Bonux. Importante: Debe actualizar el complemento
SPIP-Bonux, si está activo, a la versión> = 3.7.1 antes para
actualizar el sitio a SPIP 4.0 para evitar un conflicto.

Filtro y función identifiant_slug

Ticket #4628 (https://core.spip.net/issues/4628) : agregar la función
identifier_slug()
(https://www.spip.net/ecrire/?exec=article&id_article=6636). Permite
transformar un texto claro en un nombre corto que se puede utilizar como
identificador, clase, id, url … manteniendo solo caracteres
alfanuméricos y un separador.

Filtros label_nettoyer y label_ponctuer

Estos filtros se agregan para administrar y usar las cadenas de idioma
históricas de SPIP un poco mejor (a veces con `:`, a veces sin).

  • label_nettoyer eliminar el ` :` al final del texto
  • label_ponctuer agregar ` :` al final del texto

Otros aspectos de los esqueletos

Otras contribuciones|Volver al sumario

[

(

#DATE

|heures_minutes

{abbr}

)

]

mostrará, por ejemplo:17h26`

  • La constante _AUTO_SELECTION_RUBRIQUE, que asigna automáticamente
    una sección a la creación de un artículo si su valor es true ahora
    también acepta un entero: en este caso corresponde al identificador de
    sección que se asignará por defecto.
  • Si el tercer parámetro (clase) de #BOUTON_ACTION{etiqueta, URL, clase, mensaje de confirmación} contiene « ajax », esta clase se agrega al
    formulario que contiene el botón.

Correcciones|Volver al sumario

  • Actualización de todas las bibliotecas JS utilizadas
  • [login] Ticket #3957 (https://core.spip.net/issues/3957) : Ya no
    muestra el candado en la página de inicio de sesión, que es demasiado
    ambiguo, lo reemplaza con el candado https del navegador.
  • [admin] El enlace « Mostrar visitantes » no se muestra si no hay usuarios
    con este estado en el sitio.
  • [svp][plugins] Si hay un error XML en un paquete.xml, se explica
    directamente en la página de administración de complementos.

Limpiezas|Volver al sumario

Complementos (Plugins)

  • Los archivos plugin.xml de los plugins para SPIP 2.x ya no se
    interpretan. Ahora son solo paquet.xml. Por lo tanto, un plugin que solo
    tenga plugin.xml (sin paquet.xml al lado) ya no funcionará a partir de
    SPIP 4.0.

Otros

  • Ticket #4060 (https://core.spip.net/issues/4060) : Limpieza de código
    < PHP 5.4
  • Limpieza de código & CSS <= IE9
  • Limpieza de htaccess (ya no existirá compatibilidad con las URLs
    .php(3) de SPIP <= 1.8

Archivos

  • Supresión de inc/mail deprecado desde SPIP 2. Utilice por ejemplo:

    $envoyer_mail

    =

    charger_fonction

    (

    ‹ envoyer_mail ›

    ,

    ‹ inc ›

    )

    ;

    $envoyer_mail

    (

    )

    ;

  • Eliminación de action/preferer.php no utilizado desde SPIP 3.2
    (supresión de ecrire/oo/).

  • Supresión de exec/valider_xml.php no funcional, movido al plugin
    para ser corregido Valider XML
    (https://zone.spip.org/trac/spip-zone/changeset/108307)

  • Eliminación de exec/fond_monobloc.php. Crea los esqueletos del
    espacio privado en prive/squelettes.

Balisas / Filtros / Criterios

  • Eliminación de balisas #DEBUT_SURLIGNE y #FIN_SURLIGNE deprecadas
    desde SPIP 2. Uso de las clases CSS surlignable y pas_surlignable.
  • Los filtros aligner, aligner_gauche, aligner_droite, centrer,
    justifier y style_align fueron eliminados. Uso de código CSS para
    alcanzar el mismo resultado.
  • Supresión de #LOGIN_PRIVE. Uso de #FORMULAIRE_LOGIN
  • Supresión de #LOGIN_PUBLIC. Uso de #FORMULAIRE_LOGIN
  • Supresión de #DOSSIER_SQUELETTE. Uso de #CHEMIN
  • Supresión de #NOOP. Uso de #VAL
  • Supresión de {datasource ...}. Uso directo del criterio {source ...}

Funciones de PHP

  • Supresión de echo_log() (inútil ahora).
  • Uso de sql_fetch() en vez de spip_fetch_array().
  • Supresión de generer_url_retour(). Uso de parametre_url() en su
    lugar, con el parámetro ’redireccionar’.
  • Supresión de charger_php_extension() (Uso de extension_loaded()).
  • Supresión de revisions_articles(). Uso de article_modifier().
  • Supresión de revision_article(). Uso de article_modifier().
  • Supresión de articles_set(). Uso de article_modifier().
  • Supresión de insert_article(). Uso de article_inserer().
  • Supresión de instituer_article(). Uso de article_instituer().
  • Supresión de insert_auteur(). Uso de auteur_inserer().
  • Supresión de auteurs_set(). Uso de auteur_modifier().
  • Supresión de instituer_auteur(). Uso de auteur_instituer().
  • Supresión de revision_auteur(). Uso de auteur_modifier().
  • Supresión de insert_rubrique(). Uso de rubrique_inserer().
  • Supresión de revisions_rubriques(). Uso de rubrique_modifier().
  • Supresión de instituer_rubrique(). Uso de rubrique_instituer().
  • Supresión de admin_repair_plat(). Los archivos planos ya no serán utilizados. Esta función ya no es aplicable después de <code>r14292.
  • Supresión de version_svn_courante(). Uso de
    version_vcs_courante().
  • Supresión de lire_meta(). Uso de $GLOBALS['meta'][$nom] o
    lire_config('nom').
  • Supresión de auteur_referent(). Uso de auteur_associer().
  • Supresión de table_jointure(). Uso de la API editer_liens o las
    tablas de enlaces spip_xx_liens o spip_yy_liens, dependiendo de cada
    caso.
  • Supresión de modifier_contenu(). Usos de las funciones genéricas
    para la API de modificación de contenido.
  • Supresión de revision_objet(). Uso de objet_modifier().
  • Supresión de notifier_publication_article().
  • Supresión de notifier_proposition_article().
  • Supresión de calcul_branche(). Uso de calcul_branche_in().
  • Supresión de ecrire_metas().
  • Supresión de spip_query_db(). Uso de sql_query()u otro.
  • Supresión de spip_get_lock() et spip_release_lock() que ya no se
    utilizan.
  • Supresión de recuperer_entetes(). Uso de
    recuperer_entetes_complets().
  • Supresión de maj_version() et upgrade_vers() que ya no sirven.
  • Supresión de upgrade_types_documents(). Uso directamente de
    creer_base_types_doc() del plugin Medias.

Deprecaciones|Volver al sumario

  • El <BOUCLE(POUR) y sus criterios {tableau ...}se deprecan a favor
    de <BOUCLE(DATA) y su criterio {source table, ...}.
  • Asimismo, el filtro |foreach está en desuso a favor de la sintaxis
    basada en bucles (DATA).

Plugins |Volver al sumario

Los plugins breves, jquery_ui, organiseur,
petitions, vertebres, squelettes_par_rubriques ya no se
distribuyen con SPIP de forma predeterminada.
Pero breves, organiseur, petitions,
squelettes_par_rubriques siempre se mantienen!
jquery_ui es mantenido por la comunidad, pero está deprecado.

vertebres aunque se abandona la funcionalidad en SPIP 4.0: el
complemento Adminer es la alternativa más completa.

Breves

Funciones de PHP

  • Supresión de insert_breve(). Uso de breve_inserer().
  • Supresión de revisions_breves(). Uso de breve_modifier().

Ático

El ático está limpio y solo contiene las funciones eliminadas de SPIP 3.2
y SPIP 4.0.
Lo que es anterior a SPIP 3.2 ya no está presente en él.

Recibe las diversas funciones y archivos eliminados de SPIP 4.0 que
potencialmente podrían ser utilizados por plantillas o complementos.

Media

Funciones de PHP

  • Supresión de document_set(). Uso de document_modifier()
  • Supresión de insert_document(). Uso de document_inserer()
  • Supresión de revision_document(). Uso de document_modifier()
  • Supresión de afficher_documents_colonne(). Utilice la inclusión
    prevista o una verdadera declaración de objeto editorial (la columna del
    documento se muestra automáticamente en la página de edición del
    objeto).
  • Supresión de lien_objet(). Uso de generer_lien_entite()
  • Supresión de instituer_document(). Uso de document_instituer()

Palabras

Funciones de PHP

  • Supresión de groupemots_inserer(). Uso de groupe_mots_inserer() o
    objet_inserer().
  • Supresión de groupemots_modifier(). Uso de groupe_mots_modifier()
    o objet_modifier().
  • Supresión de revision_groupe_mot(). Uso de groupe_mots_modifier().
  • Supresión de insert_mot(). Uso de mot_inserer().
  • Supresión de mots_set(). Uso de mot_modifier().
  • Supresión de revision_mot(). Uso de mot_modifier().

Solicitudes

El uso de peticiones ahora es opcional: están deshabilitadas por defecto
en nuevas instalaciones [1] . Puedes activarlos en la configuración de los
contenidos del sitio.

Sitios

Funciones de PHP

  • Supresión de insert_syndic(). Uso de site_inserer()
  • Supresión de revisions_sites(). Uso de site_modifier()
  • Supresión de syndic_set(). Uso de site_modifier()
  • Supresión de instituer_syndic(). Uso de objet_instituer()

[1] En instalaciones existentes, este es el caso solo si no se usaron antes

— Enviado por SPIP (https://www.spip.net/)


rubon155-a9eec.jpg