Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2014-06-02 16:31:50 +0400
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2014-06-02 16:31:50 +0400
commit2c46b35b100be89e0549336616391aef2337454d (patch)
tree65460161315b06da8df51242bb926adb4e1fdf34 /app
parent28cc199128d64d8a84b555bea76fde0af9c7a783 (diff)
parente9de569458b55b43a0d09dceef07c3c5d583af24 (diff)
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. ![Screenshot 2014-05-30 18.24.43](https://dev.gitlab.org/uploads/dzaporozhets/gitlabhq/5209c0cb01/Screenshot_2014-05-30_18.24.43.png) 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 ![Screenshot 2014-05-30 18.20.29](https://dev.gitlab.org/uploads/dzaporozhets/gitlabhq/8a5d02a00d/Screenshot_2014-05-30_18.20.29.png) Partly fixes #1135
Diffstat (limited to 'app')
-rw-r--r--app/controllers/users_controller.rb6
-rw-r--r--app/models/user.rb4
-rw-r--r--app/views/users/_projects.html.haml2
-rw-r--r--app/views/users/show.html.haml3
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'