diff --git a/app/assets/stylesheets/gitlab_bootstrap/common.scss b/app/assets/stylesheets/gitlab_bootstrap/common.scss index 9a4f2e80..d6089cea 100644 --- a/app/assets/stylesheets/gitlab_bootstrap/common.scss +++ b/app/assets/stylesheets/gitlab_bootstrap/common.scss @@ -100,17 +100,3 @@ input[type='search'].search-text-input { } fieldset legend { font-size: 17px; } - -ul.nav.nav-projects-tabs { - @extend .nav-tabs; - - padding-left: 8px; - - li { - a { - padding: 4px 20px; - margin-top: 2px; - border-color: #DDD; - } - } -} diff --git a/app/assets/stylesheets/sections/projects.scss b/app/assets/stylesheets/sections/projects.scss index a230f296..3f4b591a 100644 --- a/app/assets/stylesheets/sections/projects.scss +++ b/app/assets/stylesheets/sections/projects.scss @@ -4,7 +4,6 @@ } .side { - @extend .span4; @extend .right; .groups_box, @@ -117,3 +116,25 @@ } } + +ul.nav.nav-projects-tabs { + @extend .nav-tabs; + + padding-left: 8px; + + li { + a { + padding: 4px 20px; + margin-top: 2px; + border-color: #DDD; + background-color: #EEE; + text-shadow: 0 1px 1px white; + color: #555; + } + &.active { + a { + font-weight: bold; + } + } + } +} diff --git a/app/controllers/admin/groups_controller.rb b/app/controllers/admin/groups_controller.rb index 8a0a9e9b..4fad8d2b 100644 --- a/app/controllers/admin/groups_controller.rb +++ b/app/controllers/admin/groups_controller.rb @@ -11,6 +11,7 @@ class Admin::GroupsController < AdminController @projects = Project.scoped @projects = @projects.not_in_group(@group) if @group.projects.present? @projects = @projects.all + @projects.reject!(&:empty_repo?) end def new diff --git a/app/controllers/admin/projects_controller.rb b/app/controllers/admin/projects_controller.rb index e61f94f8..f8c2f2b2 100644 --- a/app/controllers/admin/projects_controller.rb +++ b/app/controllers/admin/projects_controller.rb @@ -4,6 +4,7 @@ class Admin::ProjectsController < AdminController def index @projects = Project.scoped @projects = @projects.where(namespace_id: params[:namespace_id]) if params[:namespace_id].present? + @projects = @projects.where(namespace_id: nil) if params[:namespace_id] == Namespace.global_id @projects = @projects.search(params[:name]) if params[:name].present? @projects = @projects.includes(:namespace).order("namespaces.path, projects.name ASC").page(params[:page]).per(20) end diff --git a/app/views/admin/groups/_form.html.haml b/app/views/admin/groups/_form.html.haml deleted file mode 100644 index 67516eb2..00000000 --- a/app/views/admin/groups/_form.html.haml +++ /dev/null @@ -1,12 +0,0 @@ -= form_for [:admin, @group] do |f| - - if @group.errors.any? - .alert-message.block-message.error - %span= @group.errors.full_messages.first - .clearfix.group_name_holder - = f.label :name do - Group name is - .input - = f.text_field :name, placeholder: "Example Group", class: "xxlarge" - - .form-actions - = f.submit 'Save group', class: "btn save-btn" diff --git a/app/views/admin/groups/edit.html.haml b/app/views/admin/groups/edit.html.haml index 9904122c..40268174 100644 --- a/app/views/admin/groups/edit.html.haml +++ b/app/views/admin/groups/edit.html.haml @@ -1,3 +1,19 @@ -%h3.page_title Edit Group -%br -= render 'form' +%h3.page_title Rename Group +%hr +.alert + Renaming group can have unintended side effects. + %br + Renaming group will rename directory for all related projects += form_for [:admin, @group] do |f| + - if @group.errors.any? + .alert-message.block-message.error + %span= @group.errors.full_messages.first + .clearfix.group_name_holder + = f.label :name do + Group name is + .input + = f.text_field :name, placeholder: "Example Group", class: "xxlarge" + + .form-actions + = f.submit 'Rename group', class: "btn save-btn" + = link_to 'Cancel', admin_groups_path, class: "btn cancel-btn" diff --git a/app/views/admin/groups/index.html.haml b/app/views/admin/groups/index.html.haml index 952d5151..455730a0 100644 --- a/app/views/admin/groups/index.html.haml +++ b/app/views/admin/groups/index.html.haml @@ -15,7 +15,6 @@ %th Name %th Path %th Projects - %th Edit %th.cred Danger Zone! - @groups.each do |group| @@ -23,6 +22,7 @@ %td= link_to group.name, [:admin, group] %td= group.path %td= group.projects.count - %td= link_to 'Edit', edit_admin_group_path(group), id: "edit_#{dom_id(group)}", class: "btn small" - %td.bgred= link_to 'Destroy', [:admin, group], confirm: "REMOVE #{group.name}? Are you sure?", method: :delete, class: "btn small danger" + %td.bgred + = link_to 'Rename', edit_admin_group_path(group), id: "edit_#{dom_id(group)}", class: "btn small" + = link_to 'Destroy', [:admin, group], confirm: "REMOVE #{group.name}? Are you sure?", method: :delete, class: "btn small danger" = paginate @groups, theme: "admin" diff --git a/app/views/admin/groups/show.html.haml b/app/views/admin/groups/show.html.haml index d371acad..4b6fedfd 100644 --- a/app/views/admin/groups/show.html.haml +++ b/app/views/admin/groups/show.html.haml @@ -1,8 +1,5 @@ %h3.page_title Group: #{@group.name} - = link_to edit_admin_group_path(@group), class: "btn right" do - %i.icon-edit - Edit %br %table.zebra-striped @@ -16,6 +13,10 @@ Name: %td = @group.name +   + = link_to edit_admin_group_path(@group), class: "btn btn-small right" do + %i.icon-edit + Rename %tr %td %b @@ -28,24 +29,43 @@ Owner: %td = @group.owner_name -.ui-box - %h5 - Projects - %small - (#{@group.projects.count}) - %ul.unstyled + .right + = link_to "#", class: "btn btn-small change-owner-link" do + %i.icon-edit + Change owner + .change-owner-holder.hide + = form_for [:admin, @group] do |f| + = f.select :owner_id, User.all.map { |user| [user.name, user.id] }, {}, {class: 'chosen'} + = f.submit 'Save', class: "btn btn-small save-btn" + = link_to "Cancel", "#", class: "btn btn-small change-owner-cancel-link" + +%fieldset + %legend Projects (#{@group.projects.count}) + %table + %thead + %tr + %th Project name + %th Path + %th Users + %th.cred Danger Zone! - @group.projects.each do |project| - %li.wll - %strong - = link_to project.name, [:admin, project] - .right - = link_to 'Remove from group', remove_project_admin_group_path(@group, project_id: project.id), confirm: 'Are you sure?', method: :delete, class: "btn danger small" - .clearfix + %tr + %td + = link_to project.name_with_namespace, [:admin, project] + %td + %span.monospace= project.path_with_namespace + ".git" + %td= project.users.count + %td.bgred + = link_to 'Transfer project to global namespace', remove_project_admin_group_path(@group, project_id: project.id), confirm: 'Remove project from group and move to global namespace. Are you sure?', method: :delete, class: "btn danger small" = form_tag project_update_admin_group_path(@group), class: "bulk_import", method: :put do %fieldset %legend Move projects to group + .alert + You can move only projects with existing repos + %br + Group projects will be moved in group directory and will not be accessible by old path .clearfix = label_tag :project_ids do Projects @@ -53,3 +73,17 @@ = select_tag :project_ids, options_from_collection_for_select(@projects , :id, :name_with_namespace), multiple: true, data: {placeholder: 'Select projects'}, class: 'chosen span5' .form-actions = submit_tag 'Add', class: "btn primary" + +:javascript + $(function(){ + var modal = $('.change-owner-holder'); + $('.change-owner-link').bind("click", function(){ + $(this).hide(); + modal.show(); + }); + $('.change-owner-cancel-link').bind("click", function(){ + modal.hide(); + $('.change-owner-link').show(); + }) + }) + diff --git a/app/views/admin/projects/_form.html.haml b/app/views/admin/projects/_form.html.haml index e515c68c..d306cfd8 100644 --- a/app/views/admin/projects/_form.html.haml +++ b/app/views/admin/projects/_form.html.haml @@ -22,7 +22,10 @@ - unless project.new_record? .clearfix = f.label :namespace_id - .input= f.select :namespace_id, namespaces_options(@project.namespace_id), {}, {class: 'chosen'} + .input + = f.select :namespace_id, namespaces_options(@project.namespace_id), {}, {class: 'chosen'} +   + %span.cred Be careful. Changing project namespace can have unintended side effects - if project.repo_exists? .clearfix diff --git a/app/views/dashboard/index.html.haml b/app/views/dashboard/index.html.haml index 0b4c4844..b64aa86c 100644 --- a/app/views/dashboard/index.html.haml +++ b/app/views/dashboard/index.html.haml @@ -2,7 +2,7 @@ .projects .activities.span8 = render 'activities' - .side + .side.span4 = render 'sidebar' - else diff --git a/app/views/groups/show.html.haml b/app/views/groups/show.html.haml index b929b267..76bc2639 100644 --- a/app/views/groups/show.html.haml +++ b/app/views/groups/show.html.haml @@ -11,7 +11,7 @@ - else %p.nothing_here_message Projects activity will be displayed here .loading.hide - .side + .side.span4 = render "projects", projects: @projects %div %span.rss-icon