The declaration of a new editorial object is done via the pipeline declarer_tables_objets_sql
which allows to populate an associative array:
- Table keys are the names of SQL tables (example
spip_articles
) - to each key are associated a certain number of values in a table, according to the nomenclature below, presented by type of information
Database
- table_objet
Explanation table shortcut name Example articles for spip_articles Default value table name without spip_ not declared - table_objet_surnom
Explanation synonyms of table_objet for special cases Example no surname for articles (but example: groupe_mots for spip_groupes_mots) Default value no surname via declarer_tables_objets_surnoms - type
Explanation short name of the object Example article for the table spip_articles Default value primary key without id_ at the beginning or s at the end, or by default table name without spip_ at the beginning or s at the end - type_surnoms
Explanation synonym for type for special cases Example Default value no surname - field
Explanation SQL declaration of table fields Example array( "id_article" => "bigint(21) NOT NULL", "surtitre" => "text DEFAULT '' NOT NULL", "titre" => "text DEFAULT '' NOT NULL", "soustitre" => "text DEFAULT '' NOT NULL",...)
Default value inherited from the declaration $tables_principales or $tables_auxiliaires if existing (compatibility) Replaces the declaration included in the pipeline declarer_tables_principales, with the same syntax - key
Explanation SQL declaration of table keys Example array( "PRIMARY KEY" =>"id_article", "KEY id_rubrique" => "id_rubrique",...)
Default value inherited from the declaration $tables_principales or $tables_auxiliaires if existing (compatibility) Replaces the declaration included in the pipeline declarer_tables_principales, with the same syntax - join
Explanation the fields declared explicitly for the joins. otherwise the joins will be made exclusively on the primary key. warning: the fields ’idx’, ’maj’, ’date’ and ’statut’ can NOT be declared as possible join fields. Example array( "id_article"=>"id_article", "id_rubrique"=>"id_rubrique")
Default value inherited from the declaration $tables_principales or $tables_auxiliaires if existing (compatibility) Replaces the declaration included in the pipeline declarer_tables_principales, with the same syntax - tables_jointures
Explanation declaration of the link table and its join field. we will thus join (for example) id_article, articles to id_auteur, auteurs through the table auteurs_liens and its rows id_auteur, id_objet, objet (so, here: id_auteur, id_article, articles) Example array(’id_auteur’ => ’auteurs_liens’) Default value inherited from the declaration $tables_jointures if existing (compatibility) $declarer_tables_objets_sql[’spip_articles’][’tables_jointures’] takes over the former content of $tables_jointures[’spip_articles’] - principale
Explanation Indicates whether the table is main or auxiliary table; takes the values ’yes’ or ’no’. Example ’yes’ Default value inherited from the declaration $tables_principales if existing (compatibility) Replaces the affectation of tables in the pipeline declarer_tables_principales or declarer_tables_auxiliaires - modeles
Explanation enables to declare the models associated to this object Example example for spip_documents : array(’document’, ’doc’, ’img’, ’emb’, ’image’, ’video’, ’text’, ’audio’, ’application’) Default value value of type
Title, date and status management
- titre
Explanation SQL representation that allows to retrieve the title and language of the object Example "titre, lang" Default value inherited from the declaration $tables_titre (compatibility) or empty if not Replaces the declaration of the title of the object in the pipeline declarer_tables_interfaces :
$interface['table_titre']['articles'] = "titre, '' AS lang";
- date
Explanation declares the date field of the object used to date it Example date Default value inherited from the declaration $tables_date or empty Replaces the declaration of the date of the object in declarer_tables_interfaces :
$interface['table_date']['articles'] = "date";
- statut
Explanation Declaration of the status for the object Example array(array(
’champ’ => ’statut’,
’publie’ => ’publie’,
’previsu’ => ’publie,prop,prepa’,
’post_date’ => ’date’,
’exception’ => ’statut’))Default value empty Replaces loop overriding with conditions where to manage the status. Here the declaration is directly taken into account in the generic loops. - statut_titres
Explanation Language strings of the title of each status. Defines the list of authorized statuses Example array(
’prepa’=>’info_article_redaction’,
’prop’=>’info_article_propose’,
’publie’=>’info_article_publie’,
’refuse’=>’info_article_refuse’,
’poubelle’=>’info_article_supprime’)Default value null - statut_images
Explanation defines the bullets associated with each status Example Default value null No equivalence - statut_textes_instituer
Explanation Language strings of the wording of each status in the ’instituer’ block of the object Example array(
’prepa’ => ’texte_statut_en_cours_redaction’,
’prop’ => ’texte_statut_propose_evaluation’,
’publie’ => ’texte_statut_publie’,
’refuse’ => ’texte_statut_refuse’,
’poubelle’ => ’texte_statut_poubelle’)Default value null No equivalence
Editing, Displaying and Searching
- page
Explanation The name of the public page of the object Example article Default value type if main=’yes’, nothing otherwise Replaces the declaration of the url of the object in the pipeline declarer_url_objets() - url_voir
Explanation name of the private exec to see the object Example article Default value type - url_edit
Explanation name of the private exec to edit the object Example article_edit Default value type+_edit - editable
Explanation give access to an editing page in the private area Example ’yes’ or false Default value yes - champs_editables
Explanation List of object fields that can be modified in the editing form Example array(’surtitre’, ’titre’, ’soustitre’, ’descriptif’,’nom_site’, ’url_site’, ’chapo’, ’texte’, ’ps’,’virtuel’) Default value empty explicitly listed in the articles_set function of action/editer_article [2] - icone_objet
Explanation name of the icon file provided in 16/24/32px Example article Default value type - champs_versionnes
Explanation List of object fields subject to the revision process Exemple array(’id_rubrique’, ’surtitre’, ’titre’, ’soustitre’, ’jointure_auteurs’, ’descriptif’, ’nom_site’, ’url_site’, ’chapo’, ’texte’, ’ps’) Default value array() - rechercher_champs
Explanation Declaration of the fields used in the search and their respective scores Example array(
’surtitre’ => 5, ’titre’ => 8, ’soustitre’ => 5, ’chapo’ => 3,...)Default value array() Replaces the declaration included in the pipeline rechercher_liste_des_champs: same syntax - rechercher_jointures
Explanation Declaration of the fields and their respective scores used via a join during the search.
Specify the table of these fields in the first element of the array.Example array(
’auteur’ => array(’nom’ => 10)
)Default value array() Replaces the declaration included in the pipeline rechercher_liste_des_jointures : same syntax
Language strings
In these items, the standard texts used in the private area, in the pages automatically generated by SPIP, are declared in the form of a language string.
- texte_ajouter
Explanation Chaine "Ajouter un ..." Example titre_ajouter_un_auteur Default value texte_ajouter_type - texte_retour
Explanation Language string of the back button in the object edit page Example icone_retour_article Valeur par défaut icone_retour - texte_modifier
Explanation Language string of the edit button to open the editing form of the object. Example icone_modifier_article Default value type:icone_modifier_type - texte_creer
Explanation Language string of the button to create a new object Example icone_ecrire_article Default value type:icone_creer_type - texte_creer_associer
Explanation Example creer_et_associer_un_auteur Default value type:texte_creer_associer_type - texte_signale_edition
Explanation Language string indicating that author x has recently worked on the object Example texte_travail_article Default value info_qui_edite - texte_objet
Explanation Language string in singular of the object. The value is supposed to be written with a capital letter. Example public:article Default value type:titre_type - texte_objets
Explanation Language string of the plural of the object The value is supposed to be written with a capital letter. Example public:articles Default value type:titre_table_objet - info_aucun_objet
Explanation Language string designating 0 item used in the function objet_afficher_nb() Example info_aucun_article Default value type:info_aucun_type - info_1_objet
Explanation Language string designating 1 item used in the function objet_afficher_nb() Example info_1_article Default value type:info_1_type - info_nb_objets
Explanation Language string designating nb article used in the function objet_afficher_nb() Example info_nb_articles Default value type:info_nb_table_objets - texte_logo_objet
Explanation Language string of the title of the display box of the logo in the private page of the object Example logo_article Default value type:titre_logo_type Replaces the use of the global $GLOBALS['logo_libelles']['id_objet']
News items example
Here is the declaration as created by the plugin that adds the news items as editorial objects in SPIP :
function breves_declarer_tables_objets_sql($tables){
$tables['spip_breves'] = array(
'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',
'field'=> array(
"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"
),
'key' => array(
"PRIMARY KEY" => "id_breve",
"KEY id_rubrique" => "id_rubrique",
),
'join' => array(
"id_breve"=>"id_breve",
"id_rubrique"=>"id_rubrique"
),
'statut' => array(
array(
'champ'=>'statut',
'publie'=>'publie',
'previsu'=>'publie,prop',
'exception'=>'statut'
)
),
'texte_changer_statut' => 'breves:entree_breve_publiee',
'aide_changer_statut' => 'brevesstatut',
'statut_titres' => array(
'prop' => 'breves:titre_breve_proposee',
'publie' => 'breves:titre_breve_publiee',
'refuse' => 'breves:titre_breve_refusee',
),
'statut_textes_instituer' => array(
'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')
),
'rechercher_champs' => array(
'titre' => 8, 'texte' => 2, 'lien_titre' => 1, 'lien_url' => 1
),
'rechercher_jointures' => array(
'document' => array('titre' => 2, 'descriptif' => 1)
),
'champs_versionnes' => array('id_rubrique', 'titre', 'lien_titre', 'lien_url', 'texte'),
);
return $tables;
}