Left-side navigation for group layout

Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
This commit is contained in:
Dmitriy Zaporozhets 2014-12-16 16:58:15 +02:00
parent 7b71a9e221
commit f3f27fee88
No known key found for this signature in database
GPG key ID: 161B5D6A44D3D88A
11 changed files with 98 additions and 84 deletions

View file

@ -171,7 +171,7 @@
}
}
.project .event_filter {
.sidenav .event_filter {
position: static;
float: left;
width: 100%;

View file

@ -1,4 +1,4 @@
body.project {
body.sidenav {
padding: 0;
&.ui_mars {
@ -119,7 +119,7 @@ body.project {
}
}
.project-settings-nav {
.sidebar-subnav {
margin-left: 0px;
padding-left: 0px;

View file

@ -6,7 +6,7 @@ module GroupsHelper
def leave_group_message(group)
"Are you sure you want to leave \"#{group}\" group?"
end
def should_user_see_group_roles?(user, group)
if user
user.is_admin? || group.members.exists?(user_id: user.id)
@ -44,4 +44,12 @@ module GroupsHelper
path << "?#{options.to_param}"
path
end
def group_settings_page?
if current_controller?('groups')
current_action?('edit') || current_action?('projects')
else
false
end
end
end

View file

@ -1,4 +1,4 @@
%ul.nav.nav-pills.nav-stacked.nav-stacked-menu
%ul.sidebar-subnav
= nav_link(path: 'groups#edit') do
= link_to edit_group_path(@group) do
%i.fa.fa-pencil-square-o

View file

@ -1,41 +1,37 @@
.row
.col-md-2
= render 'settings_nav'
.col-md-10
.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
= render 'shared/group_form', f: f
.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
= render 'shared/group_form', f: f
.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
= render 'shared/choose_group_avatar_button', f: f
- 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
.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
= render 'shared/choose_group_avatar_button', f: f
- 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-actions
= f.submit 'Save group', class: "btn btn-save"
.form-actions
= f.submit 'Save group', class: "btn btn-save"
.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!
.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"

View file

@ -1,29 +1,25 @@
.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.fa.fa-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
.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.fa.fa-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"
= paginate @projects, theme: "gitlab"

View file

@ -1,12 +1,16 @@
!!! 5
%html{ lang: "en"}
= render "layouts/head", title: group_head_title
%body{class: "#{app_theme} application", :'data-page' => body_data_page}
%body{class: "#{app_theme} application sidenav", :'data-page' => body_data_page}
= render "layouts/broadcast"
= render "layouts/head_panel", title: "group: #{@group.name}"
%nav.main-nav.navbar-collapse.collapse
.container= render 'layouts/nav/group'
.container
.content
= render "layouts/flash"
= yield
.page-with-sidebar
.sidebar-wrapper
= render 'layouts/nav/group'
.content-wrapper
.container-fluid
.content
= render "layouts/flash"
.clearfix
= yield
= yield :embedded_scripts

View file

@ -1,25 +1,35 @@
%ul
%ul.nav.nav-sidebar.navbar-collapse.collapse
= nav_link(path: 'groups#show', html_options: {class: 'home'}) do
= link_to group_path(@group), title: "Home" do
%i.fa.fa-dashboard
Activity
= nav_link(controller: [:group, :milestones]) do
= link_to group_milestones_path(@group) do
%i.fa.fa-clock-o
Milestones
= nav_link(path: 'groups#issues') do
= link_to issues_group_path(@group) do
%i.fa.fa-exclamation-circle
Issues
- if current_user
%span.count= current_user.assigned_issues.opened.of_group(@group).count
= nav_link(path: 'groups#merge_requests') do
= link_to merge_requests_group_path(@group) do
%i.fa.fa-tasks
Merge Requests
- if current_user
%span.count= current_user.cared_merge_requests.opened.of_group(@group).count
= nav_link(path: 'groups#members') do
= link_to "Members", members_group_path(@group)
= link_to members_group_path(@group) do
%i.fa.fa-users
Members
- if can?(current_user, :manage_group, @group)
= nav_link(path: 'groups#edit') do
= link_to edit_group_path(@group), class: "tab " do
= nav_link(html_options: { class: "#{"active" if group_settings_page?} separate-item" }) do
= link_to edit_group_path(@group), class: "tab no-highlight" do
%i.fa.fa-cogs
Settings
%i.fa.fa-angle-down
- if group_settings_page?
= render 'groups/settings_nav'

View file

@ -1,7 +1,7 @@
!!! 5
%html{ lang: "en"}
= render "layouts/head", title: @project.name_with_namespace
%body{class: "#{app_theme} project", :'data-page' => body_data_page, :'data-project-id' => @project.id }
%body{class: "#{app_theme} sidenav project", :'data-page' => body_data_page, :'data-project-id' => @project.id }
= render "layouts/broadcast"
= render "layouts/head_panel", title: project_title(@project)
= render "layouts/init_auto_complete"

View file

@ -1,7 +1,7 @@
!!! 5
%html{ lang: "en"}
= render "layouts/head", title: project_head_title
%body{class: "#{app_theme} project", :'data-page' => body_data_page, :'data-project-id' => @project.id }
%body{class: "#{app_theme} sidenav project", :'data-page' => body_data_page, :'data-project-id' => @project.id }
= render "layouts/broadcast"
= render "layouts/head_panel", title: project_title(@project)
= render "layouts/init_auto_complete"

View file

@ -1,4 +1,4 @@
%ul.project-settings-nav
%ul.project-settings-nav.sidebar-subnav
= nav_link(path: 'projects#edit') do
= link_to edit_project_path(@project), class: "stat-tab tab " do
%i.fa.fa-pencil-square-o