Plone CMS
CMS : content management system (Logiciel de gestion de contenu)
Permettre à des utilisateurs de créer, éditer le contenu d'un site.
Prends aussi en charge :
Application à un exemple :
Quels CMS ?
Pourquoi Plone ?
Son modèle et les possibilités de développement
Pourquoi pas Plone ?
Vous voulez l'héberger chez Free.
C'est quoi Plone :
Fondations de Plone :
Python (http://python.org/) :
Début 1990
Interprété
Programmation orientée objet (et impérative)
Typage dynamique fort
Syntaxe basée sur l'indentation
Il ne devrait y avoir qu'une — et si possible une seule — façon de s'y prendre
En deux mots : facilité et lisibilité.
Zope (http://zope.org/),
Zope Corporation 1995
Zope 2.0 1999
Fais correspondre les
URL à des objets et méthodes
Gère de façon transparente la persistance des objets (ZODB)
Utilisation de l’« acquisition » (hiérarchie de contenance)
Gestion et développement par l'interface WEB
Zope 3.0 2004
Incompatible avec Zope 2.0
Réaction aux erreurs (initiales) de Zope
Architecture de composants (et tests unitaires)
Five = 2.0 + 3.0
CMF : Content Management Framework
CMF 1.0 2001
Utilisé comme base pour des
CMS :
Plone (http://plone.org/)
Interface utilisateur (vitrine) de CMF/Zope
Plone 2.0 2004 :
Internationalisation
Usabilité
Plone 2.1 2005 :
Utilisation d'Archétypes comme type de base
Plone 2.5 2006 :
Intégration des technologies Zope 3
Plone 3.0…
Gestion des versions
Ajax
Archétypes :
Quoi retenir ?
Objectifs ?
Moyens ?
Temps ?
Plone
(ou un autre) n'est pas la réponse :
C'est une réponse possible
Plone : par où commencer ?
Un petit tour de l'interface
Personnaliser l'aspect
Ajouter de nouvelles fonctionnalités
Développer un contenu personnalisé
Comprendre la gestion des droits
Personnaliser le processus de publication
Ne pas se limiter au rendu
HTML
Un petit tour de l'interface
Illustration de l'acquisition :
Personnaliser l'aspect
Oublier le développement par l'interface WEB
Utiliser un squelette de base (DIY Plone style)
Ne pas prendre en compte l'interface d'origine
Comprendre les services offerts par Plone
Développement par l'interface WEB
Permets de découvrir/expérimenter
Environnement complexe faisant perdre de vue l'objectif
Pas de transfert ni sauvegarde simple du travail réalisé
Découvrir/expérimenter :
la ZMI (http://localhost:8080/manage) :
Une vue arborescente présentant les objets contenu dans la ZODB
Le site Plone est un objet contenant d'autres objets
ex : portal_skin (de type Plone Skin Tool) gère l'aspect du site
portal_skin (http://localhost:8080/Intranet/portal_skins/manage)
Contents (contenu) :
Il contient des dossiers
-
dont l'usage et l'ordre détermine l'apparence du site
-
ce que l'on peut paramétrer
-
-
où commander… Toutes les méthodes
portal_skin/custom
Placé en premiers dans les propriétés (prends le dessus)
-
Changer les couleurs… portal_skins/plone_styles/base_properties
Changer une feuille de style…
Ne pas allez plus loin !
Les systèmes de gabarit de Plone
DTML
Langage initial de Zope
Encore utilisé pour SQL, mail et
CSS
ZPT
TAL : Template Attribute Language
TALES : TAL Expression Syntax
METAL : Macro Expansion TAL
ZPT : Zope Page Template
Utiliser un squelette de base (DIY Plone style)
En premier : Votre graphisme
Installer le produit (DIY Plone style) et faire un squelette de base
Installer le produit ainsi créé
Votre Graphisme
Maquette
Quoi placer
Squelette de base
MonStyle/
__init__.py
config.py
Extensions/ ...
HISTORY.txt
LICENSE.txt
profile/ ...
README.txt
refresh.txt
skins/
monstyle_images/
monstyle_styles/
base.css.dtml
base_properties.props
generated.css.dtml
monstyle.css.dtml
portlets.css.dtml
public.css.dtml
monstyle_templates/
version.txt
Personnaliser le squelette
Configurer Plone pour le développement
Ajouter vos propres styles
CSS
Reprendre et/ou modifier les styles d'origine
Dupliquer les gabarits à modifier
Ajouter vos propres styles CSS
#portal-globalnav li {
display:inline;
}
base_properties.props et DTML
Reprendre et/ou modifier les styles d'origine
/* Accessibility and visual enhancement elements */
.hiddenStructure {
display: block;
background: transparent;
background-image: none; /* safari bug */
border: none;
height: 1px;
overflow: hidden;
padding: 0;
margin: -1px 0 0 -1px;
width: 1px;
}
.contentViews .hiddenStructure,
.contentActions .hiddenStructure {
position: absolute;
top: -200px;
left: -200px;
}
Dupliquer les gabarits à modifier
Modifier le gabarit de la page
TAL (en bref)
tal:content
tal:attributes
tal:replace
tal:define
tal:condition
tal:repeat
TAL exemples :
global_logo.pt
...
<a href="/"
tal:attributes="href navigation_root_url"
tal:define="portal_title portal_properties/title;"
tal:content="string:$portal_title"
accesskey="1">
Plone
</a>
...
metal:use-macro
metal:define-macro
metal:define-slot
metal:define-slot
main_template.pt
<a metal:use-macro="here/global_logo/macros/portal_logo">
The portal logo, linked to the portal root
</a>
global_logo.pt
<h1 id="portal-logo" metal:define-macro="portal_logo">
<a href="/"
...
</a>
</h1>
ZPT référence
Pour aller plus loin
Ajouter de nouvelles fonctionnalités
Procédure d'installation
Placer dans le dossier VotreInstance/Product
L'ajouter par le biais des préférences du site :
Certains produits ne sont pas installables
Il peut être nécessaire de relancer le serveur
Produits disponibles
(http://plone.org/products)
CMS :
Visual Themes, Weblogs, Internationalization, Communication, Versioning, Staging and Deployment, Polls/Surveys, Layout and Presentation, Auth and User Management
Développement :
Code Examples, Development Tools
Quels produits utiliser ?
Produits Open Source :
En développement
Stable
Maintenu
Abandonné
Produit sur le site de l'IUT :
Développer un contenu personnalisé
Il existe des solutions TTW (mais…)
Archetypes facilite la tâche
ArchGenXML est un jeu d'enfant
ArchGenXML
ArchGenXML diagramme UML
ArchGenXML commande
ArchGenXML.py ContactIUT.zargo
ContactIUT/
__init__.py
config.py
Extensions/ ...
ListOrgIUT.py
OrganisationIUT.py
PersonIUT.py
refresh.txt
skins/ ...
version.txt
Archetypes Schémas
schema = Schema((
StringField(
name='Salutation',
widget=StringWidget(
label='Salutation',
label_msgid='ContactIUT_label_Salutation',
i18n_domain='ContactIUT',
),
searchable=1
),
StringField(
name='FirstName',
widget=StringWidget(
label='Firstname',
label_msgid='ContactIUT_label_FirstName',
i18n_domain='ContactIUT',
),
searchable=1
),
...
Comprendre la gestion des droits
Gestion très fine
Association des droits à des rôles
Définitions des rôles pour :
Utilisateur (ou Groupes)
Localement
Modification des droits par le WorkFlow
Gestion des droits dans la ZMI
Remarque sur la sécurité
Exemple de confusion :
Conclusion sur la gestion des droits :
Personnaliser le processus de publication
Principe des WorkFlow de Plone
Processus de publication standard
WorkFlow dossiers
WorkFlow dossiers : les états
WorkFlow dossiers : Permision de visible
WorkFlow dossiers : Transition publish
WorkFlow dossiers : Permision de published
WorkFlow documents
Processus de publication du site public
deployer : permission
deployer : rôles
Processus de publication pour espace personnel
espace personnel : droit