Jump to content

Recommended Posts

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 by Joël Gaujard (see edit history)
Link to comment
Share on other sites

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 by Joël Gaujard (see edit history)
Link to comment
Share on other sites

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

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

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

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

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

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

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

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

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

Guest
This topic is now closed to further replies.
×
×
  • Create New...