13.6.2.18 Doc::preConsultation()
Hameçon (ou hook) utilisé par l'action de consultation html du document
FDL:OPENDOC
. Elle est appelée avant la composition du template.
13.6.2.18.1 Description
string preConsultation ( )
Cette méthode permet de réaliser des opérations afin d'ajuster l'affichage du document. Ces opérations peuvent être :
- ajout d'un fichier javascript ou css,
- modification des visibilités d'attributs,
- modification d'une propriété d'attributs,
- etc.
13.6.2.18.1.1 Avertissements
À la différence de Doc::preRefresh()
qui est appelé lors de
consultation et lors de l'édition, cette méthode n'est appelée que lors de la
consultation. Elle est appelée après la méthode Doc::refresh()
.
Cette méthode n'est pas déclenchée lors de l'affichage de liste de documents.
13.6.2.18.2 Liste des paramètres
Aucun.
13.6.2.18.3 Valeur de retour
string
: message d'information.
Ce message est affiché sur le document comme pour celui de la méthode
Doc::preRefresh()
.
13.6.2.18.4 Erreurs / Exceptions
Aucune.
13.6.2.18.5 Historique
Aucun.
13.6.2.18.6 Exemples
13.6.2.18.6.1 Ajout d'asset ccs et js
Cas d'une famille MyFamily
qui possède un niveau d'urgence représenté par
l'attribut my_level
.
Ajout d'un fichier css
et d'un fichier javascript
dans le cas ou
le niveau my_level
du document est supérieur à 2.
class MyFamily extends \Dcp\Family\Document { public function preConsultation() { if ($this->getAttributeValue(\Dcp\AttributeIdentifiers\MyFamily::my_level) > 2) { global $action; $action->parent->addJsRef("MYAPP/Layout/mySpecial.js"); $action->parent->addCssRef("MYAPP/Layout/mySpecial.css"); if ($this->getAttributeValue(\Dcp\AttributeIdentifiers\MyFamily::my_level) > 10) { $action->parent->addCssRef("MYAPP/Layout/myRedAlert.css"); addWarningMsg("Red Alert"); } } return ''; }
Si le niveau est supérieur à 10 alors une deuxième css est ajouté ainsi qu'un message d'avertissement qui sera visible lors de la consultation.
Voir addjsRef
et addCssRef
pour l'ajout d'asset.
13.6.2.18.6.2 Modification de visibilité
Masquage d'un attribut my_informations
si niveau my_level
est égal à 0.
class MyFamily extends \Dcp\Family\Document { public function preConsultation() { if ($this->getAttributeValue(\Dcp\AttributeIdentifiers\MyFamily::my_level) == 0) { // l'attribut my_information est caché $myAttribute=$this->getAttribute(\Dcp\AttributeIdentifiers\MyFamily::my_information); $myAttribute->setVisibility('H'); } return ''; }
Attention : La méthode BasicAttribute::setVisibility()
ne propage pas la
visibilité dans le cas où l'attribut est un attribut de structure (array
,
frame
ou tab
).
13.6.2.18.7 Notes
Aucune.