SUSE/hackweek

View on GitHub
app/views/layouts/_header.html.haml

Summary

Maintainability
Test Coverage
%header.navbar.navbar-default.navbar-fixed-top{:role => "navigation"}
  / Brand and toggle get grouped for better mobile display
  .container
    .navbar-header
      %button.navbar-toggle{"data-target" => ".navbar-ex1-collapse", "data-toggle" => "collapse", :type => "button"}
        %span.sr-only Toggle navigation
        %span.icon-bar
        %span.icon-bar
        %span.icon-bar
      =link_to root_path, class: "navbar-brand" do
        = image_tag 'hackweek-logo-dark.icon.png', style: 'height: 30px',
                                           alt: 'Home',
                                           title: 'Home'
      %ul.nav.navbar-nav.hidden-xs
        %li.dropdown
          = link_to(projects_path(@episode), {class: "navbar-brand"}) do
            - if @episode == :all
              = "All Hackweeks"
            - else
              = @episode.name if @episode
          = link_to('#', {class: "dropdown-toggle navbar-brand", "data-toggle"=>"dropdown"} ) do
            %i.fas.fa-caret-down
          %ul.dropdown-menu{:role => "menu"}
            %li{:role => "presentation"}
              = link_to(projects_path(:all), {title: "Projects for all hackweeks"}) do
                All Hackweeks
            - Episode.all.reverse.each do |episode|
              %li{:role => "presentation"}
                = link_to(projects_path(episode), {title: "Projects for #{episode.name}"}) do
                  = episode.name
    / Collect the nav links, forms, and other content for toggling
    .collapse.navbar-collapse.navbar-ex1-collapse
      - if user_signed_in?
        %ul.nav.navbar-nav
          %li
            = link_to(new_project_path(@episode), {:id=>"new_project_path",:alt=>"Add Project", :title=>"Add Project"}) do
              %i.fas.fa-plus
              Create
      - if user_signed_in?
        %ul.nav.navbar-nav.navbar-right.hidden-xs
          %li.dropdown
            %a.dropdown-toggle{"data-toggle" => "dropdown", :href => "#", :id => "user-dropdown"}
              = image_tag(current_user.gravatar_url(:size => "22"), :title => "Yo #{current_user.name}!")
              %b.caret
            %ul.dropdown-menu
              %li
                = link_to(user_path(current_user), :id => "me_users_path") do
                  %i.fas.fa-home
                  = current_user.name
              %li
                = link_to(edit_user_path(current_user)) do
                  %i.fas.fa-pen-square
                  Edit Profile
              %li
                = link_to(destroy_user_ichain_session_path, :method => :delete, :id => "logout-link") do
                  %i.fas.fa-power-off
                  Log out
              - if current_user.role?(:organizer) || current_user.role?(:admin)
                = render partial: 'layouts/admin_menu'
        %ul.nav.navbar-nav.navbar-right.visible-xs
          %li{role: "presentation", class: "divider"}
          %li{role: "presentation", class: "dropdown-header"}
            Hackweeks
          - Episode.all.reverse.each do |episode|
            %li
              = link_to(projects_path(episode), {title: "Projects for #{episode}"}) do
                = episode.name
          %li{role: "presentation", class: "divider"}
          %li{role: "presentation", class: "dropdown-header"}
            = current_user.name
          %li
            = link_to(user_path(current_user)) do
              %i.fas.fa-home
              Home
          %li
            = link_to(destroy_user_ichain_session_path, :method => :delete, :id => "logout-link") do
              %i.fas.fa-power-off
              Log out
          - if current_user.role? :organizer
            = render partial: 'layouts/admin_menu'
      - else
        %ul.nav.navbar-nav.navbar-right
          %li
            = link_to(new_user_ichain_session_path, :id => "login-link") do
              %i.fas.fa-sign-in-alt
              Sign In
      %form{:role=>"search", :method=>"get", :class=>"navbar-form navbar-right", :action=>"#{search_projects_path(@episode)}", "accept-charset"=>"UTF-8"}
        .form-group
          = search_field_tag :query, nil, { class: 'form-control', placeholder: 'Search', type: 'search', name: 'query' }
      - if user_signed_in?
        = render partial: 'layouts/notification_tab'