summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2014-05-29 21:30:20 +0300
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2014-05-29 21:30:20 +0300
commit5b26b45dcbba8ee11177eef348502bd2ea3b037f (patch)
treeab0c6cedba56b701080dd7062ce4fffefff75664
parente6f1eef47858e21dad9526a45586c609f8dea5e8 (diff)
downloadgitlab-ce-5b26b45dcbba8ee11177eef348502bd2ea3b037f.tar.gz
Improve group settings UI
Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
-rw-r--r--app/assets/stylesheets/gl_bootstrap.scss11
-rw-r--r--app/controllers/groups_controller.rb10
-rw-r--r--app/views/groups/_settings_nav.html.haml10
-rw-r--r--app/views/groups/edit.html.haml135
-rw-r--r--app/views/groups/projects.html.haml29
-rw-r--r--config/routes.rb1
6 files changed, 106 insertions, 90 deletions
diff --git a/app/assets/stylesheets/gl_bootstrap.scss b/app/assets/stylesheets/gl_bootstrap.scss
index 55a1d50a092..f46dfbf1127 100644
--- a/app/assets/stylesheets/gl_bootstrap.scss
+++ b/app/assets/stylesheets/gl_bootstrap.scss
@@ -237,4 +237,15 @@ ul.breadcrumb {
float: right;
}
}
+
+ .panel-body {
+ form {
+ margin: 0;
+ }
+
+ .form-actions {
+ margin-bottom: 0;
+ background: #FFF;
+ }
+ }
}
diff --git a/app/controllers/groups_controller.rb b/app/controllers/groups_controller.rb
index ddaae6f0e8c..c8e13879b1d 100644
--- a/app/controllers/groups_controller.rb
+++ b/app/controllers/groups_controller.rb
@@ -9,7 +9,7 @@ class GroupsController < ApplicationController
before_filter :authorize_create_group!, only: [:new, :create]
# Load group projects
- before_filter :projects, except: [:new, :create]
+ before_filter :load_projects, except: [:new, :create, :projects, :edit, :update]
before_filter :default_filter, only: [:issues, :merge_requests]
@@ -79,9 +79,13 @@ class GroupsController < ApplicationController
def edit
end
+ def projects
+ @projects = @group.projects.page(params[:page])
+ end
+
def update
if @group.update_attributes(params[:group])
- redirect_to @group, notice: 'Group was successfully updated.'
+ redirect_to edit_group_path(@group), notice: 'Group was successfully updated.'
else
render action: "edit"
end
@@ -99,7 +103,7 @@ class GroupsController < ApplicationController
@group ||= Group.find_by(path: params[:id])
end
- def projects
+ def load_projects
@projects ||= ProjectsFinder.new.execute(current_user, group: group).sorted_by_activity.non_archived
end
diff --git a/app/views/groups/_settings_nav.html.haml b/app/views/groups/_settings_nav.html.haml
new file mode 100644
index 00000000000..32eae31a47d
--- /dev/null
+++ b/app/views/groups/_settings_nav.html.haml
@@ -0,0 +1,10 @@
+%ul.nav.nav-pills.nav-stacked.nav-stacked-menu
+ = nav_link(path: 'groups#edit') do
+ = link_to edit_group_path(@group) do
+ %i.icon-edit
+ Group
+ = nav_link(path: 'groups#projects') do
+ = link_to projects_group_path(@group) do
+ %i.icon-folder-close
+ Projects
+
diff --git a/app/views/groups/edit.html.haml b/app/views/groups/edit.html.haml
index 315da0370fe..97f22df044f 100644
--- a/app/views/groups/edit.html.haml
+++ b/app/views/groups/edit.html.haml
@@ -1,95 +1,56 @@
.row
.col-md-2
- %ul.nav.nav-pills.nav-stacked.nav-stacked-menu
- %li.active
- = link_to '#tab-edit', 'data-toggle' => 'tab' do
- %i.icon-edit
- Group
- %li
- = link_to '#tab-projects', 'data-toggle' => 'tab' do
- %i.icon-folder-close
- Projects
- %li
- = link_to '#tab-remove', 'data-toggle' => 'tab' do
- %i.icon-remove-sign
- Remove
-
+ = render 'settings_nav'
.col-md-10
- .tab-content
- .tab-pane.active#tab-edit
- .panel.panel-default
- .panel-heading
- %strong= @group.name
- group settings:
- %div.form-holder
- = form_for @group, html: { multipart: true, class: "form-horizontal" }, authenticity_token: true do |f|
- - if @group.errors.any?
- .alert.alert-danger
- %span= @group.errors.full_messages.first
- .form-group
- = f.label :name, class: 'control-label' do
- Group name
- .col-sm-10
- = f.text_field :name, placeholder: "Ex. OpenSource", class: "form-control left"
-
- .form-group.group-description-holder
- = f.label :description, "Details", class: 'control-label'
- .col-sm-10
- = f.text_area :description, maxlength: 250, class: "form-control js-gfm-input", rows: 4
+ .panel.panel-default
+ .panel-heading
+ %strong= @group.name
+ group settings:
+ .panel-body
+ = form_for @group, html: { multipart: true, class: "form-horizontal" }, authenticity_token: true do |f|
+ - if @group.errors.any?
+ .alert.alert-danger
+ %span= @group.errors.full_messages.first
+ .form-group
+ = f.label :name, class: 'control-label' do
+ Group name
+ .col-sm-10
+ = f.text_field :name, placeholder: "Ex. OpenSource", class: "form-control left"
- .form-group
- .col-sm-2
- .col-sm-10
- = image_tag group_icon(@group.to_param), alt: '', class: 'avatar s160'
- %p.light
- - if @group.avatar?
- You can change your group avatar here
- - else
- You can upload a group avatar here
- %a.choose-btn.btn.btn-small.js-choose-group-avatar-button
- %i.icon-paper-clip
- %span Choose File ...
- &nbsp;
- %span.file_name.js-avatar-filename File name...
- = f.file_field :avatar, class: "js-group-avatar-input hidden"
- .light The maximum file size allowed is 100KB.
- - if @group.avatar?
- %hr
- = link_to 'Remove avatar', group_avatar_path(@group.to_param), data: { confirm: "Group avatar will be removed. Are you sure?"}, method: :delete, class: "btn btn-remove btn-small remove-avatar"
+ .form-group.group-description-holder
+ = f.label :description, "Details", class: 'control-label'
+ .col-sm-10
+ = f.text_area :description, maxlength: 250, class: "form-control js-gfm-input", rows: 4
- .form-actions
- = f.submit 'Save group', class: "btn btn-save"
+ .form-group
+ .col-sm-2
+ .col-sm-10
+ = image_tag group_icon(@group.to_param), alt: '', class: 'avatar s160'
+ %p.light
+ - if @group.avatar?
+ You can change your group avatar here
+ - else
+ You can upload a group avatar here
+ %a.choose-btn.btn.btn-small.js-choose-group-avatar-button
+ %i.icon-paper-clip
+ %span Choose File ...
+ &nbsp;
+ %span.file_name.js-avatar-filename File name...
+ = f.file_field :avatar, class: "js-group-avatar-input hidden"
+ .light The maximum file size allowed is 100KB.
+ - if @group.avatar?
+ %hr
+ = link_to 'Remove avatar', group_avatar_path(@group.to_param), data: { confirm: "Group avatar will be removed. Are you sure?"}, method: :delete, class: "btn btn-remove btn-small remove-avatar"
- .tab-pane#tab-projects
- .panel.panel-default
- .panel-heading
- %strong= @group.name
- projects:
- - if can? current_user, :manage_group, @group
- %span.pull-right
- = link_to new_project_path(namespace_id: @group.id), class: "btn btn-tiny" do
- %i.icon-plus
- New Project
- %ul.well-list
- - @group.projects.each do |project|
- %li
- .list-item-name
- = visibility_level_icon(project.visibility_level)
- = link_to project.name_with_namespace, project
- .pull-right
- = link_to 'Members', project_team_index_path(project), id: "edit_#{dom_id(project)}", class: "btn btn-small"
- = link_to 'Edit', edit_project_path(project), id: "edit_#{dom_id(project)}", class: "btn btn-small"
- = link_to 'Remove', project, data: { confirm: remove_project_message(project)}, method: :delete, class: "btn btn-small btn-remove"
- - if @group.projects.blank?
- .nothing-here-block This group has no projects yet
+ .form-actions
+ = f.submit 'Save group', class: "btn btn-save"
- .tab-pane#tab-remove
- .panel.panel-default.panel.panel-danger
- .panel-heading Remove group
- .panel-body
- %p
- Removing group will cause all child projects and resources to be removed.
- %p
- %strong Removed group can not be restored!
+ .panel.panel-danger
+ .panel-heading Remove group
+ .panel-body
+ %p
+ Removing group will cause all child projects and resources to be removed.
+ %br
+ %strong Removed group can not be restored!
- = link_to 'Remove Group', @group, data: {confirm: 'Removed group can not be restored! Are you sure?'}, method: :delete, class: "btn btn-remove"
+ = link_to 'Remove Group', @group, data: {confirm: 'Removed group can not be restored! Are you sure?'}, method: :delete, class: "btn btn-remove"
diff --git a/app/views/groups/projects.html.haml b/app/views/groups/projects.html.haml
new file mode 100644
index 00000000000..a5e752d776f
--- /dev/null
+++ b/app/views/groups/projects.html.haml
@@ -0,0 +1,29 @@
+.row
+ .col-md-2
+ = render 'settings_nav'
+ .col-md-10
+ .panel.panel-default
+ .panel-heading
+ %strong= @group.name
+ projects:
+ - if can? current_user, :manage_group, @group
+ .panel-head-actions
+ = link_to new_project_path(namespace_id: @group.id), class: "btn btn-new" do
+ %i.icon-plus
+ New Project
+ %ul.well-list
+ - @projects.each do |project|
+ %li
+ .list-item-name
+ = visibility_level_icon(project.visibility_level)
+ %strong= link_to project.name_with_namespace, project
+ %span.label.label-gray
+ = repository_size(project)
+ .pull-right
+ = link_to 'Members', project_team_index_path(project), id: "edit_#{dom_id(project)}", class: "btn btn-small"
+ = link_to 'Edit', edit_project_path(project), id: "edit_#{dom_id(project)}", class: "btn btn-small"
+ = link_to 'Remove', project, data: { confirm: remove_project_message(project)}, method: :delete, class: "btn btn-small btn-remove"
+ - if @projects.blank?
+ .nothing-here-block This group has no projects yet
+
+ = paginate @projects, theme: "gitlab"
diff --git a/config/routes.rb b/config/routes.rb
index 6581aeef11f..7c2ab6bd1dd 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -146,6 +146,7 @@ Gitlab::Application.routes.draw do
get :issues
get :merge_requests
get :members
+ get :projects
end
resources :users_groups, only: [:create, :update, :destroy]