Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

fr:specs:plugin [2016/08/26 21:06] (Version actuelle)
Ligne 1: Ligne 1:
 +====== Extension ======
 +{{tag> spec plugin }}
 +
 +Les **extensions** permettent d'​étendre les fonctionnalités ou de personnaliser Ekylibre. Le système d'​extension fournit donc une liste de point d'​entrée dans le logiciel.
 +
 +Un des objectifs est de pouvoir installer une extension seulement en la plaçant dans le dossier ''​plugins/''​ à la racine d'​Ekylibre. Les routes, menus, droits, //assets//, contrôleurs/​vues etc. doivent se mettre en place automatiquement sans configuration dans Ekylibre.
 +
 +<​code>​
 +Plugfile
 +Gemfile
 +Rakefile
 +README.rdoc
 +app/
 +  assets/
 +    fonts/
 +    images/
 +    javascripts/​
 +    stylesheets/​
 +  controllers/​
 +  themes/
 +  views/
 +config/
 +  rights.yml
 +  navigation.xml
 +  routes.rb
 +  locales/
 +lib/
 +  <​extension>​.rb
 +  <​extension>/​
 +    version.rb (?)
 +test/
 +</​code>​
 +
 +===== Fichiers =====
 +==== Plugfile ====
 +Ce fichier permet de définir comment brancher l'​extension dans Ekylibre. À la manière d'une gem, il permet aussi de poser les contraintes d'​intégration.
 +<WRAP center round important 60%>
 +Initialement créée pour se distinguer d'un gemspec, il est possible que le fichier évolue pour se conformer au [[http://​guides.rubygems.org/​specification-reference/​|gemspec]]. L'​intérêt serait de pouvoir créer des gems en tant que plugin pour Ekylibre. Le problème technique a régler est celui de la contrainte de version sur Ekylibre qui n'est pas actuellement pas une gem.
 +</​WRAP>​
 +
 +=== add_theme_stylesheet ===
 +<code ruby>
 +add_theme_stylesheet '​tekyla',​ '​things'​
 +add_theme_stylesheet '​*',​ '​things'​
 +add_theme_stylesheet /​^tekyla-*/,​ '​things'​
 +</​code>​
 +=== app ===
 +Définit la dépendance vis-à-vis d'​Ekylibre.
 +<code ruby>
 +app '​1.1.3'​
 +app '~> 1.1.3'
 +app '> 1.0.0'
 +app '>= 1.1.0',​ '< 2.0'
 +</​code>​
 +=== author ===
 +<code ruby>
 +author 'Brice Texier <​brice@ekylibre.com>'​
 +</​code>​
 +=== name ===
 +Cet appel est nécessaire.
 +<code ruby>
 +name '​super-fonctionnalite'​
 +</​code>​
 +=== require_javascript ===
 +Cette directive permet d'​appeler le script depuis ''​application.js''​.
 +<code ruby>
 +require_javascript '​foo/​bar/​baz'​
 +</​code>​
 +Dans l'​exemple ci-dessus, le fichier se trouve dans ''<​plugin_root>/​app/​assets/​javascripts/​foo/​bar/​baz.js.coffee''​.
 +=== version ===
 +<code ruby>
 +version '​0.0.0'​
 +</​code>​
 +
 +==== config/​rights.yml ====
 +
 +==== config/​navigation.xml ====
 +
 +==== config/​routes.rb ====
 +
 +