Outils pour utilisateurs

Outils du site


plone:presentation

Table des matières

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 :

  • Création d’éléments de navigation.
  • Indexation et recherche.
  • Gestion des utilisateurs et des permissions.

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 :

Plone (http://plone.org/)

Ne pas se fier aux apparences

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
    • Intégration des technologie de Zope 3 à Zope 2 (→ 2.8)

CMF : Content Management Framework

  • CMF 1.0 2001
    • Librairie de base pour faire des sites orientés contenus
      • Types de base
      • Indexation
      • « WorkFlow »
      • Gestion des utilisateurs
  • Utilisé comme base pour des CMS :
    • Plone
    • Silva
    • Nuxeo CPS (implantation nationale/institutionnel)

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 :

  • Facilite la création d'application basée sur CMF/Plone
  • Archétype 1.0 2003
  • Décris le contenu par le biais de schéma :
    • Agrégation de champs de base (type et validation)
    • « widget» affichage et édition

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

  • Les URL sont similaires à celle d'un système de fichier
  • La navigation est construite de la même façon
  • La fin des URL peut correspondre à des actions/vues

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)

portal_skin/custom

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

  • Langages basés sur XML
  • Est de l'XML/HTML valide
  • Produit de l'XML/HTML valide
  • Très bonne séparation de la forme et du contenu

Utiliser un squelette de base (DIY Plone style)

Votre Graphisme

  • Ne pas partir de celui de Plone
    • Simplement pensé à ce qui vous est offert par Plone :
      • Navigation :
        • Sections (onglets)
        • Hiérarchie (Chemin)
        • Arborescence
      • Recherche
      • Portlet
    • Mise en page ?

Maquette

Quoi placer

Squelette de base

  • Une Simple commande :
    • DIYPloneStyle/bin/generator.py MonStyle
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
    • Modifier le gabarit de la page
    • Modifier les autres gabarits

Configurer Plone pour le développement

Ajouter vos propres styles CSS

#portal-globalnav li {
    display:inline;
}

base_properties.props et DTML

  • Penser à utiliser base_properties.props
  • DTML
    • Utiliser une valeur de base_properties
      • color: &dtml-fontColor;;
    • Utiliser une image
      • list-style-image: url(&dtml-portal_url;/bullet.gif);

Reprendre et/ou modifier les styles d'origine

  • N'inventez pas la roue
    • Tester sur différents navigateurs est laborieux
      • Garder les solutions éprouvées
      • Le code d'origine est un modèle d'accessibilité
/* 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

  • Faire un fichier de même nom dans le répertoire monstyle_templates
  • Copier dedans le code du template originel

Modifier le gabarit de la page

  • TAL : permets d'insérer
    • Contenu d'éléments HTML
    • Attribut de balise
  • TALES : spécifie ce qui doit être inséré
  • METAL : (re) compose les blocs 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 (en bref)

  • metal:use-macro
  • metal:define-macro
  • metal:define-slot
  • metal:define-slot

METAL exemples :

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 simple
  • De nombreux produits disponibles
  • Mais…

Procédure d'installation

  • Placer dans le dossier VotreInstance/Product
  • L'ajouter par le biais des préférences du site :
    • Ajout/Suppression de produits
  • Certains produits ne sont pas installables
    • Ce sont des dépendances pour d'autre
  • 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 :

EnSimpleStaging
(http://plone.org/products/ensimplestaging) Processus de publication, ajouté, car :

  • Plone est orienté espace collaboratif
  • Plone dépourvu de gestion de version (pour l'instant)

LinguaPlone
(http://plone.org/products/linguaplone)
Gestion simple de l'internationalisation

ContactIUT (…)
Un développement spécifique

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
      • Hériter
  • Modification des droits par le WorkFlow

Gestion des droits dans la ZMI

  • L'usage des méthodes est gardé par des droits
  • Ces droits sont définis pour des rôles

Remarque sur la sécurité

  • Remarquable :
    • Peut être dissocié du code
  • Risqué :
    • Sa complexité peut poser problème

Exemple de confusion :

  • Changer les droits sur un répertoire
    • ne change pas (nécessairement) celle de son contenu.
  • La visibilité d'un documents
    • n'est pas conditionnée par celle de son conteneur

Conclusion sur la gestion des droits :

  • Ne pas modifier dans la ZMI :
    • sauf pour configuration du site
  • Utiliser la fonctionnalité standard :
    • l'état du WorkFlow détermine les droits

Personnaliser le processus de publication

  • Processus de publication standard :
    • Adapté à une édition collaborative
      • Anonymous, Owner, Reviewer
  • Nécessiter de le personnaliser pour :
    • Maitriser le processus d'édition (site public)
    • Simplifier la gestion d'espaces personnels

Principe des WorkFlow de Plone

  • À un type de document est associé un Workflow
  • Un WorkFlow comporte différents états
    • Un état détermine certaines permissions
    • Changer d'état se fait par une transition
      • La possibilité d'initier une transition et déterminer par
        • des permissions
        • rôles
        • groupes
        • ou autres..
      • Une transition peut déclencher des scripts

Processus de publication standard

  • Deux WorkFlow sont livrés avec Plone :
    • Pour les dossiers :
      • visible, private, published
    • Pour les documents :
      • visible, private, pending, published

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

  • La publication est gardée par la permission :
    • Use version control
    • donnée à la racine au rôle manager
    • Seul un manager peut publier
  • Solution :
    • Ajouter un rôle deployer
    • Donner au rôle deployer la permission de publier
    • Donner ce rôle aux groupes ou personnes désirés

deployer : permission

deployer : rôles

Processus de publication pour espace personnel

  • Faire une copie du WorkFlow de dossier
  • Fixer les permissions
  • L'appliquer à un dossier

espace personnel : droit

plone/presentation.txt · Dernière modification: 2008/04/24 22:00 (modification externe)