autolab/Autolab

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

Summary

Maintainability
Test Coverage
<div class="main-header" role="navigation">

  <!-- Materialize Icons -->
  <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">

  <script>
    // Not using Jquery to bind the listener since it's not loaded at this point
    document.addEventListener("DOMContentLoaded", function(event) {
      $('.sidenav').sidenav({
        edge: 'right'
      });

      // Using this over jQuery approach to avoid any issues when other libraries override .dropdown()
      var elems = document.querySelectorAll('.dropdown-trigger');
      M.Dropdown.init(elems, { coverTrigger: false });
    });
  </script>

  <%= stylesheet_link_tag 'navbar' %>

  <!-- Experimental Navbar Code -->
  <ul id="dropdown1" class="dropdown-content">
    <% unless current_user.nil? %>
      <li role="presentation">
        <%= link_to "Account", user_path(current_user), title: "View your account info" %>
      </li>
    <% end %>
    <% if @cud %>
      <li role="presentation">
        <%= link_to "Course Profile", course_course_user_data_path(@course, @cud),
                    title: "View your user profile for the current course" %>
      </li>
    <% end %>
    <li role="presentation">
      <%= link_to "Join Course", join_course_courses_path, title: "Join Course" %>
    </li>
    <% if Rails.env.development? %>
      <li role="presentation">
        <%= link_to "Dev Login", home_developer_login_path %>
      </li>
    <% end %>
    <li role="presentation" class="divider"></li>
    <li role="presentation">
      <%= link_to "Log out", destroy_user_session_path, method: :delete %>
    </li>
  </ul>

  <% if current_user&.administrator? %>
    <ul id="dropdown2" class="dropdown-content">

      <li role="presentation"><%= link_to "Create New Course", new_course_path, title: "Create a new course" %></li>

      <li role="presentation"><%= link_to "Manage Users", users_path, title: "Manage every Autolab user" %></li>

      <li role="presentation"><%= link_to "Manage API Applications", oauth_applications_path, title: "Manage registered API clients" %></li>

      <li role="presentation"><%= link_to "Bulk Email Instructors",
                                          email_instructors_admin_path,
                                          title: "Send a bulk email to every Autolab instructor" %></li>

      <li role="presentation"><%= link_to "Configure Autolab", autolab_config_admin_path, title: "Configure Autolab settings" %></li>

      <li role="presentation"><%= link_to "Clear Cache", clear_cache_admin_url,
                                          title: "Clear Cache", data: { method: "post" } %></li>
    </ul>
  <% end %>

  <% if current_user&.administrator? %>
    <ul id="dropdown3" class="dropdown-content">

      <li role="presentation"><%= link_to "Create New Course", new_course_path, title: "Create a new course" %></li>

      <li role="presentation"><%= link_to "Manage Users", users_path, title: "Manage every Autolab user" %></li>

      <li role="presentation"><%= link_to "Manage API Applications", oauth_applications_path, title: "Manage registered API clients" %></li>

      <li role="presentation"><%= link_to "Bulk Email Instructors",
                                          email_instructors_admin_path,
                                          title: "Send a bulk email to every Autolab instructor" %></li>

      <li role="presentation"><%= link_to "Configure Autolab", autolab_config_admin_path, title: "Configure Autolab settings" %></li>

      <li role="presentation"><%= link_to "Clear Cache", clear_cache_admin_url, title: "Clear Cache", data: { method: "post" } %></li>
    </ul>
  <% end %>

  <nav>
    <div class="nav-wrapper">
      <a href="/courses" class="brand-logo logo">
        <%= image_tag "AUTOLAB@2x.png", width: 180, alt: "Carnegie Mellon University" %>
      </a>
      <a href="#" data-target="mobile-demo" class="sidenav-trigger right">
        <i class="material-icons">menu</i>
      </a>

      <ul class="right hide-on-med-and-down">
        <% if session[:sudo] && @cud %>
          <li>
            <%= link_to "(#{@cud.display_name}) Return to instructor view",
                        unsudo_course_course_user_datum_path(@course, @cud),
                        data: { method: "post" } %>
          </li>
        <% end %>

        <% if @cud %>
          <% if !@cud.instructor? && @cud.course_assistant? && !@cud.section.blank? %>
            <li>
              <%= link_to "<i class='material-icons left'>grading</i> Section #{@cud.section} Gradebook".html_safe,
                          view_course_course_user_datum_gradebook_path(@course, @cud, { section: @cud.section }),
                          title: "View your gradebook" %>
            </li>
          <% elsif @cud.instructor? || @cud.student? %>
            <li>
              <%= link_to "<i class='material-icons left'>grading</i> Gradebook".html_safe,
                          course_course_user_datum_gradebook_path(@course, @cud), title: "View your gradebook" %>
            </li>
          <% end %>

          <li>
            <%= link_to "<i class='material-icons left'>clear_all</i> Jobs".html_safe, course_jobs_path(@course),
                        title: "View a history of autograding jobs" %>
          </li>

          <% if @cud.instructor? %>
            <li>
              <%= link_to "<i class='material-icons left'>settings</i>Manage Course".html_safe,
                          manage_course_path(@course),
                          title: "Perform course-wise administrative actions" %>
            </li>
          <% end %>
        <% end %>

        <% if current_user&.administrator? %>
          <li>
            <a class="dropdown-trigger" href="#!" data-target="dropdown2" data-beloworigin="true" data-hover="false">
              <i class='material-icons left'>lock</i>Manage Autolab<i class="material-icons right">arrow_drop_down</i>
            </a>
          </li>
        <% end %>
        <% if user_signed_in? %>
          <li>
            <a class="dropdown-trigger" href="#!" data-target="dropdown1" data-beloworigin="true" data-hover="false">
              <i class='material-icons left'>person</i><%= current_user.display_name %><i class="material-icons right">arrow_drop_down</i>
            </a>
          </li>
        <% end %>
      </ul>

      <!-- Responsive Sidebar -->
      <ul class="sidenav" id="mobile-demo">
        <!-- User -->
        <div id="nav-user" class="red lighten-5">
        <% if user_signed_in? %>
          <div class="dropdown-toggle" id="dropdownMenu1">
            <%= current_user.display_name %>
          </div>
          <% unless current_user.nil? %>
            <li role="presentation">
              <%= link_to "<i class='material-icons left'>account_circle</i> Account".html_safe,
                          user_path(current_user), title: "View your account info" %>
            </li>
          <% end %>
          <% if @cud %>
            <li role="presentation">
              <%= link_to "<i class='material-icons left'>assignment_ind</i> Course Profile".html_safe,
                          course_course_user_data_path(@course, @cud),
                          title: "View your user profile for the current course" %>
            </li>
          <% end %>
          <li role="presentation">
            <%= link_to "<i class='material-icons left'>add</i> Join Course".html_safe, join_course_courses_path, title: "Join Course" %>
          </li>
          <% if Rails.env.development? %>
            <li role="presentation">
              <%= link_to "<i class='material-icons left'>developer_mode</i> Dev Login".html_safe, home_developer_login_path %>
            </li>
          <% end %>
          <li role="presentation" class="divider"></li>
          <li role="presentation">
            <%= link_to "<i class='material-icons left'>exit_to_app</i> Log out".html_safe,
                        destroy_user_session_path, method: :delete %>
          </li>
        <% end %>
      </div>
        <!-- Usual Navbar Items -->
        <% if session[:sudo] && @cud %>
          <li>
            <%= link_to "(#{@cud.display_name}) Return to instructor view",
                        unsudo_course_course_user_datum_path(@course, @cud), data: { method: "post" } %>
          </li>
        <% end %>

        <% if @cud %>
          <% if !@cud.instructor? && @cud.course_assistant? && !@cud.section.blank? %>
            <li>
              <%= link_to "<i class='material-icons left'>grading</i> Section #{@cud.section} Gradebook".html_safe,
                          view_course_course_user_datum_gradebook_path(@course, @cud, { section: @cud.section }),
                          title: "View your gradebook" %>
            </li>
          <% elsif @cud.instructor? || @cud.student? %>
            <li>
              <%= link_to "<i class='material-icons left'>grading</i> Gradebook".html_safe,
                          [@course, @cud, :gradebook], title: "View your gradebook" %>
            </li>
          <% end %>

          <li>
            <%= link_to "<i class='material-icons left'>clear_all</i> Jobs".html_safe,
                        course_jobs_path(@course, :jobs), title: "View a history of autograding jobs" %>
          </li>

          <% if @cud.instructor? %>
            <li>
              <%= link_to "<i class='material-icons left'>settings</i> Manage Course".html_safe,
                          manage_course_path(@course), title: "Perform course-wise administrative actions" %>
            </li>
          <% end %>
        <% end %>

        <% if current_user&.administrator? %>
          <li>
            <a class="dropdown-trigger" href="#!" data-target="dropdown3" data-beloworigin="true" data-hover="false">
              <i class='material-icons left'>lock</i>Manage Autolab<i class="material-icons right">
                arrow_drop_down
              </i>
            </a>
          </li>
        <% end %>
      </ul>

    </div>

    <!-- Responsive Menu Code -->

  </nav>

</div>

<% unless @breadcrumbs.blank? && @title.blank? %>
  <div class="sub-navigation">
    <span class="left-nav">
      <span class="item">
        <a title="Go to Courses Home" href="/courses"><i class="material-icons home-icon">home</i></a>
      </span>
      <% @breadcrumbs&.each do |b| %>
        <span class="item"><%= b %></span>
      <% end %>
      <% if @title %>
        <span class="item"><span class="title"><%= @title %></span></span>
      <% end %>
    </span>
  </div>
<% end %>