====== Pxxo_Widgets_Decorator ====== Les décorateurs sont des objets qui implémentent [[http://en.wikipedia.org/wiki/Decorator_pattern|le motif de conception Décorateur]]. ===== Principe ===== Classiquement un objet PXXO peut avoir N objets fils. Dans le cas d'un objet widget, c'est la méthode **putwidget** qui permet d'ajouter un fils. ==== Exemple ==== Objet A | Objet A | \_ Objet A.1 | \_ Objet A.1.1 | \_ Objet A.2 putWidget Avec la notion de Décorateur, un objet va pouvoir changer de parent. Il va pouvoir s'ajouter autant de parents qu'il le souhaite. Dans le cas d'un widget, c'est la méthode **addDecorator** qui permet d'ajouter un père. ==== Exemple ==== Objet A | Objet 1 | \_ Objet 2 | \_ Objet 3 | \_ Objet A | addDecorator Typiquement, l'objet est décoré par plusieurs autres objets. ===== Usage ===== On associe un décorateur à un widget avec la méthode addDecorator de l'objet à décorer. ==== Exemple ==== $objet = new ObjetPxxo; // ajout d'un décorateur avec son nom $this->addDecorator('Decorateur_1'); // ajout d'un décorateur avec son instance $this->addDecorator(new Decorateur_2); ===== Implémentation ===== Un objet décorateur n'est rien d'autre qu'un objet Pxxo avec un attribut particulier nommé **widget**. class Decorateur extends Pxxo_Widgets { var $widget; var $_params = array('widget'); function __construct($params) { $this->Pxxo_Widgets($params, __FILE__); } function defaut() { $this->setTemplate('defaut', 'border.php.html'); if ($this->widget) $this->putWidget('OBJET', $this->widget); } } ===== Package ===== Le package Pxxo_Widget_Decorator contient 6 décorateurs prêt à l'emploi : * [[fr:doc:Pxxo_Widgets_Decorator_Border|Pxxo_Widgets_Decorator_Border]] : Ajoute un bord au widget décoré * [[fr:doc:pxxo_widget_decorator_core|Pxxo_Widgets_Decorator_Core]] : Ajout un corps XHTML au widget décoré * [[fr:doc:Pxxo_Widgets_Decorator_Ajax|Pxxo_Widgets_Decorator_Ajax]] : Donne les capacités AJAX au widget décoré * [[fr:doc:Pxxo_Widgets_Decorator_Controller|Pxxo_Widgets_Decorator_Controller]] : Déclenche les actions du widget décoré en fonction de l'URL * [[fr:doc:Pxxo_Widgets_Decorator_Prototype|Pxxo_Widgets_Decorator_Prototype]] : Permet au widget décoré d'utiliser les librairies Javascript [[http://www.prototypejs.org/|Prototype]] et de [[http://script.aculo.us/|Scriptaculous]] * [[fr:doc:Pxxo_Widgets_Decorator_Fieldset|Pxxo_Widgets_Decorator_Fieldset]] : Ajout un titre et une bordure au widget décoré * [[fr:doc:pxxo_widget_decorator_debugger|Pxxo_Widgets_Decorator_Debugger]] : Ajout une barre de debug au widget décoré * [[fr:doc:Pxxo_Widgets_Decorator_TextareaSizer|Pxxo_Widgets_Decorator_TextareaSizer]] : Permet de redimensionner automatiquement les éléments textarea en fonction de leur contenu.