Les fonctions autoriser...() de l'api autoriser() sont faites pour être surchargées en fonction des besoins spécifiques de chaque application.
Il suffit, dans mes_options.php de définir, dans ton cas
function autoriser_article_creerevenementdans($faire,$quoi,$id,$qui,$options){
return true;
}
function autoriser_evenement_modifier($faire,$quoi,$id,$qui,$options){
return true;
}
Attention donc :
- a bien enlever le suffixe _dist car sinon cela va planter (2 fois la meme fonction definie).
- a bien les definir dans ton fichier mes_options
Cédric
Le 15 avr. 09 à 17:49, luc.tech a écrit :
Bonjour,
Pour rendre la saisie d'événement publique, la seule façon que j'ai trouvée est de modifier les fonctions "autoriser..." du plugin (module agenda_autoriser.php).
function autoriser_article_creerevenementdans_dist($faire,$quoi,$id,$qui,$options){
return(true); /* hack pour rendre public*/
if (!$id) return false; // interdit de creer un evenement sur un article vide !
// si on a le droit de modifier l'article alors on a le droit d'y creer un evenement !
return autoriser('modifier','article',$id);
}
function autoriser_evenement_modifier_dist($faire,$quoi,$id,$qui,$options){
return(true); /* hack rendre public*/
if (!isset($options['id_article']) OR !$id_article=$options['id_article'])
$id_article = sql_getfetsel('id_article','spip_evenements','id_evenement='.intval($id));
if (!$id_article) return false;
return autoriser('modifier','article',$id_article,$qui);
}
Avez-vous plus propre ?
Autre solution ?
Ou bien un autre emplacement (répertoire squelettes ?) pour ne pas toucher aux fichiers sources du plugin ? Cela n'a pas marché en les mettant dans mes_fonctions.php, sans doute parce que pipeline ?
D'avance merci.
Luc
luc.tech a écrit :
Bonjour,
Est-il possible de permettre la saisie d'événement par des visiteurs non connectés ?
Je n'y arrive pas. Même avec l'aide de l'article de spip-contrib.
Le formulaire apparaît bien. Mais après la validation un message me dit que je ne suis pas autorisé.
Sans doute parce que "anonyme" n'est pas l'auteur de l'article.
Je n'ai pas vu de différence avec ou sans "ajout_evenement=oui" dans l'url (la doc 2.0 renvoie sur 1.9 pour la partie publique).
Est-ce bien prévu par le plugin ? Avec un moyen simple et propre donc.
J'ai tenté de contourner en enlevant le contrôle de droits dans la fonction "formulaires_editer_evenement_verifier_dist"
if (!$id_parent = intval(_request('id_parent')))
$erreurs['id_parent'] = _T('agenda:erreur_article_manquant');
/* suppression début else {
if (!autoriser('creerevenementdans','article',$id_parent))
$erreurs['id_parent'] = _T('agenda:erreur_article_interdit');
} suppression fin */
#if (!count($erreurs))
# $erreurs['message_erreur'] = 'ok?';
return $erreurs;
Le message d'erreur n'apparaît plus...
Mais il doit y avoir un problème plus loin car l'événement n'apparaît pas non plus dans l'agenda.
Bonne piste tout d même ?
D'avance merci.
Luc
_______________________________________________
spip-zone@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone
_______________________________________________
spip-zone@rezo.net - http://listes.rezo.net/mailman/listinfo/spip-zone