Commit ed3f44085e01f50864ce840f007a50d2154df6f5

Authored by Dmitriy Zaporozhets
1 parent 6b24c375

Redesign Admin -> user -> show page

app/controllers/admin/users_controller.rb
... ... @@ -9,8 +9,12 @@ class Admin::UsersController < Admin::ApplicationController
9 9 end
10 10  
11 11 def show
12   - @projects = Project.scoped
13   - @projects = @projects.without_user(admin_user) if admin_user.authorized_projects.present?
  12 + # Projects user can be added to
  13 + @not_in_projects = Project.scoped
  14 + @not_in_projects = @not_in_projects.without_user(admin_user) if admin_user.authorized_projects.present?
  15 +
  16 + # Projects he already own or joined
  17 + @projects = admin_user.authorized_projects.where('projects.id in (?)', admin_user.authorized_projects.map(&:id))
14 18 end
15 19  
16 20 def team_update
... ...
app/models/user.rb
... ... @@ -313,4 +313,8 @@ class User < ActiveRecord::Base
313 313 UserTeam.where(id: ids)
314 314 end
315 315 end
  316 +
  317 + def owned_teams
  318 + UserTeam.where(owner_id: self.id)
  319 + end
316 320 end
... ...
app/views/admin/users/show.html.haml
1   -%h3.page_title
2   - User: #{@admin_user.name}
3   - - if @admin_user.blocked
4   - %small Blocked
5   - - if @admin_user.admin
6   - %small Administrator
7   - = link_to edit_admin_user_path(@admin_user), class: "btn pull-right" do
8   - %i.icon-edit
9   - Edit
10   -
11   -%br
12   -
13   -%table.zebra-striped
14   - %thead
15   - %tr
16   - %th Profile
17   - %th
18   - %tr
19   - %td
20   - %b
21   - Email:
22   - %td
23   - = @admin_user.email
24   - %tr
25   - %td
26   - %b
27   - Username:
28   - %td
29   - = @admin_user.username
30   - %tr
31   - %td
32   - %b
33   - Admin:
34   - %td= check_box_tag "admin", 1, @admin_user.admin, disabled: :disabled
35   - %tr
36   - %td
37   - %b
38   - Blocked:
39   - %td= check_box_tag "blocked", 1, @admin_user.blocked, disabled: :disabled
40   - %tr
41   - %td
42   - %b
43   - Created at:
44   - %td
45   - = @admin_user.created_at.stamp("March 1, 1999")
46   - %tr
47   - %td
48   - %b
49   - Projects limit:
50   - %td
51   - = @admin_user.projects_limit
52   - - unless @admin_user.skype.empty?
53   - %tr
54   - %td
55   - %b
56   - Skype:
57   - %td
58   - = @admin_user.skype
59   - - unless @admin_user.linkedin.empty?
60   - %tr
61   - %td
62   - %b
63   - Linkedin:
64   - %td
65   - = @admin_user.linkedin
66   - - unless @admin_user.twitter.empty?
67   - %tr
68   - %td
69   - %b
70   - Twitter:
71   - %td
72   - = @admin_user.twitter
73   -
74   -%br
75   -%h5 Add User to Projects
76   -%br
77   -= form_tag team_update_admin_user_path(@admin_user), class: "bulk_import", method: :put do
78   - %table
79   - %thead
80   - %tr
81   - %th Projects
82   - %th Project Access:
83   -
84   - %tr
85   - %td= select_tag :project_ids, options_from_collection_for_select(@projects , :id, :name_with_namespace), multiple: true, data: {placeholder: 'Select projects'}, class: 'chosen span5'
86   - %td= select_tag :project_access, options_for_select(Project.access_options), class: "project-access-select chosen span3"
87   -
88   - %tr
89   - %td= submit_tag 'Add', class: "btn btn-primary"
90   - %td
  1 +.row
  2 + .span6
  3 + %h3.page_title
  4 + = image_tag gravatar_icon(@admin_user.email, 90), class: "avatar s90"
  5 + = @admin_user.name
  6 + - if @admin_user.blocked
  7 + %span.cred (Blocked)
  8 + - if @admin_user.admin
  9 + %span.cred (Admin)
  10 + .pull-right
  11 + = link_to edit_admin_user_path(@admin_user), class: "btn pull-right" do
  12 + %i.icon-edit
  13 + Edit
  14 + %br
  15 + %small @#{@admin_user.username}
  16 + %br
  17 + %small member since #{@admin_user.created_at.stamp("Nov 12, 2031")}
  18 + .clearfix
  19 + %hr
  20 + %h5
  21 + Add User to Projects
  22 + %small
91 23 Read more about project permissions
92 24 %strong= link_to "here", help_permissions_path, class: "vlink"
93   -%br
94   -
95   -- if @admin_user.groups.present?
96   - %h5 Owner of groups:
97   - %br
98   -
99   - %table.zebra-striped
100   - %thead
101   - %tr
102   - %th Name
  25 + %br
  26 + = form_tag team_update_admin_user_path(@admin_user), class: "bulk_import", method: :put do
  27 + .control-group
  28 + = label_tag :project_ids, "Projects", class: 'control-label'
  29 + .controls
  30 + = select_tag :project_ids, options_from_collection_for_select(@not_in_projects , :id, :name_with_namespace), multiple: true, data: {placeholder: 'Select projects'}, class: 'chosen span3'
  31 + .control-group
  32 + = label_tag :project_access, "Project Access", class: 'control-label'
  33 + .controls
  34 + = select_tag :project_access, options_for_select(Project.access_options), class: "project-access-select chosen span3"
103 35  
104   - - @admin_user.groups.each do |group|
105   - %tr
106   - %td= link_to group.name, admin_group_path(group)
  36 + .form-actions
  37 + = submit_tag 'Add', class: "btn btn-create"
  38 + .pull-right
  39 + %br
107 40  
  41 + - if @admin_user.owned_groups.present?
  42 + .ui-box
  43 + %h5.title Owned groups:
  44 + %ul.well-list
  45 + - @admin_user.groups.each do |group|
  46 + %li
  47 + %strong= link_to group.name, admin_group_path(group)
108 48  
109   -- if @admin_user.authorized_projects.present?
110   - %h5 Authorized Projects:
111   - %br
  49 + - if @admin_user.owned_teams.present?
  50 + .ui-box
  51 + %h5.title Owned teams:
  52 + %ul.well-list
  53 + - @admin_user.owned_teams.each do |team|
  54 + %li
  55 + %strong= link_to team.name, admin_team_path(team)
112 56  
113   - %table.zebra-striped
114   - %thead
115   - %tr
116   - %th Name
117   - %th Project Access
118   - %th
119   - %th
120 57  
121   - - @admin_user.tm_in_authorized_projects.each do |tm|
122   - - project = tm.project
123   - %tr
124   - %td= link_to project.name_with_namespace, admin_project_path(project)
125   - %td= tm.project_access_human
126   - %td= link_to 'Edit Access', edit_admin_project_member_path(project, tm.user), class: "btn btn-small"
127   - %td= link_to 'Remove from team', admin_project_member_path(project, tm.user), confirm: 'Are you sure?', method: :delete, class: "btn btn-small btn-remove"
  58 + .span6
  59 + = render 'users/profile', user: @admin_user
  60 + .ui-box
  61 + %h5.title Projects (#{@projects.count})
  62 + %ul.well-list
  63 + - @projects.each do |project|
  64 + %li
  65 + = link_to admin_project_path(project), class: dom_class(project) do
  66 + - if project.namespace
  67 + = project.namespace.human_name
  68 + \/
  69 + %strong.well-title
  70 + = truncate(project.name, length: 45)
  71 + %span.pull-right.light
  72 + - if project.owner == @admin_user
  73 + %i.icon-wrench
  74 + - tm = project.team.get_tm(@admin_user.id)
  75 + - if tm
  76 + = tm.project_access_human
  77 + = link_to edit_admin_project_member_path(project, tm.user), class: "btn btn-small" do
  78 + %i.icon-edit
  79 + = link_to admin_project_member_path(project, tm.user), confirm: 'Are you sure?', method: :delete, class: "btn btn-small btn-remove" do
  80 + %i.icon-remove
  81 + %p.light
  82 + %i.icon-wrench
  83 + – user is a project owner
... ...
app/views/users/_profile.html.haml
... ... @@ -4,20 +4,20 @@
4 4 %ul.well-list
5 5 %li
6 6 %strong Email
7   - %span.pull-right= mail_to @user.email
8   - - unless @user.skype.blank?
  7 + %span.pull-right= mail_to user.email
  8 + - unless user.skype.blank?
9 9 %li
10 10 %strong Skype
11   - %span.pull-right= @user.skype
12   - - unless @user.linkedin.blank?
  11 + %span.pull-right= user.skype
  12 + - unless user.linkedin.blank?
13 13 %li
14 14 %strong LinkedIn
15   - %span.pull-right= @user.linkedin
16   - - unless @user.twitter.blank?
  15 + %span.pull-right= user.linkedin
  16 + - unless user.twitter.blank?
17 17 %li
18 18 %strong Twitter
19   - %span.pull-right= @user.twitter
20   - - unless @user.bio.blank?
  19 + %span.pull-right= user.twitter
  20 + - unless user.bio.blank?
21 21 %li
22 22 %strong Bio
23   - %span.pull-right= @user.bio
  23 + %span.pull-right= user.bio
... ...
app/views/users/_projects.html.haml
... ... @@ -10,9 +10,9 @@
10 10 %strong.well-title
11 11 = truncate(project.name, length: 45)
12 12 %span.pull-right.light
13   - - if project.owner == @user
  13 + - if project.owner == user
14 14 %i.icon-wrench
15   - - tm = project.team.get_tm(@user.id)
  15 + - tm = project.team.get_tm(user.id)
16 16 - if tm
17 17 = tm.project_access_human
18 18 %p.light
... ...
app/views/users/show.html.haml
... ... @@ -17,5 +17,5 @@
17 17 %h5 Recent events
18 18 = render @events
19 19 .span4
20   - = render 'profile'
21   - = render 'projects'
  20 + = render 'profile', user: @user
  21 + = render 'projects', user: @user
... ...