diff --git a/.gitattributes b/.gitattributes index 85576dd3776577475813a826b653e878488dce9e..e56fa239f92008e389fe71659ba3d9f65e7d8376 100644 --- a/.gitattributes +++ b/.gitattributes @@ -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 diff --git a/ecrire/action/editer_auteur.php b/ecrire/action/editer_auteur.php index fc4346a8a409c3c553d798581067040da1ede72c..945ce4a73b33e697848991fe4fa891a7f9dfc762 100644 --- a/ecrire/action/editer_auteur.php +++ b/ecrire/action/editer_auteur.php @@ -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 diff --git a/ecrire/action/etre_webmestre.php b/ecrire/action/etre_webmestre.php new file mode 100644 index 0000000000000000000000000000000000000000..f8f6552340849394cf569830109e45fd8ff6cee6 --- /dev/null +++ b/ecrire/action/etre_webmestre.php @@ -0,0 +1,47 @@ +<?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); + } +} +?> diff --git a/ecrire/inc/instituer_auteur.php b/ecrire/inc/instituer_auteur.php index 07226b9e9e6d60ca0a0ea2e1029d2c26298c8ef5..f1f19470945be69571bca3d7b5d2b441d0dc6cb7 100644 --- a/ecrire/inc/instituer_auteur.php +++ b/ecrire/inc/instituer_auteur.php @@ -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 diff --git a/ecrire/lang/ecrire_fr.php b/ecrire/lang/ecrire_fr.php index fdb50b57ec034897f63711c300a23aa1c74393e6..d7ce58d24f8c7474be9ec0cce024e1024859bc44 100644 --- a/ecrire/lang/ecrire_fr.php +++ b/ecrire/lang/ecrire_fr.php @@ -287,6 +287,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array( 'info_admin_gere_rubriques' => 'Cet administrateur gère les rubriques suivantes :', 'info_admin_gere_toutes_rubriques' => 'Cet administrateur gère <b>toutes les rubriques</b>.', 'info_admin_statuer_webmestre' => 'Donner à 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ès FTP au site Web.</p>', Les traductions sont associées à l\'original, dans une couleur qui indique leur état :', 'info_travail_colaboratif' => 'Travail collaboratif sur les articles', +'info_webmestre_forces' => 'Les webmestres sont actuellement définis dans <tt>@file_options@</tt>.', 'info_un_article' => 'un article,', 'info_un_mot' => 'Un seul mot à la fois', 'info_un_site' => 'un site,',