Compare commits

..

19 commits
master ... AIPB

Author SHA1 Message Date
cy_altern
53849dd670 Feat : ajustements menu Espace membres + ordre d'affichage 2025-05-13 16:34:56 +02:00
cy_altern
48f883148e Chore : compat 4.* 2024-09-22 01:02:19 +02:00
cy_altern
d159c678cf Feat : réactivation des boutons Admin SPIP. Ajout du tri par date inverse si pas de tang pour Actualités, Agenda et Séminaires 2024-03-26 16:51:57 +01:00
cy_altern
cd702576ed Fix : dans la page des brouillons les liens sur les blocs articles doivent ouvrir l'article en édition 2024-03-24 23:36:20 +01:00
cy_altern
f930dad01d Fix : passage des fichiers de polices Cabin en majuscules 2024-03-24 19:09:54 +01:00
cy_altern
6515fec0d1 Fix : passage des fichiers de polices Cabin en majuscules 2024-03-24 19:08:24 +01:00
cy_altern
c45827e51a Fix : accorder l'unité de poids de Bigform (Ko) avec celle configurée dans Bigup (Mo) 2024-03-24 18:58:03 +01:00
cy_altern
826c97f418 Fix : remplacement des limites de taille de fichiers en dur dans le traiter du bigform de la page d'édition des articles et remplacement par la récup des options configurées dans bigup. Actualisation du fichier PHP du CVT des inscriptions pour compatibilité SPIP 4.2 (TODO : passer sur le plugin mot_de_pass_des_linscription + un pipline Gamumail pour l'envoi de la notif) 2024-03-24 18:36:05 +01:00
cy_altern
3e7879fc8c Fix : correction de tous les appels à count() sur une variable non définie pour compatibilité PHP 8. Passage en SPIP 4.2. TODO : passer les scss de Bootstrap 4.0 (LESS) à SCSSPHP 2024-03-23 11:52:16 +01:00
4431d1da0d correction : les photos ne marchaient plus pour les articles !! 2021-01-01 14:50:17 +01:00
5631406dc7 correction de l'affichage des vignettes, en lien avec commit précédent 2020-12-31 00:22:36 +01:00
edd1a327c5 Chaque groupe a désormais sa propre image. On peut chosir l'image de bannière de la ville parmi les images uploadées dans un groupe. 2020-12-31 00:11:52 +01:00
6259d76399 corrections du parcours de connexion, en lien avec le commit précédent 2020-12-20 16:42:48 +01:00
2c9d15d959 correction du texte en lien avec commit précédent 2020-12-20 15:46:39 +01:00
eb1ce93610 correction CSS, avec le commit précédent 2020-12-20 15:24:19 +01:00
e2a09959ab corrections du parcours d'inscription / login 2020-12-20 15:18:51 +01:00
ac4f408415 on range les rubriques du menu dans l'ordre choisi 2020-12-11 18:56:44 +01:00
360207c285 on retire la ligne de connexion sur le formulaire_forum (car on est forcément connecté si on arrive là, et que cela perturbe les utilisateurs) 2020-12-11 18:56:15 +01:00
4c22337ec4 On va mettre une balise h1 sur la page principale, tant qu'à faire... et enlever le mode debug... 2020-12-11 18:55:20 +01:00
88 changed files with 1272 additions and 1316 deletions

View file

@ -0,0 +1,53 @@
<?php
if (!defined('_ECRIRE_INC_VERSION')) return;
// mettre une photo en banniere (credit = une)
function action_choisir_banniere_dist(){
$securiser_action = charger_fonction('securiser_action', 'inc');
$arg = $securiser_action();
$Targs = explode('-', $arg);
$id_document = intval($Targs[0]);
$id_article = intval($Targs[1]);
if (!$id_document OR !$id_article)
return false;
// il faut être auteur pour mettre à la Une
include_spip('inc/autoriser');
if (! autoriser("creer","article")) {
return false;
}
// On récupère tous les id_article de la même ville
$ville = sql_getfetsel('surtitre','spip_articles','id_article='.$id_article);
$where0 = array(
"surtitre='$ville'",
'id_secteur='. lire_config('balint/id_rub_groupes')
);
$groupes = sql_allfetsel('id_article','spip_articles',$where0);
$Tid_groupes = array_column($groupes,'id_article');
foreach($Tid_groupes as $id_groupe){
// récupérer les docs attachés à l'article
$where = array(
'id_objet='.$id_groupe,
'objet="article"',
'extension IN ("jpg","png","gif")',
);
$res = sql_allfetsel('spip_documents_liens.id_document', array('spip_documents_liens','spip_documents'), $where);
$Tid_docs = array_column($res,'id_document');
// virer la bannière actuelle
sql_updateq('spip_documents', array('credits' => ''),'id_document IN ('.join(',',$Tid_docs).')');
}
// mettre en bannière la photo choisie
sql_updateq('spip_documents', array('credits' => 'une'),'id_document = '.$id_document);
// Cache
include_spip('inc/invalideur');
suivre_invalideur("id='id_article/$id_article'");
}

View file

@ -28,12 +28,12 @@ function balint_upgrade($nom_meta_base_version, $version_cible) {
$maj = array(); $maj = array();
$maj['create'] = array( $maj['create'] = array(
array('maj_tables', array('spip_articles','spip_auteurs_liens')), array('maj_tables', array('spip_articles')),
array('config_prive') array('config_prive')
); );
$maj['1.0.13'] = array( $maj['1.0.7'] = array(
array('maj_tables', array('spip_articles','spip_auteurs_liens')), array('maj_tables', array('spip_articles')),
array('config_prive') array('config_prive')
); );

View file

@ -118,35 +118,15 @@ function autoriser_article_lire($faire, $type, $id, $qui, $opt) {
function autoriser_article_modifier($faire, $type, $id, $qui, $opt) { function autoriser_article_modifier($faire, $type, $id, $qui, $opt) {
// Si l'article est un groupe, il faut être auteur et avoir le rôle "admin" if (in_array($qui['id_auteur'],auteurs_objet('article',$id))){
if ($opt AND in_array('groupe',$opt)){
$where = array(
'id_objet='.intval($id),
'objet="article"',
'id_auteur =' . $qui['id_auteur']
);
$role = sql_getfetsel('role','spip_auteurs_liens',$where);
if (in_array($qui['id_auteur'],auteurs_objet('article',$id)) AND $role == "admin"){
return true; return true;
} }
else { else {
return in_array($qui['statut'], array('0minirezo')); return in_array($qui['statut'], array('0minirezo'));
} }
}
// Sinon, seuls les auteurs et les admins peuvent le modifier
else{
if(in_array($qui['id_auteur'],auteurs_objet('article',$id))){
return true;
}
else{
return in_array($qui['statut'], array('0minirezo'));
}
}
} }
function autoriser_article_rediger($faire, $type, $id, $qui, $opt) { function autoriser_article_rediger($faire, $type, $id, $qui, $opt) {
/*
// Si le membre est rédacteur, il doit être animateur d'au moins un groupe // Si le membre est rédacteur, il doit être animateur d'au moins un groupe
if ($qui['statut']=="1comite"){ if ($qui['statut']=="1comite"){
$id_rub = lire_config('balint/id_rub_groupes'); $id_rub = lire_config('balint/id_rub_groupes');
@ -160,8 +140,7 @@ function autoriser_article_rediger($faire, $type, $id, $qui, $opt) {
// Sinon il faut être admin // Sinon il faut être admin
else{ else{
return in_array($qui['statut'], array('0minirezo')); return in_array($qui['statut'], array('0minirezo'));
}*/ }
return in_array($qui['statut'], array('0minirezo','1comite'));
} }
function autoriser_sujet_creer($faire, $type, $id, $qui, $opt) { function autoriser_sujet_creer($faire, $type, $id, $qui, $opt) {
@ -169,28 +148,36 @@ function autoriser_sujet_creer($faire, $type, $id, $qui, $opt) {
} }
function autoriser_sujet_editer($faire, $type, $id, $qui, $opt) { function autoriser_sujet_editer($faire, $type, $id, $qui, $opt) {
// Seul les admins et l'auteur peuvent le supprimer // Seul les admins et l'auteur peuvent le supprimer
if(in_array($qui['id_auteur'],auteurs_objet('article',$id))){ if (in_array($qui['id_auteur'],auteurs_objet('article',$id))){
return true; return true;
} }
else{ else {
return in_array($qui['statut'],array('0minirezo')); return in_array($qui['statut'],array('0minirezo'));
} }
} }
function autoriser_forum_voir($faire, $type, $id, $qui, $opt) { function autoriser_forum_voir($faire, $type, $id, $qui, $opt) {
$id_auteur = $qui['id_auteur'];
// Si le forum est lié à un groupe, il faut être membre du groupe (auteur de l'article) // Il faut être au moins membre
if ($opt AND in_array('groupe',$opt)){ if ($qui['statut'] == '1comite'){
if (in_array($qui['id_auteur'],auteurs_objet('article',$id))){ // si le forum est privé, il faut être membre du bureau
if ($id == lire_config('balint/id_rub_forum_prive')){
if (sql_getfetsel('bureau','spip_auteurs',"id_auteur=$id_auteur")=='on'){
return true; return true;
} }
else{ else{
return in_array($qui['statut'], array('0minirezo')); return false;
} }
}
// Sinon, il suffit d'être rédacteur
else{
return in_array($qui['statut'], array('0minirezo','1comite'));
} }
else{
return true;
}
}
// Les admins ont accès à tout
if ($qui['statut']=='0minirezo'){
return true;
}
// si aucun des cas précédents (pas loggué par ex)
return false;
} }

View file

@ -14,7 +14,7 @@ if (!defined('_ECRIRE_INC_VERSION')) {
} }
function debug_spip(){ /*function debug_spip(){
define('_DEBUG_SLOW_QUERIES', true); define('_DEBUG_SLOW_QUERIES', true);
define('_BOUCLE_PROFILER', 5000); define('_BOUCLE_PROFILER', 5000);
define('_LOG_FILTRE_GRAVITE', 8); define('_LOG_FILTRE_GRAVITE', 8);
@ -32,7 +32,7 @@ function debug_spip(){
define('_NO_CACHE', -1); define('_NO_CACHE', -1);
define('_INTERDIRE_COMPACTE_HEAD_ECRIRE', true); define('_INTERDIRE_COMPACTE_HEAD_ECRIRE', true);
} }*/
//debug_spip(); //debug_spip();
if (!isset($GLOBALS['z_blocs'])) if (!isset($GLOBALS['z_blocs']))
@ -48,11 +48,7 @@ if (!isset($GLOBALS['z_blocs']))
// On retire les boutons "Espace privé" et "Recalculer" pour les admins // On retire les boutons "Espace privé" et "Recalculer" pour les admins
$GLOBALS['flag_preserver'] = true; //$GLOBALS['flag_preserver'] = true;
// proteger le #FORMULAIRE_NOUS_CONTACTER // proteger le #FORMULAIRE_NOUS_CONTACTER
$GLOBALS['formulaires_no_spam'][] = 'nous_contacter'; $GLOBALS['formulaires_no_spam'][] = 'nous_contacter';
// mots de passe
define('_PASS_LONGUEUR_MINI', '8'); // longueur minimale - défaut: 6

View file

@ -5,8 +5,6 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
function balint_declarer_tables_principales($tables_principales){ function balint_declarer_tables_principales($tables_principales){
$tables_principales['spip_auteurs_liens']['field']['role'] = "text DEFAULT '' NOT NULL";
/* /*
$tables_principales['spip_articles']['field']['surface'] = "text DEFAULT '' NOT NULL"; //duree $tables_principales['spip_articles']['field']['surface'] = "text DEFAULT '' NOT NULL"; //duree
$tables_principales['spip_articles']['field']['surface_parking'] = "text DEFAULT '' NOT NULL"; //date_pv $tables_principales['spip_articles']['field']['surface_parking'] = "text DEFAULT '' NOT NULL"; //date_pv
@ -80,21 +78,6 @@ function balint_declarer_champs_extras($champs = array()) {
'modifier' => array('auteur' => '0minirezo')),//Seuls les admins peuvent modifier 'modifier' => array('auteur' => '0minirezo')),//Seuls les admins peuvent modifier
), ),
); );
$champs['spip_auteurs']['telephone'] = array(
'saisie' => 'input',//Type du champ (voir plugin Saisies)
'options' => array(
'nom' => 'telephone',
'label' => 'Téléphone',
'sql' => "varchar(30) NOT NULL DEFAULT ''",
'defaut' => '',// Valeur par défaut
'restrictions'=>array(
'voir' => array('auteur' => ''),
'modifier' => array('auteur' => '0minirezo','1comite')
)
),
);
/* /*
$champs['spip_auteurs']['bureau'] = array( $champs['spip_auteurs']['bureau'] = array(
'saisie' => 'case',//Type du champ (voir plugin Saisies) 'saisie' => 'case',//Type du champ (voir plugin Saisies)

View file

@ -2,10 +2,13 @@
#SET{mots,#ARRAY} #SET{mots,#ARRAY}
#SET{id_groupe, #INFO_ID_GROUPE{article,#ENV{id_article}}} #SET{id_groupe, #INFO_ID_GROUPE{article,#ENV{id_article}}}
[(#REM) On récupère : tous les mots / les mots de la rubrique médiathèque / les mots de la rubrique espace membre] [(#REM) On récupère : tous les mots / les mots de la rubrique médiathèque / les mots de la rubrique espace membre ]
<BOUCLE_mots(MOTS){id_article=#ENV{id_article}}> <BOUCLE_mots(MOTS){id_article=#ENV{id_article}}>
[(#SET{mots,#GET{mots}|push{#TITRE}})] [(#SET{mots,#GET{mots}|push{#TITRE}})]
[(#TYPE|=={Espace membres}|oui) [(#TYPE|=={Médiathèque}|oui)
#SET{id_media,#ID_MOT}
]
[(#TYPE|=={Espace Membre}|oui)
#SET{id_membre,#ID_MOT} #SET{id_membre,#ID_MOT}
] ]
</BOUCLE_mots> </BOUCLE_mots>
@ -14,12 +17,24 @@
<li><a href="#URL_SITE_SPIP"><:accueil_site:></a><span class="divider"> &gt; </span></li> <li><a href="#URL_SITE_SPIP"><:accueil_site:></a><span class="divider"> &gt; </span></li>
[(#GET{id_membre}|oui) [(#GET{id_membre}|oui)
<li><a href="[(#URL_PAGE{espace_membre})]"> Espace membres</a><span class="divider"> &gt; </span></li>
<li><a href="[(#URL_PAGE{espace_membre}|parametre_url{id_mot,#GET{id_membre}})]"> #INFO_TITRE{mot,#GET{id_membre}}</a><span class="divider"> &gt; </span></li> <li><a href="[(#URL_PAGE{espace_membre}|parametre_url{id_mot,#GET{id_membre}})]"> #INFO_TITRE{mot,#GET{id_membre}}</a><span class="divider"> &gt; </span></li>
] ]
[(#GET{id_membre}|non) [(#GET{id_membre}|non)
[(#GET{mots}|find{Séminaires}|oui)
<li><a href="#URL_PAGE{seminaires}"> Séminaires</a><span class="divider"> &gt; </span></li>
]
[(#GET{mots}|find{Séminaires}|non)
[(#GET{id_media}|oui)
<li><a href="[(#URL_PAGE{mediatheque}|parametre_url{id_mot,#GET{id_media}})]"> #INFO_TITRE{mot,#GET{id_media}}</a><span class="divider"> &gt; </span></li>
]
[(#GET{id_media}|non)
[(#GET{id_groupe}|oui) [(#GET{id_groupe}|oui)
<li><a href="[(#URL_PAGE{groupes}|parametre_url{id_article,#GET{id_groupe}})]"> #INFO_TITRE{article,#GET{id_groupe}}</a><span class="divider"> &gt; </span></li> <li><a href="#URL_PAGE{groupes}"> Groupes</a><span class="divider"> &gt; </span></li>
<li><a href="[(#URL_PAGE{groupes}|parametre_url{id_article,#GET{id_groupe}})]"> #INFO_SURTITRE{article,#GET{id_groupe}}</a><span class="divider"> &gt; </span></li>
]
]
] ]
] ]

View file

@ -1,7 +1,7 @@
<div class="container mt-3"> <div class="container mt-3">
<BOUCLE_principale(AUTEURS){tout}{id_auteur=#ENV{id_auteur}}{0,1}> <BOUCLE_principale(AUTEURS){tout}{id_auteur=#ENV{id_auteur}}>
<h2>Contacter #NOM</h2> <h2>Contacter #NOM</h2>
[<div class='mt-3 mb-3'>Téléphone : (#TELEPHONE) [ou (#TELEPHONE2)]</div>] [<div class='mt-3 mb-3'>Téléphone : (#TELEPHONE) [ou (#TELEPHONE2)]</div>]
#FORMULAIRE_NOUS_CONTACTER{#ARRAY{0,#ID_AUTEUR}} #FORMULAIRE_NOUS_CONTACTER{#ID_AUTEUR}
</BOUCLE_principale> </BOUCLE_principale>
</div> </div>

View file

@ -1,12 +0,0 @@
[(#REM) On affiche le premier article par défaut]
<BOUCLE_menu_agora(ARTICLES){titre_mot=agora}{0,1}{si #ENV{id_article}|non}{par rang}>
[(#ID_ARTICLE|setenv{id_article})]
</BOUCLE_menu_agora>
<section id="agora" class="container section-top section-bottom">
<div class="cadre-blanc">
<h1>Agora</h1>
<INCLURE{fond=inclure/page_agora,nom=agora,env,ajax}>
</div>
</section>

11
content/association.html Normal file
View file

@ -0,0 +1,11 @@
[(#REM) On affiche le premier article par défaut]
<BOUCLE_menu_association(ARTICLES){titre_mot=Association}{0,1}{si #ENV{id_article}|non}{par rang}>
[(#ID_ARTICLE|setenv{id_article})]
</BOUCLE_menu_association>
<section id="association" class="container section-top section-bottom">
<div class="cadre-blanc">
<h1>L'Association</h1>
<INCLURE{fond=inclure/page_statique,nom=association,env,ajax}>
</div>
</section>

View file

@ -1,6 +1,6 @@
<section id="brouillons" class="section-top section-bottom container"> <section id="brouillons" class="section-top section-bottom container">
<div class="cadre-blanc"> <div class="cadre-blanc">
<h1 class="h2 mb-4">Articles non publiés (brouillons)</h1> <h1 class="mb-4">Articles non publiés (brouillons)</h1>
<INCLURE{fond=inclure/brouillons_contenu,env,ajax}> <INCLURE{fond=inclure/brouillons_contenu,env,ajax}>
</div> </div>
</section> </section>

View file

@ -1,10 +0,0 @@
<section class="container section-top section-bottom">
<div class="cadre-blanc">
<BOUCLE_presentation(ARTICLES){grigri=charte}{0,1}{! par date}>
<h1 class="#EDIT{titre}">#TITRE</h1>
<div class="#EDIT{texte}">
#TEXTE
</div>
</BOUCLE_presentation>
</div>
</section>

View file

@ -3,9 +3,9 @@
<div class="container"> <div class="container">
[(#ENV{id_article}|?{ [(#ENV{id_article}|?{
<h1 class="h2 p-3">Éditer un article : <strong>#INFO_TITRE{article,#ENV{id_article}}</strong></h1> <h1>Éditer un article</h1>
, ,
<h1 class="h2 p-3">Rédiger un article</h1> <h1>Rédiger un article</h1>
})] })]
[(#SESSION{id_auteur}|oui) [(#SESSION{id_auteur}|oui)

View file

@ -3,16 +3,9 @@
<div class="container"> <div class="container">
[(#ENV{id_article}|?{ [(#ENV{id_article}|?{
<h1>Mettre à jour un groupe</h1>
<div class="d-lg-flex justify-content-between">
<h1 class="strong h2 p-3">Mettre à jour un groupe : <strong>#INFO_TITRE{article,#ENV{id_article}}</strong></h1>
<p class="alert alert-light">
[<i class="fa fa-clock-o" aria-hidden="true"></i> Dernière mise à jour : (#INFO_MAJ{article,#ENV{id_article}}|date_interface)]
</p>
</div>
, ,
<h1 class="p-3">Créer un nouveau groupe</h1> <h1>Créer un nouveau groupe</h1>
})] })]
[(#SESSION{id_auteur}|oui) [(#SESSION{id_auteur}|oui)

View file

@ -12,7 +12,7 @@
[(#ENV{id_article}|oui) [(#ENV{id_article}|oui)
[(#AUTORISER{modifier, article, #ENV{id_article}}|?{ [(#AUTORISER{modifier, article, #ENV{id_article}}|?{
<div class="ajax"> <div class="ajax">
[(#FORMULAIRE_EDITER_SUJET{#ENV{id_article},#ENV{rub_forum},#URL_PAGE{agora}|parametre_url{rub_forum,#ENV{rub_forum}}|parametre_url{id_article,#ENV{id_article}}})]<br> [(#FORMULAIRE_EDITER_SUJET{#ENV{id_article},#ENV{rub_forum},#URL_PAGE{espace_membre}|parametre_url{rub_forum,#ENV{rub_forum}}|parametre_url{id_article,#ENV{id_article}}})]<br>
</div> </div>
, ,
<div class="reponse_formulaire reponse_formulaire_erreur">Votre compte ne fait pas partie des auteurs autorisés à modifier cet article.</div> <div class="reponse_formulaire reponse_formulaire_erreur">Votre compte ne fait pas partie des auteurs autorisés à modifier cet article.</div>
@ -20,7 +20,7 @@
] ]
[(#ENV{id_article}|non) [(#ENV{id_article}|non)
<div class="ajax"> <div class="ajax">
[(#FORMULAIRE_EDITER_SUJET{0,#ENV{rub_forum},#URL_PAGE{agora}|parametre_url{rub_forum,#ENV{rub_forum}}|parametre_url{id_article,#ENV{id_article}}})] [(#FORMULAIRE_EDITER_SUJET{0,#ENV{rub_forum},#URL_PAGE{espace_membre}|parametre_url{rub_forum,#ENV{rub_forum}}|parametre_url{id_article,#ENV{id_article}}})]
</div> </div>
] ]
] ]

View file

@ -1,66 +1,53 @@
[(#REM) Si aucun paramètre id_mot ou rub_forum ne sont renseignés, on définit un rub_forum par défaut] [(#REM) On affiche la première rubrique par défaut]
<BOUCLE_menu_membre(CONDITION){si #ENV{rub_forum}|non}{si #ENV{id_mot}|non}>
[(#CONFIG{balint/id_rub_forum_prive}|setenv{rub_forum})]
</BOUCLE_menu_membre>
<section id="espace_membre" class="section-top section-bottom container"> <section id="espace_membre" class="section-top section-bottom container">
<?php
<?php
if (isset($GLOBALS['visiteur_session']['id_auteur']) AND $GLOBALS['visiteur_session']['id_auteur']) { if (isset($GLOBALS['visiteur_session']['id_auteur']) AND $GLOBALS['visiteur_session']['id_auteur']) {
?> ?>
<div class="cadre-blanc"> <div class="cadre-blanc">
<h1 class="mb-4">Espace membres</h1> <h1 class="mb-4">Espace membre</h1>
<?php <?php
if (isset($GLOBALS['visiteur_session']['statut']) AND in_array($GLOBALS['visiteur_session']['statut'],array("0minirezo","1comite"))) { if (isset($GLOBALS['visiteur_session']['statut']) AND in_array($GLOBALS['visiteur_session']['statut'],array("0minirezo","1comite"))) {
?> ?>
<div class="mb-3">
Vous êtes connecté·e en tant que <a class="boutons" href="[(#URL_PAGE{modifier_auteur})]"><?php echo $GLOBALS['visiteur_session']['nom'] ?></a>.<a href="[(#URL_LOGOUT{#SELF})]"><i class="fa fa-sign-out ml-3" aria-hidden="true"></i> Déconnexion</a>
</div>
<INCLURE{fond=inclure/espace_membre_contenu,env,ajax}> <INCLURE{fond=inclure/espace_membre_contenu,env,ajax}>
<?php <?php
} }
else { else {
?> ?>
<div> <div>
Les administrateurs valideront votre accès à l'Espace Membres dès que possible.</br> Les administrateurs valideront votre accès à l'espace membre dès que possible.</br>
En cas de problème vous pouvez les joindre sur la page <a href="[(#URL_PAGE{nous-contacter})]">Contact</a>. En cas de problème vous pouvez les joindre sur contact@psychodrame-balint.com.
</div> </div>
<?php <?php
} }
?> ?>
</div> </div>
<?php <?php
} }
else { else {
?> ?>
<div class="cadre-blanc"> <div class="cadre-blanc">
<h1 class="mb-4">Espace membre</h1> <h1 class="mb-4">Espace membre</h1>
Cet espace est réservé aux membres du mouvement de la France Insoumise 05.</br> Cet espace est réservé aux membres de l'association.</br>
Inscrivez-vous pour votre première connexion.</br> Inscrivez-vous pour votre première connexion, ensuite en vous connectant vous aurez accès au forum, aux archives, aux textes officiels de l'association.</br>
En cas de problème vous pouvez nous joindre sur la page <a href="[(#URL_PAGE{nous-contacter})]">Contact</a>. En cas de problème vous pouvez nous joindre sur contact@psychodrame-balint.com.
<div class="row mt-4">
<ul class="nav nav-tabs" id="myTab" role="tablist">
<li class="nav-item">
<a class="nav-link active" id="home-tab" data-toggle="tab" href="#home" role="tab" aria-controls="home" aria-selected="true">Se connecter</a>
</li>
<li class="nav-item">
<a class="nav-link" id="profile-tab" data-toggle="tab" href="#profile" role="tab" aria-controls="profile" aria-selected="false">S'inscrire</a>
</li>
</ul>
</div> </div>
<div class="row mt-4"> <div class="row mt-4">
<div class="tab-content" id="myTabContent"> <div class="se_connecter bloc_connexion col-lg-5">
<div class="se_connecter bloc_connexion tab-pane fade show active" id="home" role="tabpanel" aria-labelledby="home-tab">
[(#FORMULAIRE_LOGIN{#SELF})] [(#FORMULAIRE_LOGIN{#SELF})]
</div> </div>
<div class="creer_associer_compte bloc_connexion tab-pane fade" id="profile" role="tabpanel" aria-labelledby="profile-tab"> <div class="ou col-lg-2 text-center"><h2>ou</h2></div>
<div class="creer_associer_compte bloc_connexion col-lg-5">
[(#FORMULAIRE_INSCRIPTION{'','',#SELF})] [(#FORMULAIRE_INSCRIPTION{'','',#SELF})]
</div> </div>
</div> </div>
</div> <?php
</div>
<?php
} }
?> ?>
</section> </section>

View file

@ -11,15 +11,15 @@
<tr> <tr>
<th scope="col">Nom</th> <th scope="col">Nom</th>
<th scope="col">Statut</th> <th scope="col">Statut</th>
[(#REM)<th scope="col">Bureau</th>] <th scope="col">Bureau</th>
<th scope="col">Groupe (<i class="fas fa-star"></i> admin)</th> <th scope="col">Animateur</th>
<th scope="col">Email</th> <th scope="col">Email</th>
<th scope="col">Téléphone</th> <th scope="col">Téléphone</th>
<th scope="col">Actions</th> <th scope="col">Actions</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<BOUCLE_auteurs(AUTEURS){tous}{par nom}> <BOUCLE_auteurs(AUTEURS){tous}{webmestre=non}{par nom}>
<tr class="ligne-auteurs"> <tr class="ligne-auteurs">
<td class="cellule-tableau">#NOM</td> <td class="cellule-tableau">#NOM</td>
@ -28,22 +28,18 @@
[(#STATUT|=={1comite}|oui) Membre] [(#STATUT|=={1comite}|oui) Membre]
[(#STATUT|=={6forum}|oui) Inscrit] [(#STATUT|=={6forum}|oui) Inscrit]
</td> </td>
[(#REM)<td class="cellule-tableau"> <td class="cellule-tableau">
<INCLURE{fond=inclure/toggle_param,env,objet=auteur,id_objet=#ID_AUTEUR,param=bureau,ajax}> <INCLURE{fond=inclure/toggle_param,env,objet=auteur,id_objet=#ID_AUTEUR,param=bureau,ajax}>
</td>] </td>
<td class="cellule-tableau"> <td class="cellule-tableau">
<BOUCLE_groupes(ARTICLES){id_secteur=#CONFIG{balint/id_rub_groupes}}{id_auteur=#ID_AUTEUR}> <BOUCLE_groupes(ARTICLES){id_secteur=#CONFIG{balint/id_rub_groupes}}{id_auteur=#ID_AUTEUR}>
[(#REM) On affiche les groupes dont on fait partie] [(#REM) On affiche les villes dont on est animateur de groupe, ou le pays si on animateur de gps ponctuels]
[(#ROLE|=={admin}|oui)<i class="fas fa-star"></i>]#TITRE [(#SURTITRE|sinon{#INFO_TITRE{rubrique,#ID_RUBRIQUE}}|unique)]
<a class="mediabox" href="[(#URL_PAGE{editer_groupe_mediabox}|parametre_url{id_article,#ID_ARTICLE})]"><i class="fas fa-cog"></i></a>
[(#COMPTEUR_BOUCLE|!={#TOTAL_BOUCLE}|oui)<br>]
</BOUCLE_groupes> </BOUCLE_groupes>
</td> </td>
<td class="cellule-tableau">#EMAIL</td> <td class="cellule-tableau">#EMAIL</td>
<td class="cellule-tableau">#TELEPHONE</br>#TELEPHONE2</td> <td class="cellule-tableau">#TELEPHONE</br>#TELEPHONE2</td>
<td class="row cellule-tableau"> <td class="row">
<a class="btn mediabox" href="[(#URL_PAGE{editer_auteur}|parametre_url{id_auteur,#ID_AUTEUR})]"> <a class="btn mediabox" href="[(#URL_PAGE{editer_auteur}|parametre_url{id_auteur,#ID_AUTEUR})]">
<i class="fas fa-pencil"></i> <i class="fas fa-pencil"></i>
</a> </a>

View file

@ -1,9 +1,15 @@
[(#REM) On affiche tous les groupes] [(#REM) On affiche la France par défaut]
<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">
<div class="cadre-blanc"> <div class="cadre-blanc">
<INCLURE{fond=inclure/groupes_contenu_sidebar,env,ajax}> <h1 class="mb-4">Les groupes</h1>
<INCLURE{fond=inclure/groupes_contenu,env,ajax}>
</div> </div>
</section> </section>

View file

@ -1,6 +0,0 @@
<div>
<h1>Création d'un compte étudiant</h1>
[(#FORMULAIRE_INSCRIPTION)]
</div>

View file

@ -1,31 +0,0 @@
<section class="section-top section-bottom">
<div class="container">
<?php if (!isset($GLOBALS['visiteur_session']['id_auteur'])) { ?>
<div class="row mt-4">
<div class="se_connecter bloc_connexion col-lg-5">
[(#FORMULAIRE_LOGIN{#URL_PAGE{sommaire}})]
</div>
<div class="ou col-lg-2 text-center"><h2>ou</h2></div>
<div class="creer_associer_compte bloc_connexion col-lg-5">
[(#FORMULAIRE_INSCRIPTION)]
</div>
</div>
<?php } ?>
<?php if (isset($GLOBALS['visiteur_session']['id_auteur'])) { ?>
<div class="cadre-blanc">
Vous êtes connecté·e en tant que <a class="boutons" href="[(#URL_PAGE{modifier_auteur})]"><?php echo $GLOBALS['visiteur_session']['nom'] ?></a>.
<div>
<a href="#URL_PAGE{modifier_auteur}"><i class="fa fa-user" aria-hidden="true"></i> Voir mon profil</a>
<a href="#URL_PAGE{espace_membre}"><i class="fa fa-external-link-square ml-3" aria-hidden="true"></i> Accès à l'espace membres</a>
<a href="[(#URL_LOGOUT{#SELF})]"><i class="fa fa-sign-out ml-3" aria-hidden="true"></i> Déconnexion</a>
</div>
</div>
<?php } ?>
</div>
</section>

View file

@ -4,7 +4,7 @@
<B_modifier_auteur> <B_modifier_auteur>
<div class="row"> <div class="row">
<BOUCLE_modifier_auteur(AUTEURS){id_auteur = #SESSION{id_auteur}}{tous}> <BOUCLE_modifier_auteur(AUTEURS){id_auteur=#SESSION{id_auteur}}{tous}>
<div class="m-auto"> <div class="m-auto">
#FORMULAIRE_EDITER_AUTEUR{#ID_AUTEUR,#URL_PAGE{auteur}|parametre_url{id_auteur,#ENV{id_auteur}}} #FORMULAIRE_EDITER_AUTEUR{#ID_AUTEUR,#URL_PAGE{auteur}|parametre_url{id_auteur,#ENV{id_auteur}}}
</div> </div>

View file

@ -1,18 +1,17 @@
<section class="container section-top section-bottom"> <section class="section-top section-bottom" id="page-contact">
<div class="cadre-blanc row"> <div class="container">
<h1 class="col-12">Nous contacter</h1> <h2 class="h3">Nous contacter</h2>
<div class='col-12 col-md-6'> <div class="row">
<div class="col-lg-6">
[(#FORMULAIRE_NOUS_CONTACTER{#CONFIG{balint/Tid_destinataires}})] <BOUCLE_contact(AUTEURS){id_auteur=#CONFIG{balint/id_contact}}{0,1}{tout}>
#FORMULAIRE_NOUS_CONTACTER{#ID_AUTEUR}
</BOUCLE_contact>
</div> </div>
<div class='col-12 col-md-6'> <div class="col-lg-6 text-center">
<BOUCLE_presentation(ARTICLES){grigri=contact}{0,1}{! par date}> <BOUCLE_image_rousseau(DOCUMENTS){credits=rousseau}{extension==jpg|png|gif}{statut in prop,prepa,publie}{0,1}>
<div class="#EDIT{texte}"> [(#FICHIER|balise_img{Jardin du Luxembourg peint par Henri Rousseau}|image_recadre{510:420,-,focus}|image_reduire{510,420})]
#TEXTE </BOUCLE_image_rousseau>
</div> </div>
</BOUCLE_presentation>
</div> </div>
</div> </div>
</section> </section>

View file

@ -1,11 +0,0 @@
[(#REM) On affiche le premier article par défaut]
<BOUCLE_menu_methode(ARTICLES){titre_mot=presse}{0,1}{si #ENV{id_article}|non}{par rang}>
[(#ID_ARTICLE|setenv{id_article})]
</BOUCLE_menu_methode>
<section id="methode" class="container section-top section-bottom">
<div class="cadre-blanc">
<h1>Espace Presse</h1>
<INCLURE{fond=inclure/page_statique,nom=presse,env,ajax}>
</div>
</section>

View file

@ -1,6 +0,0 @@
<section id="methode" class="container section-top section-bottom">
<div class="cadre-blanc">
<h1>Résultats : #ENV{recherche}</h1>
<INCLURE{fond=inclure/a_la_une_contenu,env,ajax=a_la_une}>
</div>
</section>

View file

@ -1,60 +1,51 @@
[(#REM)<section id="presentation-accueil"> <section id="presentation-accueil">
<div class="container"> <div class="container">
<h1 class="text-center">[(#CHEMIN{images/Titre-AIPB.png}|image_reduire{900,120}|inserer_attribut{alt,AIPB - #NOM_SITE_SPIP})]</h1>
</div> <div class="row">
</section>]
<section class="section-top">
<div class="container">
<div class="row mb-5">
<div class="col-12 col-lg-8 col-xl-9">
<div class="mb-3">
<BOUCLE_presentation(ARTICLES){grigri=presentation_accueil}{0,1}{! par date}> <BOUCLE_presentation(ARTICLES){grigri=presentation_accueil}{0,1}{! par date}>
<article class="cadre-blanc contenu"> <div id="images-presentation" class="col-lg">
<h1 class="text-center ">[(#CHEMIN{images/logo-lfi5.jpg}|image_reduire{500,550}|inserer_attribut{alt,FI05 - #NOM_SITE_SPIP})]</h1> <BOUCLE_image_pres(DOCUMENTS){id_article}{0,1}>
<div class="text-dark #EDIT{texte}"> <div class="image-encadree text-dark">
[(#FICHIER|balise_img{#TITRE}|image_recadre{380:362,-,focus}|image_reduire{380,362})]
<span class="#EDIT{descriptif}">#DESCRIPTIF</span>
</div>
</BOUCLE_image_pres>
</div>
<article id="texte-presentation" class="col-lg">
<div class="contenu text-dark #EDIT{texte}">
#TEXTE #TEXTE
</div> </div>
</article> </article>
</BOUCLE_presentation> </BOUCLE_presentation>
</div> </div>
<div class="dernieres-nouvelles mt-3 p-3">
<div class="d-md-flex justify-content-between align-items-center">
<h2 class="a-la-une h3">Derniers articles</h2>
#FORMULAIRE_RECHERCHE
</div> </div>
<INCLURE{fond=inclure/a_la_une_contenu,env}> </section>
<section id="mis-en-avant">
<div class="container">
<div class="row">
<div class="col-lg-9">
<INCLURE{fond=inclure/diaporama_accueil}/>
<div class="cadre-transparent mt-3 p-3">
<h2 class="a-la-une h3">Actualités</h2>
<INCLURE{fond=inclure/a_la_une_contenu,env,ajax}>
</div> </div>
</div> </div>
<aside class="col-12 col-lg-4 col-xl-3"> <aside class="col-lg-3">
<div id="agenda"> <div id="agenda" class="mt-4 mt-lg-0">
<h2 class="h3">Agenda</h2> <h2 class="h3">Agenda</h2>
<BOUCLE_agenda(ARTICLES){titre_mot=agenda}{par rang}> <BOUCLE_agenda(ARTICLES){titre_mot=agenda}{par rang}{!par date}>
<div class="agenda-evenement"> <div class="agenda-evenement">
#DATE_AGENDA
<a href="#URL_ARTICLE"> <a href="#URL_ARTICLE">
<h3 class="h5">#TITRE</h3> <h3 class="h5">#TITRE</h3>
</a> </a>
#DATE_AGENDA
</div> </div>
</BOUCLE_agenda> </BOUCLE_agenda>
</div> </div>
<div class="dernieres-nouvelles mt-3 mb-3">
<div class="h3 mt-4">Dernières contributions</div>
<div class="liste-articles">
<BOUCLE_sujets(FORUMS){id_secteur!=#CONFIG{balint/id_rub_forum_prive}}{!par date}{0,3}{tout}>
<div class="mt-4 mt-lg-0 mb-3">
<strong> [(#INFO_TITRE{article, #ID_ARTICLE}) :]
</strong>
<a href="[(#URL_PAGE{agora}|parametre_url{id_article,#ID_ARTICLE}|parametre_url{forum,oui})]" class="ajax" title="Voir le forum">
#TITRE
</a>
<div class="infos-article">
[(#DATE|date_relative)]
</div>
</div>
</BOUCLE_sujets>
</div>
</div>
</aside> </aside>
</div> </div>
</div> </div>
</section> </section>
@ -67,3 +58,21 @@
</div> </div>
</section> </section>
] ]
<section id="nous-contacter">
<div class="container">
<h2 class="h3">Nous contacter</h2>
<div class="row">
<div class="col-lg-6">
<BOUCLE_webmaster(AUTEURS){id_auteur=#CONFIG{balint/id_contact}}{tout}>
#FORMULAIRE_NOUS_CONTACTER{#ID_AUTEUR}
</BOUCLE_webmaster>
</div>
<div class="col-lg-6 text-center">
<BOUCLE_image_rousseau(DOCUMENTS){credits=rousseau}{extension==jpg|png|gif}{statut in prop,prepa,publie}{0,1}>
[(#FICHIER|balise_img{Jardin du Luxembourg peint par Henri Rousseau}|image_recadre{510:420,-,focus}|image_reduire{510,420})]
</BOUCLE_image_rousseau>
</div>
</div>
</div>
</section>

View file

@ -19,7 +19,7 @@
src: url("../fonts/Poppins500i.woff2?#iefix") format("woff2"); src: url("../fonts/Poppins500i.woff2?#iefix") format("woff2");
font-weight: 500; font-weight: 500;
font-style: italic; font-style: italic;
} }*/
@font-face { @font-face {
font-family: 'Cabin'; font-family: 'Cabin';
@ -50,7 +50,7 @@
} }
/*
@font-face { @font-face {
font-family: 'Bitter'; font-family: 'Bitter';
src: url("../fonts/bitter.woff2?#iefix") format("woff2"); src: url("../fonts/bitter.woff2?#iefix") format("woff2");
@ -72,17 +72,3 @@
font-style: normal; font-style: normal;
} }
*/ */
@font-face {
font-family: 'Montserrat';
src: url("../webfonts/montserrat-regular/montserrat-regular.woff2?#iefix") format("woff2");
font-weight: 400;
font-style: normal;
}
@font-face {
font-family: 'Montserrat';
src: url("../webfonts/montserrat-bold/montserrat-bold.woff2?#iefix") format("woff2");
font-weight: 700;
font-style: normal;
}

View file

@ -56,16 +56,10 @@ textarea[name="texte"]{
} }
/* polices */ /* polices */
* { font-family: 'Montserrat', sans-serif;} * { font-family: 'Cabin', sans-serif; font-size: 1.1rem}
i.fas { font-family: fontawesome; font-style: normal; font-weight: 400; } i.fas { font-family: fontawesome; font-style: normal; font-weight: 400; }
h1, .h1, h2, .h2, h3, .h3, h4, .h4, legend, h1, .h1, h2, .h2, h3, .h3, h4, .h4, legend,
.h1-like, .h2-like, .h3-like, .h4-like { font-family: 'Montserrat', sans-serif; } .h1-like, .h2-like, .h3-like, .h4-like { font-family: 'Cabin', sans-serif; }
h1, .h1{font-size: 2rem;}
h2, .h2{font-size: 1.75rem;}
h3, .h3{font-size: 1.5rem;}
h4, .h4{font-size: 1.25rem;}
h5, .h5{font-size: 1.15rem;}
h6, .h6{font-size: 1.05rem;}
/* liens */ /* liens */
@ -105,7 +99,7 @@ img{
border-radius: 0.2rem; border-radius: 0.2rem;
} strong{ } strong{
cursor:initial; cursor:initial;
color: $pagination-active; color: $page-active;
} }
.lien_pagination{ .lien_pagination{
color: $light; color: $light;
@ -138,33 +132,26 @@ body{
padding: 1rem 2rem; padding: 1rem 2rem;
background-color: $fond-menu; background-color: $fond-menu;
transition: all 1s; transition: all 1s;
.nav-item:hover{
background: rgba(255,255,255,0.2);
}
.nav-link{ .nav-link{
padding: 0.3rem 0; padding: 0.3rem 0;
font-size: 1.2rem; font-size: 1.2rem;
} }
.nav-link, .dropdown-item{ .nav-link, .dropdown-item{
color: $texte-menu; color: $light;
font-weight: 400; font-weight: 500;
font-family: 'Montserrat', sans-serif; font-family: 'Cabin', sans-serif;
text-align: center; text-align: center;
transition: height 1s ease; transition: height 1s ease;
} }
.dropdown-item{
font-size: 1.1rem;
white-space: normal;
}
.dropdown i.fas{
padding-bottom: 0.1rem;
}
.navbar-brand{ .navbar-brand{
width: 150px; width: 200px;
transition: all 1s ease; transition: all 1s ease;
img{ img{
transition: all 1s ease; transition: all 1s ease;
} }
@include media-breakpoint-up(sm){
width: 220px;
}
} }
.active a.nav-link{ .active a.nav-link{
color: $page-active; color: $page-active;
@ -174,7 +161,7 @@ body{
} }
.fa-bars{ .fa-bars{
font-size: 1.8rem; font-size: 1.8rem;
color: $page-active; color: $light;
} }
&.reduit{ &.reduit{
.navbar-brand{ .navbar-brand{
@ -182,15 +169,13 @@ body{
} }
} }
.dropdown-menu{ .dropdown-menu{
font-size: 1.2rem; background: #399975;
background: $gris-clair;
color: $texte-menu;
border-radius: 0 0 0.2rem 0.2rem; border-radius: 0 0 0.2rem 0.2rem;
border: none; border: none;
} }
.dropdown-item:focus, .dropdown-item:hover, .nav-link:hover{ .dropdown-item:focus, .dropdown-item:hover{
background: rgba(255,255,255,0.2); background: rgba(255,255,255,0.2);
color: $page-active; color: white;
} }
@include media-breakpoint-up(xl){ @include media-breakpoint-up(xl){
padding: 0 2rem; padding: 0 2rem;
@ -213,18 +198,14 @@ body{
} }
.dropdown-menu{ .dropdown-menu{
margin-top: 0; margin-top: 0;
background: white;
} }
.dropdown-item{ .dropdown-item{
text-align: left; text-align: left;
font-size: 1.2rem;
white-space: nowrap;
} }
} }
} }
#liste-deroulante{ #liste-deroulante{
width: 100%;
ul{ ul{
list-style-type: none; list-style-type: none;
} }
@ -311,13 +292,6 @@ body{
color: $bg-diapo-texte; color: $bg-diapo-texte;
} }
#barre-recherche input{
vertical-align: middle;
padding: 0.375rem 0.75rem;
border-radius: 0.2rem;
border: solid 1px lightgrey;
}
#agenda, .dernieres-nouvelles{ #agenda, .dernieres-nouvelles{
background: $fond-transparent; background: $fond-transparent;
border-radius: 0.2rem; border-radius: 0.2rem;
@ -337,7 +311,7 @@ body{
.dernieres-nouvelles{ .dernieres-nouvelles{
text-align: left; text-align: left;
padding: 0 1.2rem; padding: 0 1.2rem;
//border-left: solid 1px $couleur-liens; border-left: solid 1px $couleur-liens;
} }
.agenda-evenement{ .agenda-evenement{
@ -597,13 +571,25 @@ body{
} }
} }
.page_sommaire .footer-options, .page_sommaire #footer-infos{
background: #FFF0C7;
color: black !important;
h4{
color: $fond-footer;
}
a, .grille a{
color: black;
}
.pages-footer li:hover a{
color: $dark;
}
}
/**********************************************************************/ /**********************************************************************/
/************************ PAGE STATIQUE ****************************/ /************************ PAGE ASSOCIATION ****************************/
/**********************************************************************/ /**********************************************************************/
#menu-agora, #menu-methode, #menu-groupes, #menu-medias, #menu-espace_membre{ #menu-association, #menu-methode, #menu-groupes, #menu-medias, #menu-espace_membre{
background: $couleur-liens; background: $couleur-liens;
margin: 1rem 0; margin: 1rem 0;
border-radius: 0.2rem; border-radius: 0.2rem;
@ -647,7 +633,7 @@ body{
} }
@include media-breakpoint-up(lg) { @include media-breakpoint-up(lg) {
#menu-groupes, #menu-agora, #menu-medias, #menu-espace_membre{ #menu-groupes, #menu-medias, #menu-espace_membre{
li:not(:last-of-type){ li:not(:last-of-type){
border: none; border: none;
} }
@ -691,17 +677,12 @@ body{
.articles-groupe{ .articles-groupe{
display: inline-block; display: inline-block;
padding: 1rem; padding: 1rem;
background: $gris-clair; background: $couleur-liens;
border-radius: 0.5rem 0.5rem 0 0; border-radius: 0.5rem 0.5rem 0 0;
color: $dark; color: white;
} }
.btn.bouton-rediger{
margin: 0;
background: $texte-menu;
color:white;
}
/**********************************************************************/ /**********************************************************************/
/**************** TOUS LES FORMULAIRES DE CONNEXION *******************/ /**************** TOUS LES FORMULAIRES DE CONNEXION *******************/
@ -710,6 +691,7 @@ body{
.formulaire_spip .boutons, .boutons{ .formulaire_spip .boutons, .boutons{
margin: 1rem 0; margin: 1rem 0;
.btn{ .btn{
font-size: 1.2rem;
line-height: 1rem; line-height: 1rem;
padding: 1rem; padding: 1rem;
border: solid 1px $light; border: solid 1px $light;
@ -753,21 +735,15 @@ body{
} }
.btn.bouton-login{ .btn.bouton-login{
background: $fond-transparent; background: $couleur-liens;
border-radius: 0.2rem; border-radius: 0.2rem;
color: black; color: #333 !important;
&:hover{ &:hover{
color: white; color: black;
background-color: $couleur-liens; background-color: $page-active;
} }
} }
#menu-principal .btn.bouton-login{
background: $texte-menu;
font-size: 1.1rem;
color: white;
}
.bouton-toggle{ .bouton-toggle{
color:lightgrey; color:lightgrey;
display: block; display: block;
@ -834,14 +810,14 @@ body{
} }
.btn_poubelle{ .btn_poubelle{
color: red; color: red;
:hover{ &:hover{
color: #ee9e9e; color: #b30000;
} }
} }
.btn_une{ .btn_une{
color: black;
:hover{
color: grey; color: grey;
&:hover{
color: black;
} }
} }
.boutons_actions { .boutons_actions {
@ -851,18 +827,19 @@ body{
justify-content: space-around; justify-content: space-around;
align-items: center; align-items: center;
background-color: $gris-clair; background-color: $gris-clair;
i.green { i {
padding: .6rem; padding:0 0.6rem;
color: rgb(28, 158, 28);
} }
a { a {
margin: 0; margin: 0;
} }
.premier-plan{ .premier-plan{
color: rgb(28, 158, 28);
display: flex; display: flex;
flex-direction: row; flex-direction: row;
align-items: center; align-items: center;
padding: 0.2rem; padding: 0.2rem;
font-size: 1rem;
} }
} }
} }
@ -931,10 +908,6 @@ body{
text-align: center; text-align: center;
} }
.cellule-tableau .btn{
padding: 0 0.75rem;
}
/**********************************************************************/ /**********************************************************************/
/****************************** FORUM *********************************/ /****************************** FORUM *********************************/
/**********************************************************************/ /**********************************************************************/

View file

@ -2,29 +2,27 @@ $couleur-texte : black;
$dark: #595959; $dark: #595959;
//$fond-menu: #3b3f8a; bleu-violet plus foncé //$fond-menu: #3b3f8a; bleu-violet plus foncé
//$fond-menu: #478E7E; vert-bleu plus foncé //$fond-menu: #478E7E; vert-bleu plus foncé
$fond-menu: white; $fond-menu: #087f52;
$texte-menu: #00ADCB;
//$couleur-liens : #dc7544; orange moins vif //$couleur-liens : #dc7544; orange moins vif
$couleur-liens: #C84227; $couleur-liens: #dd7f51;
// $couleur-liens : #f67638; orange vif // $couleur-liens : #f67638; orange vif
$gris-moyen : #7d7d7d; $gris-moyen : #7d7d7d;
$gris-clair : #f2f2f2; $gris-clair : #f2f2f2;
$page-active-clair: #fff99d; $page-active-clair: #fff99d;
$page-active: #C84227; $page-active: #ffb284;
$pagination-active: #FF8A00;
//$fond-footer: #464ba3; bleu-violet //$fond-footer: #464ba3; bleu-violet
//$fond-footer: #4B9886; vert-bleu //$fond-footer: #4B9886; vert-bleu
$fond-footer: $texte-menu; $fond-footer: #3E8050;
//$titres-footer : #4B9886; vert plus clair //$titres-footer : #4B9886; vert plus clair
$titres-footer : white; $titres-footer : #ffb284;
$fond-formulaires: rgba(255,255,255,0.8); $fond-formulaires: rgba(255,255,255,0.8);
$fond-transparent: rgba(255, 255, 255, 0.92); $fond-transparent: rgba(255, 255, 255, 0.92);
$breadcrumb-bg: none; $breadcrumb-bg: none;
$bg-body: url('../images/bg-web.jpg'); $bg-body: url('../images/bg-web.jpg');
$bg-presentation: url('../images/bg-gris-vert2.jpg'); $bg-presentation: url('../images/bg-gris-vert2.jpg');
$bg-texte-presentation: $fond-transparent; $bg-texte-presentation: url('../images/bg-encadre-blanc3.jpg');
$bg-mis-en-avant: url('../images/fond-une-jaune.jpg'); $bg-mis-en-avant: url('../images/fond-une-jaune.jpg');
$bg-a-la-une: url('../images/bg-web.jpg'); $bg-a-la-une: url('../images/bg-web.jpg');
$bg-nous-contacter: url('../images/Fond-contact-vert.jpg'); $bg-nous-contacter: url('../images/Fond-contact-vert.jpg');
@ -32,4 +30,4 @@ $bg-nous-contacter: url('../images/Fond-contact-vert.jpg');
$bg-diapo : rgba(255,255,255,0.55); $bg-diapo : rgba(255,255,255,0.55);
// $bg-diapo-texte: rgba(0,13,158,0.65); // $bg-diapo-texte: rgba(0,13,158,0.65);
// $bg-diapo-texte: #478E7E; vert-bleu // $bg-diapo-texte: #478E7E; vert-bleu
$bg-diapo-texte: #00ADCB $bg-diapo-texte: #0c8d5c

View file

@ -11570,8 +11570,7 @@ a.text-dark:focus, a.text-dark:hover {
src: url("../fonts/Poppins500i.woff2?#iefix") format("woff2"); src: url("../fonts/Poppins500i.woff2?#iefix") format("woff2");
font-weight: 500; font-weight: 500;
font-style: italic; font-style: italic;
} }*/
@font-face { @font-face {
font-family: 'Cabin'; font-family: 'Cabin';
src: url("../fonts/Cabin400.woff2?#iefix") format("woff2"); src: url("../fonts/Cabin400.woff2?#iefix") format("woff2");
@ -11600,8 +11599,7 @@ a.text-dark:focus, a.text-dark:hover {
font-style: italic; font-style: italic;
} }
/*
@font-face { @font-face {
font-family: 'Bitter'; font-family: 'Bitter';
src: url("../fonts/bitter.woff2?#iefix") format("woff2"); src: url("../fonts/bitter.woff2?#iefix") format("woff2");
@ -11623,20 +11621,6 @@ a.text-dark:focus, a.text-dark:hover {
font-style: normal; font-style: normal;
} }
*/ */
@font-face {
font-family: 'Montserrat';
src: url("../webfonts/montserrat-regular/montserrat-regular.woff2?#iefix") format("woff2");
font-weight: 400;
font-style: normal;
}
@font-face {
font-family: 'Montserrat';
src: url("../webfonts/montserrat-bold/montserrat-bold.woff2?#iefix") format("woff2");
font-weight: 700;
font-style: normal;
}
/* ------------------------------------------ /* ------------------------------------------
/* Habillage des formulaires SPIP /* Habillage des formulaires SPIP
/* ------------------------------------------ */ /* ------------------------------------------ */
@ -11927,7 +11911,7 @@ textarea[name="texte"] {
.bordure-top { .bordure-top {
padding-top: 1.5rem; padding-top: 1.5rem;
border-top: solid 1px #C84227; border-top: solid 1px #dd7f51;
} }
.loading > * { .loading > * {
@ -11936,7 +11920,8 @@ textarea[name="texte"] {
/* polices */ /* polices */
* { * {
font-family: 'Montserrat', sans-serif; font-family: 'Cabin', sans-serif;
font-size: 1.1rem;
} }
i.fas { i.fas {
@ -11947,37 +11932,13 @@ i.fas {
h1, .h1, h2, .h2, h3, .h3, h4, .h4, legend, h1, .h1, h2, .h2, h3, .h3, h4, .h4, legend,
.h1-like, .h2-like, .h3-like, .h4-like { .h1-like, .h2-like, .h3-like, .h4-like {
font-family: 'Montserrat', sans-serif; font-family: 'Cabin', sans-serif;
}
h1, .h1 {
font-size: 2rem;
}
h2, .h2 {
font-size: 1.75rem;
}
h3, .h3 {
font-size: 1.5rem;
}
h4, .h4 {
font-size: 1.25rem;
}
h5, .h5 {
font-size: 1.15rem;
}
h6, .h6 {
font-size: 1.05rem;
} }
/* liens */ /* liens */
a, a:hover { a, a:hover {
text-decoration: none; text-decoration: none;
color: #C84227; color: #dd7f51;
} }
/* images */ /* images */
@ -12006,14 +11967,14 @@ img {
} }
.pagination strong, .pagination .lien_pagination { .pagination strong, .pagination .lien_pagination {
background-color: #00ADCB; background-color: #3E8050;
padding: 0.5rem 1rem; padding: 0.5rem 1rem;
border-radius: 0.2rem; border-radius: 0.2rem;
} }
.pagination strong { .pagination strong {
cursor: initial; cursor: initial;
color: #FF8A00; color: #ffb284;
} }
.pagination .lien_pagination { .pagination .lien_pagination {
@ -12044,36 +12005,31 @@ body {
/**********************************************************************/ /**********************************************************************/
#menu-principal { #menu-principal {
padding: 1rem 2rem; padding: 1rem 2rem;
background-color: white; background-color: #087f52;
-webkit-transition: all 1s; -webkit-transition: all 1s;
transition: all 1s; transition: all 1s;
} }
#menu-principal .nav-item:hover {
background: rgba(255, 255, 255, 0.2);
}
#menu-principal .nav-link { #menu-principal .nav-link {
padding: 0.3rem 0; padding: 0.3rem 0;
font-size: 1.2rem; font-size: 1.2rem;
} }
#menu-principal .nav-link, #menu-principal .dropdown-item { #menu-principal .nav-link, #menu-principal .dropdown-item {
color: #00ADCB; color: #f8f9fa;
font-weight: 400; font-weight: 500;
font-family: 'Montserrat', sans-serif; font-family: 'Cabin', sans-serif;
text-align: center; text-align: center;
-webkit-transition: height 1s ease; -webkit-transition: height 1s ease;
transition: height 1s ease; transition: height 1s ease;
} }
#menu-principal .dropdown-item {
font-size: 1.1rem;
white-space: normal;
}
#menu-principal .dropdown i.fas {
padding-bottom: 0.1rem;
}
#menu-principal .navbar-brand { #menu-principal .navbar-brand {
width: 150px; width: 200px;
-webkit-transition: all 1s ease; -webkit-transition: all 1s ease;
transition: all 1s ease; transition: all 1s ease;
} }
@ -12083,14 +12039,8 @@ body {
transition: all 1s ease; transition: all 1s ease;
} }
@media (min-width: 576px) {
#menu-principal .navbar-brand {
width: 220px;
}
}
#menu-principal .active a.nav-link { #menu-principal .active a.nav-link {
color: #C84227; color: #ffb284;
} }
#menu-principal .navbar-toggler { #menu-principal .navbar-toggler {
@ -12099,7 +12049,7 @@ body {
#menu-principal .fa-bars { #menu-principal .fa-bars {
font-size: 1.8rem; font-size: 1.8rem;
color: #C84227; color: #f8f9fa;
} }
#menu-principal.reduit .navbar-brand { #menu-principal.reduit .navbar-brand {
@ -12107,16 +12057,14 @@ body {
} }
#menu-principal .dropdown-menu { #menu-principal .dropdown-menu {
font-size: 1.2rem; background: #399975;
background: #f2f2f2;
color: #00ADCB;
border-radius: 0 0 0.2rem 0.2rem; border-radius: 0 0 0.2rem 0.2rem;
border: none; border: none;
} }
#menu-principal .dropdown-item:focus, #menu-principal .dropdown-item:hover, #menu-principal .nav-link:hover { #menu-principal .dropdown-item:focus, #menu-principal .dropdown-item:hover {
background: rgba(255, 255, 255, 0.2); background: rgba(255, 255, 255, 0.2);
color: #C84227; color: white;
} }
@media (min-width: 1200px) { @media (min-width: 1200px) {
@ -12144,19 +12092,12 @@ body {
} }
#menu-principal .dropdown-menu { #menu-principal .dropdown-menu {
margin-top: 0; margin-top: 0;
background: white;
} }
#menu-principal .dropdown-item { #menu-principal .dropdown-item {
text-align: left; text-align: left;
font-size: 1.2rem;
white-space: nowrap;
} }
} }
#liste-deroulante {
width: 100%;
}
#liste-deroulante ul { #liste-deroulante ul {
list-style-type: none; list-style-type: none;
} }
@ -12210,7 +12151,7 @@ body {
#texte-presentation .contenu { #texte-presentation .contenu {
align-self: center; align-self: center;
padding: 1.5rem; padding: 1.5rem;
background: rgba(255, 255, 255, 0.92); background: url("../images/bg-encadre-blanc3.jpg");
background-size: cover; background-size: cover;
background-repeat: no-repeat; background-repeat: no-repeat;
border-radius: 0.2rem; border-radius: 0.2rem;
@ -12246,14 +12187,7 @@ body {
} }
.a-la-une { .a-la-une {
color: #00ADCB; color: #0c8d5c;
}
#barre-recherche input {
vertical-align: middle;
padding: 0.375rem 0.75rem;
border-radius: 0.2rem;
border: solid 1px lightgrey;
} }
#agenda, .dernieres-nouvelles { #agenda, .dernieres-nouvelles {
@ -12270,7 +12204,7 @@ body {
#agenda .h3, .dernieres-nouvelles .h3 { #agenda .h3, .dernieres-nouvelles .h3 {
font-weight: 700; font-weight: 700;
margin: 1.5rem; margin: 1.5rem;
color: #00ADCB; color: #0c8d5c;
} }
#agenda .h5, .dernieres-nouvelles .h5 { #agenda .h5, .dernieres-nouvelles .h5 {
@ -12280,6 +12214,7 @@ body {
.dernieres-nouvelles { .dernieres-nouvelles {
text-align: left; text-align: left;
padding: 0 1.2rem; padding: 0 1.2rem;
border-left: solid 1px #dd7f51;
} }
.agenda-evenement { .agenda-evenement {
@ -12346,7 +12281,7 @@ body {
} }
.bloc-ville:hover div { .bloc-ville:hover div {
color: #C84227; color: #dd7f51;
} }
#nous-contacter { #nous-contacter {
@ -12414,7 +12349,7 @@ body {
} }
.diapo-texte { .diapo-texte {
background-color: #00ADCB; background-color: #0c8d5c;
padding: 2rem; padding: 2rem;
align-self: center; align-self: center;
width: 70%; width: 70%;
@ -12422,7 +12357,7 @@ body {
} }
.diapo-bouton { .diapo-bouton {
background-color: #00ADCB; background-color: #0c8d5c;
border: solid 2px white; border: solid 2px white;
border-radius: 0.2rem; border-radius: 0.2rem;
padding: 0.5rem 2rem; padding: 0.5rem 2rem;
@ -12468,7 +12403,7 @@ body {
/***************************** FOOTER *********************************/ /***************************** FOOTER *********************************/
/**********************************************************************/ /**********************************************************************/
#footer-infos { #footer-infos {
background: #00ADCB; background: #3E8050;
padding: 3rem 0; padding: 3rem 0;
} }
@ -12484,7 +12419,7 @@ body {
} }
.footer h4 { .footer h4 {
color: white; color: #ffb284;
font-weight: 600; font-weight: 600;
} }
@ -12494,7 +12429,7 @@ body {
} }
.footer .footer-options { .footer .footer-options {
background: #00ADCB; background: #3E8050;
padding: 0 0 2rem 0; padding: 0 0 2rem 0;
} }
@ -12582,40 +12517,57 @@ body {
} }
.footer .pages-footer li:hover a { .footer .pages-footer li:hover a {
color: white; color: #ffb284;
}
.page_sommaire .footer-options, .page_sommaire #footer-infos {
background: #FFF0C7;
color: black !important;
}
.page_sommaire .footer-options h4, .page_sommaire #footer-infos h4 {
color: #3E8050;
}
.page_sommaire .footer-options a, .page_sommaire .footer-options .grille a, .page_sommaire #footer-infos a, .page_sommaire #footer-infos .grille a {
color: black;
}
.page_sommaire .footer-options .pages-footer li:hover a, .page_sommaire #footer-infos .pages-footer li:hover a {
color: #595959;
} }
/**********************************************************************/ /**********************************************************************/
/************************ PAGE STATIQUE ****************************/ /************************ PAGE ASSOCIATION ****************************/
/**********************************************************************/ /**********************************************************************/
#menu-agora, #menu-methode, #menu-groupes, #menu-medias, #menu-espace_membre { #menu-association, #menu-methode, #menu-groupes, #menu-medias, #menu-espace_membre {
background: #C84227; background: #dd7f51;
margin: 1rem 0; margin: 1rem 0;
border-radius: 0.2rem; border-radius: 0.2rem;
padding: 0; padding: 0;
} }
#menu-agora .active a, #menu-methode .active a, #menu-groupes .active a, #menu-medias .active a, #menu-espace_membre .active a { #menu-association .active a, #menu-methode .active a, #menu-groupes .active a, #menu-medias .active a, #menu-espace_membre .active a {
color: #fff99d; color: #fff99d;
} }
#menu-agora ul, #menu-methode ul, #menu-groupes ul, #menu-medias ul, #menu-espace_membre ul { #menu-association ul, #menu-methode ul, #menu-groupes ul, #menu-medias ul, #menu-espace_membre ul {
width: 100%; width: 100%;
} }
#menu-agora li, #menu-methode li, #menu-groupes li, #menu-medias li, #menu-espace_membre li { #menu-association li, #menu-methode li, #menu-groupes li, #menu-medias li, #menu-espace_membre li {
padding: 0.5rem; padding: 0.5rem;
} }
#menu-agora li a, #menu-methode li a, #menu-groupes li a, #menu-medias li a, #menu-espace_membre li a { #menu-association li a, #menu-methode li a, #menu-groupes li a, #menu-medias li a, #menu-espace_membre li a {
color: white; color: white;
} }
#menu-agora li:not(:last-of-type), #menu-methode li:not(:last-of-type), #menu-groupes li:not(:last-of-type), #menu-medias li:not(:last-of-type), #menu-espace_membre li:not(:last-of-type) { #menu-association li:not(:last-of-type), #menu-methode li:not(:last-of-type), #menu-groupes li:not(:last-of-type), #menu-medias li:not(:last-of-type), #menu-espace_membre li:not(:last-of-type) {
border-bottom: solid 1px #f8f9fa; border-bottom: solid 1px #f8f9fa;
} }
#menu-agora .navbar-toggler, #menu-methode .navbar-toggler, #menu-groupes .navbar-toggler, #menu-medias .navbar-toggler, #menu-espace_membre .navbar-toggler { #menu-association .navbar-toggler, #menu-methode .navbar-toggler, #menu-groupes .navbar-toggler, #menu-medias .navbar-toggler, #menu-espace_membre .navbar-toggler {
border: none; border: none;
color: white; color: white;
width: 100%; width: 100%;
@ -12637,7 +12589,7 @@ body {
} }
@media (min-width: 992px) { @media (min-width: 992px) {
#menu-groupes li:not(:last-of-type), #menu-agora li:not(:last-of-type), #menu-medias li:not(:last-of-type), #menu-espace_membre li:not(:last-of-type) { #menu-groupes li:not(:last-of-type), #menu-medias li:not(:last-of-type), #menu-espace_membre li:not(:last-of-type) {
border: none; border: none;
} }
} }
@ -12684,14 +12636,8 @@ body {
.articles-groupe { .articles-groupe {
display: inline-block; display: inline-block;
padding: 1rem; padding: 1rem;
background: #f2f2f2; background: #dd7f51;
border-radius: 0.5rem 0.5rem 0 0; border-radius: 0.5rem 0.5rem 0 0;
color: #595959;
}
.btn.bouton-rediger {
margin: 0;
background: #00ADCB;
color: white; color: white;
} }
@ -12703,6 +12649,7 @@ body {
} }
.formulaire_spip .boutons .btn, .boutons .btn { .formulaire_spip .boutons .btn, .boutons .btn {
font-size: 1.2rem;
line-height: 1rem; line-height: 1rem;
padding: 1rem; padding: 1rem;
border: solid 1px #f8f9fa; border: solid 1px #f8f9fa;
@ -12737,7 +12684,7 @@ body {
} }
.formulaire_spip .boutons .submit, .formulaire_spip .boutons .btn_editer, .boutons .submit, .boutons .btn_editer { .formulaire_spip .boutons .submit, .formulaire_spip .boutons .btn_editer, .boutons .submit, .boutons .btn_editer {
background-color: #00ADCB; background-color: #3E8050;
color: #f8f9fa; color: #f8f9fa;
padding: 1rem; padding: 1rem;
line-height: 1rem; line-height: 1rem;
@ -12754,20 +12701,14 @@ body {
} }
.btn.bouton-login { .btn.bouton-login {
background: rgba(255, 255, 255, 0.92); background: #dd7f51;
border-radius: 0.2rem; border-radius: 0.2rem;
color: black; color: #333 !important;
} }
.btn.bouton-login:hover { .btn.bouton-login:hover {
color: white; color: black;
background-color: #C84227; background-color: #ffb284;
}
#menu-principal .btn.bouton-login {
background: #00ADCB;
font-size: 1.1rem;
color: white;
} }
.bouton-toggle { .bouton-toggle {
@ -12858,16 +12799,16 @@ body {
color: red; color: red;
} }
.docs-article .btn_poubelle :hover { .docs-article .btn_poubelle:hover {
color: #ee9e9e; color: #b30000;
} }
.docs-article .btn_une { .docs-article .btn_une {
color: black; color: grey;
} }
.docs-article .btn_une :hover { .docs-article .btn_une:hover {
color: grey; color: black;
} }
.docs-article .boutons_actions { .docs-article .boutons_actions {
@ -12883,9 +12824,8 @@ body {
background-color: #f2f2f2; background-color: #f2f2f2;
} }
.docs-article .boutons_actions i.green { .docs-article .boutons_actions i {
padding: .6rem; padding: 0 0.6rem;
color: #1c9e1c;
} }
.docs-article .boutons_actions a { .docs-article .boutons_actions a {
@ -12893,6 +12833,7 @@ body {
} }
.docs-article .boutons_actions .premier-plan { .docs-article .boutons_actions .premier-plan {
color: #1c9e1c;
display: -webkit-box; display: -webkit-box;
display: flex; display: flex;
-webkit-box-orient: horizontal; -webkit-box-orient: horizontal;
@ -12901,6 +12842,7 @@ body {
-webkit-box-align: center; -webkit-box-align: center;
align-items: center; align-items: center;
padding: 0.2rem; padding: 0.2rem;
font-size: 1rem;
} }
.titre_img { .titre_img {
@ -12967,10 +12909,6 @@ body {
text-align: center; text-align: center;
} }
.cellule-tableau .btn {
padding: 0 0.75rem;
}
/**********************************************************************/ /**********************************************************************/
/****************************** FORUM *********************************/ /****************************** FORUM *********************************/
/**********************************************************************/ /**********************************************************************/
@ -13024,7 +12962,7 @@ body {
} }
#page-contact .formulaire_nous_contacter input.submit { #page-contact .formulaire_nous_contacter input.submit {
background-color: #00ADCB; background-color: #3E8050;
color: #f8f9fa; color: #f8f9fa;
padding: 1rem; padding: 1rem;
line-height: 1rem; line-height: 1rem;

View file

@ -1,12 +0,0 @@
[(#SESSION{id_auteur}|oui)
[(#ENV{id_article}|oui)
[(#AUTORISER{modifier, article, #ENV{id_article}}|?{
<div class="ajax">
[(#FORMULAIRE_EDITER_GROUPE{#ENV{id_article},#URL_PAGE{gerer_auteurs}})]<br>
</div>
,
<div class="reponse_formulaire reponse_formulaire_erreur">Votre compte ne fait pas partie des auteurs autorisés à modifier cet article.</div>
})]
]
]

View file

@ -59,6 +59,11 @@
<i class="fas fa-users"></i> Gérer les membres <i class="fas fa-users"></i> Gérer les membres
</a> </a>
</li> </li>
<li class="separ">
<a class="btn bouton-footer" href="https://docs.google.com/document/d/1rkWzO24syOPHp3q0rox26b66b8bIJzGQi_BKTAowsWM/edit#" title="Mode d'emploi du site" target="_blank">
<i class="fas fa-info-circle"></i> Mode d'emploi du site
</a>
</li>
<?php <?php
} }
?> ?>
@ -92,11 +97,6 @@
if (!isset($GLOBALS['visiteur_session']['id_auteur'])) { if (!isset($GLOBALS['visiteur_session']['id_auteur'])) {
?> ?>
<ul class="nav a-droite"> <ul class="nav a-droite">
<li class="separ">
<a class="btn bouton-login" href="[(#URL_PAGE{espace_membre})]" rel="nofollow" title="Connexion">
<i class="fas fa-user"></i> Espace membre
</a>
</li>
<?php <?php
} }
?> ?>

View file

@ -83,10 +83,10 @@
<fieldset> <fieldset>
<legend><i class="fas fa-users"></i> Destinataire du formulaire de contact</legend> <legend><i class="fas fa-users"></i> Destinataire du formulaire de contact</legend>
<select id="id_contact" name="Tid_destinataires[]" class="chosen" multiple> <select id="id_contact" name="id_contact" class="chosen">
<option value="">&nbsp;</option> <option value="">&nbsp;</option>
<BOUCLE_auteurs(AUTEURS){tous}{par nom}> <BOUCLE_auteurs(AUTEURS){tous}{par nom}>
<option value="#ID_AUTEUR" [(#ENV{Tid_destinataires}|find{#ID_AUTEUR}|oui) selected]>#NOM</option> <option value="#ID_AUTEUR" [(#ID_AUTEUR|=={#ENV{id_contact}}|oui) selected]>#NOM</option>
</BOUCLE_auteurs> </BOUCLE_auteurs>
</select> </select>
</fieldset> </fieldset>

View file

@ -164,6 +164,7 @@ function formulaires_editer_auteur_verifier_dist(
$oblis[] = 'new_login'; $oblis[] = 'new_login';
} }
// mais il reste obligatoire si on a rien trouve // mais il reste obligatoire si on a rien trouve
$erreurs = [];
$erreurs = formulaires_editer_objet_verifier('auteur', $id_auteur, $oblis); $erreurs = formulaires_editer_objet_verifier('auteur', $id_auteur, $oblis);
if (isset($erreurs['new_login'])) { if (isset($erreurs['new_login'])) {
$erreurs['login'] = $erreurs['new_login']; $erreurs['login'] = $erreurs['new_login'];

View file

@ -5,15 +5,12 @@
#ACTION_FORMULAIRE{#ENV{action}} #ACTION_FORMULAIRE{#ENV{action}}
<div class="boutons a-droite d-block d-sm-flex"> <div class="boutons a-droite">
[(#ENV{id_article}|>{0}|oui) [(#ENV{id_article}|>{0}|oui)
[(#INCLURE{fond=inclure/bouton_supprimer,id_article=#ENV{id_article},groupe=oui})] [(#INCLURE{fond=inclure/bouton_supprimer,id_article=#ENV{id_article}})]
] ]
<a class="btn" href="[(#URL_PAGE{groupes}|parametre_url{id_article,#ENV{id_article}}|parametre_url{statut,#ENV{statut}})]"> <a class="btn" href="[(#URL_PAGE{groupes}|parametre_url{id_article,#ENV{id_article}}|parametre_url{statut,#ENV{statut}})]">
<i class="fas fa-search"></i> Voir la page du groupe</a> <i class="fas fa-search"></i> Voir la page du groupe</a>
<button type="submit" class="submit btn">
<i class="fas fa-save"></i> Enregistrer</a>
</button>
</div> </div>
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>] [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
@ -22,19 +19,47 @@
<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}">
</div> </div>
<div class="soustitre regulier [(#ENV{ponctuel}|=={on}) hide]"> <div class="soustitre regulier [(#ENV{ponctuel}|=={on}) hide]">
<label for="soustitre">Lien de la page Action populaire <i>"https://actionpopulaire.fr/groupes/..."</i></label> <label for="soustitre">Adresse des réunions</label>
<input class="text" type="text" name="soustitre" value="#ENV{soustitre}"> <input class="text" type="text" name="soustitre" value="#ENV{soustitre}">
</div> </div>
[(#REM) Pas utilisé par FI05
<div class="dates regulier [(#ENV{ponctuel}|=={on}) hide]"> <div class="dates regulier [(#ENV{ponctuel}|=={on}) hide]">
<label for="descriptif">Dates et horaires</label> <label for="descriptif">Dates et horaires</label>
<textarea class="text" type="text" name="descriptif">#ENV{descriptif}</textarea> <textarea class="text" type="text" name="descriptif">#ENV{descriptif}</textarea>
</div>] </div>
<div class="editer texte"> <div class="editer texte">
<label for="texte">Informations complémentaires</label> <label for="texte">Informations complémentaires</label>
<textarea class="text" type="text" name="texte">#ENV{texte}</textarea> <textarea class="text" type="text" name="texte">#ENV{texte}</textarea>
@ -105,29 +130,24 @@
<div class="col-lg-3"> <div class="col-lg-3">
[(#SET{T_id_auteurs, #ENV{T_id_auteurs}|sinon{#ARRAY}})] [(#SET{T_id_auteurs, #ENV{T_id_auteurs}|sinon{#ARRAY}})]
[(#SET{T_id_admins, #ENV{T_id_admins}|sinon{#ARRAY}})]
<fieldset> <fieldset>
<legend><i class="fas fa-users"></i> Membres</legend> <legend><i class="fas fa-users"></i> Responsables</legend>
<label for="auteurs">Membres du groupe</label> <label for="auteurs">Animateurs du groupe</label>
<select id="auteurs" name="Tauteurs[]" class="chosen" multiple> <select id="auteurs" name="Tauteurs[]" class="chosen" multiple>
<option value="">&nbsp;</option> <option value="">&nbsp;</option>
<BOUCLE_auteurs(AUTEURS){tous}{statut IN '0minirezo','1comite'}{par nom}> <BOUCLE_auteurs(AUTEURS){tous}{par nom}{webmestre != oui}>
<option value="#ID_AUTEUR" [(#ID_AUTEUR|in_array{#GET{T_id_auteurs}}|oui) selected]>#NOM</option> <option value="#ID_AUTEUR" [(#ID_AUTEUR|in_array{#GET{T_id_auteurs}}|oui) selected]>#NOM</option>
</BOUCLE_auteurs> </BOUCLE_auteurs>
</select> </select>
</fieldset> </fieldset>
<fieldset> <div class="boutons text-center">
<legend><i class="fas fa-star"></i> Admins</legend> <button type="submit" class="submit btn">
<label for="admins">Animateurs du groupe</label> <i class="fas fa-save"></i> Enregistrer</a>
<select id="admins" name="Tadmins[]" class="chosen" multiple> </button>
<option value="">&nbsp;</option> </div>
<BOUCLE_admins(AUTEURS){tous}{statut IN '0minirezo','1comite'}{par nom}{id_auteur in #GET{T_id_auteurs}}>
<option value="#ID_AUTEUR" [(#ID_AUTEUR|in_array{#GET{T_id_admins}}|oui) selected]>#NOM</option>
</BOUCLE_admins>
</select>
</fieldset>
</div> </div>
</div> </div>
</form> </form>

View file

@ -12,16 +12,20 @@ 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)) {
@ -32,30 +36,27 @@ function formulaires_editer_groupe_charger_dist($id_article=0, $redirect=''){
$valeurs = sql_fetsel('*', 'spip_articles', 'id_article='.intval($id_article)); $valeurs = sql_fetsel('*', 'spip_articles', 'id_article='.intval($id_article));
// Liste des membres $where = array(
$where1 = array(
'id_objet='.intval($id_article),
'objet="article"'
);
$res1 = sql_allfetsel('id_auteur','spip_auteurs_liens',$where1);
$valeurs['T_id_auteurs'] = array_column($res1,'id_auteur');
// Liste des admins
$where2 = array(
'id_objet='.intval($id_article), 'id_objet='.intval($id_article),
'objet="article"', 'objet="article"',
'role="admin"'
); );
$res2 = sql_allfetsel('id_auteur','spip_auteurs_liens',$where2); $res = sql_allfetsel('id_auteur','spip_auteurs_liens',$where);
$valeurs['T_id_admins'] = array_column($res2,'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['T_id_admins'] = 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;
} }
@ -75,15 +76,33 @@ function formulaires_editer_groupe_verifier_dist($id_article=0, $redirect=''){
} }
} }
if (!lire_config('balint/id_rub_groupes')){
$erreurs['message_erreur'] = "Problème de configuration du site : veuillez renseigner la rubrique dédiée aux groupes dans les paramètres du plugin."; if (_request('ponctuel')!="on"){
// 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)
// il faut au minimum titre (nom) pour créer un article if (preg_match('/[?!:]/', _request('surtitre'))){
if (_request('titre') == ''){ $erreurs['message_erreur'] = "La ville ne doit pas comprendre de signes de ponctuation comme ? ! ou :";
$erreurs['message_erreur'] = "Il faut obligatoirement un nom pour créer un groupe régulier.";
return $erreurs; return $erreurs;
} }
@ -95,14 +114,10 @@ function formulaires_editer_groupe_verifier_dist($id_article=0, $redirect=''){
} }
function formulaires_editer_groupe_traiter_dist($id_article=0, $redirect=''){ function formulaires_editer_groupe_traiter_dist($id_article=0, $redirect=''){
refuser_traiter_formulaire_ajax();
$new = $id_article; $new = $id_article;
if (!intval($id_article)) { if (!intval($id_article)) {
$id_rubrique = lire_config('balint/id_rub_groupes'); $id_rubrique = intval(_request('id_rubrique'));
include_spip('action/editer_article'); include_spip('action/editer_article');
$set = array( $set = array(
'statut' => 'publie' 'statut' => 'publie'
@ -118,12 +133,18 @@ 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,
@ -132,25 +153,30 @@ 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(
'id_objet='.intval($id_article), 'id_objet='.intval($id_article),
'objet="article"' 'objet="article"',
); );
$ids_auteurs = sql_allfetsel('id_auteur', 'spip_auteurs_liens', $where); $ids_auteurs = sql_allfetsel('id_auteur', 'spip_auteurs_liens', $where);
$ids_auteurs = array_column($ids_auteurs, 'id_auteur'); $ids_auteurs = array_column($ids_auteurs, 'id_auteur');
$Tauteurs = _request('Tauteurs') ?? [];
$Tauteurs = _request('Tauteurs');
$Tadmins = _request('Tadmins');
if (count($Tauteurs)) { if (count($Tauteurs)) {
$associer = array_diff($Tauteurs, $ids_auteurs); $associer = array_diff($Tauteurs, $ids_auteurs);
$dissocier = array_diff($ids_auteurs, $Tauteurs); $dissocier = array_diff($ids_auteurs, $Tauteurs);
@ -158,24 +184,6 @@ function formulaires_editer_groupe_traiter_dist($id_article=0, $redirect=''){
objet_associer( array('auteur' => $associer),array('article' => intval($id_article) )); objet_associer( array('auteur' => $associer),array('article' => intval($id_article) ));
objet_dissocier( array('auteur' => $dissocier) , array('article' =>intval($id_article) )); objet_dissocier( array('auteur' => $dissocier) , array('article' =>intval($id_article) ));
} }
else{
sql_delete('spip_auteurs_liens', $where);
}
if (count($Tadmins)) {
$liste_admins = implode(',' , $Tadmins);
$where2 = array(
'id_objet='.intval($id_article),
'objet="article"',
'id_auteur IN (' . $liste_admins . ')'
);
sql_updateq('spip_auteurs_liens', array('role' => ''), $where);
sql_updateq('spip_auteurs_liens', array('role' => 'admin'), $where2);
}
else{
sql_updateq('spip_auteurs_liens', array('role' => ''), $where);
}
// maj des mots fermes // maj des mots fermes
$T_id_groupe = sql_allfetsel('id_groupe','spip_groupes_mots','grigri!="tags"'); $T_id_groupe = sql_allfetsel('id_groupe','spip_groupes_mots','grigri!="tags"');
@ -195,7 +203,7 @@ function formulaires_editer_groupe_traiter_dist($id_article=0, $redirect=''){
$ids_mots = sql_allfetsel('M.id_mot AS id_mot', $from, $where); $ids_mots = sql_allfetsel('M.id_mot AS id_mot', $from, $where);
$ids_mots = array_column($ids_mots, 'id_mot'); $ids_mots = array_column($ids_mots, 'id_mot');
$coches = _request('id_groupe_'.$id_groupe); $coches = _request('id_groupe_'.$id_groupe) ?? [];
if (count($coches)) { if (count($coches)) {
$associer = array_diff($coches, $ids_mots); $associer = array_diff($coches, $ids_mots);
$dissocier = array_diff($ids_mots, $coches); $dissocier = array_diff($ids_mots, $coches);
@ -269,15 +277,14 @@ 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é.";
// on redirige vers la ville // Si c'est un groupe ponctuel, on redirige vers le pays, sinon vers la ville
if ($redirect == ""){ if (_request('ponctuel')=="on"){
$retour['redirect'] = "spip.php?page=editer_groupe&id_article=$id_article"; $retour['redirect'] = "spip.php?page=groupes&id_rubrique=$id_rubrique";
} }
else { else{
$retour['redirect'] = $redirect; $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

@ -161,6 +161,7 @@ function formulaires_editer_membre_verifier_dist(
$oblis[] = 'new_login'; $oblis[] = 'new_login';
} }
// mais il reste obligatoire si on a rien trouve // mais il reste obligatoire si on a rien trouve
$erreurs = [];
$erreurs = formulaires_editer_objet_verifier('auteur', $id_auteur, $oblis); $erreurs = formulaires_editer_objet_verifier('auteur', $id_auteur, $oblis);
if (isset($erreurs['new_login'])) { if (isset($erreurs['new_login'])) {
$erreurs['login'] = $erreurs['new_login']; $erreurs['login'] = $erreurs['new_login'];

View file

@ -1,5 +1,5 @@
<link rel="stylesheet" href="[(#CHEMIN{css/tag_editor.css}|compacte|timestamp)]"> <link rel="stylesheet" href="[(#CHEMIN{css/tag_editor.css}|compacte|timestamp)]">
<div class="ajax formulaire_spip formulaire_#FORM"> <div class="formulaire_spip formulaire_#FORM ajax">
<form name="formulaire_#FORM" action="#ENV{action}" method="post" enctype="multipart/form-data"> <form name="formulaire_#FORM" action="#ENV{action}" method="post" enctype="multipart/form-data">
@ -9,11 +9,7 @@
[(#INCLURE{fond=inclure/bouton_supprimer,id_article=#ENV{id_article}})] [(#INCLURE{fond=inclure/bouton_supprimer,id_article=#ENV{id_article}})]
] ]
<a class="btn" href="[(#URL_PAGE{article}|parametre_url{id_article,#ENV{id_article}}|parametre_url{statut,#ENV{statut}})]"> <a class="btn" href="[(#URL_PAGE{article}|parametre_url{id_article,#ENV{id_article}}|parametre_url{statut,#ENV{statut}})]">
<i class="fas fa-search"></i> Voir l'article <i class="fas fa-search"></i> Voir l'article</a>
</a>
<button type="submit" class="submit btn">
<i class="fas fa-save"></i> Enregistrer</a>
</button>
</div> </div>
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>] [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
@ -29,14 +25,18 @@
<input class="text" type="text" name="titre" value="#ENV{titre}"> <input class="text" type="text" name="titre" value="#ENV{titre}">
</div> </div>
<div class="soustitre editer">
<label for="soustitre">Sous-titre</label>
<input class="text" type="text" name="soustitre" value="#ENV{soustitre}">
</div>
<div class="date_agenda editer"> <div class="date_agenda editer">
<label for="date_agenda">Date Agenda</br> <label for="date_agenda">Date Agenda</br>
<small>Elle s'affiche uniquement pour les articles de l'emplacement "Agenda".</small> <small>Elle s'affiche pour les articles dans les emplacement "Agenda" (page Accueil) et "Séminaires".</small>
</label> </label>
<input class="text" type="text" name="date_agenda" value="#ENV{date_agenda}"> <input class="text" type="text" name="date_agenda" value="#ENV{date_agenda}">
</div> </div>
[(#REM)
<div class="descriptif editer"> <div class="descriptif editer">
<label for="descriptif">Résumé</br> <label for="descriptif">Résumé</br>
<small>Texte qui s'affiche dans la vignette d'aperçu de l'article (sous le titre).</br> <small>Texte qui s'affiche dans la vignette d'aperçu de l'article (sous le titre).</br>
@ -45,7 +45,6 @@
</label> </label>
<textarea class="text" type="text" name="descriptif">#ENV{descriptif}</textarea> <textarea class="text" type="text" name="descriptif">#ENV{descriptif}</textarea>
</div> </div>
]
<div class="texte editer"> <div class="texte editer">
<label for="texte">Contenu de l'article</br> <label for="texte">Contenu de l'article</br>
@ -95,8 +94,8 @@
<fieldset class="upload_vignette"> <fieldset class="upload_vignette">
<legend><i class="fas fa-paperclip"></i> Images et fichiers</legend> <legend><i class="fas fa-paperclip"></i> Images et fichiers</legend>
<label for=""><small>largeur conseillée pour l'image principale : entre 1024 et 2048 pixels</small></label> <label for=""><small>largeur conseillée: entre 1024 et 2048 pixels</small></label>
<div class="ajax"> <div class="ajax les_photos">
<INCLURE{fond=inclure/bigform,env}> <INCLURE{fond=inclure/bigform,env}>
</div> </div>
<INCLURE{fond=inclure/editer_docs_article,env,id_article=#ENV{id_article},ajax=les_photos,type=article}> <INCLURE{fond=inclure/editer_docs_article,env,id_article=#ENV{id_article},ajax=les_photos,type=article}>
@ -120,7 +119,6 @@
] ]
</div> </div>
<div class="col-lg-3 formulaire-col-droite"> <div class="col-lg-3 formulaire-col-droite">
<BOUCLE_doc(DOCUMENTS){id_article}{extension==jpg|png|gif}{statut in prop,prepa,publie}{credits=une}> <BOUCLE_doc(DOCUMENTS){id_article}{extension==jpg|png|gif}{statut in prop,prepa,publie}{credits=une}>
<div class="photo-premier-plan"> <div class="photo-premier-plan">
@ -134,29 +132,33 @@
<option value="publie" [(#ENV{statut,publie}|=={publie}|oui) selected="selected"]>Publié</option> <option value="publie" [(#ENV{statut,publie}|=={publie}|oui) selected="selected"]>Publié</option>
<option value="prepa" [(#ENV{statut}|=={prepa}|oui) selected="selected"]>Brouillon</option> <option value="prepa" [(#ENV{statut}|=={prepa}|oui) selected="selected"]>Brouillon</option>
</select> </select>
[<i class="fa fa-clock-o" aria-hidden="true"></i> Dernier enregistrement :<br> (#MAJ|date_interface)]
</fieldset> </fieldset>
[(#SESSION{statut}|=={0minirezo}|oui) [(#SESSION{statut}|=={0minirezo}|oui)
[(#VAL{}|setenv{id_auteur})] [(#VAL{}|setenv{id_auteur})]
] ]
[(#SESSION{statut}|=={0minirezo}|non) [(#SESSION{statut}|=={0minirezo}|non)
[(#SESSION{id_auteur}|setenv{id_auteur})] [(#SESSION{id_auteur}|setenv{id_auteur})]
] ]
[(#REM) les membres ne peuvent publier que dans l'espace membre + leur groupe, les admins dans toutes les rubriques]
<fieldset> <fieldset>
<legend><i class="fas fa-globe"></i> Groupe</legend> <legend><i class="fas fa-globe"></i> Groupe</legend>
<select id="id_groupe" name="id_groupe" class="chosen"> <select id="id_groupe" name="id_groupe" class="chosen">
<option value="">&nbsp;</option> <option value="">&nbsp;</option>
<BOUCLE_villes(ARTICLES){id_rubrique = #CONFIG{balint/id_rub_groupes}}{id_auteur?}> <BOUCLE_pays(RUBRIQUES){id_parent = #CONFIG{balint/id_rub_groupes}}{tout}>
<option value="#ID_ARTICLE" [(#ENV{id_groupe}|=={#ID_ARTICLE}|oui) selected="selected"]>#TITRE</option> <optgroup label="#TITRE">
<BOUCLE_villes(ARTICLES){id_rubrique = #ID_RUBRIQUE}{fusion surtitre}{par surtitre}>
<BOUCLE_groupes(ARTICLES){surtitre = #SURTITRE}{0,1}{id_auteur?}>
<option value="#ID_ARTICLE" [(#ENV{id_groupe}|=={#ID_ARTICLE}|oui) selected="selected"]>#SURTITRE</option>
</BOUCLE_groupes>
</BOUCLE_villes> </BOUCLE_villes>
</optgroup>
</BOUCLE_pays>
</select> </select>
</fieldset> </fieldset>
<B_mots_fermes>
<fieldset class="mots_fermes"> <fieldset class="mots_fermes">
<legend><i class="fas fa-thumb-tack"></i> Emplacements</legend> <legend><i class="fas fa-thumb-tack"></i> Emplacements</legend>
<div class=""> <div class="">
@ -164,47 +166,33 @@
[(#UNSEUL|=={oui}|oui) [(#UNSEUL|=={oui}|oui)
<option value="">&nbsp;</option> <option value="">&nbsp;</option>
] ]
<BOUCLE_agenda(MOTS){par rang}{titre=agenda}> <BOUCLE_mots_fermes(GROUPES_MOTS){grigri != tags}{si #SESSION{statut}|=={0minirezo}}>
#SET{selected,''}
<BOUCLE_arts_agenda(ARTICLES){id_article?}{id_mot?}>
[(#ID_MOT|oui) #SET{selected, selected}]
</BOUCLE_arts_agenda>
<optgroup label="Accueil">
<option value="#ID_MOT" #GET{selected}>#TITRE</option>
</optgroup>
</BOUCLE_agenda>
<BOUCLE_mots_admin(GROUPES_MOTS){grigri != tags}{si #SESSION{statut}|=={0minirezo}}{id_groupe!=#CONFIG{balint/id_mots_espace_membre}}>
<optgroup label="#TITRE"> <optgroup label="#TITRE">
<BOUCLE_mot(MOTS){id_groupe}{par rang}{titre!=agenda}> <BOUCLE_mot(MOTS){id_groupe}{par rang}>
#SET{selected,''} #SET{selected,''}
<BOUCLE_arts(ARTICLES){id_article?}{id_mot?}> <BOUCLE_arts(ARTICLES){id_article?}{id_mot?}>
[(#ID_MOT|oui) #SET{selected, selected}] [(#ID_MOT|oui) #SET{selected, selected}]
</BOUCLE_arts> </BOUCLE_arts>
<option value="#ID_MOT" #GET{selected}>#TITRE</option> <option value="#ID_MOT" #GET{selected}>#TITRE</option>
</BOUCLE_mot> </BOUCLE_mot>
</optgroup> </optgroup>
</BOUCLE_mots_admin> </BOUCLE_mots_fermes>
<BOUCLE_mots_redacteur(GROUPES_MOTS){grigri != tags}{id_groupe=#CONFIG{balint/id_mots_espace_membre}}>
<optgroup label="#TITRE">
<BOUCLE_mot2(MOTS){id_groupe}{par rang}>
#SET{selected,''}
<BOUCLE_arts2(ARTICLES){id_article?}{id_mot?}>
[(#ID_MOT|oui) #SET{selected, selected}]
</BOUCLE_arts2>
<option value="#ID_MOT" #GET{selected}>#TITRE</option>
</BOUCLE_mot2>
</optgroup>
</BOUCLE_mots_redacteur>
</select> </select>
</div> </div>
</fieldset> </fieldset>
</B_mots_fermes>
<div class="boutons text-center">
<button type="submit" class="submit btn">
<i class="fas fa-save"></i> Enregistrer</a>
</button>
</div>
</div> </div>
</div> </div>
</form> </form>
</div> </div>
<script src="[(#CHEMIN{js/tag_editor.min.js}|timestamp)]" type="text/javascript"></script> <script src="[(#CHEMIN{js/tag_editor.min.js}|timestamp)]" type="text/javascript"></script>

View file

@ -22,7 +22,6 @@ function formulaires_editer_post_charger_dist($id_article=0, $redirect=''){
$id_groupe = _request('id_groupe'); $id_groupe = _request('id_groupe');
$valeurs = array(); $valeurs = array();
$valeurs['id_article'] = $id_article;
$valeurs['titre'] = $titre; $valeurs['titre'] = $titre;
$valeurs['texte'] = $texte; $valeurs['texte'] = $texte;
$valeurs['soustitre'] = $soustitre; $valeurs['soustitre'] = $soustitre;
@ -61,7 +60,7 @@ function formulaires_editer_post_charger_dist($id_article=0, $redirect=''){
'L.objet="article"', 'L.objet="article"',
'L.id_gis=G.id_gis' 'L.id_gis=G.id_gis'
); );
$res = sql_fetsel('G.lat, G.lon', $from, $where); $res = sql_fetsel('G.lat, G.lon', $from, $where) ?? [];
if (count($res)) { if (count($res)) {
$valeurs['lat'] = $res['lat']; $valeurs['lat'] = $res['lat'];
$valeurs['lon'] = $res['lon']; $valeurs['lon'] = $res['lon'];
@ -103,16 +102,16 @@ function formulaires_editer_post_verifier_dist($id_article=0, $redirect=''){
} }
$bigform = charger_fonction('bigform_verifier','inc'); $bigform = charger_fonction('bigform_verifier','inc');
$options = ['mime' => 'tout_mime','taille_max'=>'5000','largeur_max'=>'3000','hauteur_max'=>'3000']; $taille_max = intval(lire_config('bigup/max_file_size')) * 1000;
$largeur_max = (defined('_IMG_MAX_WIDTH') ? _IMG_MAX_WIDTH : 2048);
$hauteur_max = (defined('_IMG_MAX_HEIGHT') ? _IMG_MAX_HEIGHT : 2048);
$options = ['mime' => 'tout_mime','taille_max'=> $taille_max, 'largeur_max'=> $largeur_max, 'hauteur_max'=> $hauteur_max];
$bigform($options,$erreurs); $bigform($options,$erreurs);
return $erreurs; return $erreurs;
} }
function formulaires_editer_post_traiter_dist($id_article = 0, $redirect = ''){ function formulaires_editer_post_traiter_dist($id_article = 0, $redirect = ''){
refuser_traiter_formulaire_ajax();
$new = $id_article; $new = $id_article;
$id_rubrique = lire_config('balint/id_rub_articles'); $id_rubrique = lire_config('balint/id_rub_articles');
@ -159,7 +158,7 @@ function formulaires_editer_post_traiter_dist($id_article = 0, $redirect = ''){
); );
$ids_auteurs = sql_allfetsel('id_auteur', 'spip_auteurs_liens', $where); $ids_auteurs = sql_allfetsel('id_auteur', 'spip_auteurs_liens', $where);
$ids_auteurs = array_column($ids_auteurs, 'id_auteur'); $ids_auteurs = array_column($ids_auteurs, 'id_auteur');
$Tauteurs = _request('Tauteurs'); $Tauteurs = _request('Tauteurs') ?? [];
if (count($Tauteurs)) { if (count($Tauteurs)) {
$associer = array_diff($Tauteurs, $ids_auteurs); $associer = array_diff($Tauteurs, $ids_auteurs);
$dissocier = array_diff($ids_auteurs, $Tauteurs); $dissocier = array_diff($ids_auteurs, $Tauteurs);
@ -192,8 +191,7 @@ function formulaires_editer_post_traiter_dist($id_article = 0, $redirect = ''){
} }
} }
$coches = _request('id_emplacements'); $coches = _request('id_emplacements') ?? [];
if (count($coches)){ if (count($coches)){
$associer = array_diff($coches, $T_ids_mots); $associer = array_diff($coches, $T_ids_mots);
$dissocier = array_diff($T_ids_mots, $coches); $dissocier = array_diff($T_ids_mots, $coches);
@ -269,7 +267,8 @@ function formulaires_editer_post_traiter_dist($id_article = 0, $redirect = ''){
$retour = array(); $retour = array();
$retour['message_ok'] = "L'article est bien enregistré."; $retour['message_ok'] = "L'article est bien enregistré.";
if ($new==0){ if ($new==0){
$redirect .= '&id_article=' . $id_article; //$redirect .= '&id_article=' . $id_article;
$redirect = parametre_url($redirect, 'id_article', $id_article);
} }
$retour['redirect'] = $redirect; $retour['redirect'] = $redirect;

View file

@ -107,8 +107,7 @@ function formulaires_editer_sujet_traiter_dist($id_article = 0, $id_rubrique, $r
); );
$ids_auteurs = sql_allfetsel('id_auteur', 'spip_auteurs_liens', $where); $ids_auteurs = sql_allfetsel('id_auteur', 'spip_auteurs_liens', $where);
$ids_auteurs = array_column($ids_auteurs, 'id_auteur'); $ids_auteurs = array_column($ids_auteurs, 'id_auteur');
$Tauteurs = _request('Tauteurs'); $Tauteurs = _request('Tauteurs') ?? [];
if (count($Tauteurs)) {
$associer = array_diff($Tauteurs, $ids_auteurs); $associer = array_diff($Tauteurs, $ids_auteurs);
$dissocier = array_diff($ids_auteurs, $Tauteurs); $dissocier = array_diff($ids_auteurs, $Tauteurs);

125
formulaires/forum.html Normal file
View file

@ -0,0 +1,125 @@
<div class="formulaire_spip formulaire_forum ajax" id="formulaire_forum">
[<p class="reponse_formulaire reponse_formulaire_ok success">(#ENV*{message_ok})</p>]
[<p class="reponse_formulaire reponse_formulaire_erreur error">(#ENV*{message_erreur})</p>]
[(#ENV{login_forum_abo})
<INCLURE{fond=formulaires/inc-login_forum_abo, env} />
]
[(#ENV{editable})
<form action="#ENV{action}#formulaire_forum" method="post" enctype='multipart/form-data'><div>
#ACTION_FORMULAIRE
[<input type="hidden" name="id_forum" value="(#ENV*{id_forum})" />]
[<fieldset class="moderation_info info">
<legend><:forum:bouton_radio_modere_priori:></legend>
<p class="explication">(#ENV{modere})<:forum:forum_info_modere:></p>
</fieldset>]
<fieldset>
<legend><:forum:forum_message:></legend>[
(#CONFIG{forums_titre}|!={non}|non)
<input type="hidden" name="titre" id="titre"[ value="(#ENV{titre})"] />
]<div class="editer-groupe">
[<div class='editer saisie_mots_forum'>(#INCLURE{fond=formulaires/inc-forum_bloc_choix_mots, table=#ENV*{table}, ajouter_mot})</div>]
[(#CONFIG{forums_titre}|!={non}|oui)
<div class='editer saisie_titre obligatoire[ (#ENV**{erreurs}|table_valeur{titre}|oui)erreur]'>
<label for="titre"><:forum:forum_titre:> <:info_obligatoire_02:></label>
[<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{titre})</span>]
<input type="text" class="text" name="titre" id="titre"[ value="(#ENV{titre})"] size="60" />
</div>
]
[(#CONFIG{forums_texte}|!={non}|?{
<div class='editer saisie_texte obligatoire[ (#ENV**{erreurs}|table_valeur{texte}|oui)erreur]'>
<label for='texte'><:forum:forum_texte|typo:> <:info_obligatoire_02:></label>
[<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{texte})</span>]
[(#ENV**{config}|table_valeur{afficher_barre}|?{<p class='explication'><:info_creation_paragraphe:></p>,<p class="explication forum_saisie_texte_info"><:forum:forum_saisie_texte_info:></p>})]
<textarea name="texte" id="texte" rows="10" cols="60"[(#CONFIG{forums_afficher_barre}|=={non}|oui) class="no_barre"]>[(#ENV{texte})]</textarea>
</div>
})]
</div></fieldset>
[(#CONFIG{forums_urlref}|!={non}|?{
<div class="editer-groupe"><div class='fieldset'>
<fieldset>
<legend><:forum:forum_lien_hyper:></legend>
<p class='explication'><:forum:forum_page_url:></p>
<div class="editer-groupe">
<div class='editer saisie_nom_site[ (#ENV**{erreurs}|table_valeur{nom_site}|oui)erreur]'>
<label for="nom_site"><:forum:forum_titre:></label>
[<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{nom_site})</span>]
<input type="text" class="text" name="nom_site" id="nom_site" size="40" value="[(#ENV{nom_site})]" />
</div>
<div class='editer saisie_url_site[ (#ENV**{erreurs}|table_valeur{url_site}|oui)erreur]'>
<label for="url_site"><:forum:forum_lien_hyper:></label>
[<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{url_site})</span>]
<input type="text" class="text url" name="url_site" id="url_site" style="text-align: left;" dir="ltr" size="40" value="[(#ENV{url_site})]" autocapitalize="off" autocorrect="off" />
</div>
</div>
</fieldset>
</div>
</div>
})]
[
<fieldset>
<legend><:medias:bouton_ajouter_document:></legend>
<div class="editer-groupe">
<div class='editer saisie_document_forum[ (#ENV**{erreurs}|table_valeur{document_forum}|oui)erreur]'>
[<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{document_forum})</span>]
<input type="hidden" name="cle_ajouter_document" value="(#ENV{cle_ajouter_document})" />
[<div id="ajouter_document_up">(#ENV{ajouter_document})
<label for="supprimer_document_ajoute"><input type='checkbox' name='supprimer_document_ajoute' id='supprimer_document_ajoute' />
<:lien_supprimer:></label>
</div>]
<div>
[<label for="ajouter_document"><:forum:extensions_autorisees:> (#ENV{formats_documents_forum}|is_array|?{#ENV{formats_documents_forum}|join{', '},#ENV{formats_documents_forum}})</label>]
<input class='file' type="file" name="ajouter_document" id="ajouter_document"[
accept="(#ENV{formats_documents_forum}|is_array|?{#ENV{formats_documents_forum}|join{', '},''})"] />
</div>
</div>
</div></fieldset>
]
[(#REM) Piege a robots spammeurs, dont on change le nom a chaque fois,
][<p style="display: none;">
<label for="(#ENV{cle_ajouter_document})"><:antispam_champ_vide:></label>
<input type="text" class="text" name="#ENV{cle_ajouter_document}" id="#ENV{cle_ajouter_document}" value="#ENV{#ENV{cle_ajouter_document}}" size="10" />
</p>]
[(#ENV{cle_ajouter_document}|non)
<p style="display: none;">
<label for="nobot_forum"><:antispam_champ_vide:></label>
<input type="text" class="text" name="nobot" id="nobot_forum" value="#ENV{nobot}" size="10" />
</p>
]
<p class="boutons"><input type="submit" class="btn submit" name="previsualiser_message" value="<:forum:forum_voir_avant:>" />[
(#ENV{forcer_previsu}|=={non}|et{#ENV*{erreurs}|table_valeur{previsu}|non}|oui)<input type="submit" class="btn submit" name="envoyer_message" value="<:forum:forum_envoyer:>" />]</p>
</div>
</form>
[(#REM)
Bloc de previsualisation du forum envoye
Si on valide la previsu, on n'envoie pas en ajax car, si le post reussit
il faudra certainement redessiner toute la page pour afficher le nouveau
forum
][<form action="#ENV{action}#formulaire_forum" method="post" class="noajax">
<div>
#ACTION_FORMULAIRE
<input type='hidden' name='titre' value="#ENV{titre}" />
<input type='hidden' name='texte' value="#ENV{texte}" />
<input type='hidden' name='url_site' value="#ENV{url_site}" />
<input type='hidden' name='nom_site' value="#ENV{nom_site}" />
[<input type="hidden" name="id_forum" value="(#ENV*{id_forum})" />]
[(#INCLURE{fond=formulaires/inc-forum_ajouter_mot, ajouter_mot})]
(#ENV**{erreurs}|table_valeur{previsu})
</div>
</form>]
]
</div>

View file

@ -23,7 +23,7 @@
<div class='editer saisie_mdp_inscription obligatoire[ (#ENV*{erreurs}|table_valeur{mdp_inscription}|oui)erreur]'> <div class='editer saisie_mdp_inscription obligatoire[ (#ENV*{erreurs}|table_valeur{mdp_inscription}|oui)erreur]'>
<label for="mdp_inscription"><:entree_mot_passe:> <em class="obligatoire"><:info_obligatoire_02:></em></label> <label for="mdp_inscription"><:entree_mot_passe:> <em class="obligatoire"><:info_obligatoire_02:></em></label>
[<span class="erreur_message">(#ENV*{erreurs}|table_valeur{password})</span>] [<span class="erreur_message">(#ENV*{erreurs}|table_valeur{mdp_inscription})</span>]
<input type="password" class="formulaire_input text" name="password" id="password" value="#ENV{password}" [(#HTML5) [(#ENV{focus}|=={password}|oui)autofocus="autofocus" ]required="required"] autocapitalize="off" autocorrect="off" /> <input type="password" class="formulaire_input text" name="password" id="password" value="#ENV{password}" [(#HTML5) [(#ENV{focus}|=={password}|oui)autofocus="autofocus" ]required="required"] autocapitalize="off" autocorrect="off" />
</div> </div>
@ -32,7 +32,7 @@
[<span class="erreur_message">(#ENV*{erreurs}|table_valeur{password_confirmation})</span>] [<span class="erreur_message">(#ENV*{erreurs}|table_valeur{password_confirmation})</span>]
<input type="password" class="formulaire_input text" name="password_confirmation" id="password_confirmation" value="#ENV{password_confirmation}" [(#HTML5) [(#ENV{focus}|=={password_confirmation}|oui)autofocus="autofocus" ]required="required"] autocapitalize="off" autocorrect="off" /> <input type="password" class="formulaire_input text" name="password_confirmation" id="password_confirmation" value="#ENV{password_confirmation}" [(#HTML5) [(#ENV{focus}|=={password_confirmation}|oui)autofocus="autofocus" ]required="required"] autocapitalize="off" autocorrect="off" />
</div> </div>
<small><:motpassecomplexe:info_passe_trop_court{nb=8,nb_min=1,nb_maj=1,nb_int=1}:></small> <small><:info_passe_trop_court_car_pluriel{nb=7}:></small>
[(#REM) Piege a robots spammeurs ] [(#REM) Piege a robots spammeurs ]
<p style="display: none;"> <p style="display: none;">

View file

@ -14,8 +14,33 @@ if (!defined('_ECRIRE_INC_VERSION')) {
return; return;
} }
function formulaires_inscription_charger_dist($mode = '', $id = 0, $redirect ='') { /**
global $visiteur_session; *
* #FORMULAIRE_INSCRIPTION
* #FORMULAIRE_INSCRIPTION{6forum}
* #FORMULAIRE_INSCRIPTION{1comite,#ARRAY{id,#ENV{id_rubrique}}}
*
* Pour rediriger l'utilisateur apres soumission du formulaire vers une page qui lui dit de verifier ses mails par exemple :
* #FORMULAIRE_INSCRIPTION{6forum,'',#URL_PAGE{verifiez-vos-mails}}
*
* Pour rediriger l'utilisateur apres Clic dans le lien du mail de confirmation, pour lui confirmer son inscription par exemple
* #FORMULAIRE_INSCRIPTION{6forum,#ARRAY{redirect,#URL_PAGE{confirmation-inscription}}}
*
* Tout ensemble
* #FORMULAIRE_INSCRIPTION{6forum,#ARRAY{redirect,#URL_PAGE{confirmation-inscription}}, #URL_PAGE{verifiez-vos-mails}}
*
* Syntaxe legacy :
* #FORMULAIRE_INSCRIPTION{1comite,#ENV{id_rubrique}}
*
*
* @param string $mode
* @param array $options
* @param string $retour
* @return array|false
*/
function formulaires_inscription_charger_dist($mode = '', $options = [], $retour = '') {
$id = ($options['id'] ?? 0);
// fournir le mode de la config ou tester si l'argument du formulaire est un mode accepte par celle-ci // fournir le mode de la config ou tester si l'argument du formulaire est un mode accepte par celle-ci
// pas de formulaire si le mode est interdit // pas de formulaire si le mode est interdit
@ -25,10 +50,11 @@ function formulaires_inscription_charger_dist($mode = '', $id = 0, $redirect =''
} }
// pas de formulaire si on a déjà une session avec un statut égal ou meilleur au mode // pas de formulaire si on a déjà une session avec un statut égal ou meilleur au mode
if (isset($visiteur_session['statut']) && ($visiteur_session['statut'] <= $mode)) { if (isset($GLOBALS['visiteur_session']['statut']) and ($GLOBALS['visiteur_session']['statut'] <= $mode)) {
return false; return false;
} }
$valeurs = array('nom_inscription' => '', 'mail_inscription' => '', 'id' => $id, '_mode' => $mode); $valeurs = array('nom_inscription' => '', 'mail_inscription' => '', 'id' => $id, '_mode' => $mode);
$valeurs['password'] = ''; $valeurs['password'] = '';
@ -37,14 +63,21 @@ function formulaires_inscription_charger_dist($mode = '', $id = 0, $redirect =''
return $valeurs; return $valeurs;
} }
// Si inscriptions pas autorisees, retourner une chaine d'avertissement
function formulaires_inscription_verifier_dist($mode = '', $id = 0, $redirect ='') {
$erreurs = array(); /**
include_spip('inc/config'); * Si inscriptions pas autorisees, retourner une chaine d'avertissement
*
set_request("_upgrade_auteur"); // securite * @param string $mode
* @param array $options
* @param string $retour
* @return array
*/
function formulaires_inscription_verifier_dist($mode = '', $options = [], $retour = '') {
set_request('_upgrade_auteur'); // securite
include_spip('inc/filtres'); include_spip('inc/filtres');
$erreurs = array();
$id = ($options['id'] ?? 0);
include_spip('inc/autoriser'); include_spip('inc/autoriser');
if (!autoriser('inscrireauteur', $mode, $id) if (!autoriser('inscrireauteur', $mode, $id)
@ -54,12 +87,12 @@ function formulaires_inscription_verifier_dist($mode = '', $id = 0, $redirect ='
} }
if (!$nom = _request('nom_inscription')) { if (!$nom = _request('nom_inscription')) {
$erreurs['nom_inscription'] = _T("info_obligatoire"); $erreurs['nom_inscription'] = _T('info_obligatoire');
} elseif (!nom_acceptable(_request('nom_inscription'))) { } elseif (!nom_acceptable(_request('nom_inscription'))) {
$erreurs['nom_inscription'] = _T("ecrire:info_nom_pas_conforme"); $erreurs['nom_inscription'] = _T('ecrire:info_nom_pas_conforme');
} }
if (!$mail = strval(_request('mail_inscription'))) { if (!$mail = strval(_request('mail_inscription'))) {
$erreurs['mail_inscription'] = _T("info_obligatoire"); $erreurs['mail_inscription'] = _T('info_obligatoire');
} }
// compatibilite avec anciennes fonction surchargeables // compatibilite avec anciennes fonction surchargeables
@ -71,7 +104,7 @@ function formulaires_inscription_verifier_dist($mode = '', $id = 0, $redirect ='
} else { } else {
$f = 'test_inscription_dist'; $f = 'test_inscription_dist';
} }
$declaration = $f($mode, $mail, $nom, $id); $declaration = $f($mode, $mail, $nom, $options);
if (is_string($declaration)) { if (is_string($declaration)) {
$k = (strpos($declaration, 'mail') !== false) ? $k = (strpos($declaration, 'mail') !== false) ?
'mail_inscription' : 'nom_inscription'; 'mail_inscription' : 'nom_inscription';
@ -79,23 +112,25 @@ function formulaires_inscription_verifier_dist($mode = '', $id = 0, $redirect ='
} else { } else {
include_spip('base/abstract_sql'); include_spip('base/abstract_sql');
if ($row = sql_fetsel("statut, id_auteur, login, email", "spip_auteurs", if ($row = sql_fetsel(
"email=" . sql_quote($declaration['email'])) 'statut, id_auteur, login, email',
) { 'spip_auteurs',
if (($row['statut'] == '5poubelle') and !$declaration['pass']) // irrecuperable 'email=' . sql_quote($declaration['email'])
{ )) {
if (($row['statut'] == '5poubelle') and empty($declaration['pass'])) {
// irrecuperable
$erreurs['message_erreur'] = _T('form_forum_access_refuse'); $erreurs['message_erreur'] = _T('form_forum_access_refuse');
} else { } else {
if (($row['statut'] != 'nouveau') and !$declaration['pass']) { if (($row['statut'] != 'nouveau') and empty($declaration['pass'])) {
if (intval($row['statut']) > intval($mode)) { if (intval($row['statut']) > intval($mode)) {
set_request("_upgrade_auteur", $row['id_auteur']); set_request('_upgrade_auteur', $row['id_auteur']);
} else { } else {
// deja inscrit // deja inscrit
$erreurs['message_erreur'] = _T('form_forum_email_deja_enregistre'); $erreurs['message_erreur'] = _T('form_forum_email_deja_enregistre');
} }
} }
} }
spip_log($row['id_auteur'] . " veut se reinscrire"); spip_log($row['id_auteur'] . ' veut se resinscrire');
} }
} }
} }
@ -106,9 +141,8 @@ function formulaires_inscription_verifier_dist($mode = '', $id = 0, $redirect ='
$erreurs['password_confirmation'] = _T('info_passes_identiques'); $erreurs['password_confirmation'] = _T('info_passes_identiques');
} }
if (motpassecomplexe_verifier_pass(_request('password'))){ if ( strlen(_request('password')) < _PASS_LONGUEUR_MINI ){
$erreurs['password'] = _T('info_passe_trop_court_car_pluriel', array('nb' => _PASS_LONGUEUR_MINI));
$erreurs['password'] = motpassecomplexe_verifier_pass(_request('password'));
} }
// Mais si l'un des deux champs n'est pas rempli, cette erreur prend le dessus // Mais si l'un des deux champs n'est pas rempli, cette erreur prend le dessus
@ -122,20 +156,34 @@ function formulaires_inscription_verifier_dist($mode = '', $id = 0, $redirect ='
return $erreurs; return $erreurs;
} }
function formulaires_inscription_traiter_dist($mode = '', $id = 0, $redirect ='') { /**
* Si inscriptions pas autorisees, retourner une chaine d'avertissement
*
* @param string $mode
* @param array $options
* @param string $retour
* @return array
*/
function formulaires_inscription_traiter_dist($mode = '', array $options = [], $retour = '') {
if ($retour) {
refuser_traiter_formulaire_ajax();
}
include_spip('inc/filtres'); include_spip('inc/filtres');
include_spip('inc/autoriser'); include_spip('inc/autoriser');
$id = ($options['id'] ?? 0);
if (!autoriser('inscrireauteur', $mode, $id)) { if (!autoriser('inscrireauteur', $mode, $id)) {
$desc = "rien a faire ici"; $desc = 'rien a faire ici';
} else { } else {
if ($id_auteur = _request('_upgrade_auteur')) { if ($id_auteur = _request('_upgrade_auteur')) {
include_spip("action/editer_auteur"); include_spip('action/editer_auteur');
autoriser_exception("modifier", "auteur", $id_auteur); autoriser_exception('modifier', 'auteur', $id_auteur);
autoriser_exception("instituer", "auteur", $id_auteur); autoriser_exception('instituer', 'auteur', $id_auteur);
auteur_modifier($id_auteur, array('statut' => $mode)); auteur_modifier($id_auteur, array('statut' => $mode));
autoriser_exception("modifier", "auteur", $id_auteur, false); autoriser_exception('modifier', 'auteur', $id_auteur, false);
autoriser_exception("instituer", "auteur", $id_auteur, false); autoriser_exception('instituer', 'auteur', $id_auteur, false);
return array('message_ok' => _T('form_forum_email_deja_enregistre'), 'id_auteur' => $id_auteur); return array('message_ok' => _T('form_forum_email_deja_enregistre'), 'id_auteur' => $id_auteur);
} }
@ -146,20 +194,19 @@ function formulaires_inscription_traiter_dist($mode = '', $id = 0, $redirect =''
$nom = _request('nom_inscription'); $nom = _request('nom_inscription');
$mail_complet = _request('mail_inscription'); $mail_complet = _request('mail_inscription');
$password = _request('password'); $password = _request('password');
$Tmails_destination = sql_allfetsel('email','spip_auteurs', ["statut='0minirezo'", "pgp!='no_notification'"]); $mail_destination = sql_getfetsel('email','spip_auteurs',"id_auteur=" . lire_config('balint/id_contact'));
$Tmails_destination = array_column($Tmails_destination,'email');
$inscrire_auteur = charger_fonction('inscrire_auteur', 'action'); $inscrire_auteur = charger_fonction('inscrire_auteur', 'action');
$desc = $inscrire_auteur($mode, $mail_complet, $nom, array('id' => $id)); $desc = $inscrire_auteur($mode, $mail_complet, $nom, $options);
// AJOUT GAMUZA - BALINT // AJOUT GAMUZA - BALINT
$msg = "Une personne vient de s'inscrire sur le site : " . $GLOBALS['meta']['nom_site'] . " $msg = "Une personne vient de s'inscrire sur le site de l'AIPB :
Nom : $nom Nom : $nom
Email : $mail_complet Email : $mail_complet
Vous pouvez lui accorder le statut de membre le cas échéant."; Vous pouvez lui accorder le statut de membre le cas échéant.";
$sujet = "Nouvelle inscription sur le site ".$GLOBALS['meta']['nom_site']; $sujet = "Nouvelle inscription sur le site de l'AIPB";
$notifications = charger_fonction('notifications', 'inc'); $notifications = charger_fonction('notifications', 'inc');
notifications_envoyer_mails($Tmails_destination, $msg, $sujet); notifications_envoyer_mails($mail_destination, $msg, $sujet);
include_spip('action/editer_auteur'); include_spip('action/editer_auteur');
@ -197,7 +244,16 @@ function formulaires_inscription_traiter_dist($mode = '', $id = 0, $redirect =''
return array('message_erreur' => $desc); return array('message_erreur' => $desc);
} // OK } // OK
else { else {
return array('redirect' => $redirect, 'message_ok' => _T('form_forum_identifiant_mail'), 'id_auteur' => $desc['id_auteur']); $retours = array(
'message_ok' => _T('form_forum_identifiant_mail'),
'id_auteur' => $desc['id_auteur'],
);
// Si on demande à rediriger juste après validation du formulaire
if ($retour) {
$retours['redirect'] = $retour;
}
return $retours;
} }
} }

View file

@ -15,7 +15,7 @@ if (!defined('_ECRIRE_INC_VERSION')) {
return; return;
} }
function formulaires_nous_contacter_charger_dist($Tdestinataires) { function formulaires_nous_contacter_charger_dist($id_auteur) {
include_spip('inc/texte'); include_spip('inc/texte');
$valeurs = array( $valeurs = array(
'nom_message_auteur' => '', 'nom_message_auteur' => '',
@ -26,14 +26,14 @@ function formulaires_nous_contacter_charger_dist($Tdestinataires) {
); );
// id du formulaire (pour en avoir plusieurs sur une meme page) // id du formulaire (pour en avoir plusieurs sur une meme page)
$valeurs['id'] = intval($Tdestinataires[0]); $valeurs['id'] = $id_auteur;
// passer les id_destinataires au squelette // passer l'id_auteur au squelette
$valeurs['Tdestinataires'] = $Tdestinataires; $valeurs['id_auteur'] = $id_auteur;
return $valeurs; return $valeurs;
} }
function formulaires_nous_contacter_verifier_dist($Tdestinataires) { function formulaires_nous_contacter_verifier_dist($id_auteur) {
$erreurs = array(); $erreurs = array();
include_spip('inc/filtres'); include_spip('inc/filtres');
@ -66,14 +66,11 @@ function formulaires_nous_contacter_verifier_dist($Tdestinataires) {
return $erreurs; return $erreurs;
} }
function formulaires_nous_contacter_traiter_dist($Tdestinataires) { function formulaires_nous_contacter_traiter_dist($id_auteur) {
$adres = _request('email_message_auteur'); $adres = _request('email_message_auteur');
$nom = _request('nom_message_auteur'); $nom = _request('nom_message_auteur');
$Tmails = array(); $mail = sql_getfetsel('email','spip_auteurs','id_auteur=' . intval($id_auteur));
foreach ($Tdestinataires as $id_auteur){
$Tmails[] = sql_getfetsel('email','spip_auteurs','id_auteur=' . intval($id_auteur));
}
$sujet = '[' . supprimer_tags(extraire_multi($GLOBALS['meta']['nom_site'])) . '] ' $sujet = '[' . supprimer_tags(extraire_multi($GLOBALS['meta']['nom_site'])) . '] '
. 'Nouveau message de ' . $nom; . 'Nouveau message de ' . $nom;
@ -94,7 +91,7 @@ function formulaires_nous_contacter_traiter_dist($Tdestinataires) {
), ),
); );
if ($envoyer_mail($Tmails, $sujet, $corps)) { if ($envoyer_mail($mail, $sujet, $corps)) {
$message = _T('form_prop_message_envoye'); $message = _T('form_prop_message_envoye');
return array('message_ok' => $message); return array('message_ok' => $message);

View file

@ -1,14 +0,0 @@
<div class="formulaire_spip formulaire_recherche[ (#ENV{class})]" id="formulaire_recherche">
<form id="barre-recherche" action="[(#ENV{action})]" method="get">
[(#ENV{action}|form_hidden)]
[(#RECHERCHE|oui)
<button class="btn" id="btn_reinit_recherche"><i class="fa fa-times" aria-hidden="true"></i></button>
]
<input type="search" id="recherche" name="recherche" value=#RECHERCHE>
<button type="submit" class="btn" id="btn_rechercher_doc"><i class="fa fa-search" aria-hidden="true"></i></button>
</form>
</div>

BIN
images/Logo-AIPB-Full.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
images/Titre-AIPB.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 KiB

After

Width:  |  Height:  |  Size: 139 KiB

BIN
images/delaunay_brut.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

BIN
img/balint_64.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

BIN
img/document.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

View file

@ -1,16 +1,11 @@
<div class="row liste-articles">
<B_a_la_une> <B_a_la_une>
#ANCRE_PAGINATION <div class="row liste-articles">
<BOUCLE_a_la_une(ARTICLES){id_rubrique=#CONFIG{balint/id_rub_articles}}{!par date}{pagination 3}{!titre_mot in agenda, dossiers, agora}{recherche?}> #ANCRE_PAGINATION
<div class="col-12 col-sm-4 mt-4 mt-lg-0"> <BOUCLE_a_la_une(ARTICLES){titre_mot=Actualités}{par rang}{!par date}{pagination 3}>
<div class="col-lg-4 mt-4 mt-lg-0">
<INCLURE{fond=inclure/bloc_article, env, id_article}/> <INCLURE{fond=inclure/bloc_article, env, id_article}/>
</div> </div>
</BOUCLE_a_la_une> </BOUCLE_a_la_une>
</div>
[<div class="pagination mt-3">(#PAGINATION{page_precedent_suivant})</div>] [<div class="pagination mt-3">(#PAGINATION{page_precedent_suivant})</div>]
</B_a_la_une> </B_a_la_une>
<div class="col-12">
Aucun résultat
</div>
<//B_a_la_une>
</div>

View file

@ -1,33 +1,14 @@
<?php <a href="[(#URL_PAGE{#ENV{type-page}}|parametre_url{rub_forum,#ENV{rub_forum}})]"><i class="fas fa-arrow-circle-left"></i> Retour</a>
include_spip('inc/autoriser');
$id_auteur = $GLOBALS['visiteur_session']['id_auteur'] ?? 0;
if (autoriser('voir','forum', #ID_ARTICLE,$id_auteur, array('groupe'))){
?>
[(#ENV{type-page}|=={groupes}|non)
<a href="[(#URL_PAGE{#ENV{type-page}}|parametre_url{rub_forum,#ENV{rub_forum}})]"><i class="fas fa-arrow-circle-left"></i> Toutes les discussions</a>
]
<BOUCLE_sujet(ARTICLES){id_article=#ENV{id_article}}> <BOUCLE_sujet(ARTICLES){id_article=#ENV{id_article}}>
<div id="sujet-forum" class="sujet-forum"> <div id="sujet-forum" class="sujet-forum">
<h2>Forum - #TITRE</h2> <h2>Forum - #TITRE</h2>
[(#ENV{type-page}|=={groupes}|non)
<div class="infos-sujet mt-2 font-italic">Démarré par #LESAUTEURS le [(#DATE|date_interface)]</div> <div class="infos-sujet mt-2 font-italic">Démarré par #LESAUTEURS le [(#DATE|date_interface)]</div>
<div>[(#TEXTE)]</div> <div>[(#TEXTE)]</div>
<div class="boutons a-droite"> <div class="boutons a-droite">
<INCLURE{fond=inclure/boutons_modifier_sujet, env, id_article=#ID_ARTICLE}/> <INCLURE{fond=inclure/boutons_modifier_sujet, env, id_article=#ID_ARTICLE}/>
</div> </div>
]
[(#ENV{type-page}|=={groupes}|oui)
<?php if (autoriser('modifier','article', #ID_ARTICLE,$id_auteur, array('groupe'))){ ?>
<div class="boutons a-droite">
<INCLURE{fond=inclure/boutons_modifier_sujet, env, id_article=#ID_ARTICLE}/>
</div>
<div>[(#TEXTE)]</div>
<?php } ?>
]
<B_docs> <B_docs>
<div class="liste-documents row mt-3 mb-3"> <div class="liste-documents row mt-3 mb-3">
@ -75,8 +56,3 @@
</BOUCLE_sujet> </BOUCLE_sujet>
<?php } else{ ?>
<div class="mt-3 mb-3">
Vous n'êtes pas membre de ce groupe. Contactez l'administrateur·ice pour obtenir l'accès au forum.
</div>
<?php } ?>

View file

@ -1,40 +0,0 @@
<BOUCLE_sujet(ARTICLES){id_article=#ENV{id_article}}>
<div id="sujet-forum" class="sujet-forum">
<h2>Forum</h2>
<h3>#TITRE</h3>
<a href="[(#URL_PAGE{#ENV{type-page}}|parametre_url{id_article,#ENV{id_article}})]"><i class="fas fa-arrow-circle-left"></i> Retour au dossier</a>
</div>
<BOUCLE_reponses(FORUMS){id_article}{tout}>
<div class="sujet-forum row">
<div class="avatar col-1">
<INCLURE{fond=inclure/avatar_auteur,env,id_auteur=#ID_AUTEUR,taille=mini}>
</div>
<div class="col-11">
<a class="titre-sujet" href="[(#URL_PAGE{auteur}|parametre_url{id_auteur,#ID_AUTEUR})]">#AUTEUR</a>
<div class="infos-sujet font-italic">[(#DATE|date_interface)]</div>
<strong>#TITRE</strong>
<div class="texte-reponse">#TEXTE</div>
<B_docs2>
<div class="row mt-2">
<BOUCLE_docs2(DOCUMENTS){id_forum}{extension==jpg|png|gif|pdf}>
<div class="col">
<a href="#FICHIER">
[(#LOGO_DOCUMENT|image_reduire{0,75})]
[<div class="#EDIT{titre}">(#TITRE|sinon{#FICHIER|basename})</div>]
</a>
</div>
</BOUCLE_docs2>
</div>
</B_docs2>
</div>
</div>
</BOUCLE_reponses>
<div class="cadre-gris">
<div class="h2">Répondre</div>
#FORMULAIRE_FORUM{#SELF}
</div>
</BOUCLE_sujet>

View file

@ -1,28 +0,0 @@
<BOUCLE_contenu(ARTICLES){id_article=#ENV{id_article}}>
<h2 class="#EDIT{titre}">#TITRE</h2>
<?php if (isset($GLOBALS['visiteur_session']['statut']) AND $GLOBALS['visiteur_session']['statut'] == '0minirezo') { ?>
<div class="boutons a-droite">
<a href="[(#URL_PAGE{editer_article}|parametre_url{id_article,#ENV{id_article}})]" class="btn">Éditer</a>
</div>
<?php } ?>
<div class="#EDIT{texte}">#TEXTE</div>
</BOUCLE_contenu>
[(#REM) On affiche les documents à la fin]
<div class="h4 mt-4">Documents utiles</div>
<div class="row">
<BOUCLE_fichiers(DOCUMENTS){id_article=#ID_ARTICLE}{extension==pdf|doc|docx|odt|xls|xlsx|jpg|jpeg|png|gif|bmp}{tout}>
<div class="col-6 col-md-3 fichier text-center">
<a href="#FICHIER" [(#EXTENSION|in_array{#LISTE{jpg,jpeg,png,gif,bmp}}|oui) class="mediabox" rel='galerie_#ENV{nom}']>
[(#LOGO_DOCUMENT|image_reduire{0,120})]
</a>
[<div class="#EDIT{titre}">(#TITRE)</div>]
</div>
</BOUCLE_fichiers>
<div class="col-6 col-md-3 fichier text-center">
Pas de document
</div>
<//B_fichiers>
</div>

View file

@ -1,31 +1,26 @@
[(#REM) affichage du bloc d'un article ] [(#REM) affichage du bloc d'un article ]
<BOUCLE_art(ARTICLES){id_article = #ENV{id_article}}{statut?}> <BOUCLE_art(ARTICLES){id_article=#ENV{id_article}}{statut?}>
#SET{url_page,#URL_ARTICLE} [(#STATUT|=={prepa}|oui) #SET{url_page, #URL_PAGE{editer_article, id_article=#ID_ARTICLE}}]
<div class="bloc-article"> <div class="bloc-article">
<div class="bloc-contenu"> <div class="bloc-contenu">
<a href="#URL_ARTICLE" title="Lire l'article"> <a href="#GET{url_page}" title="Lire l'article">
<INCLURE{fond=inclure/photo_article,env,id_article=#ENV{id_article},ajax=recharger_photo}> <INCLURE{fond=inclure/photo_article,env,id_article=#ENV{id_article},ajax=recharger_photo}>
</a> </a>
<div class="bloc-textes"> <div class="bloc-textes">
<a href="#URL_ARTICLE" title="Lire l'article"> <a href="#GET{url_page}" title="Lire l'article">
<h4 class="#EDIT{titre}">#TITRE</h4> <h4 class="#EDIT{titre}">#TITRE</h4>
</a> </a>
<div class="infos-article"> <div class="infos-article">
[(#REM) [(#REM) Ancienne méthode : pour un événement on affiche Date_Agenda, pour un article la date de publication
[(#REM) pour un événement on affiche Date_Agenda, pour un article la date de publication]
[(#ENV{evenement}|=={oui}?{ [(#ENV{evenement}|=={oui}?{
[<strong class="h5 #EDIT{date_agenda}">(#DATE_AGENDA)</strong>], [<strong class="h5 #EDIT{date_agenda}">(#DATE_AGENDA)</strong>],
[<span class="#EDIT{date}">(#DATE|affdate)</span>] [<span class="#EDIT{date}">(#DATE|affdate)</span>]
})] })]
] ]
[<span class="#EDIT{date}">(#DATE|affdate)</span>] [<strong class="h5 #EDIT{date_agenda}">(#DATE_AGENDA)</strong>]
[(#ID_GROUPE|oui)<div><a href="[(#URL_PAGE{groupes}|parametre_url{id_article,#ID_GROUPE})]" title="Voir le groupe">
par #INFO_TITRE{article,#ID_GROUPE}
</a></div>
]
</div> </div>
[(#REM)
[<div class="resume-article #EDIT{descriptif}">(#DESCRIPTIF|sinon{#TEXTE|couper{130,'...'}})</div>] [<div class="resume-article #EDIT{descriptif}">(#DESCRIPTIF|sinon{#TEXTE|couper{130,'...'}})</div>]
]
</div> </div>
</div> </div>
</div> </div>

View file

@ -2,18 +2,24 @@
<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})]" class="ajax nocache"> <a href="[(#URL_PAGE{groupes}|parametre_url{id_article,#ID_ARTICLE}|parametre_url{id_rubrique,#ENV{id_rubrique}})]" 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})]" class="ajax nocache"> <a href="[(#URL_PAGE{groupes}|parametre_url{id_article,#ID_ARTICLE}|parametre_url{id_rubrique,#ENV{id_rubrique}})]" class="ajax nocache">
<h4>#TITRE <i class="fas fa-globe"></i></h4> <h4>#SURTITRE <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>
<div>[(#GET{nb_articles}|singulier_ou_pluriel{balint:1_article, balint:n_articles})]</div> </BOUCLE_nb_gpes>
<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,4 +1,4 @@
<a class="btn btn_supprimer" href="[(#URL_ACTION_AUTEUR{supprimer_article,#ENV{id_article}})]" <a class="btn btn_supprimer" href="[(#URL_ACTION_AUTEUR{supprimer_article,#ENV{id_article}})]"
onclick="if (!confirm('Etes vous certain de vouloir effacer [(#ENV{groupe}|oui|?{ce groupe,cet article})] ?')) return false;"> onclick="if (!confirm('Etes vous certain de vouloir effacer cet article ?')) return false;">
<i class="fas fa-trash"></i> Supprimer <i class="fas fa-trash"></i> Supprimer
</a> </a>

View file

@ -2,7 +2,7 @@
<B_articles> <B_articles>
<div class="row liste-articles-encadres"> <div class="row liste-articles-encadres">
#ANCRE_PAGINATION #ANCRE_PAGINATION
<BOUCLE_articles(ARTICLES){statut=prepa}{! par date}{pagination 6}> <BOUCLE_articles(ARTICLES){statut=prepa}{! par date}{pagination 12}>
<div class="col-lg-4 mt-4 mt-lg-3"> <div class="col-lg-4 mt-4 mt-lg-3">
<INCLURE{fond=inclure/bloc_article, env, statut, id_article,evenement=oui}/> <INCLURE{fond=inclure/bloc_article, env, statut, id_article,evenement=oui}/>
</div> </div>

View file

@ -1,7 +1,7 @@
<div class="row liste-articles-encadres"> <div class="row liste-articles-encadres">
[(#REM) On affiche ensuite les groupes] [(#REM) On affiche les groupes réguliers, par ville]
<BOUCLE_villes(ARTICLES){id_rubrique=#CONFIG{balint/id_rub_groupes}}{par titre}> <BOUCLE_villes(ARTICLES){id_rubrique=#ENV{id_rubrique}}{surtitre!=""}{fusion surtitre}>
<div class="col-12 col-sm-6 col-xl-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,3 +9,35 @@
</BOUCLE_villes> </BOUCLE_villes>
</div> </div>
[(#REM) on affiche ensuite 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

@ -14,17 +14,40 @@
[<div class="titre_img #EDIT{titre}">(#TITRE|sinon{[(#SESSION{statut}|=={0minirezo}|oui)<i>Double cliquez pour ajouter un titre</i>]})</div>] [<div class="titre_img #EDIT{titre}">(#TITRE|sinon{[(#SESSION{statut}|=={0minirezo}|oui)<i>Double cliquez pour ajouter un titre</i>]})</div>]
<div class="boutons_actions"> <div class="boutons_actions">
[(#INFO_ID_SECTEUR{article,#ENV{id_article}}|=={#CONFIG{balint/id_rub_groupes}}|oui)
<div class="premier-plan"> <div class="premier-plan">
[(#TYPE_DOCUMENT|in_array{#LISTE{JPEG,PNG,GIF}}|oui) [(#TYPE_DOCUMENT|in_array{#LISTE{JPEG,PNG,GIF}}|oui)
[(#CREDITS*|=={une}|?{ [(#CREDITS*|=={une}|?{
<i class="fas fa-check green"></i> Au premier plan <i class="fas fa-flag green"></i> Bannière pour [(#INFO_SURTITRE{article, #ID_ARTICLE})]
, ,
<a class="btn btn_une" href="[(#URL_ACTION_AUTEUR{promouvoir_photo, [(#ID_DOCUMENT)][-(#ENV{id_article})],#SELF})]" title="Mettre en première photo"> <a class="btn btn_une" href="[(#URL_ACTION_AUTEUR{choisir_banniere, [(#ID_DOCUMENT)][-(#ENV{id_article})],#SELF})]" title="Mettre en première photo">
<i class="fas fa-check"></i> Mettre au premier plan <i class="fas fa-flag"></i> Bannière pour [(#INFO_SURTITRE{article, #ID_ARTICLE})]
</a> </a>
})] })]
] ]
</div> </div>
<div class="premier-plan">
[(#TYPE_DOCUMENT|in_array{#LISTE{JPEG,PNG,GIF}}|oui)
[(#COMPTEUR_BOUCLE|=={#TOTAL_BOUCLE}|oui)
<i class="fas fa-picture-o green"></i> Photo du groupe
]
]
</div>
]
[(#INFO_ID_SECTEUR{article,#ENV{id_article}}|=={#CONFIG{balint/id_rub_articles}}|oui)
<div class="premier-plan">
[(#TYPE_DOCUMENT|in_array{#LISTE{JPEG,PNG,GIF}}|oui)
[(#CREDITS*|=={une}|?{
<i class="fas fa-star green"></i> Au premier plan [(#INFO_SURTITRE{article, #ID_ARTICLE})]
,
<a class="btn btn_une" href="[(#URL_ACTION_AUTEUR{promouvoir_photo, [(#ID_DOCUMENT)][-(#ENV{id_article})],#SELF})]" title="Mettre en première photo">
<i class="fas fa-star"></i> Mettre au premier plan
</a>
})]
]
</div>
]
<a class="btn btn_poubelle" href="[(#URL_ACTION_AUTEUR{supprimer_photo, [(#ID_DOCUMENT)][-(#ENV{id_article})],#SELF})]" title="Supprimer la photo"> <a class="btn btn_poubelle" href="[(#URL_ACTION_AUTEUR{supprimer_photo, [(#ID_DOCUMENT)][-(#ENV{id_article})],#SELF})]" title="Supprimer la photo">
<i class="fas fa-trash red"></i> Supprimer <i class="fas fa-trash red"></i> Supprimer
</a> </a>

View file

@ -5,11 +5,9 @@
<div class="page-groupes"> <div class="page-groupes">
<div class="w-100"> <div class="w-100">
<INCLURE{fond=inclure/menu-espace_membre,env}> <INCLURE{fond=inclure/menu-espace_membre,env}>
[(#REM) ENV{rub_forum}|non)
[(#ENV{rub_forum}|non)
<INCLURE{fond=inclure/bouton_ordre,env,ordre=#ENV{ordre,ASC},objet=mot}> <INCLURE{fond=inclure/bouton_ordre,env,ordre=#ENV{ordre,ASC},objet=mot}>
] ]
[(#ENV{rub_forum}|oui) [(#ENV{rub_forum}|oui)
@ -24,15 +22,10 @@
] ]
<B_articles> <B_articles>
<?php if (isset($GLOBALS['visiteur_session']['statut']) AND in_array($GLOBALS['visiteur_session']['statut'],array("0minirezo","1comite"))) { ?>
<div class="mb-3 text-right">
<a href="[(#URL_PAGE{editer_article})]" class="btn bouton-rediger"><i class="fas fa-pencil"></i> Rédiger un dossier</a>
</div>
<?php } ?>
<div class="row liste-articles"> <div class="row liste-articles">
#ANCRE_PAGINATION #ANCRE_PAGINATION
<BOUCLE_articles(ARTICLES){id_mot=#ENV{id_mot}}{par rang}{inverse #GET{tri}}{par date}{inverse #GET{tri}}{pagination 8}{si #ENV{rub_forum}|non}> <BOUCLE_articles(ARTICLES){id_mot=#ENV{id_mot}}{!par date}{pagination 8}{si #ENV{rub_forum}|non}>
<div class="col-md-3 mt-4 mt-lg-3"> <div class="col-lg-3 mt-4 mt-lg-3">
<INCLURE{fond=inclure/bloc_article, env, id_article}/> <INCLURE{fond=inclure/bloc_article, env, id_article}/>
</div> </div>
</BOUCLE_articles> </BOUCLE_articles>

View file

@ -1,21 +1,77 @@
[(#REM) On récupère l'id_rubrique s'il n'a pas été passé en paramètre]
[(#ENV{id_rubrique,#INFO_ID_RUBRIQUE{article,#ENV{id_article}}}|setenv{id_rubrique})]
[(#REM) On affiche tous les groupes appartenant à la même Ville] [(#REM) On affiche tous les groupes appartenant à la même Ville]
<div class="banniere-ville mb-4"> #SET{ville,#INFO_SURTITRE{article,#ENV{id_article}}}
<BOUCLE_banniere(DOCUMENTS){id_article = #ENV{id_article}}{extension==jpg|png|gif}{!par date}{0,1}>
[(#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">
<BOUCLE_banniere(DOCUMENTS){id_article IN #GET{groupes}}{extension==jpg|png|gif}{!par credits}{!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">
<h1>#INFO_TITRE{article,#ENV{id_article}}</h1> [(#GET{groupes}|count|>{1}|oui)
<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}>
<div class="bloc-groupe mt-4 mt-lg-0">
[<h3 class="h4">(#TITRE)</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-4">
<BOUCLE_photo(DOCUMENTS){id_article}{extension==jpg|png|gif}{! par date}{0,1}>
<div class="mb-4 mb-lg-0">
[(#FICHIER|image_recadre{400:250,-,focus}|image_reduire{400,250})]
</div>
</BOUCLE_photo>
</div>
<div class="col-md-4">
[<div class="texte"><strong>Adresse :</strong> (#SOUSTITRE)</div>]
[<div class="texte"><strong>Fréquence :</strong> (#DESCRIPTIF|textebrut)</div>]
<div class="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_groupe>
<B_articles> <B_articles>
<h2 class="h4 mb-lg-0 mt-4 articles-groupe">Dernières nouvelles</h2> <h2 class="h4 mb-lg-0 mt-4 articles-groupe">Articles de #GET{ville}</h2>
#ANCRE_PAGINATION #ANCRE_PAGINATION
[<div class="pagination pagination_top">(#PAGINATION{page_precedent_suivant})</div>] [<div class="pagination pagination_top">(#PAGINATION{page_precedent_suivant})</div>]
<div class="row liste-articles"> <div class="row liste-articles">
<BOUCLE_articles(ARTICLES){id_rubrique=#CONFIG{balint/id_rub_articles}}{id_groupe = #ENV{id_article}}{! par date}{pagination 6}> <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"> <div class="col-md-6 col-lg-4 mt-4 mt-lg-0">
<INCLURE{fond=inclure/bloc_article, env, id_article}/> <INCLURE{fond=inclure/bloc_article, env, id_article}/>
</div> </div>

View file

@ -1,6 +1,8 @@
<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

@ -1,38 +1,49 @@
<div class="page-groupes"> <div class="page-groupes row">
<div class="col w-100 col-lg-9">
[(#ENV{id_article}|non) <INCLURE{fond=inclure/menu-groupes,env}>
<h1 class="mb-4">Les groupes</h1>
<div class="row"> [(#ENV{id_article}|non)
<div class="col w-100 col-lg-8">
<INCLURE{fond=inclure/choix_ville,env} /> <INCLURE{fond=inclure/choix_ville,env} />
</div> ]
<aside class="col-12 col-lg-4 dernieres-nouvelles">
<INCLURE{fond=inclure/sidebar_groupes,env} />
</aside>
</div>
]
[(#ENV{id_article}|oui) [(#ENV{id_article}|oui)
<INCLURE{fond=inclure/menu-groupes-dropdown,env}>
[(#ENV{forum}|=={oui}|non)
<a href="[(#URL_PAGE{groupes})]" class="ajax"><i class="fas fa-arrow-circle-left"></i> Tous les groupes</a>
<div class="row mt-4">
<div class="col-12 w-100 col-lg-8">
<INCLURE{fond=inclure/groupe-detail,env} /> <INCLURE{fond=inclure/groupe-detail,env} />
]
</div>
<aside class="col col-lg-3 d-none d-lg-block dernieres-nouvelles">
<h3 class="h4 mt-4 mb-3">Derniers articles</br>
<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">
<BOUCLE_a_la_une(ARTICLES){id_rubrique=#CONFIG{balint/id_rub_articles}}{id_groupe IN #GET{groupes_pays}}{0,6}{! par date}>
<div class="mt-4 mt-lg-0 mb-3">
<div class="infos-article">
[(#DATE|affdate) :]
</div>
<a href="#URL_ARTICLE" title="Lire l'article">
<h4 class='h5 mb-0'>#TITRE</h4>
</a>
[<div class="resume-article">(#DESCRIPTIF)</div>]
</div>
</BOUCLE_a_la_une>
<div class="col">Il n'y a pas encore d'article dans ce pays.</div>
<//B_a_la_une>
</div> </div>
<aside class="col-12 col-lg-4 dernieres-nouvelles">
<INCLURE{fond=inclure/sidebar_groupes,env} />
</aside> </aside>
</div>
]
[(#ENV{forum}|=={oui}|oui)
<a href="[(#URL_PAGE{groupes}|parametre_url{id_article,#ENV{id_article}})]" class="ajax"><i class="fas fa-arrow-circle-left"></i> Retour à la page du groupe</a>
<INCLURE{fond=inclure/article-forum,env} />
]
]
</div> </div>

View file

@ -1,15 +0,0 @@
<nav id="menu-agora" class="navbar navbar-expand-lg navbar-dark">
<button class="navbar-toggler collapsed d-flex d-lg-none" type="button" data-toggle="collapse" data-target="#liste-deroulante-agora" aria-controls="liste-deroulante-agora" aria-expanded="false" aria-label="Toggle navigation">
<i class="fa fa-angle-down" aria-hidden="true"></i>
<span class="navbar-brand d-lg-none">Autres rubriques</span>
</button>
<div class="collapse navbar-collapse" id="liste-deroulante-agora">
<ul class="navbar-nav">
<BOUCLE_menu_agora(ARTICLES){titre_mot=agora}{par rang}>
<li class="nav-item [(#ENV{id_article}|=={#ID_ARTICLE}|oui) active]">
<a class="nav-link ajax" href="[(#URL_PAGE{agora}|parametre_url{id_article,#ID_ARTICLE})]">#TITRE</a>
</li>
</BOUCLE_menu_agora>
</ul>
</div>
</nav>

View file

@ -0,0 +1,15 @@
<nav id="menu-association" class="navbar navbar-expand-lg navbar-dark">
<button class="navbar-toggler collapsed d-flex d-lg-none" type="button" data-toggle="collapse" data-target="#liste-deroulante-association" aria-controls="liste-deroulante-association" aria-expanded="false" aria-label="Toggle navigation">
<i class="fa fa-angle-down" aria-hidden="true"></i>
<span class="navbar-brand">Autres rubriques</span>
</button>
<div class="collapse navbar-collapse" id="liste-deroulante-association">
<ul class="navbar-nav ml-auto flex-column">
<BOUCLE_menu_association(ARTICLES){titre_mot=Association}{par rang}>
<li class="nav-item [(#ENV{id_article}|=={#ID_ARTICLE}|oui) active]">
<a class="nav-link ajax" href="[(#URL_PAGE{association}|parametre_url{id_article,#ID_ARTICLE})]">#TITRE</a>
</li>
</BOUCLE_menu_association>
</ul>
</div>
</nav>

View file

@ -2,18 +2,22 @@
<button class="navbar-toggler d-flex d-lg-none collapsed" type="button" data-toggle="collapse" data-target="#liste-groupes" aria-controls="liste-deroulante-association" aria-expanded="false" aria-label="Toggle navigation"> <button class="navbar-toggler d-flex d-lg-none collapsed" type="button" data-toggle="collapse" data-target="#liste-groupes" aria-controls="liste-deroulante-association" aria-expanded="false" aria-label="Toggle navigation">
<i class="fa fa-angle-down" aria-hidden="true"></i> <i class="fa fa-angle-down" aria-hidden="true"></i>
[<span class="navbar-brand d-lg-none">(#INFO_TITRE{mot,#ENV{id_mot}})</span>] [<span class="navbar-brand d-lg-none">(#INFO_TITRE{mot,#ENV{id_mot}})</span>]
[(#ENV{rub_forum}|oui)<span class="navbar-brand d-lg-none">Forum</span>]
</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">
<li class="nav-item [(#ENV{rub_forum}|=={#CONFIG{balint/id_rub_forum_prive}}|oui) active]"> <li class="nav-item [(#ENV{rub_forum}|=={#CONFIG{balint/id_rub_forum}}|oui) active]">
<a class="nav-link ajax nocache" href="[(#URL_PAGE{espace_membre}|parametre_url{rub_forum,#CONFIG{balint/id_rub_forum_prive}})]">Forum</a> <a class="nav-link ajax nocache" href="[(#URL_PAGE{espace_membre}|parametre_url{rub_forum,#CONFIG{balint/id_rub_forum}})]">Forum</a>
</li> </li>
<BOUCLE_menu_membre(MOTS){id_groupe = #CONFIG{balint/id_mots_espace_membre}}{par rang}{tout}> <BOUCLE_menu_membre(MOTS){id_groupe = #CONFIG{balint/id_mots_espace_membre}}{par rang}{tout}>
<li class="nav-item [(#ENV{id_mot}|=={#ID_MOT}|oui) active]"> <li class="nav-item [(#ENV{id_mot}|=={#ID_MOT}|oui) active]">
<a class="nav-link ajax nocache" href="[(#URL_PAGE{espace_membre}|parametre_url{id_mot,#ID_MOT})]">#TITRE</a> <a class="nav-link ajax nocache" href="[(#URL_PAGE{espace_membre}|parametre_url{id_mot,#ID_MOT})]">#TITRE</a>
</li> </li>
</BOUCLE_menu_membre> </BOUCLE_menu_membre>
[(#REM) AUTORISER{voir,forum,#CONFIG{balint/id_rub_forum_prive}}|oui)
<li class="nav-item [(#ENV{rub_forum}|=={#CONFIG{balint/id_rub_forum_prive}}|oui) active]">
<a class="nav-link ajax nocache" href="[(#URL_PAGE{espace_membre}|parametre_url{rub_forum,#CONFIG{balint/id_rub_forum_prive}})]">Échanges entre membres du bureau</a>
</li>
]
</ul> </ul>
</div> </div>
</nav> </nav>

View file

@ -1,15 +0,0 @@
<nav id="menu-groupes" class="navbar navbar-dark">
<button class="navbar-toggler d-flex justify-content-center collapsed" type="button" data-toggle="collapse" data-target="#liste-groupes" aria-controls="liste-deroulante-association" aria-expanded="false" aria-label="Toggle navigation">
<i class="fa fa-angle-down" aria-hidden="true"></i>
<span class="navbar-brand pl-4">Groupes</span>
</button>
<div class="collapse navbar-collapse" id="liste-groupes">
<ul class="navbar-nav">
<BOUCLE_menu_groupes(ARTICLES){id_rubrique=#CONFIG{balint/id_rub_groupes}}{par titre}>
<li class="nav-item [(#ENV{id_article}|=={#ID_ARTICLE}|oui) active]">
<a class="nav-link p-lg-0 ajax" href="[(#URL_PAGE{groupes}|parametre_url{id_article,#ID_ARTICLE})]">#TITRE</a>
</li>
</BOUCLE_menu_groupes>
</ul>
</div>
</nav>

View file

@ -1,13 +1,13 @@
<nav id="menu-groupes" class="navbar navbar-expand-lg navbar-dark"> <nav id="menu-groupes" class="navbar navbar-expand-lg navbar-dark">
<button class="navbar-toggler d-flex d-lg-none collapsed" type="button" data-toggle="collapse" data-target="#liste-groupes" aria-controls="liste-deroulante-association" aria-expanded="false" aria-label="Toggle navigation"> <button class="navbar-toggler d-flex d-lg-none collapsed" type="button" data-toggle="collapse" data-target="#liste-groupes" aria-controls="liste-deroulante-association" aria-expanded="false" aria-label="Toggle navigation">
<i class="fa fa-angle-down" aria-hidden="true"></i> <i class="fa fa-angle-down" aria-hidden="true"></i>
<span class="navbar-brand d-lg-none">Groupes</span> [<span class="navbar-brand d-lg-none">(#INFO_TITRE{rubrique,#ENV{id_rubrique}})</span>]
</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(ARTICLES){id_rubrique=#CONFIG{balint/id_rub_groupes}}{par titre}> <BOUCLE_menu_groupes(RUBRIQUES){id_parent=#CONFIG{balint/id_rub_groupes}}{par num titre}{tout}>
<li class="nav-item [(#ENV{id_article}|=={#ID_ARTICLE}|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_article,#ID_ARTICLE})]">#TITRE</a> <a class="nav-link ajax" href="[(#URL_PAGE{groupes}|parametre_url{id_rubrique,#ID_RUBRIQUE})]">#TITRE</a>
</li> </li>
</BOUCLE_menu_groupes> </BOUCLE_menu_groupes>
</ul> </ul>

View file

@ -5,9 +5,9 @@
</button> </button>
<div class="collapse navbar-collapse" id="liste-deroulante-methode"> <div class="collapse navbar-collapse" id="liste-deroulante-methode">
<ul class="navbar-nav ml-auto flex-column"> <ul class="navbar-nav ml-auto flex-column">
<BOUCLE_menu_methode(ARTICLES){titre_mot=presse}{par rang}> <BOUCLE_menu_methode(ARTICLES){titre_mot=Méthode}{par rang}>
<li class="nav-item [(#ENV{id_article}|=={#ID_ARTICLE}|oui) active]"> <li class="nav-item [(#ENV{id_article}|=={#ID_ARTICLE}|oui) active]">
<a class="nav-link ajax" href="[(#URL_PAGE{presse}|parametre_url{id_article,#ID_ARTICLE})]">#TITRE</a> <a class="nav-link ajax" href="[(#URL_PAGE{methode}|parametre_url{id_article,#ID_ARTICLE})]">#TITRE</a>
</li> </li>
</BOUCLE_menu_methode> </BOUCLE_menu_methode>
</ul> </ul>

View file

@ -6,68 +6,65 @@
</button> </button>
<div class="collapse navbar-collapse" id="liste-deroulante"> <div class="collapse navbar-collapse" id="liste-deroulante">
<ul class="navbar-nav ml-auto"> <ul class="navbar-nav ml-auto">
<li class="nav-item [(#SI_PAGE{groupes}|oui) active]"> <li class="nav-item [(#SI_PAGE{sommaire}|oui) active]">
<a class="nav-link" href="[(#URL_PAGE{groupes})]">Groupes</a> <a class="nav-link" href="[(#URL_PAGE{sommaire})]">Accueil</a>
</li> </li>
<li class="nav-item dropdown [(#SI_PAGE{agora}|oui) active]"> <li class="nav-item [(#SI_PAGE{methode}|oui) active]">
<a class="nav-link dropdown-toggle" href="[(#URL_PAGE{agora})]" id="mediasDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Agora</a> <a class="nav-link" href="[(#URL_PAGE{methode})]">Méthode</a>
<div class="dropdown-menu" aria-labelledby="mediasDropdown"> </li>
<BOUCLE_menu_forums(ARTICLES){titre_mot=agora}{tout}> <li class="nav-item dropdown [(#SI_PAGE{seminaires}|oui) active]">
<a class="dropdown-item" href="[(#URL_PAGE{agora}|parametre_url{id_article,#ID_ARTICLE})]">#TITRE</a> <a class="nav-link dropdown-toggle" href="[(#URL_PAGE{seminaires})]" id="seminairesDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Séminaires</a>
</BOUCLE_menu_forums> <div class="dropdown-menu" aria-labelledby="seminairesDropdown">
<BOUCLE_menu_seminaires(ARTICLES){titre_mot=seminaires}{par rang}>
<a class="dropdown-item" href="[(#URL_ARTICLE)]">#TITRE</a>
</BOUCLE_menu_seminaires>
</div> </div>
</li> </li>
<?php if (isset($GLOBALS['visiteur_session']['statut']) AND in_array($GLOBALS['visiteur_session']['statut'],array("0minirezo","1comite"))) { ?> <li class="nav-item dropdown [(#SI_PAGE{groupes}|oui) active]">
<a class="nav-link dropdown-toggle" href="[(#URL_PAGE{groupes})]" id="groupesDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Groupes</a>
<div class="dropdown-menu" aria-labelledby="groupesDropdown">
<BOUCLE_menu_groupes(RUBRIQUES){id_parent=#CONFIG{balint/id_rub_groupes}}{par num titre}{tout}>
<a class="dropdown-item" href="[(#URL_PAGE{groupes}|parametre_url{id_rubrique,#ID_RUBRIQUE})]">#TITRE</a>
</BOUCLE_menu_groupes>
</div>
</li>
<li class="nav-item dropdown [(#SI_PAGE{mediatheque}|oui) active]">
<a class="nav-link dropdown-toggle" href="[(#URL_PAGE{mediatheque})]" id="mediasDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Médiathèque</a>
<div class="dropdown-menu" aria-labelledby="mediasDropdown">
<BOUCLE_menu_medias(MOTS){id_groupe=#CONFIG{balint/id_mots_medias}}{par id_mot}{tout}>
<a class="dropdown-item" href="[(#URL_PAGE{mediatheque}|parametre_url{id_mot,#ID_MOT})]">#TITRE</a>
</BOUCLE_menu_medias>
</div>
</li>
<li class="nav-item [(#SI_PAGE{association}|oui) active]">
<a class="nav-link" href="[(#URL_PAGE{association})]">L'association</a>
</li>
<?php
if (!isset($GLOBALS['visiteur_session']['statut']) OR $GLOBALS['visiteur_session']['statut']=="6forum") {
?>
<li class="nav-item [(#SI_PAGE{forum_discussion}|oui) active]"> <li class="nav-item [(#SI_PAGE{forum_discussion}|oui) active]">
<a class="nav-link" href="[(#URL_PAGE{espace_membre}|parametre_url{rub_forum,#CONFIG{balint/id_rub_forum_prive}})]">Espace membres</a> <a class="nav-link" href="[(#URL_PAGE{espace_membre}|parametre_url{rub_forum,#CONFIG{balint/id_rub_forum}})]">Espace membre</a>
</li>
<?php
}
if (isset($GLOBALS['visiteur_session']['statut']) AND in_array($GLOBALS['visiteur_session']['statut'],['0minirezo','1comite'])) {
?>
<li class="nav-item dropdown [(#SI_PAGE{espace_membre}|oui) active]">
<a class="nav-link dropdown-toggle" href="[(#URL_PAGE{espace_membre})]" id="membresDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Espace membre</a>
<div class="dropdown-menu" aria-labelledby="membresDropdown">
<a class="dropdown-item" href="[(#URL_PAGE{espace_membre}|parametre_url{rub_forum,#CONFIG{balint/id_rub_forum}})]">Forum</a>
<BOUCLE_menu_prive(MOTS){id_groupe=#CONFIG{balint/id_mots_espace_membre}}{par rang}{tout}>
<a class="dropdown-item" href="[(#URL_PAGE{espace_membre}|parametre_url{id_mot,#ID_MOT})]">#TITRE</a>
</BOUCLE_menu_prive>
[(#REM) AUTORISER{voir,forum,#CONFIG{balint/id_rub_forum_prive}}|oui)
<a class="dropdown-item" href="[(#URL_PAGE{espace_membre}|parametre_url{rub_forum,#CONFIG{balint/id_rub_forum_prive}})]">Échanges entre membres du bureau</a>
]
</div>
</li> </li>
<?php } ?> <?php } ?>
<li class="nav-item [(#SI_PAGE{charte}|oui) active]">
<a class="nav-link" href="[(#URL_PAGE{charte})]">Charte</a>
</li>
<li class="nav-item [(#SI_PAGE{presse}|oui) active]">
<a class="nav-link" href="[(#URL_PAGE{presse})]">Presse</a>
</li>
<li class="nav-item [(#SI_PAGE{nous-contacter}|oui) active]"> <li class="nav-item [(#SI_PAGE{nous-contacter}|oui) active]">
<a class="nav-link" href="[(#URL_PAGE{nous-contacter})]">Contact</a> <a class="nav-link" href="[(#URL_PAGE{nous-contacter})]">Contact</a>
</li> </li>
<?php if (!isset($GLOBALS['visiteur_session']['id_auteur'])) { ?>
<li class="nav-item">
<a class="nav-link" href="[(#URL_PAGE{espace_membre})]"><span class="btn bouton-login">Connexion</span></a>
</li>
<?php } ?>
<?php if (isset($GLOBALS['visiteur_session']['id_auteur'])) { ?>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="[(#URL_PAGE{agora})]" id="mediasDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<i class="fas fa-user"></i>&nbsp;<?php echo $GLOBALS['visiteur_session']['nom'] ?>
</a>
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="mediasDropdown">
<a class="dropdown-item" href="[(#URL_PAGE{modifier_auteur}|parametre_url{retour,#SELF})]">
<i class="fas fa-user-circle-o"></i> Mon profil
</a>
<?php if (isset($GLOBALS['visiteur_session']['statut']) AND in_array($GLOBALS['visiteur_session']['statut'],array("0minirezo","1comite"))) { ?>
<a class="dropdown-item" href="[(#URL_PAGE{editer_article})]">
<i class="fas fa-pencil"></i> Rédiger un article
</a>
<a class="dropdown-item" href="[(#URL_PAGE{brouillons})]">
<i class="fas fa-file"></i> Brouillons
</a>
<?php } ?>
<?php if (isset($GLOBALS['visiteur_session']['statut']) AND in_array($GLOBALS['visiteur_session']['statut'],array("0minirezo"))) { ?>
<a class="dropdown-item" href="[(#URL_PAGE{editer_groupe})]">
<i class="fas fa-globe"></i> Créer un groupe
</a>
<a class="dropdown-item" href="[(#URL_PAGE{gerer_auteurs})]">
<i class="fas fa-users"></i> Gérer les membres
</a>
<?php } ?>
<a class="dropdown-item" href="[(#URL_LOGOUT{#URL_PAGE{sommaire}})]" rel="nofollow">
<i class="fas fa-sign-out"></i> Déconnexion
</a>
</div>
</li>
<?php } ?>
</ul> </ul>
</div> </div>
</div> </div>

View file

@ -1,19 +0,0 @@
<div>
<INCLURE{fond=inclure/menu-#ENV{nom},env}>
</div>
<div class="row">
<div class="col-lg-8 asso-contenu">
<BOUCLE_contenu(CONDITION){si #ENV{forum}|oui}>
<INCLURE{fond=inclure/article_agora,env}>
</BOUCLE_contenu>
<INCLURE{fond=inclure/article_contenu_1col,env}>
<//B_contenu>
</div>
<aside class="col col-lg-4 dernieres-nouvelles">
<INCLURE{fond=inclure/sidebar_agora,env} />
</aside>
</div>

View file

@ -1,14 +1,29 @@
#CACHE{0} #CACHE{0}
[(#ENV{id_article}|=={0}|oui) [(#SESSION{id_auteur}|mult{-1}|setenv{id_article})] ] [(#ENV{id_article}|=={0}|oui) [(#SESSION{id_auteur}|mult{-1}|setenv{id_article})] ]
[(#REM) On récupère les id de tous les groupes de la ville pour les actualités et les images]
#SET{ville,#INFO_SURTITRE{article,#ENV{id_article}}}
[(#SET{groupes,#ARRAY})]
<BOUCLE_groupes(ARTICLES){surtitre = #GET{ville}}{id_secteur=#CONFIG{balint/id_rub_groupes}}{si #ENV{groupe}|=={oui}}>
[(#SET{groupes,#GET{groupes}|push{#ID_ARTICLE}})]
</BOUCLE_groupes>
<div class="photo-article"> <div class="photo-article">
<BOUCLE_test(CONDITION){si #ENV{groupe}|!={oui}}>
<BOUCLE_doc(DOCUMENTS){id_article?}{extension==jpg|png|gif}{statut in prop,prepa,publie}{0,1}{!par credits}{!par id_document}> <BOUCLE_doc(DOCUMENTS){id_article?}{extension==jpg|png|gif}{statut in prop,prepa,publie}{0,1}{!par credits}{!par id_document}>
[(#FICHIER|balise_img{#TITRE}|image_recadre{720:360,-,focus,transparent}|image_reduire{720,360})] [(#FICHIER|balise_img{#TITRE}|image_recadre{720:360,-,focus,transparent}|image_reduire{720,360})]
</BOUCLE_doc> </BOUCLE_doc>
<div class="txtcenter placeholder"> <div class="txtcenter placeholder">
[(#ENV{groupe}|=={oui}|?{
[(#CHEMIN{img/ville.png}|balise_img{#TITRE}|image_recadre{720:360,+,center,transparent}|image_reduire{720,360})],
[(#CHEMIN{img/journal.png}|balise_img{#TITRE}|image_recadre{720:360,+,center,transparent}|image_reduire{720,360})] [(#CHEMIN{img/journal.png}|balise_img{#TITRE}|image_recadre{720:360,+,center,transparent}|image_reduire{720,360})]
})]
</div> </div>
<//B_doc> <//B_doc>
</BOUCLE_test>
<BOUCLE_doc_groupe(DOCUMENTS){id_article IN #GET{groupes}}{extension==jpg|png|gif}{statut in prop,prepa,publie}{0,1}{!par date}{!par id_document}>
[(#FICHIER|balise_img{#TITRE}|image_recadre{720:360,-,focus,transparent}|image_reduire{720,360})]
</BOUCLE_doc_groupe>
<div class="txtcenter placeholder">
[(#CHEMIN{img/ville.png}|balise_img{#TITRE}|image_recadre{720:360,+,center,transparent}|image_reduire{720,360})]
</div>
<//B_doc_groupe>
<//B_test>
</div> </div>

View file

@ -2,7 +2,7 @@
<B_articles> <B_articles>
<div class="row liste-articles-encadres"> <div class="row liste-articles-encadres">
#ANCRE_PAGINATION #ANCRE_PAGINATION
<BOUCLE_articles(ARTICLES){titre_mot=seminaires}{par rang}{pagination 6}> <BOUCLE_articles(ARTICLES){titre_mot=seminaires}{par rang}{!par date}{pagination 6}>
<div class="col-lg-4 mt-4 mt-lg-3"> <div class="col-lg-4 mt-4 mt-lg-3">
<INCLURE{fond=inclure/bloc_article, env, id_article,evenement=oui}/> <INCLURE{fond=inclure/bloc_article, env, id_article,evenement=oui}/>
</div> </div>

View file

@ -1,44 +0,0 @@
[(#REM) Rappel : ici #ENV{id_article} correspond à l'id du groupe.]
<div class="bloc-groupe mt-4 mt-lg-0">
<BOUCLE_contenu(CONDITION){si #ENV{forum}|non}>
<h3>Apportez vos réflexions !</br></h3>
<a href="[(#URL_PAGE{agora}|parametre_url{id_article,#ENV{id_article}}|parametre_url{forum,oui})]" class="infos-article ajax" title="Voir le forum">
<h4 class='h5 m-0 mb-3'><i class="fas fa-arrow-circle-right"></i> Accès au forum</h4>
</a>
<div class="h4 mt-4">Dernières contributions</div>
<div class="liste-articles">
<BOUCLE_sujets(FORUMS){id_article=#ENV{id_article}}{!par date}{0,3}{tout}>
<div class="mt-4 mt-lg-0 mb-3">
<a href="[(#URL_PAGE{agora}|parametre_url{id_article,#ENV{id_article}}|parametre_url{forum,oui})]" class="ajax" title="Voir le forum">
#TITRE
</a>
<div class="infos-article">
[(#DATE|date_interface)]
</div>
<div class="infos-article">
par #AUTEUR
</div>
</div>
</BOUCLE_sujets>
<div>Il n'y a pas encore d'échanges.</div>
<//B_sujets>
</div>
</BOUCLE_contenu>
<h3>Documents utiles</h3>
<div class="row mb-3">
<BOUCLE_fichiers(DOCUMENTS){id_article=#ID_ARTICLE}{extension==pdf|doc|docx|odt|xls|xlsx|jpg|png|gif}{tout}>
<div class="col-6 col-md-4 fichier text-center">
<a href="#FICHIER" class="">
[(#LOGO_DOCUMENT|image_reduire{0,120})]
</a>
[<div class="#EDIT{titre}">(#TITRE)</div>]
</div>
</BOUCLE_fichiers>
</div>
<//B_contenu>
</div>

View file

@ -1,75 +0,0 @@
[(#REM) Rappel : ici #ENV{id_article} correspond à l'id du groupe.]
[(#REM) S'il s'agit de la page d'un groupe :]
<BOUCLE_groupe(ARTICLES){id_article=#ENV{id_article}}{par rang}>
[(#REM) Si la personne connectée est admin ou membre du groupe, elle peut rédiger un article]
#SET{id_auteur,#EVAL{$GLOBALS['visiteur_session']['id_auteur']}}
<BOUCLE_test(AUTEURS){id_article=#ID_ARTICLE}{id_auteur=#GET{id_auteur}}>
<div class="mb-1">
<a href="[(#URL_PAGE{editer_article})]" class="btn bouton-rediger"><i class="fas fa-pencil"></i> Rédiger un article</a>
</div>
<div class="mb-3">
<a href="[(#URL_PAGE{groupes}|parametre_url{id_article,#ENV{id_article}}|parametre_url{forum,oui})]" class="btn bouton-rediger ajax"><i class="fas fa-comment"></i> Forum</a>
</div>
</BOUCLE_test>
<?php if (isset($GLOBALS['visiteur_session']['statut']) AND $GLOBALS['visiteur_session']['statut']=="0minirezo") { ?>
<div class="mb-3">
<a href="[(#URL_PAGE{editer_article})]" class="btn bouton-rediger"><i class="fas fa-pencil"></i> Rédiger un article</a>
</div>
<?php } ?>
<//B_test>
<div class="bloc-groupe mt-4 mt-lg-0">
<?php
include_spip('inc/autoriser');
$id_auteur = $GLOBALS['visiteur_session']['id_auteur'] ?? 0;
if (autoriser('modifier','article', #ID_ARTICLE,$id_auteur, array('groupe'))){ ?>
<a class="btn" href="#URL_PAGE{editer_groupe,id_article=#ID_ARTICLE }"><i class="fas fa-edit"></i> Mettre à jour le groupe</a>
<?php } ?>
[<h3>(#TITRE)</h3>]
<strong>Contact</strong>
<BOUCLE_auteurs(AUTEURS){id_article=#ID_ARTICLE}{role=admin}>
<div>
[(#EMAIL|ou{#TELEPHONE}|oui)
<a href="[(#URL_PAGE{contacter_auteur}|parametre_url{id_auteur,#ID_AUTEUR})]" class="mediabox">#NOM</a>
]
</div>
</BOUCLE_auteurs>
[<div class="texte"><strong>Fréquence :</strong> (#DESCRIPTIF|textebrut)</div>]
<div class="texte">#TEXTE</div>
[<div class="texte"><a href="(#SOUSTITRE)">Page du groupe sur actionpopulaire.fr</a></div>]
</div>
</BOUCLE_groupe>
[(#REM) S'il s'agit de la page de tous les groupes :]
<div class="bloc-groupe mt-4 mt-lg-0">
<h3 class="h4">Derniers articles</br></h3>
<div class="liste-articles">
<BOUCLE_a_la_une(ARTICLES){id_rubrique=#CONFIG{balint/id_rub_articles}}{id_groupe>0}{0,6}{! par date}>
<div class="mt-4 mt-lg-0 mb-3">
<div class="infos-article">
[(#DATE|date_interface)]
</div>
<div class="infos-article">
<a href="[(#URL_PAGE{groupes}|parametre_url{id_article,#ID_GROUPE})]" class="ajax nocache">
<i class="fas fa-globe"></i> #INFO_TITRE{article,#ID_GROUPE}
</a>
</div>
<a href="#URL_ARTICLE" title="Lire l'article">
<h4 class='h5 mb-0'>#TITRE</h4>
</a>
[<div class="resume-article">(#DESCRIPTIF)</div>]
</div>
</BOUCLE_a_la_une>
<div class="col">Il n'y a pas encore d'article.</div>
<//B_a_la_une>
</div>
</div>
<//B_groupe>

View file

@ -90,26 +90,5 @@ jQuery(function($) {
// On lie l'événement resize à la fonction // On lie l'événement resize à la fonction
window.addEventListener('resize', redimensionnement, false); window.addEventListener('resize', redimensionnement, false);
/*
// Formulaire de recherche perso
$('body').on('submit', '#barre-recherche', function(event){
event.preventDefault();
var mot = $("#recherche").val();
console.log(mot);
ajaxReload('a_la_une', {
args: {
recherche: mot
}
});
});
$("body").on("click","#btn_reinit_recherche",function(){
ajaxReload('a_la_une', {
args: {
recherche: ''
}
});
});
*/
}); });

View file

@ -1,12 +0,0 @@
<?php
// This is a SPIP language file -- Ceci est un fichier langue de SPIP
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
$GLOBALS[$GLOBALS['idx_lang']] = array(
// I
'info_passe_trop_court' => 'Le mot de passe doit contenir au moins @nb@ caractères dont @nb_min@ minuscule, @nb_maj@ majuscule et @nb_int@ chiffre.',
);

View file

@ -7,8 +7,7 @@ if (!defined('_ECRIRE_INC_VERSION')) {
$GLOBALS[$GLOBALS['idx_lang']] = array( $GLOBALS[$GLOBALS['idx_lang']] = array(
'form_forum_email_deja_enregistre' => 'Un compte existe déjà avec cette adresse email. Connectez-vous (formulaire "Se connecter ci-contre") avec votre mot de passe habituel, ou bien réinitialisez-le <a href="' . generer_url_public('spip_pass') . '">en cliquant ici</a>.', 'form_forum_email_deja_enregistre' => 'Cette adresse email est déjà enregistrée. Veuillez réinitialiser votre mot de passe <a href="' . generer_url_public('spip_pass') . '" class="text-success"><b>en suivant ce lien</b></a>.</br>Avec nos excuses pour ce contretemps.',
'pass_recevoir_mail' => "Un lien de réinitialisation de votre mot de passe vous a été envoyé sur votre adresse email (si celle-ci est valide). Si vous ne le trouvez pas, pensez à vérifiez vos SPAMs.", 'pass_recevoir_mail' => "Un lien de réinitialisation de votre mot de passe vous a été envoyé sur votre adresse email (si celle-ci est valide). Si vous ne le trouvez pas, pensez à vérifiez vos SPAMs."
'entree_nom_pseudo' => 'Nom et prénom'
); );

1
login.html Normal file
View file

@ -0,0 +1 @@
<INCLURE{fond=structure,env,type-page=espace_membre,rub_forum=#CONFIG{balint/id_rub_forum}} />

View file

@ -3,13 +3,13 @@
categorie="squelette" categorie="squelette"
version="1.0.0" version="1.0.0"
etat="stable" etat="stable"
compatibilite="[3.1.7;3.3.*]" compatibilite="[4.0.0;4.*]"
logo="img/fede_64.jpg" logo="img/balint_64.png"
documentation="" documentation=""
schema="1.0.13" schema="1.0.7"
> >
<nom>Squelette Fédé</nom> <nom>Squelette AIPB</nom>
<auteur lien='https://gamuza.fr'>Gamuza[informatique]</auteur> <auteur lien='https://gamuza.fr'>Gamuza[informatique]</auteur>
@ -25,7 +25,6 @@
<necessite nom="suivant_precedent" compatibilite="[1.4.4;]" /> <necessite nom="suivant_precedent" compatibilite="[1.4.4;]" />
<necessite nom="bigform" compatibilite="[1.0.5;]" /> <necessite nom="bigform" compatibilite="[1.0.5;]" />
<necessite nom="compositions" compatibilite="[3.8.0;]" /> <necessite nom="compositions" compatibilite="[3.8.0;]" />
<necessite nom="motpassecomplexe" compatibilite="[1.3.0;]" />
<utilise nom="urls_pages" compatibilite="[1.0.11;]" /> <utilise nom="urls_pages" compatibilite="[1.0.11;]" />
<pipeline nom="declarer_champs_extras" inclure="base/balint.php" /> <pipeline nom="declarer_champs_extras" inclure="base/balint.php" />

85
urls/propres.php Normal file
View file

@ -0,0 +1,85 @@
<?php
/**
* Gestion des URLs propres : surcharge (voir @notes pour le pourquoi et le comment)
*/
if (!defined("_ECRIRE_INC_VERSION")) {
return;
}
/**
* Retrouve le fond et les paramètres d'une URL propre
* ou produit l'URL propre d'un objet, en fonction des paramètres passés.
*
* @note
* À défaut de pipeline dont on pourrait se servir, on est obligé de surcharger
* la fonction urls_propres_dist pour gérer correctement les URLS des pages.
* Néammoins, une fois le cas des pages évacué, c'est toujours la fonction dist qui est utilisée.
*
* La fonction dist est prévue pour gérer les URLs des objets.
* Pour un objet donné, elle va chercher l'URL la plus récente dans `spip_urls`.
* Or toutes les URLs des pages seraient identifiées comme se rapportant au même objet, avec type='' et id_objet=0,
* et du coup seraient redirigées vers la même URL : celle la plus récente.
*
* On ne serait pas obligé de surcharger on utilisant type=`page` et id_objet=N pour les URLs des pages,
* mais le contexte retourné serait erroné : `id_page = N` au lieu de `page = X`
*
* Valeurs des paramètres quand il s'agit d'une page :
* $i = URL personnalisée
* $entite = ''
*
* @param integer | string
* URL si on veut retourner son fond et ses paramètres
* Numéro d'un objet si on veut retourner son URL propre
* @param string $entite
* Fond si on veut retourner le fond et les paramètres d'une URL
* Type d'un objet si on veut retourner son URL propre
* @param array | string $args
* @param string $ancre
* @return array
* Fond et paramètres d'une URL propre : [contexte],[type],[url_redirect],[fond]
* ou URL décodée de l'objet donné
*/
function urls_propres_decoder_url($i, $entite, $args = '', $ancre = '') {
include_spip('base/abstract_sql');
// 1) Gestion des pages (voir @note)
if (is_string($i) // c'est une URL et pas un id
and strlen($i)
and strpos($i, '/') === false // ce n'est pas une URL arborescente
and !$entite // ce n'est pas l'URL d'un objet
and $url = strtok($i, '?') // retirer les query strings
and $ligne = sql_fetsel('page, url', 'spip_urls', array('url = ' . sql_quote($url), 'page != \'\''))
) {
$fond = $page = $ligne['page'];
// récupérer le contexte
if (is_array($args)){
$contexte = $args;
} else {
$contexte = array();
}
$contexte['page'] = $page;
$retour = array(
$contexte,
$entite,
'',
$fond,
);
// 2) S'il ne s'agit pas d'une page, appel de la fonction dist
} else {
include_spip(_DIR_PLUGIN_URLS.'urls/propres');
$retour = urls_propres_decoder_url_dist($i, $entite, $args, $ancre);
}
return $retour;
}
/**
* include de tout le fichier urls/propres.php du plugin-dist url_etendues
* pour avoir toutes les fonctions que n'a pas la surcharge du plugin urls_pages
*
**/
include_spip('plugins-dist/urls_etendues/urls/propres');