Skip to content
Extraits de code Groupes Projets
Valider c5179f2a rédigé par cerdic's avatar cerdic
Parcourir les fichiers

gestion des droits de webmestre : etre un peu plus smart avec les utilisateurs.

Lorsqu'un define force les droits de webmestre, l'indiquer sur sa fiche perso (si on ne l'est pas) ou lors de la tentative d'edition des statuts d'un admin (si on l'est)
Si on n'est pas webmestre et que ce n'est pas gere par un define, un bouton 'Me donner les droits de webmestre' permet de se promouvoir avec verification par FTP sans avoir a refaire l'installation.
parent 8a45e097
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -27,6 +27,7 @@ ecrire/action/editer_mot.php -text
ecrire/action/editer_mots.php -text
ecrire/action/editer_rubrique.php -text
ecrire/action/editer_site.php -text
ecrire/action/etre_webmestre.php -text
ecrire/action/export_all.php -text
ecrire/action/iconifier.php -text
ecrire/action/index.php -text
......
......@@ -152,7 +152,7 @@ function auteur_referent($id_auteur,$c){
}
// http://doc.spip.org/@instituer_auteur
function instituer_auteur($id_auteur, $c) {
function instituer_auteur($id_auteur, $c, $force_webmestre = false) {
if (!$id_auteur=intval($id_auteur))
return false;
// commencer par traiter les cas particuliers des logins et pass
......@@ -184,7 +184,7 @@ function instituer_auteur($id_auteur, $c) {
$c['restreintes'] = array($c['id_parent']);
}
if (isset($c['webmestre']) AND autoriser('modifier', 'auteur', $id_auteur,null, array('webmestre' => '?')))
if (isset($c['webmestre']) AND ($force_webmestre OR autoriser('modifier', 'auteur', $id_auteur,null, array('webmestre' => '?'))))
$champs['webmestre'] = $c['webmestre']=='oui'?'oui':'non';
// Envoyer aux plugins
......
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2010 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined("_ECRIRE_INC_VERSION")) return;
include_spip('inc/actions');
/**
* Prouver qu'on a les droits de webmestre via un ftp, et
* devenir webmestre sans refaire l'install
* @return <type>
*/
function action_etre_webmestre_dist() {
$securiser_action = charger_fonction('securiser_action', 'inc');
$time = $securiser_action();
if (time()-$time<15*60
AND $GLOBALS['visiteur_session']['statut']=='0minirezo'
AND $GLOBALS['visiteur_session']['webmestre']!=='oui') {
$action = _T('info_admin_etre_webmestre');
$admin = charger_fonction('admin', 'inc');
// lance la verif par ftp et l'appel
// a base_etre_webmestre_dist quand c'est OK
if ($r = $admin('etre_webmestre', $action)) {
echo $r;
exit;
}
}
}
function base_etre_webmestre_dist() {
if ($GLOBALS['visiteur_session']['statut']=='0minirezo' AND $GLOBALS['visiteur_session']['webmestre']!=='oui') {
include_spip('action/editer_auteur');
instituer_auteur($GLOBALS['visiteur_session']['id_auteur'], array('webmestre'=>'oui'), true);
}
}
?>
......@@ -21,7 +21,7 @@ include_spip('inc/autoriser');
// affiche le statut de l'auteur dans l'espace prive
// les admins voient et peuvent modifier les droits d'un auteur
// les admins restreints les voient mais
// les admins restreints les voient mais
// ne peuvent les utiliser que pour mettre un auteur a la poubelle
// http://doc.spip.org/@inc_instituer_auteur_dist
......@@ -41,9 +41,9 @@ function inc_instituer_auteur_dist($auteur, $modif = true) {
$res = "<$label>" . _T('info_statut_auteur')."</$label> " . $menu;
if ($modif)
$res .= editer_choix_webmestre($auteur);
$res .= "<div>".editer_choix_webmestre($auteur)."</div>";
else
$res .= afficher_webmestre($auteur);
$res .= (($w=afficher_webmestre($auteur))?" ($w)":"");
// Prepare le bloc des rubriques pour les admins eventuellement restreints ;
// si l'auteur n'est pas '0minirezo', on le cache, pour pouvoir le reveler
......@@ -65,23 +65,36 @@ function inc_instituer_auteur_dist($auteur, $modif = true) {
function afficher_webmestre($auteur){
if (autoriser('webmestre','',0,$auteur['id_auteur']))
return "<p>"._L("Cet administrateur est <b>webmestre</b>")."</p>";
if ($auteur['id_auteur']==$GLOBALS['visiteur_session']['id_auteur'])
return _T("info_admin_je_suis_webmestre");
else
return _T("info_admin_webmestre");
// si c'est ma fiche perso, en dire un peu plus
if ($auteur['id_auteur']==$GLOBALS['visiteur_session']['id_auteur']) {
if (defined('_ID_WEBMESTRES'))
return _T('info_webmestre_forces',array('file_options'=>basename(_FILE_OPTIONS)));
else
return bouton_action (_T('info_admin_etre_webmestre'), generer_action_auteur('etre_webmestre', time(), self()));
}
return "";
}
function editer_choix_webmestre($auteur){
$res = "";
$style = "";
$style = "";
if (!autoriser('modifier', 'auteur', $auteur['id_auteur'],
null, array('webmestre' => '?'))){
$res = afficher_webmestre($auteur);
if (defined('_ID_WEBMESTRES'))
$res .= ' '._T('info_webmestre_forces',array('file_options'=>basename(_FILE_OPTIONS)));
}
else {
$res = "<input type='checkbox' class='checkbox' name='webmestre' id='webmestre' value='oui'"
. ($auteur['webmestre']=='oui'?" checked='checked'":"")
. " />"
. "<label for='webmestre'>"
. _L("Donner a cet administrateur les droits de webmestre")
. _T("info_admin_statuer_webmestre")
. "</label>";
$res .= "<input type='hidden' name='saisie_webmestre' value='1' />";
......@@ -101,14 +114,14 @@ function traduire_statut_auteur($statut){
);
if (isset($recom[$statut]))
return $recom[$statut];
// retrouver directement par le statut sinon
if ($t = array_search($statut, $GLOBALS['liste_des_statuts'])){
if (isset($recom[$t]))
return $recom[$t];
return $t;
}
return '';
}
......@@ -121,7 +134,7 @@ function choix_statut_auteur($statut, $id_auteur, $ancre) {
null, array('statut' => '?')))
return '';
// A-t-on le droit de promouvoir cet auteur comme admin
// A-t-on le droit de promouvoir cet auteur comme admin
// et y a-t-il des visiteurs ?
$droits = $GLOBALS['liste_des_statuts'];
......@@ -157,7 +170,7 @@ function choix_statut_auteur($statut, $id_auteur, $ancre) {
$menu .= mySel('nouveau',$statut,_T('info_statut_auteur_a_confirmer'));
$statut_rubrique = str_replace(',', '|', _STATUT_AUTEUR_RUBRIQUE);
return "<select class='select fondl' name='statut' id='statut' size='1'
return "<select class='select' name='statut' id='statut' size='1'
onchange=\"(this.options[this.selectedIndex].value.match(/^($statut_rubrique)\$/))?jQuery('#$ancre:hidden').slideDown():jQuery('#$ancre:visible').slideUp();"
. "(this.options[this.selectedIndex].value=='0minirezo')?jQuery('#choix-webmestre:hidden').slideDown():jQuery('#choix-webmestre:visible').slideUp();\">"
. $menu
......@@ -175,7 +188,7 @@ function afficher_rubriques_admin_restreintes($auteur, $modif = true){
$id_auteur = intval($auteur['id_auteur']);
$result = sql_select("R.id_rubrique, " . sql_multi ("titre", $spip_lang), "spip_auteurs_rubriques AS L LEFT JOIN spip_rubriques AS R ON L.id_rubrique=R.id_rubrique", "L.id_auteur=$id_auteur", "", "multi");
$result = sql_select("rubriques.id_rubrique, " . sql_multi ("titre", $spip_lang) . "", "spip_auteurs_rubriques AS lien LEFT JOIN spip_rubriques AS rubriques ON lien.id_rubrique=rubriques.id_rubrique", "lien.id_auteur=$id_auteur", "", "multi");
$menu = $restreint = '';
// L'autorisation de modifier les rubriques restreintes
......@@ -200,7 +213,7 @@ function afficher_rubriques_admin_restreintes($auteur, $modif = true){
} else {
$menu = "<ul id='liste_rubriques_restreintes' style='list-style-image: url("
. chemin_image("rubrique-12.png")
. chemin_image("rubrique-12.gif")
. ")'>"
. $restreint
. "</ul>\n";
......@@ -238,7 +251,7 @@ function choix_rubriques_admin_restreint($auteur, $modif=true) {
$res .= debut_block_depliable(true,"statut$id_auteur")
. "\n<div id='ajax_rubrique' class='arial1'>\n"
. "<b>"
. $label
. $label
. "</b>"
. "\n<input name='id_auteur' value='"
. $id_auteur
......
......@@ -287,6 +287,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'info_admin_gere_rubriques' => 'Cet administrateur g&egrave;re les rubriques suivantes :',
'info_admin_gere_toutes_rubriques' => 'Cet administrateur g&egrave;re <b>toutes les rubriques</b>.',
'info_admin_statuer_webmestre' => 'Donner &agrave; cet administrateur les droits de webmestre',
'info_admin_etre_webmestre' => 'Me donner les droits de webmestre',
'info_admin_je_suis_webmestre' => 'Je suis <b>webmestre</b>',
'info_admin_webmestre' => 'Cet administrateur est <b>webmestre</b>',
'info_administrateur' => 'Administrateur',
'info_administrateur_1' => 'Administrateur',
......@@ -712,6 +714,7 @@ exige d\'avoir un acc&egrave;s FTP au site Web.</p>',
Les traductions sont associ&eacute;es &agrave; l\'original,
dans une couleur qui indique leur &eacute;tat&nbsp;:',
'info_travail_colaboratif' => 'Travail collaboratif sur les articles',
'info_webmestre_forces' => 'Les webmestres sont actuellement d&eacute;finis dans <tt>@file_options@</tt>.',
'info_un_article' => 'un article,',
'info_un_mot' => 'Un seul mot &agrave; la fois',
'info_un_site' => 'un site,',
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter