Pxxo_Widget_Decorator_Menu

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.

Paramètres

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.

Exemples

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));
fr/doc/pxxo_widget_decorator_menu.txt · Dernière modification: 2012/01/14 00:12 (édition externe)
 
 

©2003-2012 Pxxo

Partenaires : INIST-CNRS | Sourcesup | Web2.0 chat server | Jeux gratuits