diff options
author | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2014-06-02 12:31:50 +0000 |
---|---|---|
committer | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2014-06-02 12:31:50 +0000 |
commit | 2c46b35b100be89e0549336616391aef2337454d (patch) | |
tree | 65460161315b06da8df51242bb926adb4e1fdf34 /app | |
parent | 28cc199128d64d8a84b555bea76fde0af9c7a783 (diff) | |
parent | e9de569458b55b43a0d09dceef07c3c5d583af24 (diff) | |
download | gitlab-ce-2c46b35b100be89e0549336616391aef2337454d.tar.gz |
Merge branch 'profile-personal-projects' into 'master'
Show only personal projects on user page
When I visit user profile page I see all projects he have access too (if i can also access same projects).
That means I see a list of hundreds projects if he joined several groups. 
It inefficient because:
* Slow page load if a lot of projects
* Hard to find his personal projects
I propose to replace it with `Personal projects` list.
It has next advantages:
* we don't load huge useless list of projects
* I can see if user have personal projects I have access to
* faster page load. We don't load all projects from all groups where user invited

Partly fixes #1135
Diffstat (limited to 'app')
-rw-r--r-- | app/controllers/users_controller.rb | 6 | ||||
-rw-r--r-- | app/models/user.rb | 4 | ||||
-rw-r--r-- | app/views/users/_projects.html.haml | 2 | ||||
-rw-r--r-- | app/views/users/show.html.haml | 3 |
4 files changed, 11 insertions, 4 deletions
diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 9461174b950..d42c2db9e5f 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -4,10 +4,12 @@ class UsersController < ApplicationController def show @user = User.find_by_username!(params[:username]) - @projects = @user.authorized_projects.accessible_to(current_user) - if !current_user && @projects.empty? + @projects = Project.personal(@user).accessible_to(current_user) + + unless current_user || @user.public_profile? return authenticate_user! end + @groups = @user.groups.accessible_to(current_user) @events = @user.recent_events.where(project_id: @projects.pluck(:id)).limit(20) @title = @user.name diff --git a/app/models/user.rb b/app/models/user.rb index f1b6139745e..0fbc9284dd8 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -478,4 +478,8 @@ class User < ActiveRecord::Base def generate_tmp_oauth_email self.email = "temp-email-for-oauth-#{username}@gitlab.localhost" end + + def public_profile? + authorized_projects.public_only.any? + end end diff --git a/app/views/users/_projects.html.haml b/app/views/users/_projects.html.haml index 2d97c4545b9..bcaec4a27e7 100644 --- a/app/views/users/_projects.html.haml +++ b/app/views/users/_projects.html.haml @@ -1,5 +1,5 @@ .panel.panel-default - .panel-heading Projects + .panel-heading Personal projects %ul.well-list - @projects.each do |project| %li diff --git a/app/views/users/show.html.haml b/app/views/users/show.html.haml index edcaf3acf98..948b59fead1 100644 --- a/app/views/users/show.html.haml +++ b/app/views/users/show.html.haml @@ -20,4 +20,5 @@ = render @events .col-md-4 = render 'profile', user: @user - = render 'projects' + - if @projects.present? + = render 'projects' |