Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
李少辉-开发者
gitlab-foss
提交
3c9e860f
G
gitlab-foss
项目概览
李少辉-开发者
/
gitlab-foss
通知
15
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
G
gitlab-foss
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
3c9e860f
编写于
3月 02, 2016
作者:
A
Alfredo Sumaran
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Provide defaults and make sure we everything is container into a parent element
上级
85e672b1
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
118 addition
and
108 deletion
+118
-108
app/assets/javascripts/user.js.coffee
app/assets/javascripts/user.js.coffee
+4
-1
app/assets/javascripts/user_tabs.js.coffee
app/assets/javascripts/user_tabs.js.coffee
+17
-11
app/views/users/show.html.haml
app/views/users/show.html.haml
+97
-96
未找到文件。
app/assets/javascripts/user.js.coffee
浏览文件 @
3c9e860f
...
@@ -12,4 +12,7 @@ class @User
...
@@ -12,4 +12,7 @@ class @User
e
.
preventDefault
()
e
.
preventDefault
()
initTabs
:
->
initTabs
:
->
new
UserTabs
(
@
opts
)
new
UserTabs
(
parentEl
:
'.user-profile'
action
:
@
opts
.
action
)
app/assets/javascripts/user_tabs.js.coffee
浏览文件 @
3c9e860f
...
@@ -52,8 +52,15 @@
...
@@ -52,8 +52,15 @@
class
@
UserTabs
class
@
UserTabs
actions
:
[
'activity'
,
'groups'
,
'contributed'
,
'projects'
],
actions
:
[
'activity'
,
'groups'
,
'contributed'
,
'projects'
],
defaultAction
:
'activity'
,
defaultAction
:
'activity'
,
constructor
:
(
opts
)
->
{
@
action
=
'activity'
@
parentEl
=
$
(
document
)
}
=
opts
# Make jQuery object if selector is provided
@
parentEl
=
$
(
@
parentEl
)
if
typeof
@
parentEl
is
'string'
constructor
:
(
@
opts
=
{})
->
# Store the `location` object, allowing for easier stubbing in tests
# Store the `location` object, allowing for easier stubbing in tests
@
_location
=
location
@
_location
=
location
@
loaded
=
{}
@
loaded
=
{}
...
@@ -61,19 +68,18 @@ class @UserTabs
...
@@ -61,19 +68,18 @@ class @UserTabs
@
bindEvents
()
@
bindEvents
()
@
tabStateInit
()
@
tabStateInit
()
action
=
@
opts
.
action
currAction
=
@
defaultAction
if
@
action
is
'show'
action
=
@
defaultAction
if
action
==
'show'
# Set active tab
# Set active tab
source
=
$
(
".
#{
a
ction
}
-tab a"
).
attr
(
'href'
)
source
=
$
(
".
#{
currA
ction
}
-tab a"
).
attr
(
'href'
)
@
activateTab
(
a
ction
)
@
activateTab
(
currA
ction
)
bindEvents
:
->
bindEvents
:
->
# Turn off existing event listeners
# Turn off existing event listeners
$
(
document
)
.
off
'shown.bs.tab'
,
'.nav-links a[data-toggle="tab"]'
@
parentEl
.
off
'shown.bs.tab'
,
'.nav-links a[data-toggle="tab"]'
# Set event listeners
# Set event listeners
$
(
document
)
.
on
'shown.bs.tab'
,
'.nav-links a[data-toggle="tab"]'
,
@
tabShown
@
parentEl
.
on
'shown.bs.tab'
,
'.nav-links a[data-toggle="tab"]'
,
@
tabShown
tabStateInit
:
->
tabStateInit
:
->
for
action
in
@
actions
for
action
in
@
actions
...
@@ -88,7 +94,7 @@ class @UserTabs
...
@@ -88,7 +94,7 @@ class @UserTabs
@
setCurrentAction
(
action
)
@
setCurrentAction
(
action
)
activateTab
:
(
action
)
->
activateTab
:
(
action
)
->
$
(
".nav-links .
#{
action
}
-tab a"
).
tab
(
'show'
)
@
parentEl
.
find
(
".nav-links .
#{
action
}
-tab a"
).
tab
(
'show'
)
setTab
:
(
source
,
action
)
->
setTab
:
(
source
,
action
)
->
return
if
@
loaded
[
action
]
is
true
return
if
@
loaded
[
action
]
is
true
...
@@ -108,20 +114,20 @@ class @UserTabs
...
@@ -108,20 +114,20 @@ class @UserTabs
url
:
"
#{
source
}
.json"
url
:
"
#{
source
}
.json"
success
:
(
data
)
=>
success
:
(
data
)
=>
tabSelector
=
'div#'
+
action
tabSelector
=
'div#'
+
action
document
.
querySelector
(
tabSelector
).
innerHTML
=
data
.
html
@
parentEl
.
find
(
tabSelector
).
html
(
data
.
html
)
@
loaded
[
action
]
=
true
@
loaded
[
action
]
=
true
loadActivities
:
(
source
)
->
loadActivities
:
(
source
)
->
return
if
@
loaded
[
'activity'
]
is
true
return
if
@
loaded
[
'activity'
]
is
true
$calendarWrap
=
$
(
'.user-calendar'
)
$calendarWrap
=
@
parentEl
.
find
(
'.user-calendar'
)
$calendarWrap
.
load
(
$calendarWrap
.
data
(
'href'
))
$calendarWrap
.
load
(
$calendarWrap
.
data
(
'href'
))
new
Activities
()
new
Activities
()
@
loaded
[
'activity'
]
=
true
@
loaded
[
'activity'
]
=
true
toggleLoading
:
(
status
)
->
toggleLoading
:
(
status
)
->
$
(
'.loading-status .loading'
).
toggle
(
status
)
@
parentEl
.
find
(
'.loading-status .loading'
).
toggle
(
status
)
setCurrentAction
:
(
action
)
->
setCurrentAction
:
(
action
)
->
# Remove possible actions from URL
# Remove possible actions from URL
...
...
app/views/users/show.html.haml
浏览文件 @
3c9e860f
...
@@ -8,105 +8,106 @@
...
@@ -8,105 +8,106 @@
=
render
'shared/show_aside'
=
render
'shared/show_aside'
.cover-block
.user-profile
.cover-controls
.cover-block
-
if
@user
==
current_user
.cover-controls
=
link_to
profile_path
,
class:
'btn btn-gray'
do
-
if
@user
==
current_user
=
icon
(
'pencil'
)
=
link_to
profile_path
,
class:
'btn btn-gray'
do
-
elsif
current_user
=
icon
(
'pencil'
)
%span
.report-abuse
-
elsif
current_user
-
if
@user
.
abuse_report
%span
.report-abuse
%button
.btn.btn-danger
{
title:
'Already reported for abuse'
,
-
if
@user
.
abuse_report
data:
{
toggle:
'tooltip'
,
placement:
'left'
,
container:
'body'
}}
%button
.btn.btn-danger
{
title:
'Already reported for abuse'
,
=
icon
(
'exclamation-circle'
)
data:
{
toggle:
'tooltip'
,
placement:
'left'
,
container:
'body'
}}
-
else
=
icon
(
'exclamation-circle'
)
=
link_to
new_abuse_report_path
(
user_id:
@user
.
id
,
ref_url:
request
.
referrer
),
class:
'btn btn-gray'
,
-
else
title:
'Report abuse'
,
data:
{
toggle:
'tooltip'
,
placement:
'left'
,
container:
'body'
}
do
=
link_to
new_abuse_report_path
(
user_id:
@user
.
id
,
ref_url:
request
.
referrer
),
class:
'btn btn-gray'
,
=
icon
(
'exclamation-circle'
)
title:
'Report abuse'
,
data:
{
toggle:
'tooltip'
,
placement:
'left'
,
container:
'body'
}
do
-
if
current_user
=
icon
(
'exclamation-circle'
)
-
if
current_user
=
link_to
user_path
(
@user
,
:atom
,
{
private_token:
current_user
.
private_token
}),
class:
'btn btn-gray'
do
=
icon
(
'rss'
)
=
link_to
user_path
(
@user
,
:atom
,
{
private_token:
current_user
.
private_token
}),
class:
'btn btn-gray'
do
=
icon
(
'rss'
)
.avatar-holder
=
link_to
avatar_icon
(
@user
,
400
),
target:
'_blank'
do
.avatar-holder
=
image_tag
avatar_icon
(
@user
,
90
),
class:
"avatar s90"
,
alt:
''
=
link_to
avatar_icon
(
@user
,
400
),
target:
'_blank'
do
.cover-title
=
image_tag
avatar_icon
(
@user
,
90
),
class:
"avatar s90"
,
alt:
''
=
@user
.
name
.cover-title
=
@user
.
name
.cover-desc
%span
.middle-dot-divider
@
#{
@user
.
username
}
%span
.middle-dot-divider
Member since
#{
@user
.
created_at
.
to_s
(
:medium
)
}
-
if
@user
.
bio
.
present?
.cover-desc
%p
.profile-user-bio
=
@user
.
bio
.cover-desc
-
unless
@user
.
public_email
.
blank?
.profile-link-holder.middle-dot-divider
=
link_to
@user
.
public_email
,
"mailto:
#{
@user
.
public_email
}
"
-
unless
@user
.
skype
.
blank?
.profile-link-holder.middle-dot-divider
=
link_to
"skype:
#{
@user
.
skype
}
"
,
title:
"Skype"
do
=
icon
(
'skype'
)
-
unless
@user
.
linkedin
.
blank?
.profile-link-holder.middle-dot-divider
=
link_to
"https://www.linkedin.com/in/
#{
@user
.
linkedin
}
"
,
title:
"LinkedIn"
do
=
icon
(
'linkedin-square'
)
-
unless
@user
.
twitter
.
blank?
.profile-link-holder.middle-dot-divider
=
link_to
"https://twitter.com/
#{
@user
.
twitter
}
"
,
title:
"Twitter"
do
=
icon
(
'twitter-square'
)
-
unless
@user
.
website_url
.
blank?
.profile-link-holder.middle-dot-divider
=
link_to
@user
.
short_website_url
,
@user
.
full_website_url
-
unless
@user
.
location
.
blank?
.profile-link-holder.middle-dot-divider
=
icon
(
'map-marker'
)
=
@user
.
location
%ul
.nav-links.center
%li
.activity-tab
=
link_to
user_calendar_activities_path
,
data:
{
target:
'div#activity'
,
action:
'activity'
,
toggle:
'tab'
}
do
Activity
%li
.groups-tab
=
link_to
user_groups_path
,
data:
{
target:
'div#groups'
,
action:
'groups'
,
toggle:
'tab'
}
do
Groups
%li
.contributed-tab
=
link_to
user_contributed_projects_path
,
data:
{
target:
'div#contributed'
,
action:
'contributed'
,
toggle:
'tab'
}
do
Contributed projects
%li
.projects-tab
=
link_to
user_projects_path
,
data:
{
target:
'div#projects'
,
action:
'projects'
,
toggle:
'tab'
}
do
Personal projects
%div
{
class:
container_class
}
.tab-content
#activity
.tab-pane
.gray-content-block.white.second-block
%div
{
class:
container_class
}
.user-calendar
{
data:
{
href:
user_calendar_path
}}
%h4
.center.light
%i
.fa.fa-spinner.fa-spin
.user-calendar-activities
.content_list
{
data:
{
href:
user_path
}
}
=
spinner
#groups
.tab-pane
-
# This tab is always loaded via AJAX
#contributed
.contributed-projects.tab-pane
.cover-desc
-
# This tab is always loaded via AJAX
%span
.middle-dot-divider
@
#{
@user
.
username
}
%span
.middle-dot-divider
Member since
#{
@user
.
created_at
.
to_s
(
:medium
)
}
#projects
.tab-pane
-
if
@user
.
bio
.
present?
-
# This tab is always loaded via AJAX
.cover-desc
%p
.profile-user-bio
=
@user
.
bio
.loading-status
.cover-desc
=
spinner
-
unless
@user
.
public_email
.
blank?
.profile-link-holder.middle-dot-divider
=
link_to
@user
.
public_email
,
"mailto:
#{
@user
.
public_email
}
"
-
unless
@user
.
skype
.
blank?
.profile-link-holder.middle-dot-divider
=
link_to
"skype:
#{
@user
.
skype
}
"
,
title:
"Skype"
do
=
icon
(
'skype'
)
-
unless
@user
.
linkedin
.
blank?
.profile-link-holder.middle-dot-divider
=
link_to
"https://www.linkedin.com/in/
#{
@user
.
linkedin
}
"
,
title:
"LinkedIn"
do
=
icon
(
'linkedin-square'
)
-
unless
@user
.
twitter
.
blank?
.profile-link-holder.middle-dot-divider
=
link_to
"https://twitter.com/
#{
@user
.
twitter
}
"
,
title:
"Twitter"
do
=
icon
(
'twitter-square'
)
-
unless
@user
.
website_url
.
blank?
.profile-link-holder.middle-dot-divider
=
link_to
@user
.
short_website_url
,
@user
.
full_website_url
-
unless
@user
.
location
.
blank?
.profile-link-holder.middle-dot-divider
=
icon
(
'map-marker'
)
=
@user
.
location
%ul
.nav-links.center.user-profile-nav
%li
.activity-tab
=
link_to
user_calendar_activities_path
,
data:
{
target:
'div#activity'
,
action:
'activity'
,
toggle:
'tab'
}
do
Activity
%li
.groups-tab
=
link_to
user_groups_path
,
data:
{
target:
'div#groups'
,
action:
'groups'
,
toggle:
'tab'
}
do
Groups
%li
.contributed-tab
=
link_to
user_contributed_projects_path
,
data:
{
target:
'div#contributed'
,
action:
'contributed'
,
toggle:
'tab'
}
do
Contributed projects
%li
.projects-tab
=
link_to
user_projects_path
,
data:
{
target:
'div#projects'
,
action:
'projects'
,
toggle:
'tab'
}
do
Personal projects
%div
{
class:
container_class
}
.tab-content
#activity
.tab-pane
.gray-content-block.white.second-block
%div
{
class:
container_class
}
.user-calendar
{
data:
{
href:
user_calendar_path
}}
%h4
.center.light
%i
.fa.fa-spinner.fa-spin
.user-calendar-activities
.content_list
{
data:
{
href:
user_path
}
}
=
spinner
#groups
.tab-pane
-
# This tab is always loaded via AJAX
#contributed
.contributed-projects.tab-pane
-
# This tab is always loaded via AJAX
#projects
.tab-pane
-
# This tab is always loaded via AJAX
.loading-status
=
spinner
:javascript
:javascript
var
userProfile
;
var
userProfile
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录