Commit eb3e07a5 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Use project owner if no namespace. Restyled team page

parent 8bf340f5
......@@ -94,6 +94,7 @@
}
input[type="text"] {
@extend .monospace;
border: 1px solid #BBB;
box-shadow: none;
margin-left: -1px;
......
......@@ -18,7 +18,7 @@ class Ability
# Rules based on role in project
if project.master_access_for?(user)
# TODO: replace with master rules.
# Only allow project administration for owners
# Only allow project administration for namespace owners
rules << project_admin_rules
elsif project.dev_access_for?(user)
......@@ -31,15 +31,20 @@ class Ability
rules << project_guest_rules
end
# If user own project namespace (Ex. group owner or account owner)
if project.namespace && project.namespace.owner == user
if project.namespace
# If user own project namespace
# (Ex. group owner or account owner)
if project.namespace.owner == user
rules << project_admin_rules
end
# If user was set as direct project owner
else
# For compatibility with global projects
# use projects.owner_id
if project.owner == user
rules << project_admin_rules
end
end
rules.flatten
end
......
......@@ -292,4 +292,8 @@ class Project < ActiveRecord::Base
merge_requests
end
end
def namespace_owner
namespace.try(:owner)
end
end
......@@ -24,10 +24,6 @@
= f.label :namespace_id
.input= f.select :namespace_id, namespaces_options(@project.namespace_id), {}, {class: 'chosen'}
.clearfix
= f.label :owner_id
.input= f.select :owner_id, User.all.map { |user| [user.name, user.id] }, {}, {class: 'chosen'}
- if project.repo_exists?
.clearfix
= f.label :default_branch, "Default Branch"
......
......@@ -25,6 +25,15 @@
Name:
%td
= @project.name
%tr
%td
%b
Namespace:
%td
- if @project.namespace
= @project.namespace.human_name
- else
Global
%tr
%td
%b
......@@ -34,7 +43,7 @@
%tr
%td
%b
Owner:
Created by:
%td
= @project.owner_name || '(deleted)'
%tr
......
......@@ -15,10 +15,6 @@
= image_tag gravatar_icon(user.email, 16), class: "avatar s16"
%strong= user.name
%span.cgray= user.email
- if @project
- if @project.owner == user
%span.btn.btn-small.disabled.right Project Owner
- else
- if @group.owner == user
%span.btn.btn-small.disabled.right Group Owner
......@@ -4,6 +4,7 @@
%body{class: "#{app_theme} project"}
= render "layouts/flash"
= render "layouts/head_panel", title: @project.name
- if can?(current_user, :download_code, @project)
= render 'shared/no_ssh'
.container
%ul.main_menu
......
= render 'clone_panel'
%div.git-empty
%h4 Git global setup:
%fieldset
%legend Git global setup:
%pre.dark
= preserve do
git config --global user.name "#{current_user.name}"
git config --global user.email "#{current_user.email}"
%h4.prepend-top-20 Create Repository
%fieldset
%legend Create Repository
%pre.dark
= preserve do
mkdir #{@project.path}
......@@ -19,7 +21,8 @@
git remote add origin #{@project.url_to_repo}
git push -u origin master
%h4.prepend-top-20 Existing Git Repo?
%fieldset
%legend Existing Git Repo?
%pre.dark
= preserve do
cd existing_git_repo
......
.input-prepend.project_clone_holder
%button{class: "btn active", :"data-clone" => @project.ssh_url_to_repo} SSH
%button{class: "btn", :"data-clone" => @project.http_url_to_repo}= Gitlab.config.web_protocol.upcase
= text_field_tag :project_clone, @project.url_to_repo, class: "one_click_select span5"
= text_field_tag :project_clone, @project.url_to_repo, class: "one_click_select input-xxlarge"
- user = member.user
- allow_admin = can? current_user, :admin_project, @project
%tr{id: dom_id(member), class: "team_member_row user_#{user.id}"}
%td.span6
%li.wll{id: dom_id(member), class: "team_member_row user_#{user.id}"}
.row
.span6
= link_to project_team_member_path(@project, member), title: user.name, class: "dark" do
= image_tag gravatar_icon(user.email, 40), class: "avatar s32"
= link_to project_team_member_path(@project, member), title: user.name, class: "dark" do
......@@ -9,11 +10,15 @@
%br
%small.cgray= user.email
%td.span5
.span5.right
- if allow_admin
.left
= form_for(member, as: :team_member, url: project_team_member_path(@project, member)) do |f|
= f.select :project_access, options_for_select(UsersProject.access_roles, member.project_access), {}, class: "medium project-access-select span2"
.right
- if current_user == user
%span.btn.disabled This is you!
- if @project.owner == user
- if @project.namespace_owner == user
%span.btn.disabled.success Owner
- elsif user.blocked
%span.btn.disabled.blocked Blocked
......@@ -21,6 +26,3 @@
= link_to project_team_member_path(project_id: @project, id: member.id), confirm: remove_from_team_message(@project, member), method: :delete, class: "very_small btn danger" do
%i.icon-minus.icon-white
- if allow_admin
= form_for(member, as: :team_member, url: project_team_member_path(@project, member)) do |f|
= f.select :project_access, options_for_select(UsersProject.access_roles, member.project_access), {}, class: "medium project-access-select span2"
- grouper_project_members(@project).each do |access, members|
%table.low
%thead
%tr
%th.span7
%fieldset
%legend
= Project.access_options.key(access).pluralize
%th
%tbody
%small= members.size
%ul.unstyled
- members.each do |up|
= render(partial: 'team_members/show', locals: {member: up})
......
= render "projects/project_head"
%h3.page_title
Team Members
%small (#{@project.users_projects.count})
- if can? current_user, :admin_team_member, @project
%p.slead
(#{@project.users_projects.count})
%small
Read more about project permissions
%strong= link_to "here", help_permissions_path, class: "vlink"
- if can? current_user, :admin_team_member, @project
%span.right
= link_to import_project_team_members_path(@project), class: "btn small grouped", title: "Import team from another project" do
Import team from another project
= link_to new_project_team_member_path(@project), class: "btn success small grouped", title: "New Team Member" do
New Team Member
%hr
.clearfix
= render partial: "team_members/team", locals: {project: @project}
.clearfix
%div.team-table
= render partial: "team_members/team", locals: {project: @project}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment