public function dispArray(array $aArray = null) { $oSpan = new Projet_Xml('span'); $oSpan->setAttr('style', 'position:relative;'); $oTable = new Projet_Xml('table'); foreach ($aArray as $sCle => $sValue) { if (!in_array($sCle, $this->_IGNORE)) { $this->addElements($this->addRow($oTable), array($this->_TRANSLATE[$sCle], $sValue)); } } $oSpan->append($oTable); return $oSpan->render(); }
public function render($sContent) { $this->getOption(self::PREFIX) && ($this->_prefix = $this->getOption(self::PREFIX)); $this->getOption(self::SUFFIX) && ($this->_suffix = $this->getOption(self::SUFFIX)); $oElement = $this->getElement(); //création du symbol du paragraphe $oChamp = new Projet_Xml('p'); //ajout de l'attribut pour l'alignement (cf template) // $oChamp->setAttribute('class', $sClasses); $oChamp->setAttribute('id', $this->_prefix . $oElement->getName() . $this->_suffix); $oChamp->setAttr('class', CSS_FORM_CHAMP); $oChamp->setData($sContent); return $oChamp->render(); }
public function render($sContent) { if ($this->getElement()->isErrors()) { $oDivErreur = new Projet_Xml('div'); $oDivErreur->setAttr('class', CSS_FORM_ERREUR); foreach ($this->getElement()->getErrorMessages() as $message) { $oPErreur = new Projet_Xml('p'); $oPErreur->append($message); $oDivErreur->append($oPErreur); } return $oDivErreur->render() . $sContent; } else { return $sContent; } }
public function render($sContent) { //récuperation des options éventuelles $this->getOption(self::PREFIX) && ($this->_prefix = $this->getOption(self::PREFIX)); $this->getOption(self::SUFFIX) && ($this->_suffix = $this->getOption(self::SUFFIX)); $oElement = $this->getElement(); //récuperation du tag voulu $sTag = (string) $this->getOption(self::TAG); //création du symbol voulu $oSpan = new Projet_Xml($sTag); //définition de l'id $oSpan->setAttr('id', $this->_prefix . $oElement->getName() . $this->_suffix); //ajout du contenu précedent au span $oSpan->append($sContent); //renvoi de la nouvelle chaine return $oSpan->render(); }
protected function render_element() { $oElement = $this->getElement(); //Le conteneur pour ces champs sera le Paragraphe : on ecrase le précedent $oChamp = new Symbol_P(); //ajout de l'attribut pour l'alignement (cf template) $oChamp->setAttribute('class', CSS_LABEL_INLINE_PADDING_SMALL); $oChamp->setAttribute('id', 'champ-' . $oElement->getName()); //si l'élément est destiné à être utilisé en ajax alors on l'entoure d'un span if ($this->sTag !== null) { $oSpan = new Projet_Xml($this->sTag); $oSpan->setAttr('id', $oElement->getName() . $this->sTag); $oSpan->append($this->buildInput($oElement)); $sChamp = $this->buildLabel($oElement) . $oSpan->render(); } else { //on genere les données avec les erreurs éventuelles 'concernants le champ $sChamp = $this->buildLabelAndInput($oElement); } $oChamp->setData($sChamp); $oElement->removeDecorator('ViewHelper'); return $oChamp->render(); }
/** * @brief Construit une liste d'élement de boites à cocher * * !! ne construit pas les fioritures autour de la liste * * @see Projet_Form_Decorator_Abstract::render_element() * @author francoisespinet * @version 12 mars 2012 - 15:15:09 * */ public function render($sContent) { $oElement = $this->getElement(); //le nom du champ $sName = $oElement->getName(); //indexe pour savoir quelle box est traitée $i = 0; //differentes box à construire $aOptions = $oElement->getMultiOptions(); if (count($aOptions) == 0) { return $sContent . Projet_DataHelper::translate('message.noChoix.short'); } //le nombre de box à construire $nBoxes = count($aOptions); //les box qui doivent être cochées $aActive = $oElement->getValue(); //création de la table pour l'alignement $sTable = "<table cellspacing=2px align=left id=MultiCheckBox-{$sName} class='MultiCheckBox'>"; //Creation de la première ligne pour initialisation $oRow = new Projet_Xml('tr'); //parcours des boites a cocher demandées foreach ($aOptions as $iValue => $sOption) { $i++; //traitement de la ième box //création de la cellule $sCell = "<td>"; //on construit l'input (la boite à cocher), on lui met un id pour la reconnaitre $oInput = new Projet_Xml('input', array('name' => $sName . "[]", 'type' => 'checkbox', 'value' => $iValue, 'id' => $sName . "-" . $iValue)); //si elle doit être cochée, on la coche if ($aActive !== null && in_array($iValue, $aActive)) { $oInput->setAttr('checked', 'checked'); } //on construit le label $oLabel = new Projet_Xml('label', array('for' => $sName . "[]"), $sOption); //on ajoute le tout à la cellule courante $sCell .= $oInput->render() . $oLabel->render() . "</td>"; //$oLabel->append($oInput); //$sCell .= $oLabel->render(); /* Paramètre d'auto formattage, sauf si spécifié différement, il est true par default * si on demamde un 'boxinline' alors les éléments seront rendus en ligne, de sorte à prendre le moins de place verticalement * si on ne le demande pas, les éléments seront rendus en colone, de sorte à minimiser l'espace horizontal */ if ($this->autoFormatList) { if ($oElement->getInline()) { if ($i % self::NUMBER_COLS == 0 || $nBoxes < self::NUMBER_COLS || $i == $nBoxes) { //si on est au nombre de colones requis, alors on pass à une autre ligne en ajoutant l'actuelle à la table $oRow->addData($sCell); $sTable .= $oRow->render(); $oRow = new Projet_Xml('tr'); } else { //sinon on ajoute une cellule $oRow->append($sCell); } } elseif (!$oElement->getInline()) { if ($i % ($nBoxes % self::NUMBER_LIGNES + 1) == 0 || $nBoxes < self::NUMBER_LIGNES || $i == $nBoxes) { /* * Le nombre de lignes est limité pour des raisons esthétiques (colone trop longues) * aussi le nombre de colones est-il calculé pour remplir le tableau * Le comportement est le même de précedement */ $oRow->append($sCell); $sTable .= $oRow->render(); $oRow = new Projet_Xml('tr'); } else { $oRow->append($sCell); } } } //on réinitialise la cellule $sCell = ''; } $sTable .= "</table>"; //on ajoute un span pour que les élément encapsulants soient de la bonne taille $oSpan = new Projet_Xml('span', array(), $sTable); $oSpan->setAttrs(array('style' => 'display:inline-block')); //on renvoie le tout return $sContent . $oSpan->render(); }