La déclaration d’un nouvel objet éditorial se fait via le pipeline declarer_tables_objets_sql qui permet de peupler un tableau associatif :
- Les clés du tableau sont les noms des tables SQL (exemple
spip_articles) - à chaque clé sont associées un certain nombre de valeurs dans un tableau, selon la nomenclature ci-dessous, présentée par type d’information
Base de donnée
- table_objet
Explication nom raccourci de la table Exemple articles pour spip_articles Valeur par défaut nom de la table sans spip_ dans SPIP 2.1 non déclaré - table_objet_surnom
Explication synonymes de table_objet pour les cas particuliers Exemple pas de surnom pour articles (mais exemple : groupe_mots pour spip_groupes_mots) Valeur par défaut pas de surnom dans SPIP 2.1 via declarer_tables_objets_surnoms - type
Explication nom court de l’objet Exemple article pour la table spip_articles Valeur par défaut clé primaire sans id_ au début ni s a la fin, ou à défaut nom de la table sans spip_ au début ni s a la fin dans SPIP 2.1 - type_surnoms
Explication synonyme du type pour les cas particuliers Exemple Valeur par défaut pas de surnom dans SPIP 2.1 - field
Explication Déclaration SQL des champs de la table Exemple array( "id_article" => "bigint(21) NOT NULL", "surtitre" => "text DEFAULT ’’ NOT NULL", "titre" => "text DEFAULT ’’ NOT NULL", "soustitre" => "text DEFAULT ’’ NOT NULL",...) Valeur par défaut héritée de la déclaration $tables_principales ou $tables_auxiliaires si existante (compatibilité) dans SPIP 2.1 Remplace la déclaration incluse dans le pipeline declarer_tables_principales, avec la même syntaxe - key
Explication Déclaration SQL des clés de la table Exemple array( "PRIMARY KEY" =>"id_article", "KEY id_rubrique" => "id_rubrique",...) Valeur par défaut hérité de la déclaration $tables_principales ou $tables_auxiliaires si existante (compatibilité) dans SPIP 2.1 Remplace la déclaration incluse dans le pipeline declarer_tables_principales, avec la même syntaxe - join
Explication les champs déclarés explicitement pour les jointures. sinon les jointures se feront exclusivement sur la clef primaire. attention : les champs ’idx’, ’maj’, ’date’ et ’statut’ ne peuvent PAS être déclarés comme champs de jointure possible. Exemple array( "id_article"=>"id_article", "id_rubrique"=>"id_rubrique") Valeur par défaut hérité de la déclaration $tables_principales ou $tables_auxiliaires si existante (compatibilité) dans SPIP 2.1 Remplace la déclaration incluse dans le pipeline declarer_tables_principales, avec la même syntaxe - tables_jointures
Explication déclaration de la table de liens et de son champ de jointure. on joindra ainsi (par exemple) id_article, articles à id_auteur, auteurs en passant par la table auteurs_liens et ses lignes id_auteur, id_objet, objet (donc, ici : id_auteur, id_article, articles) Exemple array(’id_auteur’ => ’auteurs_liens’) Valeur par défaut hérité de la déclaration $tables_jointures si existante (compatibilité) dans SPIP 2.1 $declarer_tables_objets_sql[’spip_articles’][’tables_jointures’] reprend l’ancien contenu de $tables_jointures[’spip_articles’] - principale
Explication Indique si la table est table principale ou auxiliaire ; prend les valeurs ’oui’ ou ’non’ Exemple ’oui’ Valeur par défaut hérité de la déclaration $tables_principales si existante (compatibilité) dans SPIP 2.1 Remplace l’affectation des tableaux dans le pipeline declarer_tables_principales ou declarer_tables_auxiliaires - modeles
Explication permet de déclarer les modèles associés a cet objet Exemple exemple pour spip_documents : array(’document’, ’doc’, ’img’, ’emb’, ’image’, ’video’, ’text’, ’audio’, ’application’) Valeur par défaut la valeur de type dans SPIP 2.1
Le titre, la date et la gestion du statut
- titre
Explication Représentation SQL qui permet de récupérer le titre et la langue de l’objet Exemple "titre, lang" Valeur par défaut hérité de la déclaration $tables_titre (compatibilité) ou vide sinon dans SPIP 2.1 Remplace la déclaration du titre de l’objet dans le pipeline declarer_tables_interfaces : $interface['table_titre']['articles'] = "titre, '' AS lang";- date
Explication déclare le champ date de l’objet utilisé pour le dater Exemple date Valeur par défaut hérité de la déclaration $tables_date ou vide dans SPIP 2.1 Remplace la déclaration de la date de l’objet dans declarer_tables_interfaces : $interface['table_date']['articles'] = "date";- statut
Explication Déclaration du statut pour l’objet Exemple array(array( ’champ’ => ’statut’, ’publie’ => ’publie’, ’previsu’ => ’publie,prop,prepa’, ’post_date’ => ’date’, ’exception’ => ’statut’)) Valeur par défaut vide dans SPIP 2.1 Remplace la surcharge des boucles avec conditions where pour gerer le statut. Ici la déclaration est directement prise en compte dans les boucles génériques - statut_titres
Explication Chaines de langue du titre de chaque statut. Définit par la même la liste des statuts autorisés Exemple array( ’prepa’=>’info_article_redaction’, ’prop’=>’info_article_propose’, ’publie’=>’info_article_publie’, ’refuse’=>’info_article_refuse’, ’poubelle’=>’info_article_supprime’) Valeur par défaut null dans SPIP 2.1 - statut_images
Explication definit les puces associées à chaque statut Exemple Valeur par défaut null dans SPIP 2.1 Pas d’équivalence - statut_textes_instituer
Explication Chaines de langue du libellé de chaque statut dans le bloc instituer de l’objet Exemple array( ’prepa’ => ’texte_statut_en_cours_redaction’, ’prop’ => ’texte_statut_propose_evaluation’, ’publie’ => ’texte_statut_publie’, ’refuse’ => ’texte_statut_refuse’, ’poubelle’ => ’texte_statut_poubelle’) Valeur par défaut null dans SPIP 2.1 Pas d’équivalence
L’édition, l’affichage et la recherche
- page
Explication Le nom de la page publique de l’objet Exemple article Valeur par défaut type si principale=’oui’, rien sinon dans SPIP 2.1 Remplace la déclaration de l’url de l’objet dans le pipeline declarer_url_objets() - url_voir
Explication nom de l’exec privé pour voir l’objet Exemple article Valeur par défaut type dans SPIP 2.1 - url_edit
Explication nom de l’exec privé pour éditer l’objet Exemple article_edit Valeur par défaut type+_edit dans SPIP 2.1 - editable
Explication donner acces à une page d’édition dans l’espace privé Exemple ’oui’ ou false Valeur par défaut oui dans SPIP 2.1 - champs_editables
Explication Liste des champs de l’objet pouvant être modifiés dans le formulaire d’édition Exemple array(’surtitre’, ’titre’, ’soustitre’, ’descriptif’,’nom_site’, ’url_site’, ’chapo’, ’texte’, ’ps’,’virtuel’) Valeur par défaut vide dans SPIP 2.1 listés explicitement dans la fonction articles_set de action/editer_article [2] - icone_objet
Explication nom du fichier d’icône fourni en 16/24/32px Exemple article Valeur par défaut type dans SPIP 2.1 - champs_versionnes
Explication Liste des champs de l’objet soumis au processus de révisions Exemple array(’id_rubrique’, ’surtitre’, ’titre’, ’soustitre’, ’jointure_auteurs’, ’descriptif’, ’nom_site’, ’url_site’, ’chapo’, ’texte’, ’ps’) Valeur par défaut array() dans SPIP 2.1 - rechercher_champs
Explication Déclaration des champs utilisés dans la recherche et de leur score respectif Exemple array( ’surtitre’ => 5, ’titre’ => 8, ’soustitre’ => 5, ’chapo’ => 3,...) Valeur par défaut array() dans SPIP 2.1 Remplace la déclaration incluse dans le pipeline rechercher_liste_des_champs : même syntaxe - rechercher_jointures
Explication Déclaration des champs et de leurs scores respectifs utilisés via une jointure lors de la recherche. Préciser la table de ces champs en premier élément de l’array. Exemple array( ’auteur’ => array(’nom’ => 10) ) Valeur par défaut array() dans SPIP 2.1 Remplace la déclaration incluse dans le pipeline rechercher_liste_des_jointures : même syntaxe
Les chaines de langue
On déclare dans ces items là sous forme de chaine de langue les textes standards utilisés dans l’espace privé, dans les pages générées automatiquement par SPIP.
- texte_ajouter
Explication Chaine "Ajouter un ..." Exemple titre_ajouter_un_auteur Valeur par défaut texte_ajouter_type dans SPIP 2.1 - texte_retour
Explication Chaine de langue du bouton retour dans la page d’édition de l’objet Exemple icone_retour_article Valeur par défaut icone_retour dans SPIP 2.1 - texte_modifier
Explication Chaine de langue du bouton modifier permettant d’ouvrir le formulaire d’édition de l’objet Exemple icone_modifier_article Valeur par défaut type:icone_modifier_type dans SPIP 2.1 - texte_creer
Explication Chaine de langue du bouton de création d’un nouvel objet Exemple icone_ecrire_article Valeur par défaut type:icone_creer_type dans SPIP 2.1 - texte_creer_associer
Explication Exemple creer_et_associer_un_auteur Valeur par défaut type:texte_creer_associer_type dans SPIP 2.1 - texte_signale_edition
Explication Chaine de langue signalant que l’auteur x a travaillé récemment sur l’objet Exemple texte_travail_article Valeur par défaut info_qui_edite dans SPIP 2.1 - texte_objet
Explication Chaine de langue du singulier de l’objet. La valeur est censée être écrite avec une lettre capitale Exemple public:article Valeur par défaut type:titre_type dans SPIP 2.1 - texte_objets
Explication Chaine de langue du pluriel de l’objet La valeur est censée être écrite avec une lettre capitale Exemple public:articles Valeur par défaut type:titre_table_objet dans SPIP 2.1 - info_aucun_objet
Explication Chaine de langue désignant 0 article utilisée dans la fonction objet_afficher_nb() Exemple info_aucun_article Valeur par défaut type:info_aucun_type dans SPIP 2.1 - info_1_objet
Explication Chaine de langue désignant 1 article utilisée dans la fonction objet_afficher_nb() Exemple info_1_article Valeur par défaut type:info_1_type dans SPIP 2.1 - info_nb_objets
Explication Chaine de langue désignant nb article utilisée dans la fonction objet_afficher_nb() Exemple info_nb_articles Valeur par défaut type:info_nb_table_objets dans SPIP 2.1 - texte_logo_objet
Explication Chaine de langue du titre de la boite d’affichage du logo dans la page privée de l’objet Exemple logo_article Valeur par défaut type:titre_logo_type dans SPIP 2.1 Remplace l’utilisation de la globale $GLOBALS['logo_libelles']['id_objet']
Exemple des brèves
Voici la déclaration telle que réalisée par le plugin qui ajoute les brèves comme objet éditorial dans SPIP :
- function breves_declarer_tables_objets_sql($tables){
- 'texte_retour' => 'icone_retour',
- 'texte_objets' => 'breves:breves',
- 'texte_objet' => 'breves:breve',
- 'texte_modifier' => 'breves:icone_modifier_breve',
- 'texte_creer' => 'breves:icone_nouvelle_breve',
- 'info_aucun_objet'=> 'breves:info_aucun_breve',
- 'info_1_objet' => 'breves:info_1_breve',
- 'info_nb_objets' => 'breves:info_nb_breves',
- 'texte_logo_objet' => 'breves:logo_breve',
- 'texte_langue_objet' => 'breves:titre_langue_breve',
- 'titre' => 'titre, lang',
- 'date' => 'date_heure',
- 'principale' => 'oui',
- "id_breve" => "bigint(21) NOT NULL",
- "date_heure" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
- "titre" => "text DEFAULT '' NOT NULL",
- "texte" => "longtext DEFAULT '' NOT NULL",
- "lien_titre" => "text DEFAULT '' NOT NULL",
- "lien_url" => "text DEFAULT '' NOT NULL",
- "statut" => "varchar(6) DEFAULT '0' NOT NULL",
- "id_rubrique" => "bigint(21) DEFAULT '0' NOT NULL",
- "lang" => "VARCHAR(10) DEFAULT '' NOT NULL",
- "langue_choisie" => "VARCHAR(3) DEFAULT 'non'",
- "maj" => "TIMESTAMP"
- ),
- "PRIMARY KEY" => "id_breve",
- "KEY id_rubrique" => "id_rubrique",
- ),
- "id_breve"=>"id_breve",
- "id_rubrique"=>"id_rubrique"
- ),
- 'champ'=>'statut',
- 'publie'=>'publie',
- 'previsu'=>'publie,prop',
- 'exception'=>'statut'
- )
- ),
- 'texte_changer_statut' => 'breves:entree_breve_publiee',
- 'aide_changer_statut' => 'brevesstatut',
- 'prop' => 'breves:titre_breve_proposee',
- 'publie' => 'breves:titre_breve_publiee',
- 'refuse' => 'breves:titre_breve_refusee',
- ),
- 'prop' => 'breves:item_breve_proposee', //_T('texte_statut_propose_evaluation')
- 'publie' => 'breves:item_breve_validee', //_T('texte_statut_publie')
- 'refuse' => 'breves:item_breve_refusee', //_T('texte_statut_refuse')
- ),
- 'titre' => 8, 'texte' => 2, 'lien_titre' => 1, 'lien_url' => 1
- ),
- ),
- );
- return $tables;
- }
