houston/houston-core

View on GitHub
app/views/layouts/_navigation.html.erb

Summary

Maintainability
Test Coverage
<div class="navbar navbar-fixed-top navbar-inverse">
  <div class="navbar-inner">
    <%= link_to Houston.config.title, main_app.root_url, class: "brand" %>

    <ul class="nav pull-right">
      <% if current_user -%>

        <% if can?(:read, User) || can?(:read, Team) || can?(:read, Project) || can?(:read, Action) %>
          <li class="dropdown">
            <a href="#" class="dropdown-toggle" data-toggle="dropdown"><i class="fa fa-cog"></i> <b class="caret"></b></a>
            <ul class="dropdown-menu">
              <% if can?(:read, Team) %>
                <li><%= link_to "Teams", main_app.teams_path %></li>
              <% end %>
              <% if can?(:read, Project) %>
                <li><%= link_to "Projects", main_app.projects_path %></li>
              <% end %>
              <% if can?(:read, User) %>
                <li><%= link_to "Users", main_app.users_path %></li>
              <% end %>
              <% if can?(:read, Action) %>
                <% if can?(:read, User) || can?(:read, Team) || can?(:read, Project) %>
                  <li class="divider"></li>
                <% end %>
                <li><%= link_to "Actions", main_app.actions_path %></li>
                <li><%= link_to "Running Actions", main_app.running_actions_path %></li>
                <li><%= link_to "Triggers", main_app.triggers_path %></li>
                <li><%= link_to "Errors", main_app.errors_path %></li>
                <% if can?(:read, :all_authorizations) %>
                  <li class="divider"></li>
                  <li><%= link_to "Authorizations", main_app.authorizations_path %></li>
                  <li><%= link_to "API Tokens", main_app.api_tokens_path %></li>
                <% end %>
              <% end %>
            </ul>
          </li>
        <% end %>


        <li class="current-user dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown"><%= avatar_for(current_user, size: 30) %> <b class="caret"></b></a>
          <ul class="dropdown-menu">
            <li><%= link_to "Settings", main_app.edit_user_path(current_user) %></li>
            <% if can?(:create, Authorization) %>
            <li class="divider"></li>
            <li><%= link_to "My Authorizations", main_app.my_authorizations_path %></li>
            <li><%= link_to "My API Tokens", main_app.my_api_tokens_path %></li>
            <% end %>
            <li class="divider"></li>
            <li><%= link_to "Sign out", main_app.destroy_user_session_path %></li>
          </ul>
        </li>
      <% else -%>
        <li><%= link_to "Sign in", main_app.new_user_session_path %></li>
      <% end -%>
    </ul>
    <ul class="nav">
      <% Houston.config.navigation.each do |navigation| %><%= render_navigation navigation %><% end %>
    </ul>
  </div>
</div>

<% if current_user -%>
<div class="navbar project-navbar <%= current_project && current_project.color %>">
  <ul class="nav">

    <li class="dropdown current-project <%= current_project && current_project.color %>">
      <a href="#" class="dropdown-toggle" data-toggle="dropdown">
        <%= current_project ? current_project.name : "Select Project" %>
      </a>
      <ul class="dropdown-menu">
        <% followed_projects.each do |project| %>
          <% if project == current_project %>
            <li class="current">
              <b class="bubble <%= project.color %>"></b> <%= project.name %></a>
            </li>
          <% else %>
            <li>
              <% path = if !current_feature
                          # we're not on a project page,
                          # just refresh the page and set the project
                          "?project=#{project.slug}"
                        elsif !project.features.include?(current_feature)
                          # we're using a feature that this project
                          # doesn't support. Navigate to the root URL
                          # and set the project
                          main_app.root_path(project: project.slug)
                        else
                          feature_path(project, current_feature)
                        end %>
              <%= link_to path do %>
                <b class="bubble <%= project.color %>"></b> <%= project.name %></a>
              <% end %>
            </li>
          <% end %>
        <% end %>
      </ul>
    </li>

    <% if current_project && current_project.persisted? %>
      <% if current_project.features.any? %>
        <% current_project.features.each do |feature| %>
          <% if feature == :settings %>
          <li class="divider-vertical"></li>
          <% end %>
          <%= render_nav_for_feature(feature) %>
        <% end %>
      <% else %>
        <li class="project-no-features">
          No features are enabled for <%= current_project.name %>.
          <% if can?(:update, current_project) %>
            You can enable features in <%= link_to "Project Settings", main_app.edit_project_path(current_project) %>.
          <% end %>
        </li>
      <% end %>
    <% end %>
  </ul>
</div>
<% end %>