Browse Source

Mise au point de l'API rubrique.

Distinction de l'icone des secteurs et rubriques suivant leur type : apropos, carnet, plugin et galaxie.
Affiner les css de la boite d'infos suite à l'ajout du préfixe ou de la catégorie.
master
Eric Lupinacci 3 years ago
parent
commit
335224ad96
  1. 12
      contrib_autorisations.php
  2. 2
      contrib_options.php
  3. 4
      formulaires/configurer_contrib.html
  4. 15
      formulaires/configurer_contrib.php
  5. 27
      inc/contrib_rubrique.php
  6. 3
      lang/contrib_fr.php
  7. 61
      prive/objets/infos/rubrique.html
  8. 2
      prive/squelettes/contenu/configurer_contrib.html
  9. 40
      prive/squelettes/contenu/rubrique.html
  10. 1
      prive/squelettes/contenu/rubrique_edit.html
  11. 6
      prive/squelettes/contenu/rubriques.html
  12. 29
      prive/style_prive_plugin_contrib.html
  13. BIN
      prive/themes/spip/images/rubrique-24.pxm
  14. BIN
      prive/themes/spip/images/rubrique_apropos-24.png
  15. BIN
      prive/themes/spip/images/rubrique_carnet-24.png
  16. BIN
      prive/themes/spip/images/rubrique_galaxie-24.png
  17. BIN
      prive/themes/spip/images/rubrique_plugin-24.png
  18. BIN
      prive/themes/spip/images/secteur-24.pxm
  19. BIN
      prive/themes/spip/images/secteur_apropos-24.png
  20. BIN
      prive/themes/spip/images/secteur_carnet-24.png
  21. BIN
      prive/themes/spip/images/secteur_galaxie-24.png
  22. BIN
      prive/themes/spip/images/secteur_plugin-24.png

12
contrib_autorisations.php

@ -12,7 +12,7 @@ function contrib_autoriser(){}
* Il faut :
* - être un webmestre,
* - que la rubrique ait une profondeur égale à 0 ou 1,
* - que le secteur ne soit ni celui du carnet, ni celui de l'aide (apropos).
* - que le secteur ne soit ni un secteur-carnet, ni un secteur-apropos, ni un secteur-galaxie.
* - et que si la rubrique est de profondeur 1, le secteur a déjà sa catégorie remplie.
*
* @param $faire
@ -39,6 +39,7 @@ function autoriser_rubrique_modifierextra_categorie($faire, $type, $id, $qui, $o
// On vérifie si la rubrique est dans un secteur à exclure (non plugin).
// - le carnet wiki
// - le secteur apropos
// - le secteur galaxie
include_spip('inc/contrib_rubrique');
if (!rubrique_dans_secteur_apropos($id_rubrique)
and !rubrique_dans_secteur_carnet($id_rubrique)
@ -49,7 +50,7 @@ function autoriser_rubrique_modifierextra_categorie($faire, $type, $id, $qui, $o
if (($profondeur !== null)
and ($profondeur < 2)) {
if (($profondeur == 0)
or (($profondeur == 1)
or (($profondeur == 1)
and ($id_parent = rubrique_lire_parent($id_rubrique))
and rubrique_lire_categorie($id_parent))) {
$autoriser = true;
@ -68,7 +69,7 @@ function autoriser_rubrique_modifierextra_categorie($faire, $type, $id, $qui, $o
* Il faut :
* - être un webmestre,
* - que la rubrique ait une profondeur égale à 2,
* - que la catégorie de sa rubrique parente soit non vide.
* - que la catégorie de sa rubrique parente soit non vide (rubrique-categorie).
* Cela implique que le préfixe ne peut être positionné que si les rubriques parentes
* ont déjà une catégorie.
*
@ -98,8 +99,9 @@ function autoriser_rubrique_modifierextra_prefixe($faire, $type, $id, $qui, $opt
$profondeur = rubrique_lire_profondeur($id_rubrique);
if (($profondeur !== null)
and ($profondeur == 2)) {
// On vérifie que l'on est bien dans une rubrique-plugin ce qui implique que le secteur ou la rubrique
// parente possède une catégorie non vide.
// On vérifie que l'on est bien dans une rubrique-categorie ce qui implique la rubrique
// parente possède une catégorie non vide (la rubrique parent n'est jamais un secteur du fait
// de la profondeur).
if ($id_parent = rubrique_lire_parent($id_rubrique)
and rubrique_lire_categorie($id_parent)) {
$autoriser =true;

2
contrib_options.php

@ -52,3 +52,5 @@ function generer_titre_rubrique($id_rubrique, $contenu_objet) {
return $titre;
}
include_spip('inc/contrib_rubrique');

4
formulaires/configurer_contrib.html

@ -1,7 +1,5 @@
<div class="formulaire_spip formulaire_configurer formulaire_#FORM">
<h3 class="titrem"><:contrib:configurer_form_titre:></h3>
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
@ -14,7 +12,7 @@
[(#SAISIE{selection_multiple, secteurs,
explication=<:contrib:configuration_secteur_galaxie_explication:>,
label=<:contrib:configuration_secteur_galaxie_label:>,
data=#ENV{_secteurs},
data=#ENV{_secteur_possibles},
})]
</div>

15
formulaires/configurer_contrib.php

@ -8,14 +8,13 @@
if (!defined("_ECRIRE_INC_VERSION")) return;
/**
* Chargement des données : le formulaire propose la liste des langues possibles.
* L'utilisateur doit cocher les langues qu'il souhaite utiliser parmi les langues possibles.
* Chargement des données : le formulaire propose la liste des secteurs disponibles (hors apropos, carnet et plugin).
* L'utilisateur doit choisir le ou les secteurs qui corresponderont à la partie Galaxie du site.
*
* @return array
* Tableau des données à charger par le formulaire (affichage ou données de configuration).
* - `_langues` : (affichage) codes de langue et libellés des langues possibles.
* - `langues_utilisees` : (configuration) la liste des langues utilisées. Par défaut, le plugin
* propose la langue française.
* - `_secteur_possibles` : (affichage) liste des secteurs disponibles (hors apropos, carnet et plugin).
* - `secteurs` : (configuration) liste des secteurs galaxie choisis.
*/
function formulaires_configurer_contrib_charger() {
@ -35,7 +34,11 @@ function formulaires_configurer_contrib_charger() {
sql_in('id_rubrique', $exclusions, 'NOT')
);
$secteurs = sql_allfetsel('id_rubrique, titre', $from, $where);
$valeurs['_secteurs'] = array_column($secteurs, 'titre', 'id_rubrique');
$valeurs['_secteur_possibles'] = array_column($secteurs, 'titre', 'id_rubrique');
// Récupération des secteurs déjà choisis.
include_spip('inc/config');
$valeurs['secteurs'] = lire_config('contrib/secteurs', array());
return $valeurs;
}

27
inc/contrib_rubrique.php

@ -74,6 +74,28 @@ function rubrique_lire_categorie($id_rubrique) {
}
function rubrique_determiner_type($id_rubrique) {
static $types = array();
if (!isset($types[$id_rubrique])) {
if (rubrique_dans_secteur_plugin($id_rubrique)) {
$types[$id_rubrique] = 'plugin';
} elseif (rubrique_dans_secteur_apropos($id_rubrique)) {
$types[$id_rubrique] = 'apropos';
} elseif (rubrique_dans_secteur_carnet($id_rubrique)) {
$types[$id_rubrique] = 'carnet';
} elseif (rubrique_dans_secteur_galaxie($id_rubrique)) {
$types[$id_rubrique] = 'galaxie';
} else {
$types[$id_rubrique] = '';
}
}
return $types[$id_rubrique];
}
/**
* Vérifie que la rubrique concernée fait bien partie du secteur-apropos.
* Le secteur-apropos est déterminé par la configuration du secteur exclus dans
@ -169,10 +191,7 @@ function rubrique_dans_secteur_plugin($id_rubrique) {
if (!isset($est_plugin[$id_rubrique])) {
$est_plugin[$id_rubrique] = false;
$select = array('categorie');
$where = array('id_rubrique=' . intval($id_rubrique));
$categorie = sql_getfetsel($select, 'spip_rubriques', $where);
if ($categorie) {
if (rubrique_lire_categorie(rubrique_lire_secteur($id_rubrique))) {
$est_plugin[$id_rubrique] = true;
}
}

3
lang/contrib_fr.php

@ -9,8 +9,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
// C
'categorie_vide' => '--',
'configuration_page_titre' => 'Configuration de SPIP-Contrib',
'configuration_form_titre' => 'Configuration',
'configuration_page_titre' => 'Configuration du plugin Contrib',
'configuration_secteur_galaxie_label' => 'Secteurs disponibles',
'configuration_secteur_galaxie_explication' => 'Choisir parmi les secteurs disponibles (hors secteur-carnet, secteur-apropos et secteurs-plugin) le ou les secteurs qui composeront la partie Galaxie du site.',

61
prive/objets/infos/rubrique.html

@ -0,0 +1,61 @@
<BOUCLE_rub(RUBRIQUES){id_rubrique=#ENV{id}}{statut?}{!lang_select}>
<div class='infos'>
<div class='numero'><:titre_numero_rubrique:><p>#ID_RUBRIQUE</p></div>
[(#REM)
Identifier le type de la rubrique de la rubrique et en particulier la catégorie ou le préfixe.
]
[(#ID_RUBRIQUE|rubrique_dans_secteur_plugin|oui)
<div class="numero">
[(#PREFIXE|?{<:svp:label_prefixe:>, <:svp:label_categorie:>})&nbsp;:]
<p class="plugin">[(#PREFIXE|sinon{#CATEGORIE})]</p>
</div>
]
[(#REM)
Lister les elements qui justifient le statut de la rubrique
]
<B_admins>
<div class="numero admin"><:info_administrateurs:>&nbsp;:</div>
<ul class="liste-items auteurs">
<BOUCLE_admins(AUTEURS){id_rubrique}{statut=0minirezo}{tout}{pagination 10}>
<li class="item auteur"><a href='[(#ID_AUTEUR|generer_url_entite{auteur})]'>[(#CHEMIN_IMAGE{auteur-0minirezo-16.png}|balise_img)] #NOM</a></li>
</BOUCLE_admins>
</ul>
[<p class="pagination">(#PAGINATION{prive})</p>]
</B_admins>
<div class='nb_elements'>
<BOUCLE_arts(ARTICLES){id_rubrique}> </BOUCLE_arts><div>[(#TOTAL_BOUCLE|singulier_ou_pluriel{info_articles_un,info_articles_nb})]</div></B_arts>
<BOUCLE_rubs(RUBRIQUES){id_parent}> </BOUCLE_rubs><div>[(#TOTAL_BOUCLE|singulier_ou_pluriel{info_rubriques_un,info_rubriques_nb})]</div></B_rubs>
<!--nb_elements-->
</div>
[(#AUTORISER{supprimer,rubrique,#ID_RUBRIQUE}|oui)
[(#URL_ACTION_AUTEUR{supprimer_rubrique,#ID_RUBRIQUE,#ID_PARENT|?{#URL_ECRIRE{rubrique,id_rubrique=#ID_PARENT},#URL_ECRIRE{rubriques}}}|icone_horizontale{<:icone_supprimer_rubrique:>,rubrique,del})]
]
[(#REM)
Bouton voir en ligne
]<BOUCLE_publie(RUBRIQUES){id_rubrique}>
[(#VAL{redirect}
|generer_url_action{type=rubrique&id=#ID_RUBRIQUE}
|parametre_url{var_mode,calcul}
|icone_horizontale{<:icone_voir_en_ligne:>,racine})]
</BOUCLE_publie>
[(#AUTORISER{previsualiser,rubrique,#ID_RUBRIQUE})
[(#VAL{redirect}
|generer_url_action{type=rubrique&id=#ID_RUBRIQUE}
|parametre_url{var_mode,preview}
|icone_horizontale{<:previsualiser:>,preview})]
]
<//B_publie>
</div>
</BOUCLE_rub>

2
prive/squelettes/contenu/configurer_contrib.html

@ -1,5 +1,5 @@
[(#AUTORISER{configurer}|sinon_interdire_acces)]
<h1 class="grostitre"><:contrib:configurer_page_titre:></h1>
<h1 class="grostitre"><:contrib:configuration_page_titre:></h1>
<div class="ajax">
#FORMULAIRE_CONFIGURER_CONTRIB
</div>

40
prive/squelettes/contenu/rubrique.html

@ -0,0 +1,40 @@
[(#AUTORISER{voir,rubrique,#ID_RUBRIQUE}|sinon_interdire_acces)]
<BOUCLE_rubrique(RUBRIQUES){id_rubrique}{statut?}{si #ENV{exec}|=={rubrique}}>
[(#LANG|changer_typo)]
[(#BOITE_OUVRIR{[
[(#AUTORISER{modifier,rubrique,#ID_RUBRIQUE})
[(#ID_RUBRIQUE|afficher_qui_edite{rubrique}|non)
[(#URL_ECRIRE{rubrique_edit,id_rubrique=#ID_RUBRIQUE}|icone_verticale{<:icone_modifier_rubrique:>,rubrique,edit,right ajax preload})]
]
[(#ID_RUBRIQUE|afficher_qui_edite{rubrique}|oui)
[(#URL_ECRIRE{rubrique_edit,id_rubrique=#ID_RUBRIQUE}|icone_verticale{#ID_RUBRIQUE|afficher_qui_edite{rubrique},warning-24,'',right edition_deja ajax preload})]
]
]
[(#PREFIXE|?{
[(#SET{icone, plugin-24.png})],
[(#SET{icone, [(#ID_PARENT|?{rubrique, secteur})[_(#ID_RUBRIQUE|rubrique_determiner_type)]-24.png]})]
})]
<h1[ class="(#EDIT{titre})"]>[(#RANG). ](#TITRE|sinon{<:info_sans_titre:>})[(#CHEMIN_IMAGE{#GET{icone}}|balise_img{rubrique,cadre-icone})]</h1>
],simple fiche_objet})]
[(#REM|changer_typo)]
<div id="wysiwyg">
<h2 class="invisible"><:previsualisation:></h2>
<INCLURE{fond=prive/objets/contenu/rubrique,id=#ID_RUBRIQUE,id_rubrique=#ID_RUBRIQUE,ajax=wysiwyg,wysiwyg=1,espace_prive}>
</div>
<!--affiche_milieu-->
#BOITE_FERMER
[(#PIPELINE{affiche_enfants,[(#ARRAY{args,#ARRAY{exec,rubrique,id_rubrique,#ID_RUBRIQUE,objet,rubrique,id_objet,#ID_RUBRIQUE},data,#INCLURE{fond=prive/objets/contenu/rubrique-enfants,id_rubrique,env}})]})]
#PIPELINE{afficher_complement_objet,#ARRAY{args,#ARRAY{type,rubrique,id,#ID_RUBRIQUE},data,'<div class="nettoyeur"></div>'}}
[(#CONST{_AJAX}|oui)
<script type="text/javascript">/*<!\[CDATA\[*/reloadExecPage('#ENV{exec}','#navigation,#chemin,#extra');/*\]\]>*/</script>
]
</BOUCLE_rubrique>
[(#ENV**{exec}|=={rubrique_edit}|?{#INCLURE{fond=prive/squelettes/contenu/rubrique_edit,redirect='',env,retourajax=oui},#REM|sinon_interdire_acces{'',<:info_aucun_rubrique:>}})]
<//B_rubrique>

1
prive/squelettes/contenu/rubrique_edit.html

@ -0,0 +1 @@
<INCLURE{fond=prive/echafaudage/contenu/objet_edit,objet=rubrique,id_objet=#ID_RUBRIQUE,env}>

6
prive/squelettes/contenu/rubriques.html

@ -0,0 +1,6 @@
[(#AUTORISER{voir,_rubriques}|sinon_interdire_acces)]
<h1 class="grostitre"><:info_rubriques:></h1>
<!--affiche_milieu-->
[(#PIPELINE{affiche_enfants,[(#ARRAY{args,#ARRAY{exec,rubriques},data,#INCLURE{fond=prive/objets/contenu/rubrique-enfants,id_rubrique=0,env}})]})]
#PIPELINE{afficher_complement_objet,#ARRAY{args,#ARRAY{type,rubrique,id,0},data,'<div class="nettoyeur"></div>'}}

29
prive/style_prive_plugin_contrib.html

@ -0,0 +1,29 @@
[(#REM)
Ce squelette definit les styles de l'espace prive
Note: l'entete "Vary:" sert a repousser l'entete par
defaut "Vary: Cookie,Accept-Encoding", qui est (un peu)
genant en cas de "rotation du cookie de session" apres
un changement d'IP (effet de clignotement).
ATTENTION: il faut absolument le charset sinon Firefox croit que
c'est du text/html !
<style>
]
#CACHE{3600*100,cache-client}
#HTTP_HEADER{Content-Type: text/css; charset=iso-8859-15}
#HTTP_HEADER{Vary: Accept-Encoding}
#SET{claire,##ENV{couleur_claire,edf3fe}}
#SET{foncee,##ENV{couleur_foncee,3874b0}}
#SET{left,#ENV{ltr}|choixsiegal{left,left,right}}
#SET{right,#ENV{ltr}|choixsiegal{left,right,left}}
/* Boite d'infos d'une rubrique */
#navigation .infos .numero p.plugin { font-size: 1.4em; text-transform: lowercase; }
#navigation .infos .numero.admin { border-top: 0;}
#navigation .infos .liste-items.auteurs { border-bottom: 0;}
#navigation .infos .liste-items.auteurs .item.auteur { border-top: 0;}
[(#REM) </style>]

BIN
prive/themes/spip/images/rubrique-24.pxm

Binary file not shown.

BIN
prive/themes/spip/images/rubrique_apropos-24.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

BIN
prive/themes/spip/images/rubrique_carnet-24.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

BIN
prive/themes/spip/images/rubrique_galaxie-24.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

BIN
prive/themes/spip/images/rubrique_plugin-24.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

BIN
prive/themes/spip/images/secteur-24.pxm

Binary file not shown.

BIN
prive/themes/spip/images/secteur_apropos-24.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

BIN
prive/themes/spip/images/secteur_carnet-24.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

BIN
prive/themes/spip/images/secteur_galaxie-24.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

BIN
prive/themes/spip/images/secteur_plugin-24.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Loading…
Cancel
Save