Guide de développement
Transcription
Guide de développement
Guide de développement Black Bear CMS www.bbcms.fr mars 2012 Copyright 2012 – Olivier Blais Sommaire Variables templates ................................................................................................................................................... 3 Script code .................................................................................................................................................................... 5 Classes ............................................................................................................................................................................ 6 Fonctions ....................................................................................................................................................................... 7 Variables d’applications ........................................................................................................................................... 9 Validator jQuery ........................................................................................................................................................ 11 Selectbox ..................................................................................................................................................................... 16 Slideshow .................................................................................................................................................................... 17 Swift mailer ................................................................................................................................................................ 18 PHP Thumb ................................................................................................................................................................. 18 Notes ............................................................................................................................................................................. 19 2 BBCMS – Guide de développement Variables templates Initialisation : %init% %ref_page% <?php include('./modules/init.php'); ?> <?php include('./modules/ref_page.php'); ?> Entête de page : %header% <?php include('./modules/header.php'); ?> Informations : %sitename% %title% %domain_name% 1 2 3 $application['LocalTitle'] 1 $bbcmsContent->title 2 $application['FullLocalDomain'] 3 nom du site web titre de la page affichée url du site web ex: www.example.tld Meta : %meta_description% <meta name="description" content="’. $bbcmsContent->metaDescription.’"/> %meta_keywords% <meta name="keywords" content="’. $bbcmsContent->metaKeywords.’" /> Javascript : %javascript_1% %javascript_2% %javascript_3% %javascript_4% %javascript_5% <?php <?php <?php <?php <?php include('./modules/javascript_1.php'); include('./modules/javascript_2.php'); include('./modules/javascript_3.php'); include('./modules/javascript_4.php'); include('./modules/javascript_5.php'); ?> ?> ?> ?> ?> Style CSS : %style% <?php include('./modules/style.php'); ?> Menu horizontal : %menu% <?php include('./modules/menu.php'); ?> Menu vertical : %sidemenu% <?php include('./modules/sidemenu.php'); ?> Fil d’Ariane : %breadcrumbs% <?php include('./modules/breadcrumbs.php'); ?> Affichage des messages d’erreurs : %flash_message% <?php echoFlashMessage(); ?> 3 BBCMS – Guide de développement Contenu : %content% %script_code% <?php include('./modules/content.php'); ?> trim($bbcmsContent->scriptCode) Affichage de la liste des news : %news_list% <?php include('./modules/news_list.php'); ?> Newsletter : %newsletter% <?php include('./modules/newsletter.php'); ?> Blob : %blob_1% %blob_2% %blob_3% %blob_4% %blob_5% <?php <?php <?php <?php <?php include('./modules/blob_1.php'); include('./modules/blob_2.php'); include('./modules/blob_3.php'); include('./modules/blob_4.php'); include('./modules/blob_5.php'); ?> ?> ?> ?> ?> Pied de page : %footer% <?php include('./modules/footer.php'); ?> Statistiques : %stats_1% %stats_2% 4 <?php include('./modules/stats.php'); ?> $bbcmsContent->stats 4 code de suivi spécifié pour chaque page dans le back-office 4 BBCMS – Guide de développement Script code Affichage des actualités : <?php $newsCat=1; $newsLimit=50; $paging=false; include('./modules/news_view.php'); ?> $newsCat id de la catégorie des news à afficher, si l’id n’est pas spécifié, on affiche toutes les news, les catégories sont gérées dans le fichier config $newsLimit $paging nombre de news à afficher activation de la pagination des news Formulaire de désinscription newsletter : <?php include('./modules/unsubscribe.php'); ?> Formulaire de contact : <?php include('./modules/contact_us.php'); ?> Affichage du plan du site : <?php include('./modules/sitemap.php'); ?> 5 BBCMS – Guide de développement Classes Classes content : Méthodes non-statiques : $bbcmsContent = new BbcmsContent(); Select par nom de page $bbcmsContent->selectByPagename($pagename); $bbcmsContent = new BbcmsContent(); $bbcmsContent->SelectById($id); $bbcmsContent->getUrl(); Retourne l'url complète de la page $bbcmsContent = new BbcmsContent(); Retourne les éléments pour le fil d'Ariane $bbcmsContent->SelectById($id); $bbcmsContent->getBreadcrumbs($url, $separator = ">") 1 1 $url = url du site web, nécessaire pour les liens en absolu dans le cadre de l’url rewriting Méthodes statiques : BbcmsContent::countChild($idParent); BbcmsContent::getMenu($parentId=0); BbcmsContent::getSmenu($parentId); BbcmsContent::getParentId($id); Retourne le nombre de page enfant Retourne les éléments du 1er niveau du menu Retourne les éléments du sous-menu Recherche l'id du parent Classes news : Méthodes statiques : BbcmsNews::getNews($category='',$limit='') Recherche les x dernières actus Classes newsletter : Méthodes statiques : BbcmsNewsletter::checkEmail($email) 6 BBCMS – Guide de développement Vérifie si l'internaute est déjà inscrit à la newsletter Fonctions Fonctions communes : url($echo=true) Retourne l'adresse du site $echo Indique si on fait un echo du résultat saveFlashMessage($message,$class='') $message $class message à sauvegarder classe css à attribuer au message cleanFileName($strIn) $strIn Nettoie le nom d'un ficher pour upload Nom du fichier à nettoyer cleanString($strIn, $bStrToLower) $strIn $bStrToLower Permet de stocker un message Nettoie une chaîne de caractères Chaîne à nettoyer Indique si strtolower createComboFromArray($options=array(), $selectedId='', $sort=true, $emptyOption=true, $exclude='') Création des options (select box) à partir d'un array $options $selectedId $sort Item Tableau des options (Id => libellé) Item sélectionné Tri du tableau createRadioFromArray($name='', $options=array(), $checkedId='', $sort=true) Création des boutons radio à partir d'un array $name $options $checkedId $sort Item Name des radios Tableau des options (Id => libellé) Item sélectionné Tri du tableau printDateTime($dateTime,$showTime=0,$letter=0) Fonction permettant d'afficher une date SQL $dateTime $showTime $letter 0 1 2 3 4 5 6 : : : : : : : Date à convertir Flag d'affichage de l'heure Flag pour type d'affichage 24/10/2007 [9:23:56] Mer 24/10/2007 [9:23:56] Dimanche 30 Décembre Dimanche 30 Décembre 2007 Décembre 2007 Dim 30 Décembre 2007 Dim 30 Déc 2007 7 BBCMS – Guide de développement createComboDay($selectedId='') Création des options (select box) des jours createComboMonth($selectedId='') Création des options (select box) des mois createComboYear($annee, $nbItem, $selectedId='') Création des options (select box) des années $selectedId $annee $nbItem Item sélectionné Année de départ Nb item à générer createComboHour($selectedId='') Création des options (select box) des heures createComboMinute($selectedId='') Création des options (select box) des minutes getIp() Fonction pour récupérer l'adresse ip dateSQL($day) Fonction permettant de convertir une date en SQL et vice versa isEmail($email) Teste si l'email est valide cutChain ($chain, $length) Coupe une chaine de caractères selon une longueur donnée $chain $length La chaine a coupée Longueur à laquelle on doit couper Fonctions front-office : echoFlashMessage() Affiche le message stocké dans la fonction saveFlasMessage getImageToLightbox($content) Fonction de traitement des images pour être affiché via lightbox Fonctions back-office : formatSize($bytes, $lang = 'fr', $format = '%.2f') $bytes $format $lang Retourne la taille d'un fichier Taille en octets Formatage Indique la langue des unités de taille getUploadError($err) Retourne le message associé au code d'erreur lors d’un upload de fichier getAge($date) Retourne depuis combien de temps s'est écoulé depuis la date de publication 8 BBCMS – Guide de développement Variables d’applications Front-office : $application['LocalTitle'] Nom du site web $application['FullLocalDomain'] Adresse du site web $application['LocalFromMailAddressName'] Nom de l’expéditeur sendmail $application['LocalFromMailAddress'] Adresse email de l’expéditeur sendmail $application['FoNavLimit'] Nombre d’éléments affichés par page $application['FoNavFrames'] Nombre de pages affichées pour la pagination $application['TestEnvironment'] Indique si le site est en environnement de test $application['InMaintenance'] Indique si le site est en maintenance Back-office : $application['Setlocale'] Informations de localisation $application['NewsCat'] Catégories des articles $application['LocalFromMailAdminName'] Nom de l’expéditeur sendmail $application['LocalFromMailAdmin'] Adresse email de l’expéditeur sendmail $application['ReportBugMail'] Adresse email de la personne qui reçoit les rapports de bugs $application['FilePath'] Dossier des fichiers $application['FileMaxWeight'] Poids max autorisé pour l’upload des fichiers $application['ImgPath'] Dossier des images $application['ImgMaxWeight'] Poids max autorisé pour l’upload des images $application['WidthPicture'] Largeur maximum autorisée des images $application['HeightPicture'] Hauteur maximum autorisée des images $application['WidthThumbs'] Largeur maximum autorisée des miniatures $application['HeightThumbs'] Hauteur maximum autorisée des miniatures $application['BoNavLimit'] Nombre d’éléments affichés par page $application['BoNavFrames'] Nombre de pages affichées pour la pagination $application['PrestaName'] Nom du prestataire $application['PrestaFullname'] Nom et prénom $application['PrestaPhone'] Téléphone $application['PrestaEmail'] Adresse email 9 BBCMS – Guide de développement $application['PrestaSkype'] Skype $application['PrestaRss'] Flux rss 10 BBCMS – Guide de développement Validator jQuery Documentation du plugin : http://docs.jquery.com/Plugins/Validation/Validator Appel de la librairie dans le fichier javascript.php : <script type="text/javascript" src="<?php url() ?>/lib/validation/jquery.validate.js"></script> <script type="text/javascript" src="<?php url() ?>/lib/validation/additional-methods.js"></script> 1 <script type="text/javascript" src="<?php url() ?>/lib/validation/localization/messages_fr.js"></script> 1 Appel des méthodes additionnelles 2 Chargement des fichiers de traduction 2 Validation simple d’un formulaire : <script> //<![CDATA[ $(document).ready(function(){ $("#idDuFormulaire").validate(); }); //]]> </script> Pour indiquer les champs à contrôler, il suffit d’ajouter une classe à chaque élément input qui doit être vérifié. <form name=" idDuFormulaire " id=" idDuFormulaire " method="post" action=""> <p> <label for="cname">Name</label> < input id="cname" name="name" class="required" /> </p> <p> <label for="cemail">E-Mail</label> <input id="cemail" name="email" class="required email" /> </p> <p> <input class="submit" type="submit" value="Submit"/> </p> </form> Les champs Name et E-Mail sont obligatoires et on contrôle que le format de l’email saisi est correct. Validation avancé d’un formulaire : Les méthodes avancées de validation ne peuvent pas être appelées directement par l’intermédiaire des classes, celles-ci requérant des options à spécifier. Les méthodes doivent être déclarées à l’appel de la validation du formulaire. 11 BBCMS – Guide de développement <script> //<![CDATA[ $(document).ready(function(){ $("#idDuFormulaire").validate({ rules: { name : { required: true, minlength: 4, maxlength: 20 }, email : { required: true, email: true } } }); }); //]]> </script> le champ est obligatoire le nom doit comporter 4 caractères au minimum le nom ne doit pas dépasser 20 caractères Validation par ajax : Le plugin permet d’appeler un fichier par ajax pour la validation d’un champ. Par défaut, le champ contrôlé est envoyé automatiquement en post. On peut également transmettre des données complémentaires grâce à l’option data. <script> //<![CDATA[ $(document).ready(function(){ $("#idDuFormulaire").validate({ rules: { name : { required: true, remote: { url: "<?php url() ?>/ajax/fichier.php", type: "post", data: { form: " idDuFormulaire ", field_idDuChamp: function() { return $("#field_ idDuChamp ").val(); } } } } } }); }); //]]> </script> Personnalisation des messages : Pour chaque champ contrôlé, le plugin affiche un message par défaut en fonction du type de champ lorsque toutes les conditions ne sont pas remplies. Il est possible de personnaliser ce message et de l’adapter à chaque champ. 12 BBCMS – Guide de développement <script> //<![CDATA[ $(document).ready(function(){ $("#idDuFormulaire").validate({ rules: { name : { required: true, minlength: 4 }, messages : { required: "<?php echo __("Veuillez saisir votre nom.") ?>", minlength: "<?php echo __("Le nom doit comporter au moins 4 caractères.") ?>" }, } }); }); //]]> </script> Méthodes : required( ) Rend l'élément nécessaire. http://docs.jquery.com/Plugins/Validation/Methods/required required( dependency-expression ) Rend l'élément nécessaire en fonction d’une expression. Exemple dans le cas où un champ est requis si un autre champ est rempli : <script> //<![CDATA[ $(document).ready(function(){ $("#idDuFormulaire").validate({ rules: { name : { required: function(elt) { return $("#field_autreChamp").val().length > 0; } } } }); }); //]]> </script> http://docs.jquery.com/Plugins/Validation/Methods/required#dependency-expression 13 BBCMS – Guide de développement required( dependency-callback ) Rend l'élément nécessaire en fonction du callback. http://docs.jquery.com/Plugins/Validation/Methods/required#dependency-callback remote( options ) Requête par ajax. http://docs.jquery.com/Plugins/Validation/Methods/remote#options minlength( length ) L’élément requiert une longueur minimum. http://docs.jquery.com/Plugins/Validation/Methods/minlength#length maxlength( length ) L’élément ne doit pas dépasser une longueur maximum. http://docs.jquery.com/Plugins/Validation/Methods/maxlength#length rangelength( range ) L’élément doit être comprit entre une longueur minimum et maximum. http://docs.jquery.com/Plugins/Validation/Methods/rangelength#range min( value ) L’élément requiert une valeur minimum. http://docs.jquery.com/Plugins/Validation/Methods/min#value max( value ) L’élément ne doit pas dépasser une valeur maximum. http://docs.jquery.com/Plugins/Validation/Methods/max#value range( range ) L’élément doit être comprit dans une plage donnée. http://docs.jquery.com/Plugins/Validation/Methods/range#range 14 BBCMS – Guide de développement email( ) L’élément doit être un email. http://docs.jquery.com/Plugins/Validation/Methods/email url( ) L’élément doit être une url. http://docs.jquery.com/Plugins/Validation/Methods/url date( ) L’élément doit être une date. http://docs.jquery.com/Plugins/Validation/Methods/date dateISO( ) L’élément doit être une date ISO. http://docs.jquery.com/Plugins/Validation/Methods/dateISO number( ) L’élément doit être un chiffre décimal. http://docs.jquery.com/Plugins/Validation/Methods/number digits( ) L’élément doit être un chiffre. http://docs.jquery.com/Plugins/Validation/Methods/digits accept( extension ) L’élément accepte seulement les extensions spécifiées. http://docs.jquery.com/Plugins/Validation/Methods/accept#extension equalTo( other ) L’élément doit être égal à un autre élément. http://docs.jquery.com/Plugins/Validation/Methods/equalTo#other 15 BBCMS – Guide de développement Selectbox Documentation du plugin : http://www.bulgaria-web-developers.com/projects/javascript/selectbox/ Appel de la librairie dans le fichier javascript.php : <script type="text/javascript" src="<?php url() ?>/js/selectbox.js"></script> Appel de la feuille de style dans le fichier style.php : <link rel="stylesheet" type="text/css" media="all" href="<?php url() ?>/css/selectbox.css" /> Appel du plugin : <script> //<![CDATA[ $(document).ready(function(){ $("#idSelect").selectbox(); }); //]]> </script> Implémentation d’un appel ajax sur l’état onchange : <script> //<![CDATA[ $(document).ready(function(){ $("#idSelect").selectbox({ onChange: function (val, inst) { $.ajax({ type: "POST", data: {champ: val}, url: "<?php url() ?>/ajax/fichier.php", success: function (data) { $("#divUpdate").html(data); $("#idSelect2").selectbox(); } }); } }); }); //]]> </script> 16 BBCMS – Guide de développement Slideshow Documentation du plugin : http://www.slidesjs.com/ Appel de la librairie dans le fichier javascript.php : <script type="text/javascript" src="<?php url() ?>/js/slides.min.js"></script> Appel du plugin : <script> //<![CDATA[ $(document).ready(function(){ $("#slides").slides(); }); //]]> </script> CSS : <style type="text/css" media="screen"> .slides_container { width:470px; height:170px; } .slides_container div { width:470px; height:170px; display:block; } </style> HTML : <div id="slides"> <div class="slides_container"> <div> <h1>Slide 1</h1> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p> </div> <div> <h1>Slide 2</h1> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p> </div> </div> </div> 17 BBCMS – Guide de développement Swift mailer Documentation de la librairie : http://www.swiftmailer.org/docs/introduction.html PHP Thumb Documentation de la librairie : http://phpthumb.gxdlabs.com/ https://github.com/masterexploder/PHPThumb/wiki/Basic-Usage 18 BBCMS – Guide de développement Notes aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 19 BBCMS – Guide de développement aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 20 BBCMS – Guide de développement