Publié par marc | 2 commentaires

Pour la plupart des projets, il est nécessaire d’avoir une interface d’administration. Dans la majeure partie des cas, il s’agit simplement d’un accès aux objets. Permettre à l’administrateur de créer, d’éditer ou de supprimer certains objets. Au lieu de recréer vos contrôleurs et vues pour chaque projets, je vous propose une petite introduction à Typus, qui va nous générer tout ça comme un grand à partir de nos modèles :D

Etape 1 : Installer Typus

   1  # script/plugin install git://github.com/fesplugas/typus.git
   2  # script/generate typus

Une fois les fichiers créés il suffit d’exécuter la migration. Elle ajoute une table contenant les utilisateurs de typus à votre base de donnée. Typus a donc son propre système de gestion d’utilisateurs.

   1  # rake db:migrate

Et voilà, il ne vous reste plus qu’a vous rendre à l’adresse

   1  http://localhost:3000/admin

Pour accéder à votre nouvelle interface d’administration !

Mieux que la tente Quechua…

Etape 2 : Configurer Typus

Evidement, dans sa forme actuelle, même si Typus nous a fait gagner du temps, il reste quelques petits problèmes. Nous voudrions par exemple :

  • Empêcher l’édition des objets d’un modèle précis
  • Empêcher la création d’un type d’objet
  • Enlever un champ particulier du formulaire d’édition
  • Rendre un champ ‘read-only’ dans le formulaire
  • etc…

Pas de panique c’est possible, il suffit d’aller dans les fichiers :

  • config/typus/application.yml
  • config/typus/application_roles.yml

Prenons un exemple, un blogpost, dans application.yml on aura :

   1  Post:
   2    fields:
   3      list: id, blog, user, content, status, created_at
   4      form: blog, user, content
   5      show: id, blog, user, content, status, updated_at, created_at
   6   options:
   7      read_only: blog, user
   8    export: csv, xml
   9    order_by: user
  10    filters: created_at
  11    search: content
  12    application: exampleblog

Fields permet de définir, pour les vues générées, les champs qui y seront présents. On peut également spécifier quels champs seront ‘read-only’ grâce à ‘options > read-only’ comme aux lignes 6 et 7.

Export permet de spécifier dans quel format la liste des éléments sera exportable, xml, csv et pdf sont disponibles.

Order_by est suffisement explicite. Filters crée, sur le côté droit de la liste, une boîte qui permet de filtrer les éléments. Si on prend l’exemple du created_at on aura une série de liens (Today, Past 7 days, This month, This year) qui permettent de filtrer notre liste.

Search ajoute également une boîte sur la droite, une zone de recherche. On peut rechercher sur plusieurs champs.

Si vous souhaitez modifier complètement une des vues générées, c’est simple, si on prend notre exemple et qu’on souhaite modifier le formulaire, il suffit de créer le fichier app/view/admin/posts/edit.html.erb, d’en écrire le contenu et l’affaire est dans le sac !

Le fichier application_roles.yml permet de spécifier, pour chaque rôle, les actions qu’il pourra effectuer sur tel ou tel objet.

   1  admin:
   2    Post: create, read, delete, update

Le layout de typus est également modifiable a souhait, et il existe encore d’autres options non détaillées dans ce post. Consultez la doc pour plus d’infos.

Dorénavant, vous n’avez plus d’excuses pour ne pas faire des interfaces d’administration qui en jettent en très peu de temps ;)

http://intraducibles.com/projects/typus/
http://github.com/fesplugas/typus/tree/master

2 Commentaires

Commentaire posté par fungamer le 22/07/09

Mieux que la tente Quechua ?? Woaw à tester! Merci pour l’info

Commentaire posté par Maxula le 15/08/09

Peut on s’en passer d’un gestionnaire de droits type ACL System avec Typus, ou bien encore, peut on les intégrer ensemble ??

Ajouter un commentaire

Vous devez être identifié pour poster un commentaire. Identifiez-vous, ou inscrivez-vous si ce n'est déjà fait.