http://redmine.ulysses.fr/http://redmine.ulysses.fr/themes/PurpleMine2/favicon/favicon.ico?16318893672012-12-11T20:01:38ZGalette bugs & featuresGalette - Anomalie #449: Accès à l'objet d'authentification depuis les pluginshttp://redmine.ulysses.fr/issues/449?journal_id=136302012-12-11T20:01:38ZJohan Cwiklinskijohan@x-tnd.be
<ul></ul><p>Hum... Je vois bien ce que tu veux faire ; effectivement, ce n'est pas possible.</p>
<p>En revanche... Ça sent l'usine à gaz :D</p>
<p>Bon, je dis ça, je n'ai pas du tout eu le temps de regarder non plus. Si tu as des idées, voire un patch (ou un bout de patch), ça pourrait faire avancer un peu le schmilblick. Il y a aussi d'autres possibilités ; comme l'ajout de propriétés "à la volée" dans $login (si ça se trouve, c'est encore plus compliqué, je sais pas).</p> Galette - Anomalie #449: Accès à l'objet d'authentification depuis les pluginshttp://redmine.ulysses.fr/issues/449?journal_id=136312012-12-11T21:08:35ZMélissa Djebelmelissa.djebel@gmx.net
<ul></ul><p>J'ai testé quelque chose qui me donne satisfaction. J'ai ajouté ces lignes à la fonction getMenus() en m'inspirant de la fonction loadSmarties($id) :</p>
<pre>
public function getMenus() {
global $tpl, $preferences;
$modules = $this->getModules();
foreach (array_keys($this->getModules()) as $r) {
// DEBUT INSERTION MELISSA
$f = $modules[$r]['root'] . '/_tpl.php';
if (file_exists($f)) {
include_once $f;
if (isset($_tpl_array)) {
foreach ($_tpl_array as $k => $v) {
$tpl->assign($k, $v);
}
}
}
// FIN INSERTION MELISSA
$menu_path = $this->getTemplatesPath($r) . '/menu.tpl';
if ($tpl->template_exists($menu_path)) {
$name2path = strtolower(
str_replace(' ', '_', $modules[$r]['name'])
);
$tpl->assign(
'galette_' . $name2path . '_path', 'plugins/' . $r . '/'
);
$tpl->display($menu_path);
}
}
}
</pre>
<p>Dans mon _tpl.php je peux accéder à $login, faire ma requête et ma variable {$is_instructeur} dans Smarty est correctement remplie.</p>
<pre>
global $login;
$_tpl_array = array(
'is_instructeur' => $login->login . '/' . PiloteInstructeur::isPiloteInstructeur($login->login)
);
</pre>
<p>Donc moi ça m'irait. On ne touche pas à Authentication ou Login, ça va quoi :)</p>
<p>A toi de voir :)</p> Galette - Anomalie #449: Accès à l'objet d'authentification depuis les pluginshttp://redmine.ulysses.fr/issues/449?journal_id=136322012-12-11T22:24:55ZJohan Cwiklinskijohan@x-tnd.be
<ul><li><strong>Assigné à</strong> mis à <i>Johan Cwiklinski</i></li><li><strong>Version cible</strong> mis à <i>0.7.4</i></li></ul><p>Hum... Ça me semble plutôt correct en effet. À priori, je pense qu'on devrait préfixer automatiquement (ou vérifier la présence du préfixe, ce serait peut-être mieux) les variables ajoutées par le nom du plugin (par exemple), pour éviter que Galette et les plugins ne se marchent sur les pieds.</p>
<p>Merci :)</p> Galette - Anomalie #449: Accès à l'objet d'authentification depuis les pluginshttp://redmine.ulysses.fr/issues/449?journal_id=141212013-01-25T19:32:51ZJohan Cwiklinskijohan@x-tnd.be
<ul></ul><p>En y regardant de nouveau ; je vois un « problème » : tout ceci est limité aux seuls menus, ce serrait probablement intéressant que ces déclarations soient faites de façon plus globale (comme d'autres dans le core).</p>
<p>Comme ça, les menus et tous les autres templates (ce plugin, les autres et le core) pourront en bénéficier. On aurait un truc du genre <code>$tpl->plugins['plugin_id'] = $_tpl_array</code> ; si le fichier adéquat est présent. Qu'en penses-tu ?</p> Galette - Anomalie #449: Accès à l'objet d'authentification depuis les pluginshttp://redmine.ulysses.fr/issues/449?journal_id=141222013-01-25T20:24:30ZMélissa Djebelmelissa.djebel@gmx.net
<ul></ul><p>Oui absolument.<br />On peut en avoir besoin pour les autres templates disponibles (actions de la fiche adhérent, menus, etc.)<br />Tant qu'à faire, autant ne pas être trop restrictifs si c'est possible :)</p> Galette - Anomalie #449: Accès à l'objet d'authentification depuis les pluginshttp://redmine.ulysses.fr/issues/449?journal_id=141242013-01-26T13:02:13ZJohan Cwiklinskijohan@x-tnd.be
<ul></ul><p>Hum... En fait, je pense qu'il suffit d'utiliser le fichier <code>_smarties.php</code>, qui contient déjà un tableau de variables passées globalement aux templates.</p>
<p>Rien n'empêche à priori d'ajouter ce que l'on souhaite dans ce tableau, et de les utiliser partout ailleurs dans les templates. Tu devrais pouvoir vérifier assez rapidement si ça fonctionne.</p> Galette - Anomalie #449: Accès à l'objet d'authentification depuis les pluginshttp://redmine.ulysses.fr/issues/449?journal_id=141292013-01-26T14:33:35ZMélissa Djebelmelissa.djebel@gmx.net
<ul></ul><p>Je teste ce week-end.<br />Surement demain.<br />Et je fais un retour sur le tracker</p> Galette - Anomalie #449: Accès à l'objet d'authentification depuis les pluginshttp://redmine.ulysses.fr/issues/449?journal_id=141302013-01-26T14:35:37ZJohan Cwiklinskijohan@x-tnd.be
<ul></ul><p>OK, merci :)</p> Galette - Anomalie #449: Accès à l'objet d'authentification depuis les pluginshttp://redmine.ulysses.fr/issues/449?journal_id=141462013-01-27T10:17:29ZMélissa Djebelmelissa.djebel@gmx.net
<ul></ul><p>Je viens d'effectuer quelques tests:<br />Alors effectivement, on peut bien donner des valeurs à <code>$tpl</code> ainsi et il les récupère.</p>
<p>Si j'écris :<br /><pre>
$_tpl_assignments = array(
'is_instructeur' => 'TEST_27/01/2013',
'dossier_includes' => '__plugin_include_dir__dossier',
'pilote_tpl_dir' => '__plugin_templates_dir__',
'pilote_dir' => '__plugin_dir__'
);
</pre></p>
<p>J'aurai bien dans la variable <code>$tpl {$is_instructeur}</code> la valeur indiquée au dessus : TEST_27/01/2013.</p>
<p>Le problème est que j'ai besoin de faire un test sur le login de l'utilisateur :</p>
<pre>
$_tpl_assignments = array(
'is_instructeur' => PiloteInstructeur::isPiloteInstructeur($login->login),
'dossier_includes' => '__plugin_include_dir__dossier',
'pilote_tpl_dir' => '__plugin_templates_dir__',
'pilote_dir' => '__plugin_dir__'
);
</pre>
Et j'ai essayé comme je pouvais d'accéder à la variable globale <code>$login</code> et je n'y parviens pas.
<ul>
<li><code>global $login</code> n'existe pas encore (== null)</li>
<li>à partir de la <code>$_SESSION['galette'][PREFIX_DB . '_' . NAME_DB]</code>, ça me jette des erreurs et ça ne marche pas non plus</li>
</ul>
<p>Donc, ce n'est pas concluant à mon niveau.</p>
<p>Avec la solution proposée plus en haut, j'avais accès à <code>$login</code> et ça marchait comme j'en avais besoin. As-tu une idée pour moi ?</p> Galette - Anomalie #449: Accès à l'objet d'authentification depuis les pluginshttp://redmine.ulysses.fr/issues/449?journal_id=141702013-01-29T07:22:47ZJohan Cwiklinskijohan@x-tnd.be
<ul></ul><p>Huhu, la « bonne blague »...</p>
<p>Si tu regardes dans le fichier <code>galette.inc.php</code> ; tu verras que les plugins sont déclarés tout juste avant... <code>$login</code>. Du coup, il suffit d'intervertir les appels je pense.</p> Galette - Anomalie #449: Accès à l'objet d'authentification depuis les pluginshttp://redmine.ulysses.fr/issues/449?journal_id=141752013-01-29T22:06:49ZJohan Cwiklinskijohan@x-tnd.be
<ul><li><strong>Statut</strong> changé de <i>Nouveau</i> à <i>In Progress</i></li><li><strong>Tracker</strong> changé de <i>Souhaits</i> à <i>Anomalie</i></li></ul> Galette - Anomalie #449: Accès à l'objet d'authentification depuis les pluginshttp://redmine.ulysses.fr/issues/449?journal_id=141762013-01-29T22:07:25ZJohan Cwiklinskijohan@x-tnd.be
<ul><li><strong>Sujet</strong> changé de <i>Passer une variable à $tpl avant lib\Galette\Core\Plugins::getMenus()</i> à <i>Accès à l'objet d'authentification depuis les plugins</i></li><li><strong>Version utilisée</strong> mis à <i>0.7.3</i></li></ul> Galette - Anomalie #449: Accès à l'objet d'authentification depuis les pluginshttp://redmine.ulysses.fr/issues/449?journal_id=141772013-01-29T22:15:05ZJohan Cwiklinskijohan@x-tnd.be
<ul><li><strong>Statut</strong> changé de <i>In Progress</i> à <i>Résolu</i></li><li><strong>% réalisé</strong> changé de <i>0</i> à <i>100</i></li></ul><p>Appliqué par commit <a class="changeset" title="Instanciate Authentication before Plugins, so latter can access former; fixes #449" href="http://redmine.ulysses.fr/projects/galette/repository/62/revisions/e2c5e38d831fc907632c3787a964180c6abacdf4">e2c5e38d831fc907632c3787a964180c6abacdf4</a>.</p> Galette - Anomalie #449: Accès à l'objet d'authentification depuis les pluginshttp://redmine.ulysses.fr/issues/449?journal_id=141822013-01-29T22:16:36ZJohan Cwiklinskijohan@x-tnd.be
<ul><li><strong>Statut</strong> changé de <i>Résolu</i> à <i>Fermé</i></li></ul> Galette - Anomalie #449: Accès à l'objet d'authentification depuis les pluginshttp://redmine.ulysses.fr/issues/449?journal_id=142152013-01-30T21:42:53ZMélissa Djebelmelissa.djebel@gmx.net
<ul></ul><p>Testé et validé :)</p>