File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
@**
* Yona, 21st Century Project Hosting SW
*
* Copyright Yona & Yobi Authors & NAVER Corp.
* https://yona.io
**@
@(user:User, groupNames:Array[String], projects:List[Project], postings:List[Posting], issues:List[Issue], pullRequests:List[PullRequest], milestones:List[Milestone], daysAgo:Int, selected:String)
@import utils.MD5Util
@import utils.TemplateHelper._
@watching_count(loginId: String) = { @User.findByLoginId(loginId).getWatchingProjects().size }
@belongsToMe_count() = { @(user.myProjects("name").size - Project.findProjectsCreatedByUser(user.loginId, "name").size) }
@showBadgeNumberIfExist(number:Int) = { @if(number>0){ <span class="num-badge">@number</span> } }
@emailObfuscation(emailAddress:String) = {
@Html(emailAddress.reverse.replace("@","@<span class='z'>"+MD5Util.md5Hex(emailAddress)+"</span>").replace(".", "<span class='z'>"+MD5Util.md5Hex(emailAddress).reverse+"</span>."))
}
@isActiveTab(tabId:String) = { @if(selected == tabId){ active } }
@providerImg(provider: String) = {
@if(provider.equalsIgnoreCase("github")){
@Html(GithubLogo)
}
@if(provider.equalsIgnoreCase("google")){
@Html(GoogleLogo)
}
}
@isCurrentUsersPage = @{
if(UserApp.currentUser.loginId.equals(user.loginId)){
true
} else {
false
}
}
@siteLayout(user.loginId, utils.MenuType.USER) {
<div class="site-breadcrumb-outer">
<div class="site-breadcrumb-inner">
<h3>@Messages("userinfo.profile")</h3>
</div>
</div>
<div class="page-wrap-outer">
<div class="page-wrap">
<section class="user-box">
<div class="user-info-box">
<div class="whoami-wrap" style="background-image:url('@user.avatarUrl(256)')"></div>
<div class="whoami usf-group">
<span class="name">@user.name</span>
<span class="loginid">@{"@"}@user.loginId</span>
@if(user != null && requestHeader.session != null && user.loginId == UserApp.currentUser.loginId){
<div class="edit">
<a href="@routes.UserApp.editUserInfoForm()" class="ybtn ybtn-default ybtn-mini"><i class="yobicon-edit"></i> @Messages("userinfo.editProfile")</a>
</div>
}
</div>
<ul class="unstyled lst-stacked" style="margin-top:20px;">
<li @if(groupNames.contains("own")){class="active"}>
<a href="@routes.UserApp.userInfo(user.loginId, "own")">@Messages("project.createdByMe")<span class="num-badge pull-right">@if(isCurrentUsersPage){@Project.countProjectsCreatedByUser(user.loginId)}</span></a>
</li>
<li @if(groupNames.contains("member")){class="active"}>
<a href="@routes.UserApp.userInfo(user.loginId, "member")">@Messages("project.default.group.member")<span class="num-badge pull-right">@if(isCurrentUsersPage){@Project.countProjectsJustMemberAndNotOwner(user.loginId)}</span></a>
</li>
@if(isCurrentUsersPage){
<li @if(groupNames.contains("watching")){class="active"}>
<a href="@routes.UserApp.userInfo(user.loginId, "watching")">@Messages("project.default.group.watching")<span class="num-badge pull-right">@user.getWatchingProjects.size</span></a>
</li>
}
</ul>
<div class="user-since">
<strong>@Messages("userinfo.since")</strong>
<span class="since">@user.getDateString</span>
</div>
<div class="user-since">
<div>
<strong>@Messages("user.connected.social.login")</strong>
</div>
<div class="auth-provider-logo">
@for(credential <- UserCredential.findByUserId(user.id)){
@for(provider <- credential.getProviders){
@providerImg(provider)
}
}
</div>
</div>
</div>
<div class="user-stream-box">
@if(!UserApp.currentUser().isGuest){
<div class="pull-right">
@Messages("userinfo.daysAgo.prefix")<input id="daysAgoBtn" name="daysAgo" type="number" min="1" max="99" class="input-mini-min" value="@daysAgo" style="margin:0px 5px; vertical-align:bottom;">@Messages("userinfo.daysAgo.suffix")
</div>
<ul class="nav nav-tabs">
<li class="@isActiveTab("projects")">
<a href="#projects" data-toggle="tab">
@Messages("project.projects") @showBadgeNumberIfExist(projects.size)
</a>
</li>
@if(user.loginId.equals(UserApp.currentUser().loginId)) {
<li class="@isActiveTab("postings")">
<a href="#postings" data-toggle="tab">
@Messages("menu.board") @showBadgeNumberIfExist(postings.size)
</a>
</li>
<li class="@isActiveTab("pullRequests")">
<a href="#pullRequests" data-toggle="tab">
@Messages("menu.pullRequest") @showBadgeNumberIfExist(pullRequests.size)
</a>
</li>
<li class="@isActiveTab("issues")">
<a href="#issues" data-toggle="tab">
@Messages("menu.issue") @showBadgeNumberIfExist(issues.size)
</a>
</li>
<li class="@isActiveTab("milestones")">
<a href="#milestones" data-toggle="tab">
@Messages("milestone") @showBadgeNumberIfExist(milestones.size)
</a>
</li>
}
</ul>
<div class="tab-content">
<div id="projects" class="tab-pane @isActiveTab("projects")">
@if(projects.size==0){
<div class="error-wrap">
<p>@Messages("project.is.empty")</p>
</div>
}
<ul class="user-streams all-projects">
@for(project <- projects){
@if(groupNames.contains("watching") && !isCurrentUsersPage){
} else {
@partial_projectlist(project, user)
}
}
</ul>
</div>
@if(user.loginId.equals(UserApp.currentUser().loginId)) {
<div id="postings" class="tab-pane @isActiveTab("postings")">
@if(postings.size == 0) {
<div class="error-wrap">
<p>@Messages("userinfo.daysAgo.prefix") @Messages("post.is.empty")</p>
</div>
}
<ul class="post-list-wrap">
@for(post <- postings) {
@partial_postings(post, post.project)
}
</ul>
</div>
<div id="issues" class="tab-pane @isActiveTab("issues")">
@if(issues.size == 0) {
<div class="error-wrap">
<p>@Messages("userinfo.daysAgo.prefix") @Messages("issue.is.empty")</p>
</div>
}
<ul class="post-list-wrap row-fluid">
@for(issue <- issues) {
@partial_issues(issue, issue.project)
}
</ul>
</div>
<div id="pullRequests" class="tab-pane @isActiveTab("pullRequests")">
@if(pullRequests.size == 0) {
<div class="error-wrap">
<p>@Messages("userinfo.daysAgo.prefix") @Messages("pullRequest.is.empty")</p>
</div>
}
<ul class="post-list-wrap row-fluid">
@for(pull <- pullRequests) {
@partial_pullRequests(pull, pull.toProject)
}
</ul>
</div>
<div id="milestones" class="tab-pane @isActiveTab("milestones")">
@if(milestones.size == 0) {
<div class="error-wrap">
<p>@Messages("milestone.is.empty")</p>
</div>
}
<ul class="milestones">
@for(milestone <- milestones) {
@partial_milestones(milestone, milestone.project)
}
</ul>
</div>
}
</div>
</div>
}
</section>
</div>
</div>
<script type="text/javascript" src='@routes.Assets.at("javascripts/lib/parseuri.js")'></script>
<script type="text/javascript">
$(document).ready(function(){
$yobi.loadModule("user.View", {
"sTabSelected": "@selected"
});
});
</script>
}