- on ajoute un forum accessible aux membres d'un groupe

- on ajoute des boutons visibles pour faciliter la rédaction d'articles pour les membres autorisés
- autorisations précisées en conséquence
This commit is contained in:
Pierre 2020-12-03 04:02:37 +01:00
parent 716317b4e6
commit c2619da0b1
5 changed files with 93 additions and 46 deletions

View file

@ -118,7 +118,7 @@ function autoriser_article_lire($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 role "admin"
// Si l'article est un groupe, il faut être auteur et avoir le rôle "admin"
if ($opt AND in_array('groupe',$opt)){
$where = array(
'id_objet='.intval($id),
@ -146,6 +146,7 @@ function autoriser_article_modifier($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
if ($qui['statut']=="1comite"){
$id_rub = lire_config('balint/id_rub_groupes');
@ -159,7 +160,8 @@ function autoriser_article_rediger($faire, $type, $id, $qui, $opt) {
// Sinon il faut être admin
else{
return in_array($qui['statut'], array('0minirezo'));
}
}*/
return in_array($qui['statut'], array('0minirezo','1comite'));
}
function autoriser_sujet_creer($faire, $type, $id, $qui, $opt) {
@ -177,27 +179,18 @@ function autoriser_sujet_editer($faire, $type, $id, $qui, $opt) {
}
function autoriser_forum_voir($faire, $type, $id, $qui, $opt) {
return in_array($qui['statut'], array('0minirezo','1comite'));
/* $id_auteur = $qui['id_auteur'];
// Il faut être au moins membre
if ($qui['statut']=='1comite'){
// 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'){
// Si le forum est lié à un groupe, il faut être membre du groupe (auteur de l'article)
if ($opt AND in_array('groupe',$opt)){
if (in_array($qui['id_auteur'],auteurs_objet('article',$id))){
return true;
}
else{
return false;
return in_array($qui['statut'], array('0minirezo'));
}
}
// 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;
}
*/
}

View file

@ -1,14 +1,33 @@
<a href="[(#URL_PAGE{#ENV{type-page}}|parametre_url{rub_forum,#ENV{rub_forum}})]"><i class="fas fa-arrow-circle-left"></i> Retour</a>
<?php
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}}>
<div id="sujet-forum" class="sujet-forum">
<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>[(#TEXTE)]</div>
<div class="boutons a-droite">
<INCLURE{fond=inclure/boutons_modifier_sujet, env, id_article=#ID_ARTICLE}/>
</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>
<div class="liste-documents row mt-3 mb-3">
@ -56,3 +75,8 @@
</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

@ -24,10 +24,15 @@
]
<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">
#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}>
<div class="col-lg-3 mt-4 mt-lg-3">
<div class="col-md-3 mt-4 mt-lg-3">
<INCLURE{fond=inclure/bloc_article, env, id_article}/>
</div>
</BOUCLE_articles>

View file

@ -7,24 +7,31 @@
<div class="col w-100 col-lg-8">
<INCLURE{fond=inclure/choix_ville,env} />
</div>
<aside class="col col-lg-4 d-none d-lg-block dernieres-nouvelles">
<aside class="col-12 col-lg-4 dernieres-nouvelles">
<INCLURE{fond=inclure/sidebar_groupes,env} />
</aside>
</div>
]
[(#ENV{id_article}|oui)
<INCLURE{fond=inclure/menu-groupes,env}>
<a href="[(#URL_PAGE{groupes})]" class="ajax"><i class="fas fa-arrow-circle-left"></i> Tous les groupes</a>
<INCLURE{fond=inclure/menu-groupes,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 w-100 col-lg-8">
<div class="col-12 w-100 col-lg-8">
<INCLURE{fond=inclure/groupe-detail,env} />
</div>
<aside class="col col-lg-4 dernieres-nouvelles">
<aside class="col-12 col-lg-4 dernieres-nouvelles">
<INCLURE{fond=inclure/sidebar_groupes,env} />
</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>

View file

@ -1,17 +1,36 @@
[(#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">
[(#REM) S'il s'agit de la page d'un groupe :]
<BOUCLE_groupe(ARTICLES){id_article=#ENV{id_article}}{par rang}>
<?php
include_spip('inc/autoriser');
if (autoriser('modifier','article', #ID_ARTICLE,$GLOBALS['visiteur_session']['id_auteur'], array('groupe'))){ ?>
$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 class="h4">(#TITRE)</h3>]
[<h3>(#TITRE)</h3>]
<strong>Contact</strong>
<BOUCLE_auteurs(AUTEURS){id_article=#ID_ARTICLE}{role=admin}>
@ -25,11 +44,11 @@
[<div class="texte"><strong>Adresse :</strong> (#SOUSTITRE)</div>]
[<div class="texte"><strong>Fréquence :</strong> (#DESCRIPTIF|textebrut)</div>]
<div class="texte">#TEXTE</div>
</div>
</BOUCLE_groupe>
</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}>
@ -51,6 +70,5 @@
<div class="col">Il n'y a pas encore d'article.</div>
<//B_a_la_une>
</div>
<//B_groupe>
</div>
<//B_groupe>