Ariane
Breadcrumbs pour Rails
whoami



Simon COURTOIS
 CTO chez Selectra

  Github: simonc
Twitter: @happynoff
Breadcrumbs ?
Breadcrumbs et Rails ?




     Crummy
Objectif


Crummy
         Twitter Bootstrap
Schema.org
                    I18n
Participer au projet
Participer au projet
Ariane - Objectif



Flexibilité
Faciliter l’usage
Faciliter la participation
Ariane - Objectif



Flexibilité          !
               U   R
             O
Faciliter l’usage
            Jparticipation
       1
Faciliter la
Ariane - Construction
# app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
 before_filter :set_ariane

 def set_ariane
   ariane.add "Home", root_path
 end
end



              # app/controllers/articles_controller.rb
              class ArticlesController < ApplicationController
                def set_ariane
                  super
                  ariane.add "Articles", articles_path
                end
              end
Ariane - Affichage



# app/views/layouts/application.html.erb
<%= ariane.render %>
Ariane - Lien spécifique


     Titre d’un article ?

# app/views/articles/show.html.erb
<% ariane.add @article.title, article_path(@article) %>
Ariane - Structure


         Breadcrumb   Crumb

Ariane
          Renders
            Base
            HTML
          HTMLList
Ariane - Renderers



Renders
                <p class="breadcrumb">
  Base
                  <a href="/">Home</a> / Articles
  HTML
                </p>

HTMLList
Ariane - Renderers



                <ul class="breadcrumb">
Renders
                  <li>
  Base              <a href="/">Home</a>
                    <span class="divider">/</span>
                  </li>
  HTML
                  <li class="active">Other</li>
HTMLList        </ul>
Ariane - Renderers


JSON
               XML

Markdown

           Whatever...
Ariane - Choix du Renderer

 Renderers inclus dans Ariane
<%= ariane.render(Ariane::Render::HTMLList) %> (par défaut)
<%= ariane.render(Ariane::Render::HTML) %>


<%= ariane.render(Ariane::Render::JSON) %>
<%= ariane.render(Ariane::Render::XML) %>
<%= ariane.render(Ariane::Render::...) %>


 Créez vos propres Renderers !
Ariane - Paramètres
# config/initializers/ariane.rb

rndr = Ariane::Render::HTML.new({
   :divider     => '-',
   :link_active => true,
   :list_id     => 'awesome-breadcrumb'
})

Ariane.configure do |config|
  config.default_renderer = rndr
end



                <p class="awesome-breadcrumb">

                  <a href="/">Home</a> -
                  <a href="/articles" class="active">Articles</a>

                </p>
Ariane - Objectif



Flexibilité
Faciliter l’usage
Faciliter la participation
Ariane - Objectif



Flexibilité
Faciliter l’usage
Faciliter la participation
Ariane - La suite ?


Dynamic Breadcrumb
Big thanks to Anthony Bouch (github: 58bits)




   Sucre syntaxique
 # app/views/articles/show.html.erb
 <% ariane.add @article.title, @article %>
Ariane - Ressources


         Github
http://github.com/simonc/ariane


       Twitter   @happynoff
Merci !

Ariane