Joël Gaujard Posted April 8, 2013 Share Posted April 8, 2013 (edited) Bonjour à tous, Est ce quelqu'un sait comment désactiver la création d'un objet dans le controller d'un module cote admin ? En gros j'aimerais que le bouton "Créer" disparaisse et surtout que si un utilisateur ne peut créer un nouvel objet (en tapant l'url directement par exemple). Merci d'avance Cordialement, Joel Gaujard Edit du 17 avril 2013: J'ai réussi à bloquer l'accès à la création grâce à l'attribut "tabAccess". Par contre je n'arrive toujours pas à désactiver l'affichage du bouton de création dans la barre d'outil. Si vous avez une idée, merci de m'aider. Edit du 18 avril 2013: La solution a été donné dans un autre topic, je la reporte ici: public function initToolbar() { parent::initToolbar(); // Remove "Add" button from toolbar unset($this->toolbar_btn['new']); } Edited April 17, 2013 by Joël Gaujard (see edit history) Link to comment Share on other sites More sharing options...
Prestaspirit Posted April 8, 2013 Share Posted April 8, 2013 Salut, Pour supprimer le bouton "Créer" il faut faire une recherche sur le tableau btn_toolbar, tu devrait pouvoir supprimer l'index lié à la création, après faut voir le controller en question. Link to comment Share on other sites More sharing options...
J. Danse Posted April 8, 2013 Share Posted April 8, 2013 Il faut, simplement, en interdire la création dans les permissions du profil. Non ?! Link to comment Share on other sites More sharing options...
Joël Gaujard Posted April 9, 2013 Author Share Posted April 9, 2013 (edited) Merci pour vos réponses. Je n'avais pas fait gaffe qu'il faut desormais s'inscrire a son propre sujet afin d'en recevoir les réponses. bref ! @J. Danse : Il me faudrait quelque chose de plus rigide car il s'agit d'un onglet que je crée via un module donc je ne veux pas dépendre de la configuration du profil de l'employé authentifié. Pour info : j'ai deja reussi a bloquer l'accès a la page de création, en ajoutant cette ligne $this->tabAccess['add'] = false; après l'appel au constructeur du parent. @PrestaSpirit : J'ai déjà effectue une recherche sur "process-icon-new" qui est la classe CSS du bouton de création ce qui m'a donné aucun résultat. En regardant un des éléments parent, ce bouton fait partie de la toolbar dont la classe est "toolbarBox" ce qui m'amène au fichier /<admin>/themes/default/template/toolbar.tpl. Je comprends que le boutons est genere depuis la variable smarty $toolbar_btn. Du coup, je fouine dans le fichier /classes/controller/AdminController.php, je tombe sur une methode initToolbar() qui semble correspondre à la définition a afficher en fonction de la vue courante. Et la je bloque... D'ou mon sujet sur le forum... J'espere que quelqu'un saura m'aider. Edited April 9, 2013 by Joël Gaujard (see edit history) Link to comment Share on other sites More sharing options...
J. Danse Posted April 9, 2013 Share Posted April 9, 2013 Vais essayer de voir ce qu'il en est, ... Ce que je ne comprends pas spécialement, c'est l'idée, le principe et le problème avec la solution d'interdire selon le profil employé (même si l'onglet est généré via un module). Pour le bouton "Créer" dans la toolbar, il faut effectuer un unset de $this->toolbar_btn['new'] dans le initContent() (après l'appel de parent::initContent()). Quelle serait les étapes/clés à avoir actuellement ? Link to comment Share on other sites More sharing options...
Joël Gaujard Posted April 9, 2013 Author Share Posted April 9, 2013 Merci pour ton aide... En fait si l'employé/administrateur decide de se donner les droits d'édition, d'ajout et de suppression (dans mon cas), il aura donc accès a toutes ces actions. Ce que je ne veux absolument pas. J'ai deja réussi à supprimer l'autorisation de l'accès à toutes les pages. Désormais il ne me reste qu'à masquer ce bouton d'ajout pour 2 raisons : premièrement pour raison cosmétique et deuxièmement eviter que les utilisateurs reviennent vers moi en disant que ça "bug" après un clic sur le bouton d'ajout. Selon tes conseils, j'ai ajoute ce bout de code dans mon controller : public function initContent() { parent::initContent(); unset($this->toolbar_btn['new']); } Mais ça n'a aucun effet sur le bouton,il est toujours présent :-( Je n'ai pas compris ta question : Quelle serait les étapes/clés à avoir actuellement ? Link to comment Share on other sites More sharing options...
J. Danse Posted April 9, 2013 Share Posted April 9, 2013 La question, c'était par rapport à l'attente voulue (je n'avais pas saisi le principe). D'autant que, dans mon esprit, si un employé à les droits d'édition, il est normal qu'il puisse ajouter un élément. Vais essayer de jeter un oeil à cela d'ici demain Link to comment Share on other sites More sharing options...
Joël Gaujard Posted April 10, 2013 Author Share Posted April 10, 2013 Merci encore pour ton aide. Un vrai casse tete ce truc... Ce serait cool qu'un core dev de PrestaShop nous réponde Link to comment Share on other sites More sharing options...
doekia Posted April 11, 2013 Share Posted April 11, 2013 Pour qu'un coredev réponde, il faudrait comprendre la question, le but, l'attente. Si j'ai mon propre contrôller rien ne m'oblige a suivre le framework et appeler les fonctions pour ensuite chercher a démonter le truc Ton contrôler n'a qu'a faire du no edit (comme un contrôler d'information seul)... et tu colles ta propre barre d'édition .... j'ai raté quelque chose? Link to comment Share on other sites More sharing options...
Joël Gaujard Posted April 17, 2013 Author Share Posted April 17, 2013 Bon il semble que personne me suit dans ma demande ou alors je me suis mal exprimé. Dommage... Je vais ajouter une précision sur mon 1er post en espérant que ce soit plus clair. Link to comment Share on other sites More sharing options...
doekia Posted April 17, 2013 Share Posted April 17, 2013 Je viens de relire ta demande, je dois avoir les neurones ensablées, je n'ai pas mieux compris ta demande. de quel object parles-tu? un controlleur qui ne remplit pas les éléments suivant ne reçoit aucun object sous-jacent : public $table; protected $identifier = false; public $className; un controlleur qui ajuste ces valeurs controle la toolbar et les actions des listes: protected $show_toolbar = false; protected $show_toolbar_options = false; protected $actions_available = array('view', 'edit', 'delete', 'duplicate'); Enfin il me semble que tu peux ajuster le contenu de la barre avec: $this->toolbar_title = array('Foo'); $this->display = 'view'; Et pourquoi ne donnes tu pas ton cas concret plutôt que ces demandes hors contexte. Link to comment Share on other sites More sharing options...
Joël Gaujard Posted April 17, 2013 Author Share Posted April 17, 2013 C'est bon j'ai eu ma reponse sur ce post : http://www.prestashop.com/forums/index.php?/topic/176750-modele-mvc-au-niveau-de-ladmin/page__view__findpost__p__1188132 Merci à tous pour vote aide... Link to comment Share on other sites More sharing options...
J. Danse Posted April 17, 2013 Share Posted April 17, 2013 Ah, de fait, je me suis gouré dans le nom des méthodes, que j'ai transposé à initContent() et non initToolbar, sinon l'idée y était. Zut ! Dire que ça t'auras faire perdre du temps dans ta recherche :-/ Link to comment Share on other sites More sharing options...
Joël Gaujard Posted April 17, 2013 Author Share Posted April 17, 2013 Je ne trouve plus comment on ajoute [Résolu] devant le nom du sujet. Tu peux m'aider ? Link to comment Share on other sites More sharing options...
J. Danse Posted April 17, 2013 Share Posted April 17, 2013 Je devrais y arriver sans me gourer de nom, là C'est en éditant le premier message du sujet, on peut éditer le titre également. Link to comment Share on other sites More sharing options...
Joël Gaujard Posted April 17, 2013 Author Share Posted April 17, 2013 Merci j'avais pas capté qu'il fallait utiliser le "Full editor". Link to comment Share on other sites More sharing options...
doekia Posted April 17, 2013 Share Posted April 17, 2013 Je n'arrive toujours pas a comprendre l'objet de la question. en quoi vous ne pouviez pas utiliser ceci: public function init() { parent::init(); $this->action = 'view'; $this->display = 'view'; } Un truc m'échappe surement dans la question Link to comment Share on other sites More sharing options...
Joël Gaujard Posted April 17, 2013 Author Share Posted April 17, 2013 Laisse tomber. J'ai eu ma réponse. C'est gentil d'avoir essayer de m'aider... Link to comment Share on other sites More sharing options...
doekia Posted April 17, 2013 Share Posted April 17, 2013 Promis je le ferais plus vu que tu ne cherches même pas à m'expliquer Link to comment Share on other sites More sharing options...
Joël Gaujard Posted April 17, 2013 Author Share Posted April 17, 2013 Lol... faut pas le prendre mal. Mais je ne sais plus comment reformuler ma question (3 fois dans ce sujet). Voici la question que j'ai posté sur le sujet ou j'ai eu ma réponse si ça peut t'aider : "Quelqu'un sait comment ne pas afficher le bouton de création d'un objet dans la barre d'outil ? " Link to comment Share on other sites More sharing options...
doekia Posted April 17, 2013 Share Posted April 17, 2013 Et ma réponse en 3 ligne répété 2x au moins en quoi elle ne va pas? Link to comment Share on other sites More sharing options...
Joël Gaujard Posted April 17, 2013 Author Share Posted April 17, 2013 Ta réponse décrit l'action que le controlleur doit faire. Et ma question concerne ce que le controlleur ne doit pas faire. Avec tes 3 lignes tu renseignes que l'action actuelle et de la vue (donc detail d'un objet ou la lettre R de CRUD). Et ma question concerne le bouton d'ajout du nouvel élément. Arrives tu à me comprendre ? Link to comment Share on other sites More sharing options...
doekia Posted April 18, 2013 Share Posted April 18, 2013 Non. Pourquoi penses-tu devoir m'expliquer le CRUD? Qu'est ce que ça a à voir dans ta demande. Regardes les controlleurs admin standard nombres n'ont pas de bouton d'ajout, ils sont tous déclarés en view. Le fait ou non qu'il y ai un object en dessous ou in simple requète sql c'est égal. Un controlleur view n'affiche par défaut que les helpers/view sauf surcharge Bon allez je te laisse ça doit être trop fort pour moi. Link to comment Share on other sites More sharing options...
Xavier du Tertre Posted April 18, 2013 Share Posted April 18, 2013 Merci à tout ceux qui ont aidé Joël ! Sujet clos Link to comment Share on other sites More sharing options...
Recommended Posts