X-Git-Url: http://git.cyclocoop.org/?p=velocampus%2Fweb%2Fwww.git;a=blobdiff_plain;f=www%2Fecrire%2Finc%2Finstituer_auteur.php;fp=www%2Fecrire%2Finc%2Finstituer_auteur.php;h=88496d8c17f0f12b09bfa02f6222d939a1073158;hp=0000000000000000000000000000000000000000;hb=80b4d3e85f78d402ed2e73f8f5d1bf4c19962eed;hpb=aaf970bf4cdaf76689ecc10609048e18d073820c diff --git a/www/ecrire/inc/instituer_auteur.php b/www/ecrire/inc/instituer_auteur.php new file mode 100644 index 0000000..88496d8 --- /dev/null +++ b/www/ecrire/inc/instituer_auteur.php @@ -0,0 +1,273 @@ +" . _T('info_statut_auteur')." " . $menu; + + if ($modif) + $res .= editer_choix_webmestre($auteur); + else + $res .= afficher_webmestre($auteur); + + // Prepare le bloc des rubriques pour les admins eventuellement restreints ; + // si l'auteur n'est pas '0minirezo', on le cache, pour pouvoir le reveler + // en jquery lorsque le menu de statut change + $vis = in_array($statut, explode(',', _STATUT_AUTEUR_RUBRIQUE)) + ? '' + : " style='display: none'"; + + if ($menu_restreints = choix_rubriques_admin_restreint($auteur, $modif)) + $res .= "
" + . $menu_restreints + . "
"; + + return $res; +} + + +function afficher_webmestre($auteur){ + if (autoriser('webmestre','',0,$auteur['id_auteur'])) + return "

"._T("info_admin_webmestre")."

"; + return ""; +} + +function editer_choix_webmestre($auteur){ + $res = ""; + $style = ""; + if (!autoriser('modifier', 'auteur', $auteur['id_auteur'], + null, array('webmestre' => '?'))){ + $res = afficher_webmestre($auteur); + } + else { + $res = "" + . ""; + + $res .= ""; + // visible ou pas ? + if ($auteur['statut']!='0minirezo') + $style=" style='display:none;'"; + } + return "
$res
"; +} + +// http://doc.spip.org/@traduire_statut_auteur +function traduire_statut_auteur($statut){ + $recom = array( + "info_administrateurs" => 'item_administrateur_2', + "info_redacteurs" => 'intem_redacteur', + "info_visiteurs" => 'item_visiteur', + "5poubelle" => 'texte_statut_poubelle', // bouh + ); + if (isset($recom[$statut])) + return _T($recom[$statut]); + + // retrouver directement par le statut sinon + if ($t = array_search($statut, $GLOBALS['liste_des_statuts'])){ + if (isset($recom[$t])) + return _T($recom[$t]); + return _T($t); + } + + return ''; +} + +// Menu de choix d'un statut d'auteur +// http://doc.spip.org/@choix_statut_auteur +function choix_statut_auteur($statut, $id_auteur, $ancre) { + + // Le menu doit-il etre actif ? + if (!autoriser('modifier', 'auteur', $id_auteur, + null, array('statut' => '?'))) + return ''; + + // A-t-on le droit de promouvoir cet auteur comme admin + // et y a-t-il des visiteurs ? + + $droits = $GLOBALS['liste_des_statuts']; + + if (!autoriser('modifier', 'auteur', $id_auteur, + null, array('statut' => '0minirezo'))) + unset($droits["info_administrateurs"]); + + if (!avoir_visiteurs() AND $statut!==$droits['info_visiteurs']) + unset($droits['info_visiteurs']); + + $menu = ''; + foreach($droits as $k => $v) { + if (($v != '5poubelle') && ($k = traduire_statut_auteur($v))) + $menu .= mySel($v, $statut, $k); + } + + // Chercher les statuts non standards + $l = $GLOBALS['liste_des_statuts']; + $l[]= 'nouveau'; + $q = sql_allfetsel("statut", 'spip_auteurs', sql_in('statut', $l, 'NOT'), "statut"); + + $hstatut = htmlentities($statut); + foreach ($q as $r) { + $nom = htmlentities($r['statut']); + $t = traduire_statut_auteur($nom); + $t = !$t ? (_T('info_statut_auteur_autre') . ' ' . $nom) : $t; + $menu .= mySel($nom, $hstatut, $t); + } + + // Ajouter l'option "nouveau" si l'auteur n'est pas confirme + if ($statut == 'nouveau') + $menu .= mySel('nouveau',$statut,_T('info_statut_auteur_a_confirmer')); + + $statut_rubrique = str_replace(',', '|', _STATUT_AUTEUR_RUBRIQUE); + return "\n"; +} + +// http://doc.spip.org/@afficher_rubriques_admin_restreintes +function afficher_rubriques_admin_restreintes($auteur, $modif = true){ + global $spip_lang; + + $id_auteur = intval($auteur['id_auteur']); + + $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 + // est egale a l'autorisation de passer en admin + $modif &= autoriser('modifier', 'auteur', $id_auteur, null, array('statut' => '0minirezo')); + while ($row_admin = sql_fetch($result)) { + $id_rubrique = $row_admin["id_rubrique"]; + $h = generer_url_ecrire('naviguer', "id_rubrique=$id_rubrique"); + $restreint .= "\n
  • " + . ($modif + ? "\n" + : '' + ) + . "" + . typo($row_admin["multi"]) + . "" + . '
  • '; + } + + if (!$restreint) { + $phrase = _T('info_admin_gere_toutes_rubriques')."\n"; + } else { + + $menu = "\n"; + + // Il faut un element zero pour montrer qu'on a l'interface + // sinon il est impossible de deslectionner toutes les rubriques + if ($modif) + $menu .= "\n"; + $phrase = _T('info_admin_gere_rubriques'); + } + + if ($auteur['statut'] != '0minirezo') + $phrase = ''; + + return "

    $phrase

    \n$menu"; +} + +// http://doc.spip.org/@choix_rubriques_admin_restreint +function choix_rubriques_admin_restreint($auteur, $modif=true) { + global $spip_lang; + + $id_auteur = intval($auteur['id_auteur']); + $res = afficher_rubriques_admin_restreintes($auteur, $modif); + + // Ajouter une rubrique a un administrateur restreint + if ($modif + AND autoriser('modifier', 'auteur', $id_auteur, NULL, array('restreintes' => true)) + AND $chercher_rubrique = charger_fonction('chercher_rubrique', 'inc') + AND $a = $chercher_rubrique(0, 'auteur', false)) { + + $label = $restreint + ? _T('info_ajouter_rubrique') + : _T('info_restreindre_rubrique'); + + $res .= debut_block_depliable(true,"statut$id_auteur") + . "\n
    \n" + . "" + . $label + . "" + . "\n" + . $a + . "
    \n" + + // onchange = pour le menu + // l'evenement doit etre provoque a la main par le selecteur ajax + . "\n" + + . fin_block(); + } + + return $res; +} + + +?>