Ce widget permet de créer un menu pour naviguer dans le modes du widget décoré. Par exemple si vous avez un widget dont les trois modes (méthodes publiques) sont "lister", "creer" et "detruire" pour afficher un moyen de basculer entre ces trois modes, vous pouvez utiliser ce widget.
Le widget est un décorateur, pour savoir comment l'utiliser (je vous rassure, c'est très simple) il faut donc se référer à la documentation des décorateurs, ou bien simplement se rendre dans la section des exemples plus bas.
| Nom | Valeur par défaut | Description |
|---|---|---|
| modes | array('index') | Les modes dont on souhaite permettre la navigation par le menu (l'ordre est important) |
| labels | array('index' ⇒ 'Mode par défaut') | Le texte qui s'affichera dans le menu à la place des noms brutes des modes |
| labels_callback | callback | Une callback permettant de récupérer les labels correspondant aux modes. (facultatif) |
| icons | array('index'⇒'') | Les images que vous souhaitez associer aux différents modes. Elle seront utilisées pour les icones du menu. |
| item_filter_callback | null | La callback qui vous permettra de filtrer les éléments du menu à cacher/afficher |
| menu_type | 'Tabs' | Le type de menu à afficher. Vous pouvez utiliser tous les menus se trouvant dans Pxxo/Widgets/Menu/* |
| menu_theme | 'defaut' | Le thème du menu à utiliser |
| menu_defsel | 0 | L'entrée par défaut à sélectionner au premier affichage |
Remarque : La callback 'labels_callback' est utile lorsque l'on souhaite initialiser le tableau 'labels' au moment du initMode. Ceci a un intérêt lorsqu'un autre décorateur souhaite régler la langue du widget décoré. Le besoin est apparu avec Pxxo_Translator lorsqu'il est utilisé en mode décorateur.
Création d'un widget de test (MonWidget) possédant 4 modes (méthodes publiques) et une fonction de filtrage d'affichage des éléments du menu. Une fois instancié il suffit de le décorer par le décorateur "Menu" :
require_once 'Pxxo/Widget.php'; class MonWidget extends Pxxo_Widget { function MonWidget($params = array()) { MonWidget::__construct($params); } function __construct($params = array()) { parent::__construct($params, __FILE__); $this->enablePersistentMode(); } function defaut() { $this->setTemplateRaw($this->getMode(), '<p>Contenu de MonWidget mode "'.$this->getMode().'"</p>'); } function lister() { $this->setTemplateRaw($this->getMode(), '<p>Contenu de MonWidget mode "'.$this->getMode().'"</p>'); } function supprimer() { $this->setTemplateRaw($this->getMode(), '<p>Contenu de MonWidget mode "'.$this->getMode().'"</p>'); } function creer() { $this->setTemplateRaw($this->getMode(), '<p>Contenu de MonWidget mode "'.$this->getMode().'"</p>'); } function _filtrer_elements_du_menu($item) { return (rand(1,10) != strlen($item)); } } $obj = new MonWidget(); // creation du menu qui permet de basculer le widget courant d'un mode à l'autre require_once 'Pxxo/Widget/Decorator/Menu.php'; $params = array(); $params['modes'] = array('defaut','lister','supprimer','creer'); $params['labels'] = array(); $params['labels']['defaut'] = 'Mode par défaut'; $params['labels']['lister'] = 'Lister'; $params['labels']['supprimer'] = 'Supprimer'; $params['labels']['creer'] = 'Créer'; $params['item_filter_callback'] = array($obj, '_filtrer_elements_du_menu'); $params['menu_type'] = 'Tabs'; $params['menu_theme'] = 'grey'; $params['menu_defsel'] = 0; $obj->addDecorator(new Pxxo_Widget_Decorator_Menu($params));
©2003-2012 Pxxo
Partenaires : INIST-CNRS | Sourcesup | Web2.0 chat server | Jeux gratuits