Développement du CMS Ocari avec Symfony



Documents pareils
Soon_AdvancedCache. Module Magento SOON. Rédacteur. Relecture & validation technique. Historique des révisions

WysiUpStudio. CMS professionnel. pour la création et la maintenance évolutive de sites et applications Internet V. 6.x

Créer une base de données vidéo sans programmation (avec Drupal)

Magento. Magento. Réussir son site e-commerce. Réussir son site e-commerce BLANCHARD. Préface de Sébastien L e p e r s

Programmer en JAVA. par Tama

PHP 5.4 Développez un site web dynamique et interactif

Construire un réseau social avec Symfony Xavier Lacot Clever Age. Symfony Live 11 et 12 juin 2009 Clever Age Xavier Lacot

Tour d horizon des CMS. Content Management System

Drupal vs La concurrence

IBM Workplace : Live!

Un site web collaboratif avec Drupal. Judith Hannoun - Journées INSHS 16 Octobre 2012

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

Editoile Académie Mathieu Renault, formateur 9 rue Vauban Bordeaux Tél formation@editoile.fr

Nouveautés de Drupal 8. Léon

WordPress Référencement naturel (SEO) Optimiser. son référencement. Daniel Roch. Préface d Olivier Andrieu

Projet en nouvelles technologies de l information et de la communication

Introduction MOSS 2007

les techniques d'extraction, les formulaires et intégration dans un site WEB

CATALOGUE DES OFFRES O2i INGÉNIERIE POUR LES PLATEFORMES ÉDITORIALES

Développement d'applications Web HTML5 L'art et la manière avec Visual Studio 2015 et TFS

CMS Open Source : état de l'art et méthodologie de choix

Panorama des CMS open sources. Sylvain Ferrand, CMAP École Polytechnique Journées Mathrice, Poitiers, 19 mars 2008

DRUPAL Réalisez des développements professionnels avec PHP (2ième édition)

Cursus 2013 Déployer un Content Management System

STAGE2 STAGIAIRE / NIKOLAOS TSOLAKIS. 16/02/2015 : choix des outils nécessités pour l application : Didier Kolb, le maitre de stage

Programmation Web. Madalina Croitoru IUT Montpellier

RESUME DE CARRIERE. Alice JULIENNE. 23 ans Nationalité Française Développeur Web Front-End. Compétences

Animation numérique. de territoire. Créer son site Internet avec un outil gratuit. Mardi 4 novembre Cédric ARNAULT OT Lourdes

WordPress Référencement naturel (SEO) Optimiser. son référencement. Daniel Roch. Préface d Olivier Andrieu

Le CMS Content Manager

COMMENT METTRE A JOUR SON SITE WEB?

Alfstore workflow framework Spécification technique

Projet 2. Gestion des services enseignants CENTRE D ENSEIGNEMENT ET DE RECHERCHE EN INFORMATIQUE. G r o u p e :

Créateur de sites Internet. Développeur de logiciels.

Content Management System. bluecube. Blue Cube CMS V4.3 par Digitalcube

Point de départ état des lieux. Plus de 200 sites web Internet Périmètre institutionnel = site national + 21 sites des centres de recherche

CDC 4 DISPONIBLE : 25 NOVEMBRE 2014

Découvrir Drupal au travers d un cas client

Description des pratiques à adopter pour la mise à jour du layout en utilisant le gestionnaire de conception de Sharepoint 2013

WORDPRESS : réaliser un site web

Présentation Alfresco

PloneLabs un gestionnaire de contenu pour les laboratoires

Release Notes POM v5

Gérez et diffusez vos contenus médias

Les bonnes pratiques. de l hébergement d un CMS

indesign User Group Paris Creative Cloud (version 2014) Nouveautés Design

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Joomla! Création et administration d'un site web - Version numérique

creer votre site internet en html/css

Les grandes facettes du développement Web Nicolas Thouvenin - Stéphane Gully

Catalogue des formations : Utilisation d outils Open Source

Madame, Monsieur, PJ. 1 - Programme de formation 2 - Fiche d'inscription 3 - Présentation de Olivier GOBET

AGENCES DIGITALES PME AMÉLIOREZ LA PERFORMANCE DE VOS ÉQUIPES AVEC DES APPLIS MÉTIERS : FLEXIBLES, PEU COUTEUSES, R.O.

Entity API. Alexandre Todorov, Felip Manyer i Ballester. Montpellier, le 17 septembre 2014

Présentation du service «photothèque-and-co» annuaire professionnel. base de données

CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN ING

SOMMAIRE 1. NOTRE AGENCE NOS PRESTATIONS NOTRE MÉTHODOLOGIE PROJET NOS OFFRES LES ATOUTS DE NOS OFFRES...

Environnements de développement (intégrés)

demander pourquoi mon site n'apparaît pas sur google ou pourquoi mon site n'est pas référencé par les moteurs de recherche?

S7 Le top 10 des raisons d utiliser PHP pour moderniser votre existant IBM i

E-commerce B2B Comment l exploiter avec Magento Enterprise Edition?

Ingénierie Dirigée par les Modèles. Editeurs de modèles. (Eclipse Modeling Tools) Jean-Philippe Babau

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

THÉMATIQUES. Comprendre les frameworks productifs. Découvrir leurs usages. Synthèse

Webinar. Découvrez Rubedo, la première solution CMS open-source tirant profit des atouts de Zend Framework et du NoSQL. avec la participation de

Créez et gérez votre site/blog avec Wordpress, l outil le plus efficace et le plus facile à utiliser.

Atelier Progress Rollbase

Quel CMS choisir pour son site web?

Drupal un CMS orienté mé2er. Romain JARRAUD Mathieu GROS

SYSTÈMES D INFORMATIONS

Découvrir le CMS. et l utiliser dans une approche pro!

Whaller.com. Réseau social d entreprise

Comparatif CMS. Laurent BAUREN S Bérenger VIDAL Julie NOVI Tautu IENFA

WordPress, thèmes et plugins : mode d'emploi

Gagner en performance avec un extranet. et mener son projet extranet?

Bonnes pratiques de développement JavaScript

CRM pour le marketing

Formation Webmaster : Création de site Web Initiation + Approfondissement

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

Savoir- Faire Offres mé1ers Offres technologiques

Portfolio Sites internet :

Introduction aux CMS Microsoft. Philippe Sentenac

Partie publique / Partie privée. Site statique site dynamique. Base de données.

Un outil de communication et de Formation Agricole au service des jeunes ruraux

Manuel du site internet Guichet Export pour la CCI Marseille Provence

Conférence Développeurs Magento. 27 novembre 2013 mageconf.org

COMPÉTENCES TECHNIQUES

Manuel d utilisation du site web de l ONRN

Devenez un véritable développeur web en 3 mois!

L externalisation de vos logiciels entreprises : une solution aux problèmes de coûts, de sécurités et de réactivités

VOTRE OFFRE CRM 360 ALL INCLUSIVE.

Marché à Procédure adaptée. Tierce maintenance applicative pour le portail web

VOTRE OFFRE CRM 360 ALL INCLUSIVE. crm.amabis.com

... Cahier des charges Site Internet Office de Tourisme Lesneven - Côte des Légendes MAITRE D OUVRAGE

FICHE PRODUIT COREYE CACHE Architecture technique En bref Plateforme Clients Web Coreye Cache applicative Références Principe de fonctionnement

Rapport de stage Clément MOYSAN

Transcription:

Développement du CMS Ocari avec Symfony Sébastien ANGELE Jérôme MACIAS Titre présentation Conférencier

Les besoins

Un CMS pour faire quoi? Gérer des contenus Gérer des médias Gérer des homes

Gérer des contenus des articles

Gérer des contenus des diaporamas

Gérer des contenus des dossiers

Gérer des contenus des infographies

Gérer des contenus des quiz, des sondages, des vidéos, des palmarès, des blogs, des tests

Gérer des médias

Gérer des homes Développement du CMS Ocari avec Symfony Sébas/en ANGELE Jérôme MACIAS

Un CMS pour qui? Pour des journalistes

Un CMS pour qui? Pour plusieurs sites web Lexpress.fr Lexpress Styles Cotemaison.fr Lexpansion.com Lentreprise.fr Votreargent.fr

Le contenu

Un contenu est standard Un titre Une image de Une Un chapo

mais aussi spécifique Du texte pour les articles Des flash pour les infographies Des images pour les diaporamas

Un contenu = x éléments 1 article = Home Texte Sommaire

Un contenu = x éléments 1 diaporama = Home Diapositives Sommaire

Un contenu = x éléments 1 article 1 diaporama Home Home Texte Diapositives Sommaire Sommaire

L élément de contenu Un fragment de contenu indépendant Une interface de saisie associée Un CRUD autonome

Le generator

Un type de contenu = un module

Un générator pour les modules

Un élément = un niveau virtuel supplémentaire Home Texte Sommaire

Un élément = un niveau virtuel supplémentaire Home actions lib templates

Un générator pour les éléments

Principe de la génération 1. Une tâche qui déploie le module dans l application 2. Un générator qui : 1. Crée les squelettes de chaque élément dans le module de l application 2. Crée le module en cache en construisant le contenu en fonction de ses éléments

Le module Article généré

Le generator.yml generator: class: ocaricontentgenerator param: model_class: Content primary_key: id type: theme: config: elements: home: article default label: À la une texte: label: Article sommaire: label: Suppléments

Le module Article généré

Un exemple de code généré class autoarticleactions extends sfactions { protected function init(ocaricontent $object) { } $this->content = new ocaricontentarticle($object); $this->content->addelements(array('home', 'texte', 'sommaire')); } public function save() { foreach ($this->content->getelements() as $element) { } $element->save();

Un exemple de code généré class BaseOcariContentArticleElementHome extends ocaricontentelementhome { public function configure() { $this->setname('home'); $this->setlabel('à la une'); } } class ocaricontentelementhome { public function save() { $this->form->save(); } }

Le générator pour un contenu Ocari dispose d éléments de contenu génériques et configurables Chaque contenu est construit en choisissant des éléments et en les configurants Chaque site peut construire et configurer ses contenus à partir des éléments standards Le contenu est standard... mais aussi spécifique

Les sfforms

Les sfforms au cœur des éléments

Les sfforms au cœur des éléments class BaseOcariContentDiaporamaElementDiaporama extends ocaricontentelement { public function getform() { $this->form = new sfform(); } } // fields $this->form->setwidget( surtitre', new sfwidgetforminput()); $this->form->setwidget('titre', new sfwidgetforminput()); $this->form->setwidget('chapo', new sfwidgetformtextarea()); $this->form->setwidget('diapos_media_list', new sfwidgetforminputhidden()); $this->form->setvalidator( surtitre', new sfvalidatorstring(array('max_length' => 128, 'required' => false))); $this->form->setvalidator('titre', new sfvalidatorstring(array('max_length' => 256, 'required' => false))); $this->form->setvalidator('chapo', new sfvalidatorstring(array('max_length' => 2048, 'required' => false))); $this->form->setvalidator('diapos_media_list', new sfvalidatorpass(); $this->form->getwidgetschema()->setnameformat( element_diaporama[%s]');

Des images pour les contenus Développement du CMS Ocari avec Symfony Sébas/en ANGELE Jérôme MACIAS

Les FormFilters pour la recherche class OcariMediaSearchFormFilter extends BaseFormFilterDoctrine { public function setup() { $this->setwidgets(array( source => new sfwidgetforminput(array('label => source')))); } $this->setwidgets(array('keywords => new sfwidgetforminput(array('label => 'Mots-clés')))); $this->setvalidators(array('keywords => new sfvalidatorstring(array('required' => false)))); $this->getwidgetschema()->setnameformat('media_search[%s]'); public function getmodelname() { } return 'OcariMedia'; } public function addkeywordscolumnquery($query, $field, $value) { $query->addwhere('titre LIKE? OR legende LIKE?', array('%'.$value.'%', '%'.$value.'%')); }

Doctrine

Et le workflow? Gestion des utilisateurs et de leurs droits Chaîne de production des contenus, de l édition à la publication Gestion de version de travail / version en ligne / historique

La puissance de Doctrine Création d une version de travail $object = $object->copy(); $object->online_content_id = null; $object->settransitionto(ocaricontent::workflow_state_draft); $object->save(); Gestion de l historique if ($objectonline = $this->object->getonlineobject()) { } $objectonline->fromarray(array( )); online_content_id' => null, history_content_id' => $objectonline->online_content_id, state' $objectonline->save(); => OcariContent::WORKFLOW_STATE_HISTORY,

Les sfevents

La publication avec des agents Publication d un contenu Prégénération Du HTML Indexation dans le moteur de recherche Indexation des Images liées (droits) Mise à jour Des homes Agents

Les événements au cœur des agents Le contenu envoie un événement lors d un changement d état Chaque agent connait les événements auxquels il doit répondre Chaque action connait les agents qui peuvent potentiellement répondre Génération en cache des agents chaque agent peut être configuré et surchargé pour chaque type de contenu

Le MVC

Gestion des homes : les zones

Gestion des homes : les modules

Gestion des homes Interface entièrement en Ajax avec prévisualisation

Le rendering du MVC de Symfony rendercomponent pour appel Ajax et non Ajax renderpartial pour centraliser les parties de templates récurrentes rendertext pour accélerer les temps de réponse

Filter pour conversion ISO / UTF8 public function execute($filterchain) { $request = $this->getcontext()->getrequest(); // Ajax request if ($request->isxmlhttprequest() && $this->isfirstcall()) { } $this->decodeparameters($request->getparameterholder()->getall()); } // execute next filter $filterchain->execute(); * Code inspiré d un snippet

Le sftask

Génération des homes: sftask Prégénération systématique du HTML de tous les blocs de homes en lançant une tâche : sur un événement (publication) à la demande (Gestion des homes) planifiée (contenus automatiques) Unification du code, facilité d appel

Les plugins

Multisite et déploiement Écueils à éviter : Incohérence fonctionnelle Maintenance lourde Évolution longue et complexe Customisation dégrade l outil

Multisite et déploiement Séparation du core et du spécifique Automatiser le déploiement Simplifier les mises à jour

Les plugins comme solution Ocari est un ensemble de plugins sfocariplugin sfocaricontentplugin sfocariuser... ocarimediaplugin ocarischeduleplugin

Les plugins comme solution Chaque site les utilise avec une configuration différente Chaque site implémente d éventuelles surcharges

Les plugins comme solution Conservation d une application de développement grâce à une tâche de génération de plugins Nécessité d un nommage très strict qui permet de séparer les différentes parties fonctionnelles d Ocari

Objectifs atteints grâce à Symfony Ocari est : déployable avec les fonctionnalités attendues configurable pour personnaliser suivant les sites les différentes fonctionnalités surchargeable pour les besoins spécifiques maintenable facilement

Questions sangele@groupe-exp.com jmacias@groupe-exp.com