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;
        }
}

Templates et controleurs associés