Exemple #1
0
 /**
  * Construit le bouton submit avec l'aide du helper de vue de Zend
  * @brief	construit et décore un bouton submit
  * @author	francoisespinet
  * 	@param Zend_Form_Element_Submit $oElement
  */
 protected function buildSubmit(Zend_Form_Element_Submit $oElement)
 {
     //on ajoute la classe bouton au classes déjaprésentes
     $sClass = $oElement->getAttrib('class');
     $oElement->setAttrib('class', Projet_DataHelper::concatMots($sClass, trim(CSS_BUTTON)));
     //		$oButton = new Symbol_Button('', $oElement->getValue());
     //		$oButton->setData($oElement->renderViewHelper());
     //		return $oButton->render();
     return $oElement->renderViewHelper();
 }
Exemple #2
0
 /** @brief	calcul automatique du nom de la resource associé à la route
  *
  * Si la resource a été spécifié  dans le navigation, le calcul n'est pas effectué
  * Utilisation de Projet_DataHelper::resource pour calculer le nom de la ressource.
  *
  * !! La route doit avoir la méthode getDefaults
  *
  * @see Projet_DataHelper::resource
  * @return le nom de la ressource, ou null, si la page n'a pas de route
  */
 public function getResource()
 {
     if ($this->_resource) {
         // si la ressource a été définie explicitement on la renvoie
         return $this->_resource;
     } elseif ($this->_route) {
         $oRoute = Zend_Controller_Front::getInstance()->getRouter()->getRoute($this->_route);
         // la route doit avoir la méthode getDefaults
         $aDefaults = $oRoute->getDefaults();
         // on suppose que le tableau defaults comprend le module, controller, action
         return $this->_resource = Projet_DataHelper::resource($aDefaults['module'], $aDefaults['controller'], $aDefaults['action']);
     } else {
         return null;
     }
 }
Exemple #3
0
 public function preDispatch(Zend_Controller_Request_Abstract $request)
 {
     /*
     // qu'on puisse tester directement le profil
     // Le profil est sauvegardé alors en session
     if ($request->getParam(IDENTITE_ID_PROFIL) && APP_ENV != 'production') {
     	$nRole = $request->getParam(IDENTITE_ID_PROFIL);
     	Projet_Acl_Acl::setDefaultRole($nRole);
     	Zend_View_Helper_Navigation_HelperAbstract::setDefaultRole($nRole);
     	$oIdent[IDENTITE_ID_PROFIL] = $nRole;
     	$this->_auth->getStorage()->write($oIdent);
     
     }
     else
     */
     #		if (is_array($oIdent) && array_key_exists(IDENTITE_ID_PROFIL, $oIdent)) {
     #			$nRole = $oIdent[IDENTITE_ID_PROFIL];
     #		} else {
     #			$nRole = 2;
     #		}
     // On intercepte le nom de la ressource (controller) et du privilège demandé (action).
     $sModule = $request->getModuleName();
     $sController = $request->getControllerName();
     $sAction = $request->getActionName();
     // La ressource n'existe pas.
     // commenté car la ressource est créé automatiquement si on ne l'a pas déclaré dans acl.ini
     #		if (!$this->_acl->has($sResource)) {
     #			$this->_controller->gotoSimple(self::FAIL_ACL_ACTION, self::FAIL_ACL_CONTROLLER, self::FAIL_ACL_MODULE, array("messageWarn" => 1));
     #		}
     // TODO: vérifier qu'on est pas sur la route d'authentification
     // Le profil utilisé n'existe pas ou n'est pas reconnu par l'application.
     #		if (!$this->_acl->hasRole($nRole) ) {
     #			$this->_controller->gotoRouteAndExit(array("messageWarn" => 2), self::FAIL_AUTH_ROUTE);
     #		}
     #		if (!$sModule || !$sController || !$sAction) {
     #			return;
     #			$this->_controller->gotoRouteAndExit(array("messageWarn" => 4), self::FAIL_ROUTE);
     #		}
     // La ressource demandée n'est pas accessible pour ce role avec ces privilèges.
     if (!Projet_Acl_Acl::defaultIsAllowed(Projet_DataHelper::resource($sModule, $sController, $sAction))) {
         // si requête ajax
         if ($request->isXmlHttpRequest()) {
             die(Projet_DataHelper::translate(self::CLE_FAIL_ACL));
         }
         Zend_Controller_Action_HelperBroker::getStaticHelper('FlashMessenger')->setNamespace('warning')->addMessage(self::CLE_FAIL_ACL);
         $this->_controller->gotoRouteAndExit(array(), self::FAIL_ACL_ROUTE);
     }
 }
Exemple #4
0
 /**
  * @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();
 }
Exemple #5
0
 /** @brief	ajoute les clés de language en javascript pour traduire le dataTable
  */
 protected function appendTranslate()
 {
     $this->view->headScript()->appendFile(SCRIPTS_PATH . '/projet/dataTable/language-' . Projet_DataHelper::getLocation() . '.js');
 }
Exemple #6
0
 /**	@brief Formatage d'un champ DATETIME.
  * Méthode permettant de générer une chaîne formatée pour enregistrer un datetime en base de données.
  * @li Prend en charge la localisation de l'interface de l'utilisateur courante.
  * @param	string			$pDatetime		: chaîne de caractères représentant un DATETIME.
  */
 public function PDO_datetimeFormat($pDatetime = null)
 {
     // Récupération de la date selon l'interface utilisateur
     $oDate = new Zend_Date($pDatetime, null, Projet_DataHelper::getLocation());
     // Formatage en fonction de l'adapter de la base de données
     if (strtoupper(APP_PDO_ADAPTER) == "PDO_OCI") {
         // Formatage exploitable avec PDO_OCI
         $sFormat = new Zend_Db_Expr("TO_TIMESTAMP('" . $oDate->toString(self::DATETIME_FORMAT, null, 'fr') . "', 'YYYY-MM-DD HH24:MI:SS')");
     } else {
         // Formatage exploitable avec PDO_MYSQL
         $sFormat = new Zend_Db_Expr("DATE_FORMAT('" . $oDate->toString(self::DATETIME_FORMAT, null, 'fr') . "', '%Y%m%d%H%i%s')");
     }
     // Renvoi du format DATETIME
     return $sFormat;
 }