From 81e7086fec60c368dcd54ff7195f37f6cb8f481c Mon Sep 17 00:00:00 2001 From: Phil Hughes <me@iamphill.com> Date: Fri, 15 Jan 2016 09:13:12 +0000 Subject: [PATCH] uses AJAX to select the projects --- app/assets/javascripts/project.js.coffee | 10 +++++++++ app/assets/stylesheets/framework/common.scss | 4 ++-- app/assets/stylesheets/framework/header.scss | 22 ------------------- app/helpers/projects_helper.rb | 20 ++++------------- .../shared/_new_project_item_select.html.haml | 8 +++---- 5 files changed, 20 insertions(+), 44 deletions(-) diff --git a/app/assets/javascripts/project.js.coffee b/app/assets/javascripts/project.js.coffee index d7a658f8faa..9e313436804 100644 --- a/app/assets/javascripts/project.js.coffee +++ b/app/assets/javascripts/project.js.coffee @@ -50,3 +50,13 @@ class @Project $('#notifications-button').empty().append("<i class='fa fa-bell'></i>" + label + "<i class='fa fa-angle-down'></i>") $(@).parents('ul').find('li.active').removeClass 'active' $(@).parent().addClass 'active' + + @._projectSelectDropdown() + + _projectSelectDropdown: -> + new ProjectSelect() + + $('.js-projects-dropdown-toggle').on 'click', (e) -> + e.preventDefault() + + $('.js-projects-dropdown').select2 'open' diff --git a/app/assets/stylesheets/framework/common.scss b/app/assets/stylesheets/framework/common.scss index 6ea2219073c..ea56d9e12a0 100644 --- a/app/assets/stylesheets/framework/common.scss +++ b/app/assets/stylesheets/framework/common.scss @@ -376,11 +376,11 @@ table { margin-bottom: $gl-padding; } -.new-project-item-select-holder { +.project-item-select-holder { display: inline-block; position: relative; - .new-project-item-select { + .project-item-select { position: absolute; top: 0; right: 0; diff --git a/app/assets/stylesheets/framework/header.scss b/app/assets/stylesheets/framework/header.scss index c71c1cbae34..7871a33b6c5 100644 --- a/app/assets/stylesheets/framework/header.scss +++ b/app/assets/stylesheets/framework/header.scss @@ -88,34 +88,12 @@ header { } } - .dropdown { - display: inline-block; - } - - .dropdown-menu { - max-height: 300px; - overflow: auto; - } - .dropdown-toggle-caret { position: relative; top: -2px; margin-left: 5px; font-size: 10px; } - - .dropdown-item { - &.active { - .dropdown-link { - color: #fff; - } - } - - .dropdown-link:hover { - color: #fff; - text-decoration: none; - } - } } .navbar-collapse { diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb index 238bbbbe0a5..c175de94361 100644 --- a/app/helpers/projects_helper.rb +++ b/app/helpers/projects_helper.rb @@ -56,23 +56,11 @@ module ProjectsHelper all_projects = current_user.authorized_projects.sorted_by_activity.non_archived - project_link = content_tag :div, {class: "dropdown"} do - output = content_tag :a, {class: "dropdown-toggle", href: "#", data: {toggle: "dropdown"}} do - btnOutput = simple_sanitize(project.name) - btnOutput += content_tag :span, nil, {class: "fa fa-chevron-down dropdown-toggle-caret"} - end - - list = all_projects.map do |project| - content_tag :li, {class: "dropdown-item #{"active" if project_id == project.id}"} do - link_to project_path(project), {class: "dropdown-link"} do - project.owner.name + ' / ' + simple_sanitize(project.name) - end - end - end + project_link = link_to project_path(project), {class: "project-item-select-holder js-projects-dropdown-toggle"} do + link_output = simple_sanitize(project.name) + link_output += content_tag :span, nil, {class: "fa fa-chevron-down dropdown-toggle-caret"} - output += content_tag :ul, {class: "dropdown-menu"} do - list.join.html_safe - end + link_output += project_select_tag :project_path, class: "project-item-select js-projects-dropdown", data: { include_groups: false } end full_title = namespace_link + ' / ' + project_link diff --git a/app/views/shared/_new_project_item_select.html.haml b/app/views/shared/_new_project_item_select.html.haml index c4431d66927..46095912821 100644 --- a/app/views/shared/_new_project_item_select.html.haml +++ b/app/views/shared/_new_project_item_select.html.haml @@ -1,6 +1,6 @@ - if @projects.any? - .prepend-left-10.new-project-item-select-holder - = project_select_tag :project_path, class: "new-project-item-select", data: { include_groups: local_assigns[:include_groups] } + .prepend-left-10.project-item-select-holder + = project_select_tag :project_path, class: "project-item-select", data: { include_groups: local_assigns[:include_groups] } %a.btn.btn-new.new-project-item-select-button = icon('plus') = local_assigns[:label] @@ -8,12 +8,12 @@ :javascript $('.new-project-item-select-button').on('click', function() { - $('.new-project-item-select').select2('open'); + $('.project-item-select').select2('open'); }); var relativePath = '#{local_assigns[:path]}'; - $('.new-project-item-select').on('click', function() { + $('.project-item-select').on('click', function() { window.location = $(this).val() + '/' + relativePath; }); -- GitLab