Merge branch 'master' of dev.gitlab.org:gitlab/gitlabhq
This commit is contained in:
commit
d54f809804
5 changed files with 39 additions and 22 deletions
|
@ -1,14 +1,9 @@
|
||||||
class UsersController < ApplicationController
|
class UsersController < ApplicationController
|
||||||
skip_before_filter :authenticate_user!, only: [:show, :activities]
|
skip_before_filter :authenticate_user!
|
||||||
|
before_filter :set_user
|
||||||
layout :determine_layout
|
layout :determine_layout
|
||||||
|
|
||||||
def show
|
def show
|
||||||
@user = User.find_by_username!(params[:username])
|
|
||||||
|
|
||||||
unless current_user || @user.public_profile?
|
|
||||||
return authenticate_user!
|
|
||||||
end
|
|
||||||
|
|
||||||
# Projects user can view
|
# Projects user can view
|
||||||
visible_projects = ProjectsFinder.new.execute(current_user)
|
visible_projects = ProjectsFinder.new.execute(current_user)
|
||||||
authorized_projects_ids = visible_projects.pluck(:id)
|
authorized_projects_ids = visible_projects.pluck(:id)
|
||||||
|
@ -25,6 +20,15 @@ class UsersController < ApplicationController
|
||||||
|
|
||||||
@title = @user.name
|
@title = @user.name
|
||||||
|
|
||||||
|
respond_to do |format|
|
||||||
|
format.html
|
||||||
|
format.atom { render layout: false }
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def calendar
|
||||||
|
visible_projects = ProjectsFinder.new.execute(current_user)
|
||||||
|
|
||||||
# Get user repositories and collect timestamps for commits
|
# Get user repositories and collect timestamps for commits
|
||||||
user_repositories = visible_projects.map(&:repository)
|
user_repositories = visible_projects.map(&:repository)
|
||||||
calendar = Gitlab::CommitsCalendar.new(user_repositories, @user)
|
calendar = Gitlab::CommitsCalendar.new(user_repositories, @user)
|
||||||
|
@ -32,10 +36,7 @@ class UsersController < ApplicationController
|
||||||
@starting_year = (Time.now - 1.year).strftime("%Y")
|
@starting_year = (Time.now - 1.year).strftime("%Y")
|
||||||
@starting_month = Date.today.strftime("%m").to_i
|
@starting_month = Date.today.strftime("%m").to_i
|
||||||
|
|
||||||
respond_to do |format|
|
render 'calendar', layout: false
|
||||||
format.html
|
|
||||||
format.atom { render layout: false }
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def determine_layout
|
def determine_layout
|
||||||
|
@ -45,4 +46,14 @@ class UsersController < ApplicationController
|
||||||
'public_users'
|
'public_users'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def set_user
|
||||||
|
@user = User.find_by_username!(params[:username])
|
||||||
|
|
||||||
|
unless current_user || @user.public_profile?
|
||||||
|
return authenticate_user!
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
%h4 Calendar:
|
||||||
#cal-heatmap.calendar
|
#cal-heatmap.calendar
|
||||||
:javascript
|
:javascript
|
||||||
new calendar(
|
new calendar(
|
|
@ -19,8 +19,9 @@
|
||||||
= render 'groups', groups: @groups
|
= render 'groups', groups: @groups
|
||||||
%hr
|
%hr
|
||||||
|
|
||||||
%h4 Calendar:
|
.user-calendar
|
||||||
%div= render 'calendar'
|
%h4.center.light
|
||||||
|
%i.fa.fa-spinner.fa-spin
|
||||||
%hr
|
%hr
|
||||||
%h4
|
%h4
|
||||||
User Activity:
|
User Activity:
|
||||||
|
@ -36,3 +37,8 @@
|
||||||
= render 'profile', user: @user
|
= render 'profile', user: @user
|
||||||
- if @projects.present?
|
- if @projects.present?
|
||||||
= render 'projects', projects: @projects
|
= render 'projects', projects: @projects
|
||||||
|
|
||||||
|
|
||||||
|
:coffeescript
|
||||||
|
$ ->
|
||||||
|
$(".user-calendar").load("#{user_calendar_path}")
|
||||||
|
|
|
@ -157,10 +157,9 @@ Gitlab::Application.routes.draw do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# route for commits used by the cal-heatmap
|
get 'u/:username/calendar' => 'users#calendar', as: :user_calendar,
|
||||||
get 'u/:username/activities' => 'users#activities', as: :user_activities,
|
constraints: { username: /(?:[^.]|\.(?!atom$))+/, format: /atom/ }
|
||||||
constraints: { username: /(?:[^.]|\.(?!atom$))+/, format: /atom/ },
|
|
||||||
via: :get
|
|
||||||
get '/u/:username' => 'users#show', as: :user,
|
get '/u/:username' => 'users#show', as: :user,
|
||||||
constraints: { username: /(?:[^.]|\.(?!atom$))+/, format: /atom/ }
|
constraints: { username: /(?:[^.]|\.(?!atom$))+/, format: /atom/ }
|
||||||
|
|
||||||
|
|
|
@ -9,18 +9,18 @@ describe UsersController do
|
||||||
|
|
||||||
describe "GET #show" do
|
describe "GET #show" do
|
||||||
render_views
|
render_views
|
||||||
before do
|
|
||||||
get :show, username: user.username
|
|
||||||
end
|
|
||||||
|
|
||||||
it "renders the show template" do
|
it "renders the show template" do
|
||||||
|
get :show, username: user.username
|
||||||
expect(response.status).to eq(200)
|
expect(response.status).to eq(200)
|
||||||
expect(response).to render_template("show")
|
expect(response).to render_template("show")
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "GET #calendar" do
|
||||||
it "renders calendar" do
|
it "renders calendar" do
|
||||||
controller.prepend_view_path 'app/views/users'
|
get :calendar, username: user.username
|
||||||
expect(response).to render_template("_calendar")
|
expect(response).to render_template("calendar")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue