Simplification des groupes : il n'y a plus de rubriques principales pays => les groupes sont des articles directement dans la rubrique groupes

This commit is contained in:
Pierre 2020-10-19 03:16:45 +02:00
parent 81677da3de
commit 87cc507d67
9 changed files with 46 additions and 192 deletions

View file

@ -1,9 +1,4 @@
[(#REM) On affiche la France par défaut] [(#REM) On affiche tous les groupes]
<BOUCLE_france(RUBRIQUES){id_parent = #CONFIG{balint/id_rub_groupes}}{titre=france}{tout}{0,1}{si #ENV{id_rubrique}|non}>
[(#ID_RUBRIQUE|setenv{id_rubrique})]
</BOUCLE_france>
[(#REM) On affiche tous les groupes appartenant à la même Ville]
<section id="groupes" class="section-top section-bottom container"> <section id="groupes" class="section-top section-bottom container">

View file

@ -19,35 +19,6 @@
<div class="row"> <div class="row">
<div class="col-lg-9"> <div class="col-lg-9">
<fieldset> <fieldset>
<div class="pays">
<label for="id_rubrique">Pays</label>
<select id="id_rubrique" name="id_rubrique" class="chosen">
<option value="">&nbsp;</option>
<BOUCLE_pays(RUBRIQUES){id_parent = #CONFIG{balint/id_rub_groupes}}{tout}{par titre}>
<option value="#ID_RUBRIQUE" [(#ID_RUBRIQUE|=={#RUBRIQUE_SELECTED}|oui) selected="selected"]>#TITRE</option>
</BOUCLE_pays>
</select>
</div>
[(#REM) valeurs : oui=on, non=""]
<div class="editer_ponctuel">
<label>Groupe ponctuel (sans ville régulière)</label>
<div class="ligne">
<div class="choix">
<input type='radio' class="radio" name='ponctuel' value='' id='ponctuel_non'[ (#ENV{ponctuel}|!={on}|?{'checked="checked"'})] />
<label for='ponctuel_non'>Non</label>
</div>
<div class="choix">
<input type='radio' class="radio" name='ponctuel' value='on' id='ponctuel_oui'[ (#ENV{ponctuel}|=={on}|?{'checked="checked"'})] />
<label for='ponctuel_oui'>Oui</label>
</div>
</div>
</div>
<div class="ville regulier [(#ENV{ponctuel}|=={on}) hide]">
<label for="surtitre">Ville</label>
<input class="text" type="text" name="surtitre" value="#ENV{surtitre}">
</div>
<div class="titre"> <div class="titre">
<label for="titre">Nom du groupe</label> <label for="titre">Nom du groupe</label>
<input class="text" type="text" name="titre" value="#ENV{titre}"> <input class="text" type="text" name="titre" value="#ENV{titre}">

View file

@ -12,20 +12,16 @@ function formulaires_editer_groupe_charger_dist($id_article=0, $redirect=''){
// Pour récupérer les champs renseignés en cas d'erreur // Pour récupérer les champs renseignés en cas d'erreur
$id_rubrique = intval(_request('id_rubrique'));
$titre = _request('titre'); $titre = _request('titre');
$texte = _request('texte'); $texte = _request('texte');
$soustitre = _request('soustitre'); $soustitre = _request('soustitre');
$surtitre = _request('surtitre');
$descriptif = _request('descriptif'); $descriptif = _request('descriptif');
$valeurs = array(); $valeurs = array();
$valeurs['titre'] = $titre; $valeurs['titre'] = $titre;
$valeurs['texte'] = $texte; $valeurs['texte'] = $texte;
$valeurs['soustitre'] = $soustitre; $valeurs['soustitre'] = $soustitre;
$valeurs['rubrique_selected'] = $id_rubrique;
$valeurs['descriptif'] = $descriptif; $valeurs['descriptif'] = $descriptif;
$valeurs['surtitre'] = $surtitre;
$valeurs['statut'] = $statut; $valeurs['statut'] = $statut;
if (intval($id_article)) { if (intval($id_article)) {
@ -43,20 +39,12 @@ function formulaires_editer_groupe_charger_dist($id_article=0, $redirect=''){
$res = sql_allfetsel('id_auteur','spip_auteurs_liens',$where); $res = sql_allfetsel('id_auteur','spip_auteurs_liens',$where);
$valeurs['T_id_auteurs'] = array_column($res,'id_auteur'); $valeurs['T_id_auteurs'] = array_column($res,'id_auteur');
$valeurs['rubrique_selected'] = sql_getfetsel('id_rubrique','spip_articles','id_article='. $id_article);
} }
else { else {
$valeurs['T_id_auteurs'] = array(); $valeurs['T_id_auteurs'] = array();
$valeurs['id_article'] = -1 * intval(session_get('id_auteur')); $valeurs['id_article'] = -1 * intval(session_get('id_auteur'));
} }
// Sans ville (surtitre), le groupe est ponctuel
if(empty($valeurs['surtitre'])){
$valeurs['ponctuel'] = "on";
}
else{
$valeurs['ponctuel'] = "";
}
$valeurs['_bigup_rechercher_fichiers'] = true; $valeurs['_bigup_rechercher_fichiers'] = true;
return $valeurs; return $valeurs;
} }
@ -76,33 +64,15 @@ function formulaires_editer_groupe_verifier_dist($id_article=0, $redirect=''){
} }
} }
if (!lire_config('balint/id_rub_groupes')){
if (_request('ponctuel')!="on"){ $erreurs['message_erreur'] = "Problème de configuration du site : veuillez renseigner la rubrique dédiée aux groupes dans les paramètres du plugin.";
// il faut au minimum titre (nom), surtitre (ville) et id_rubrique (pays) pour créer un article pour les groupes réguliers
if (_request('titre') == '' OR _request('surtitre') == '' OR _request('id_rubrique') == ''){
$erreurs['message_erreur'] = "Il faut obligatoirement un pays, une ville et un nom pour créer un groupe régulier.";
return $erreurs;
}
}
else{
// il faut au minimum titre (nom) et id_rubrique (pays) pour créer un article pour les groupes
if (_request('titre') == '' OR _request('id_rubrique') == ''){
$erreurs['message_erreur'] = "Il faut obligatoirement un pays et un nom pour créer un groupe.";
return $erreurs;
}
}
// la rubrique choisie doit être une sous-rubrique du secteur défini en config
$id_rubrique = intval(_request('id_rubrique'));
$id_secteur = sql_getfetsel('id_secteur', 'spip_rubriques', 'id_rubrique='.$id_rubrique);
if ($id_secteur != lire_config('balint/id_rub_groupes')) {
$erreurs['message_erreur'] = "La rubrique choisie comme pays ne correspond au secteur défini pour les groupes dans les options de configuration.";
return $erreurs; return $erreurs;
} }
// On évite les erreurs dues à des caractères spéciaux dans le surtitre (ville)
if (preg_match('/[?!:]/', _request('surtitre'))){ // il faut au minimum titre (nom) pour créer un article
$erreurs['message_erreur'] = "La ville ne doit pas comprendre de signes de ponctuation comme ? ! ou :"; if (_request('titre') == ''){
$erreurs['message_erreur'] = "Il faut obligatoirement un nom pour créer un groupe régulier.";
return $erreurs; return $erreurs;
} }
@ -117,7 +87,7 @@ function formulaires_editer_groupe_traiter_dist($id_article=0, $redirect=''){
$new = $id_article; $new = $id_article;
if (!intval($id_article)) { if (!intval($id_article)) {
$id_rubrique = intval(_request('id_rubrique')); $id_rubrique = lire_config('balint/id_rub_groupes');
include_spip('action/editer_article'); include_spip('action/editer_article');
$set = array( $set = array(
'statut' => 'publie' 'statut' => 'publie'
@ -133,18 +103,12 @@ function formulaires_editer_groupe_traiter_dist($id_article=0, $redirect=''){
); );
sql_updateq('spip_documents_liens',array('id_objet' => intval($id_article)), $where); sql_updateq('spip_documents_liens',array('id_objet' => intval($id_article)), $where);
} }
$surtitre=_request('surtitre');
$titre=_request('titre'); $titre=_request('titre');
$soustitre=_request('soustitre'); $soustitre=_request('soustitre');
$texte=_request('texte'); $texte=_request('texte');
$descriptif=_request('descriptif'); $descriptif=_request('descriptif');
if (_request('ponctuel')=="on"){
$surtitre="";
$soustitre="";
$descriptif="";
}
// maj de l'article // maj de l'article
$set = array( $set = array(
'titre' => $titre, 'titre' => $titre,
@ -153,21 +117,13 @@ function formulaires_editer_groupe_traiter_dist($id_article=0, $redirect=''){
// On affiche le plus récent en premier => on garde la date de mise à jour // On affiche le plus récent en premier => on garde la date de mise à jour
'date' => date("Y-m-d H:i:s"), 'date' => date("Y-m-d H:i:s"),
'descriptif' => $descriptif, 'descriptif' => $descriptif,
'surtitre' => $surtitre // 'surtitre' => $surtitre
// 'champ_1' => _request('champ_1'), // 'champ_1' => _request('champ_1'),
// 'champ_2' => _request('champ_2'), // 'champ_2' => _request('champ_2'),
// 'chapo' => _request('chapo'), // 'chapo' => _request('chapo'),
); );
sql_updateq('spip_articles',$set,'id_article='.intval($id_article)); sql_updateq('spip_articles',$set,'id_article='.intval($id_article));
// maj rubrique si besoin
$id_rubrique = intval(_request('id_rubrique'));
$id_rub = sql_getfetsel('id_rubrique', 'spip_articles', 'id_article='.$id_article);
if ($id_rub != $id_rubrique) {
include_spip('action/editer_article');
article_instituer($id_article, array('id_parent' => $id_rubrique));
}
// maj association article -> auteurs // maj association article -> auteurs
include_spip('action/editer_liens'); include_spip('action/editer_liens');
$where = array( $where = array(
@ -278,13 +234,9 @@ function formulaires_editer_groupe_traiter_dist($id_article=0, $redirect=''){
$retour = array(); $retour = array();
$retour['message_ok'] = "Le groupe est bien enregistré."; $retour['message_ok'] = "Le groupe est bien enregistré.";
// Si c'est un groupe ponctuel, on redirige vers le pays, sinon vers la ville // on redirige vers la ville
if (_request('ponctuel')=="on"){
$retour['redirect'] = "spip.php?page=groupes&id_rubrique=$id_rubrique";
}
else{
$retour['redirect'] = "spip.php?page=groupes&id_article=$id_article"; $retour['redirect'] = "spip.php?page=groupes&id_article=$id_article";
}
$bigform = charger_fonction('bigform_traiter','inc'); $bigform = charger_fonction('bigform_traiter','inc');
$bigform($id_article, 'article'); $bigform($id_article, 'article');

View file

@ -2,24 +2,18 @@
<BOUCLE_art(ARTICLES){id_article = #ENV{id_article}}> <BOUCLE_art(ARTICLES){id_article = #ENV{id_article}}>
<div class="bloc-article bloc-ville"> <div class="bloc-article bloc-ville">
<div class="bloc-contenu"> <div class="bloc-contenu">
<a href="[(#URL_PAGE{groupes}|parametre_url{id_article,#ID_ARTICLE}|parametre_url{id_rubrique,#ENV{id_rubrique}})]" class="ajax nocache"> <a href="[(#URL_PAGE{groupes}|parametre_url{id_article,#ID_ARTICLE})]" class="ajax nocache">
<INCLURE{fond=inclure/photo_article,env,id_article=#ENV{id_article},ajax=recharger_photo,groupe=oui}> <INCLURE{fond=inclure/photo_article,env,id_article=#ENV{id_article},ajax=recharger_photo,groupe=oui}>
</a> </a>
<div class="bloc-textes"> <div class="bloc-textes">
<a href="[(#URL_PAGE{groupes}|parametre_url{id_article,#ID_ARTICLE}|parametre_url{id_rubrique,#ENV{id_rubrique}})]" class="ajax nocache"> <a href="[(#URL_PAGE{groupes}|parametre_url{id_article,#ID_ARTICLE})]" class="ajax nocache">
<h4>#SURTITRE <i class="fas fa-globe"></i></h4> <h4>#TITRE <i class="fas fa-globe"></i></h4>
#SET{nb_articles,0} #SET{nb_articles,0}
<BOUCLE_nb_articles(ARTICLES){id_groupe=#ID_ARTICLE}{id_rubrique=#CONFIG{balint/id_rub_articles}}>
<B_nb_gpes>
<div>[(#TOTAL_BOUCLE|singulier_ou_pluriel{balint:1_groupe, balint:n_groupes})]</div>
<BOUCLE_nb_gpes(ARTICLES){id_rubrique=#ENV{id_rubrique}}{surtitre}>
<BOUCLE_nb_articles(ARTICLES){id_rubrique=#CONFIG{balint/id_rub_articles}}{id_groupe=#ID_ARTICLE}>
[(#SET{nb_articles,#GET{nb_articles}|plus{1}})] [(#SET{nb_articles,#GET{nb_articles}|plus{1}})]
</BOUCLE_nb_articles> </BOUCLE_nb_articles>
</BOUCLE_nb_gpes> <div>[(#GET{nb_articles}|singulier_ou_pluriel{balint:1_article, balint:n_articles})]</div>
<div>[(#GET{nb_articles}|singulier_ou_pluriel{blaint:1_article, balint:n_articles})]</div>
</B_nb_gpes>
</a> </a>
</div> </div>
</div> </div>

View file

@ -1,6 +1,6 @@
<div class="row liste-articles-encadres"> <div class="row liste-articles-encadres">
[(#REM) On affiche ensuite les groupes réguliers, par ville] [(#REM) On affiche ensuite les groupes]
<BOUCLE_villes(ARTICLES){id_rubrique=#ENV{id_rubrique}}{surtitre!=""}{fusion surtitre}> <BOUCLE_villes(ARTICLES){id_rubrique=#CONFIG{balint/id_rub_groupes}}>
<div class="col-sm-6 col-lg-3 mt-4 mt-lg-0"> <div class="col-sm-6 col-lg-3 mt-4 mt-lg-0">
<INCLURE{fond=inclure/bloc_groupe,env,id_article=#ID_ARTICLE}> <INCLURE{fond=inclure/bloc_groupe,env,id_article=#ID_ARTICLE}>
@ -9,35 +9,3 @@
</BOUCLE_villes> </BOUCLE_villes>
</div> </div>
[(#REM) on affiche un groupe ponctuel pour les pays n'ayant pas de groupe régulier]
<BOUCLE_ponctuel(ARTICLES){id_rubrique=#ENV{id_rubrique}}{surtitre=""}{0,1}>
<div class="bloc-groupe col mt-4">
[<h3 class="h4 #EDIT{titre}">(#TITRE|sinon{"Groupes ponctuels"})</h3>]
[(#AUTORISER{modifier, article, #ID_ARTICLE})
<a class="btn" href="#URL_PAGE{editer_groupe,id_article=#ID_ARTICLE }"><i class="fas fa-edit"></i> Mettre à jour le groupe</a>
]
<div class="row">
<div class="col-md-8">
<div class="texte #EDIT{texte}">#TEXTE</div>
</div>
<div class="col-md-4">
<strong>Responsables</strong>
<BOUCLE_auteurs(AUTEURS){id_article=#ID_ARTICLE}>
<div>#NOM
[(#EMAIL|ou{#TELEPHONE}|oui)
<a href="[(#URL_PAGE{contacter_auteur}|parametre_url{id_auteur,#ID_AUTEUR})]" class="mediabox">&nbsp; (contact)</a>
]
</div>
</BOUCLE_auteurs>
</div>
</div>
</div>
</BOUCLE_ponctuel>
<BOUCLE_sinon(ARTICLES){id_rubrique=#ENV{id_rubrique}}>
[(#REM) Boucle vide]
</BOUCLE_sinon>
<div class="col">Il n'y a pas encore de groupe dans ce pays.</div>
<//B_sinon>

View file

@ -1,32 +1,33 @@
[(#REM) On affiche tous les groupes appartenant à la même Ville] [(#REM) On affiche tous les groupes appartenant à la même Ville]
#SET{ville,#INFO_SURTITRE{article,#ENV{id_article}}} <a href="[(#URL_PAGE{groupes})]" class="ajax"><i class="fas fa-arrow-circle-left"></i> Autres groupes</a>
[(#REM) On récupère les id de tous les groupes de la ville pour les actualités et les images]
[(#SET{groupes,#ARRAY})]
<BOUCLE_groupes(ARTICLES){surtitre = #GET{ville}}{id_secteur=#CONFIG{balint/id_rub_groupes}}>
[(#SET{groupes,#GET{groupes}|push{#ID_ARTICLE}})]
</BOUCLE_groupes>
<a href="[(#URL_PAGE{groupes,id_rubrique=#ENV{id_rubrique}})]" class="ajax"><i class="fas fa-arrow-circle-left"></i> Retour</a>
<div class="banniere-ville mt-4 mb-4"> <div class="banniere-ville mt-4 mb-4">
<BOUCLE_banniere(DOCUMENTS){id_article IN #GET{groupes}}{extension==jpg|png|gif}{!par date}{0,1}> <BOUCLE_banniere(DOCUMENTS){id_article = #ENV{id_article}}{extension==jpg|png|gif}{!par date}{0,1}>
[(#FICHIER|image_recadre{1200:300,-,focus}|image_reduire{1200,300})] [(#FICHIER|image_recadre{1200:300,-,focus}|image_reduire{1200,300})]
</BOUCLE_banniere> </BOUCLE_banniere>
[(#CHEMIN{img/ville.png}|image_recadre{1200:300,-,focus}|image_reduire{1200,300})] [(#CHEMIN{img/ville.png}|image_recadre{1200:300,-,focus}|image_reduire{1200,300})]
<//B_banniere> <//B_banniere>
<div class="ville-titre"> <div class="ville-titre">
[(#GET{groupes}|count|>{1}|oui) <h2>#INFO_TITRE{article,#ENV{id_article}}</h2>
<h2>Groupes de #GET{ville}</h2>
]
[(#GET{groupes}|count|<={1}|oui)
<h2>Groupe de #GET{ville}</h2>
]
</div> </div>
</div> </div>
<BOUCLE_groupe(ARTICLES){surtitre = #GET{ville}}{id_secteur=#CONFIG{balint/id_rub_groupes}}{par rang}> <B_articles>
<h2 class="h4 mb-lg-0 mt-4 articles-groupe">Dernières nouvelles</h2>
#ANCRE_PAGINATION
[<div class="pagination pagination_top">(#PAGINATION{page_precedent_suivant})</div>]
<div class="row liste-articles">
<BOUCLE_articles(ARTICLES){id_rubrique=#CONFIG{balint/id_rub_articles}}{id_groupe = #ENV{id_article}}{! par date}{pagination 6}>
<div class="col-md-6 col-lg-4 mt-4 mt-lg-0">
<INCLURE{fond=inclure/bloc_article, env, id_article}/>
</div>
</BOUCLE_articles>
</div>
[<div class="pagination">(#PAGINATION{page_precedent_suivant})</div>]
</B_articles>
<BOUCLE_groupe(ARTICLES){id_article=#ENV{id_article}}{par rang}>
<div class="bloc-groupe mt-4 mt-lg-0"> <div class="bloc-groupe mt-4 mt-lg-0">
[<h3 class="h4">(#TITRE)</h3>] [<h3 class="h4">(#TITRE)</h3>]
@ -54,17 +55,3 @@
</div> </div>
</BOUCLE_groupe> </BOUCLE_groupe>
<B_articles>
<h2 class="h4 mb-lg-0 mt-4 articles-groupe">Articles de #GET{ville}</h2>
#ANCRE_PAGINATION
[<div class="pagination pagination_top">(#PAGINATION{page_precedent_suivant})</div>]
<div class="row liste-articles">
<BOUCLE_articles(ARTICLES){id_rubrique=#CONFIG{balint/id_rub_articles}}{id_groupe IN #GET{groupes}}{! par date}{pagination 6}>
<div class="col-md-6 col-lg-4 mt-4 mt-lg-0">
<INCLURE{fond=inclure/bloc_article, env, id_article}/>
</div>
</BOUCLE_articles>
</div>
[<div class="pagination">(#PAGINATION{page_precedent_suivant})</div>]
</B_articles>

View file

@ -1,8 +1,6 @@
<div class="page-groupes row"> <div class="page-groupes row">
<div class="col w-100"> <div class="col w-100">
<INCLURE{fond=inclure/menu-groupes,env}>
[(#ENV{id_article}|non) [(#ENV{id_article}|non)
<INCLURE{fond=inclure/choix_ville,env} /> <INCLURE{fond=inclure/choix_ville,env} />
] ]

View file

@ -14,21 +14,10 @@
<aside class="col col-lg-3 d-none d-lg-block dernieres-nouvelles"> <aside class="col col-lg-3 d-none d-lg-block dernieres-nouvelles">
<h3 class="h4 mt-4 mb-3">Derniers articles</br> <h3 class="h4 mt-4 mb-3">Derniers articles</br></h3>
<BOUCLE_pays(RUBRIQUES){id_rubrique=#ENV{id_rubrique}}{tout}>
<span class="h4 font-italic">#PREPOSITION #TITRE</span>
</BOUCLE_pays>
</h3>
[(#REM) On récupère les id de tous les groupes du pays]
[(#SET{groupes_pays,#ARRAY})]
<BOUCLE_villes2(ARTICLES){id_rubrique=#ENV{id_rubrique}}{tout}>
[(#SET{groupes_pays,#GET{groupes_pays}|push{#ID_ARTICLE}})]
</BOUCLE_villes2>
<div class="liste-articles"> <div class="liste-articles">
<BOUCLE_a_la_une(ARTICLES){id_rubrique=#CONFIG{balint/id_rub_articles}}{id_groupe IN #GET{groupes_pays}}{0,6}{! par date}> <BOUCLE_a_la_une(ARTICLES){id_rubrique=#CONFIG{balint/id_rub_articles}}{0,6}{! par date}>
<div class="mt-4 mt-lg-0 mb-3"> <div class="mt-4 mt-lg-0 mb-3">
<div class="infos-article"> <div class="infos-article">
[(#DATE|affdate) :] [(#DATE|affdate) :]
@ -39,7 +28,7 @@
[<div class="resume-article">(#DESCRIPTIF)</div>] [<div class="resume-article">(#DESCRIPTIF)</div>]
</div> </div>
</BOUCLE_a_la_une> </BOUCLE_a_la_une>
<div class="col">Il n'y a pas encore d'article dans ce pays.</div> <div class="col">Il n'y a pas encore d'article.</div>
<//B_a_la_une> <//B_a_la_une>
</div> </div>
</aside> </aside>

View file

@ -5,9 +5,9 @@
</button> </button>
<div class="collapse navbar-collapse" id="liste-groupes"> <div class="collapse navbar-collapse" id="liste-groupes">
<ul class="navbar-nav"> <ul class="navbar-nav">
<BOUCLE_menu_groupes(RUBRIQUES){id_parent=#CONFIG{balint/id_rub_groupes}}{par num titre}{tout}> <BOUCLE_menu_groupes(ARTICLES){id_rubrique=#CONFIG{balint/id_rub_groupes}}{par titre}>
<li class="nav-item [(#ENV{id_rubrique}|=={#ID_RUBRIQUE}|oui) active]"> <li class="nav-item [(#ENV{id_rubrique}|=={#ID_RUBRIQUE}|oui) active]">
<a class="nav-link ajax" href="[(#URL_PAGE{groupes}|parametre_url{id_rubrique,#ID_RUBRIQUE})]">#TITRE</a> <a class="nav-link ajax" href="[(#URL_PAGE{groupes}|parametre_url{id_article,#ID_ARTICLE})]">#TITRE</a>
</li> </li>
</BOUCLE_menu_groupes> </BOUCLE_menu_groupes>
</ul> </ul>