Use project owner if no namespace. Restyled team page

4-1-stable
Dmitriy Zaporozhets 2012-11-30 18:26:17 +02:00
parent 8bf340f568
commit eb3e07a509
13 changed files with 96 additions and 79 deletions

View File

@ -94,6 +94,7 @@
}
input[type="text"] {
@extend .monospace;
border: 1px solid #BBB;
box-shadow: none;
margin-left: -1px;

View File

@ -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
rules << project_admin_rules
if project.namespace
# If user own project namespace
# (Ex. group owner or account owner)
if project.namespace.owner == user
rules << project_admin_rules
end
else
# For compatibility with global projects
# use projects.owner_id
if project.owner == user
rules << project_admin_rules
end
end
# If user was set as direct project owner
if project.owner == user
rules << project_admin_rules
end
rules.flatten
end

View File

@ -292,4 +292,8 @@ class Project < ActiveRecord::Base
merge_requests
end
end
def namespace_owner
namespace.try(:owner)
end
end

View File

@ -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"

View File

@ -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

View File

@ -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
- if @group.owner == user
%span.btn.btn-small.disabled.right Group Owner

View File

@ -4,7 +4,8 @@
%body{class: "#{app_theme} project"}
= render "layouts/flash"
= render "layouts/head_panel", title: @project.name
= render 'shared/no_ssh'
- if can?(current_user, :download_code, @project)
= render 'shared/no_ssh'
.container
%ul.main_menu
= nav_link(html_options: {class: "home #{project_tab_class}"}) do

View File

@ -1,30 +1,33 @@
= render 'clone_panel'
%div.git-empty
%h4 Git global setup:
%pre.dark
= preserve do
git config --global user.name "#{current_user.name}"
git config --global user.email "#{current_user.email}"
%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
%pre.dark
= preserve do
mkdir #{@project.path}
cd #{@project.path}
git init
touch README
git add README
git commit -m 'first commit'
git remote add origin #{@project.url_to_repo}
git push -u origin master
%fieldset
%legend Create Repository
%pre.dark
= preserve do
mkdir #{@project.path}
cd #{@project.path}
git init
touch README
git add README
git commit -m 'first commit'
git remote add origin #{@project.url_to_repo}
git push -u origin master
%h4.prepend-top-20 Existing Git Repo?
%pre.dark
= preserve do
cd existing_git_repo
git remote add origin #{@project.url_to_repo}
git push -u origin master
%fieldset
%legend Existing Git Repo?
%pre.dark
= preserve do
cd existing_git_repo
git remote add origin #{@project.url_to_repo}
git push -u origin master
- if can? current_user, :admin_project, @project
.prepend-top-20

View File

@ -1,4 +1,4 @@
.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"

View File

@ -1,26 +1,28 @@
- 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
= 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
%strong= truncate(user.name, lenght: 40)
%br
%small.cgray= user.email
%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
%strong= truncate(user.name, lenght: 40)
%br
%small.cgray= user.email
%td.span5
.right
- if current_user == user
%span.btn.disabled This is you!
- if @project.owner == user
%span.btn.disabled.success Owner
- elsif user.blocked
%span.btn.disabled.blocked Blocked
- elsif allow_admin
= 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
.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.namespace_owner == user
%span.btn.disabled.success Owner
- elsif user.blocked
%span.btn.disabled.blocked Blocked
- elsif allow_admin
= 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"

View File

@ -1,11 +1,9 @@
- grouper_project_members(@project).each do |access, members|
%table.low
%thead
%tr
%th.span7
= Project.access_options.key(access).pluralize
%th
%tbody
%fieldset
%legend
= Project.access_options.key(access).pluralize
%small= members.size
%ul.unstyled
- members.each do |up|
= render(partial: 'team_members/show', locals: {member: up})

View File

@ -1,18 +1,20 @@
= 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}

View File

@ -4,4 +4,4 @@
= nav_link(controller: :tree) do
= link_to 'Source', project_tree_path(@project, @ref)
%li.right
= render "shared/clone_panel"
= render "shared/clone_panel"