SP:Composant:BlocObject
De Hegyd Doc.
(Différences entre les versions)
(→Définition en base) |
(→Classe associée) |
||
| Ligne 27 : | Ligne 27 : | ||
=== Classe associée === | === Classe associée === | ||
| + | |||
| + | Chaque type de bloc a une classe associée. | ||
| + | Elle doit se trouver dans le répertoire '''lib/model/EasySite/blocObjects''', et se nommer '''BlocObject{typeBlocObjectSpaceName}.php'''. | ||
| + | Concernant la structure, chaque classe devra définir les différents champs associés a chaque blocObject, ainsi que les fonctions propre a l'objet si nécessaire. | ||
| + | |||
| + | Voici un exemple type de structure : | ||
| + | |||
| + | <pre> | ||
| + | class BlocObjectDownload extends AbstractBlocObjectText//to have functionnality of text blocObject | ||
| + | { | ||
| + | private $uploadObjects = array(); | ||
| + | private $uploadObjectsLoaded = false; | ||
| + | |||
| + | //types de champs utilisé par le bloc. La structure pour le definir utilise celle de la classe coeur Element. | ||
| + | public static $ValueFields = array( | ||
| + | 'uploadFileId' => array( | ||
| + | 'type' => 'file', | ||
| + | 'value' => '', | ||
| + | 'required' => true, | ||
| + | 'label' => 'fichier (max 10Mo)', | ||
| + | 'maxsize' => 10485760, // 10Mo | ||
| + | 'checklist' => array('ext' => array('xls', 'doc', 'pdf')), | ||
| + | 'options' => array( | ||
| + | 'inform_preview' => false, | ||
| + | 'nb_files'=>1 | ||
| + | ) | ||
| + | ) | ||
| + | ); | ||
| + | //fonctions publiques complémentaires | ||
| + | |||
| + | public function getUploadObjects($field=null) | ||
| + | { | ||
| + | $this->loadUploadObjects(); | ||
| + | if($field) | ||
| + | return $this->uploadObjects[$field]; | ||
| + | else | ||
| + | { | ||
| + | foreach(static::$ValueFields as $key=>$field) | ||
| + | { | ||
| + | if($field['type'] == 'file') | ||
| + | { | ||
| + | $types[] = $key; | ||
| + | } | ||
| + | } | ||
| + | if(count($types)>1) | ||
| + | trigger_error("There is more than one field containing upload File, please specify field name"); | ||
| + | else if(array_key_exists($types[0],$this->uploadObjects)) | ||
| + | return $this->uploadObjects[$types[0]]; | ||
| + | else | ||
| + | return null; | ||
| + | } | ||
| + | } | ||
| + | |||
| + | public function hasUploadObject() | ||
| + | { | ||
| + | $this->loadUploadObjects(); | ||
| + | return count($this->uploadObjects)>0; | ||
| + | } | ||
| + | } | ||
| + | </pre> | ||
=== Templates et controleurs associés === | === Templates et controleurs associés === | ||
Version du 5 juillet 2010 à 06:42
Sommaire |
BlocObject
Un bloc objet représente un contenu d'une page: paragraphe, image, gallerie d'image, et tout type de contenu que l'utilisateur peut ajouter a ses pages.
Définition des types de blocObject
Les différents type de blocsObject sont définis a plusieurs endroits:
- en base dans la table typeBlocObject
- une classe spécifique représente chacun d'entre eux dans le repertoire lib/model/EasySite/blocObjects
- des templates et controleurs leurs sont associés dans templates/cms/blocObjects et controlers/cms/blocObjects
Définition en base
Chaque type de blocObject doit être défini dans la table typeBlocObject. Voici la liste des champs de cette table et leur signification:
- typeBlocObjectSpaceName: espace de nom de l'objet, sera utilisé pour relier un type de blocObject aux templates/controleurs le concernant.
- typeBlocObjectName: nom du blocObject, sera celui affiché a l'utilisateur
- customPosition: flag indiquant si l'object sera positionné a la main dans le code (les métas, directement intégrées dans le header), ou de façon automatique (le reste).
- interactiveEdit: flag indiquant si le blocObject pourra être modifié de façon directe par l'utilisateur sur l'interface d'édition de contenu (apparition des options d'édition au survol du bloc).
- isEditable: flag indiquant si le blocObject est éditable
- isDraggable: flag indiquant si le blocObject pourra être déplacé au sein du contenu.
- isDeleteable: flag indiquant si un blocObject pourra être supprimé par l'utilisateur
- activated: flag qui indique si le blocObject est activé (visible dans la console d'ajout de l'utilisateur sur l'éditeur).
- hasValues: flag qui indique si le blocObject aura des valeurs associées (texte pour un paragraphe, fichier pour une image...), ou non (affichage de la date, d'une ligne de séparation).
- typeBlocOrder: ordre d'apparition des bloc dans la console d'ajout.
Classe associée
Chaque type de bloc a une classe associée. Elle doit se trouver dans le répertoire lib/model/EasySite/blocObjects, et se nommer BlocObject{typeBlocObjectSpaceName}.php. Concernant la structure, chaque classe devra définir les différents champs associés a chaque blocObject, ainsi que les fonctions propre a l'objet si nécessaire.
Voici un exemple type de structure :
class BlocObjectDownload extends AbstractBlocObjectText//to have functionnality of text blocObject
{
private $uploadObjects = array();
private $uploadObjectsLoaded = false;
//types de champs utilisé par le bloc. La structure pour le definir utilise celle de la classe coeur Element.
public static $ValueFields = array(
'uploadFileId' => array(
'type' => 'file',
'value' => '',
'required' => true,
'label' => 'fichier (max 10Mo)',
'maxsize' => 10485760, // 10Mo
'checklist' => array('ext' => array('xls', 'doc', 'pdf')),
'options' => array(
'inform_preview' => false,
'nb_files'=>1
)
)
);
//fonctions publiques complémentaires
public function getUploadObjects($field=null)
{
$this->loadUploadObjects();
if($field)
return $this->uploadObjects[$field];
else
{
foreach(static::$ValueFields as $key=>$field)
{
if($field['type'] == 'file')
{
$types[] = $key;
}
}
if(count($types)>1)
trigger_error("There is more than one field containing upload File, please specify field name");
else if(array_key_exists($types[0],$this->uploadObjects))
return $this->uploadObjects[$types[0]];
else
return null;
}
}
public function hasUploadObject()
{
$this->loadUploadObjects();
return count($this->uploadObjects)>0;
}
}
