OSDN Git Service

Remove some bugs. Add warnings for renaming group. Add ability to cahnge group owner.
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Mon, 3 Dec 2012 18:14:05 +0000 (21:14 +0300)
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Mon, 3 Dec 2012 18:14:05 +0000 (21:14 +0300)
app/assets/stylesheets/gitlab_bootstrap/common.scss
app/assets/stylesheets/sections/projects.scss
app/controllers/admin/groups_controller.rb
app/controllers/admin/projects_controller.rb
app/views/admin/groups/_form.html.haml [deleted file]
app/views/admin/groups/edit.html.haml
app/views/admin/groups/index.html.haml
app/views/admin/groups/show.html.haml
app/views/admin/projects/_form.html.haml
app/views/dashboard/index.html.haml
app/views/groups/show.html.haml

index 9a4f2e8..d6089ce 100644 (file)
@@ -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;
-    }
-  }
-}
index a230f29..3f4b591 100644 (file)
@@ -4,7 +4,6 @@
   }
 
   .side {
-    @extend .span4;
     @extend .right;
 
     .groups_box,
   }
 
 }
+
+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;
+      }
+    }
+  }
+}
index 8a0a9e9..4fad8d2 100644 (file)
@@ -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
index e61f94f..f8c2f2b 100644 (file)
@@ -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 (file)
index 67516eb..0000000
+++ /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"
index 9904122..4026817 100644 (file)
@@ -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"
index 952d515..455730a 100644 (file)
@@ -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"
index d371aca..4b6fedf 100644 (file)
@@ -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
         Name:
     %td
       = @group.name
+      &nbsp;
+      = link_to edit_admin_group_path(@group), class: "btn btn-small right" do
+        %i.icon-edit
+        Rename
   %tr
     %td
       %b
         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
         = 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();
+    })
+  })
+
index e515c68..d306cfd 100644 (file)
     - 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'}
+          &nbsp;
+          %span.cred Be careful. Changing project namespace can have unintended side effects
 
       - if project.repo_exists?
         .clearfix
index 0b4c484..b64aa86 100644 (file)
@@ -2,7 +2,7 @@
   .projects
     .activities.span8
       = render 'activities'
-    .side
+    .side.span4
       = render 'sidebar'
 
 - else
index b929b26..76bc263 100644 (file)
@@ -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