Padmini, un thème d’admin open source et son plugin Symfony 1.4

Pierre CLÉMENT 21 novembre 2011 3
Padmini, un thème d’admin open source et son plugin Symfony 1.4
 

Quand on fait du dev web et des applis web Open Source, on se retrouve face à un dilemme : pour l’interface d’admin, dois-je la coder moi-même ou en existe des prêtes à l’utilisation ? Et si j’en prend une prête à l’utilisation, est-ce que je ne vais pas passer plus de temps à la modifier pour qu’elle s’intègre bien avec mon application Symfony ?

Alors oui, il en existe des toutes prêtes, la plupart sont payantes et à utilisation restreinte ou d’autres dont les licences ne sont pas précisées. Impossible donc si on fait une appli LGPL. Qu’à cela ne tienne, j’ai pris mon mon courage à deux mains et j’ai fait Padmini, un template d’admin sous licence LGPL. Alors certes, on peut trouver mieux (je ne suis pas graphiste hein..), mais je me suis dit qu’a défaut d’être parfait, ce template a le mérite d’exister. Pour le télécharger rien du plus simple, il suffit d’aller sur la page github de Padmini.

A l’heure actuelle, il faudrait que je trouve le temps de finir le dashboard pour qu’il s’affiche bien, mais voici ce que ça donne (ou allez voir la démo) :

        

 Plugin Symfony 1.4

Vous l’aurez remarqué, la façon d’afficher les tableaux de données ressemble fortement à la manière dont sont présentés les tableaux de données avec l’admin generator de doctrine dans symfony. Vous ne le savez peut-être pas, mais il est possible de créer un plugin pour que l’admin generator utilise le thème que vous avez créé. C’est exactement le but de sfPadminiThemePlugin : utiliser Padmini dans vos pages crées via l’admin generator.

Installation

Pour télécharger le plugin, rendez-vous simplement sur la page github du plugin et suivez les instructions :

  1. Dans votre projet, dans le dossier plugins, faites :
    git clone git://github.com/Pierrecle/sfPadminiThemePlugin.git
    cd sfPadminiThemePlugin
    git clone git://github.com/Pierrecle/Padmini.git web/padminiTheme
    cd ..
  2. Ouvrez le fichier de configuration de votre projet, config/ProjectConfiguration.class.php, et ajouter ceci à la fin de la fonction setup :
    $this->enablePlugins('sfPadminiThemePlugin');
  3. Ouvrez le fichier de configuration des filtres de votre application, apps/***/config/filters.yml, et ajoutez ceci juste avant la ligne cache: ~:
    layout:
      class: LayoutFilter
  4. Vous devriez supprimer toutes les feuilles de style et les javascripts dans le fichier de configuration des vues de votre application, apps/***/config/view.yml.
  5. Exécutez ceci :
    php symfony plugin:publish-assets
  6. Enfin, n’oubliez pas de modifier les generator.yml de vos modules, pour remplacer theme: default par :
    theme: padmini

    ou, lorsque vous créez vos modules, de préciser le thème :

    php symfony doctrine:generate-admin --theme="padmini" ...

Bonus

Il y a quelques petits bonus au plugin :

  • le plugin est en anglais mais la traduction française est fournie
  • si vous utilisez le plugin sfDoctrineGuardPlugin, vous n’avez rien à faire, le plugin surcharge la page de login
  • pour personnaliser le plugin, copier le fichier plugins/sfPadminiThemePlugins/config/theme.yml dans le dossier de config de votre application, apps/***/config, et configurez comme vous le souhaitez
  • si vous ne modifiez pas le fichier theme.yml, le plugin créera un menu automatiquement, basé sur vos modules, et n’affichera pas de footer
  • pour traduire le menu (éléments et messages) ou le footer, ajoutez manuellement les entrées dans le fichier apps/***/i18n/messages.LANGUAGE.xml
Have fnu coding!

Geekos.fr vous recommande les articles suivants

3 Commentaires »

  1. Quiche 2 mars 2012 au 10 h 28 min - Reply

    Super travail…
    par contre un petit bug dans l’affichage de l’info bulle sur le menu…
    Dans la fonction “padminiThemeMenu” du helper “padminiThemeAutoMenuHelper”
    il faut remplacer
    $ret .= ”;
    par
    $ret .= ”;

    • Quiche 2 mars 2012 au 10 h 30 min - Reply

      oups je vais passer par github pour signaler le bug…

Laissez un message »