fil-JM9gtpQu/Ho@public.gmane.org wrote:
Author: fil-JM9gtpQu/Ho@public.gmane.org
Date: Tue May 1 13:02:27 2007
New Revision: 11771Log:
le wiki sur des secteurs multiples (chaud)Modified:
_plugins_/_dev_/autorite/fonds/cfg_autorite.html
_plugins_/_dev_/autorite/inc/autoriser.phpModified: _plugins_/_dev_/autorite/fonds/cfg_autorite.html
--- _plugins_/_dev_/autorite/fonds/cfg_autorite.html (original)
+++ _plugins_/_dev_/autorite/fonds/cfg_autorite.html Tue May 1 13:02:27 2007
@@ -70,13 +70,29 @@
<p>
<label>
Choisissez ci-dessous un secteur à traiter comme un wiki, c'est-à-dire éditable par tous depuis l'espace public (à condition d'avoir une interface, par exemple les crayons) :
+
<br />
-<select name="espace_wiki" id="espace_wiki">
- <option value="0">(aucun)</option>
- <BOUCLE_r(RUBRIQUES){racine}{par num titre, titre}>
- <option value="#ID_RUBRIQUE"[(#ENV{espace_wiki}|=={#ID_RUBRIQUE}|?{' selected="selected"'})]>#TITRE</option>
- </BOUCLE_r>
+
+[(#REM)
+ Hack: si notre config n'existe pas, on veut un array vide
+ pour ne pas avoir d'erreur sur |in_array !
+]
+[(#SET{selected,[(#REM|sinon{-}|explode{''})]})]
+[(#CONFIG{autorite/espace_wiki,'',''}|is_array|?{
+ [(#SET{selected,#CONFIG{autorite/espace_wiki,'',''}})]
+})]
Mais on peut pas utiliser un #ARRAY vide, genre:
[(#CONFIG{autorite/espace_wiki,#ARRAY,''}
?
En tout cas, tu a raison, le in_array de l'exemple de cfg est un peu rapide ...
--
toggg
+
+<select name="espace_wiki" multiple="multiple" size="5" id="espace_wiki">
+<BOUCLE_rmul(RUBRIQUES){racine}{par num titre, titre}>
+ <option value="#ID_RUBRIQUE"[(#ID_RUBRIQUE|in_array{#GET{selected}}|?{' selected="selected"'})]>
+ #TITRE
+ </option>
+</BOUCLE_rmul>
</select>
+
+<small><br />(vous pouvez sélectionner plusieurs secteurs avec la touche shift)
+<br /><a onclick="$('#espace_wiki').find('option').attr('selected', false).end().trigger('change');">x</a> tout déselectionner</small>
+
</label>
</p>
@@ -105,7 +121,7 @@
else
$('#espace_wiki_qui:visible').slideUp('slow');
})
- if (parseInt($('#espace_wiki')[0].value) == 0)
+ if ($('#espace_wiki option[@selected]').length == 0)
$('#espace_wiki_qui').hide();
// --></script>Modified: _plugins_/_dev_/autorite/inc/autoriser.php
--- _plugins_/_dev_/autorite/inc/autoriser.php (original)
+++ _plugins_/_dev_/autorite/inc/autoriser.php Tue May 1 13:02:27 2007
@@ -38,7 +38,16 @@
##
if ($GLOBALS['autorite']['espace_wiki']) {
if (!function_exists('autorisation_wiki_visiteur')) {
- function autorisation_wiki_visiteur($qui) {
+ function autorisation_wiki_visiteur($qui, $id_secteur) {
+ // espace_wiki est un array(secteur1, secteur2), ou un id_secteur
+ if (
+ (is_array($GLOBALS['autorite']['espace_wiki'])
+ AND !in_array($id_secteur,$GLOBALS['autorite']['espace_wiki']))
+ AND
+ $id_secteur != $GLOBALS['autorite']['espace_wiki']
+ )
+ return false;
+
switch($qui['statut']) {
case '0minirezo':
case '1comite':
@@ -73,15 +81,11 @@
include_spip('inc/auth');
return
autoriser('publierdans', 'rubrique', $r['id_rubrique'], $qui, $opt)
- OR (
+ OR
// Cas du wiki, on appelle la fonction qui verifie les droits wiki
- $r['id_secteur'] == $GLOBALS['autorite']['espace_wiki']
- AND autorisation_wiki_visiteur($qui)
- )
+ autorisation_wiki_visiteur($qui, $r['id_secteur'])
OR (
in_array($qui['statut'], array('0minirezo', '1comite'))
-
- # si on commente cette ligne : tous les articles sont modifiables
AND (
$GLOBALS['autorite']['auteur_mod_article']
OR in_array($r['statut'], array('prop','prepa', 'poubelle'))
@@ -111,8 +115,7 @@
$s = spip_query(
"SELECT id_secteur FROM spip_rubriques WHERE id_rubrique="._q($id));
$r = spip_fetch_array($s);
- if ($r['id_secteur'] == $GLOBALS['autorite']['espace_wiki']
- AND autorisation_wiki_visiteur($qui))
+ if (autorisation_wiki_visiteur($qui, $r['id_secteur']))
return true;
// par defaut, NIET