SP:Composant:BlocObject
De Hegyd Doc.
Version du 5 juillet 2010 à 06:42 par Sebd (discuter | contributions)
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;
}
}
