File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
File name
Commit message
Commit date
2015-01-23
2015-01-23
2015-06-18
2015-06-18
@**
* Yona, 21st Century Project Hosting SW
*
* Copyright Yona & Yobi Authors & NAVER Corp.
* https://yona.io
**@
@(message: String, project: Project, histories: List[models.History], tabId: String)
@import org.apache.commons.lang.StringUtils
@import utils.JodaDateUtil
@import utils.TemplateHelper._
@import utils.AccessControl._
@import utils.Markdown
@import models.enumeration._
@import scala.collection.immutable._
@isActiveTab(tab:String) = @{
if (tab == tabId) {"active"}
}
@projectLayout(project.name + " - " + Messages("menu.home") + " |:| " + project.overview, project, utils.MenuType.PROJECT_HOME) {
@projectMenu(project, utils.MenuType.PROJECT_HOME, "")
<div class="page-wrap-outer">
<div class="project-page-wrap">
<div class="project-breadcrumb hide show-in-mobile">
<span class="project-author"><a href="@routes.UserApp.userInfo(project.owner)">@project.owner</a></span>
<span class="project-separator">/</span>
<span class="project-name"><a href="@routes.ProjectApp.project(project.owner, project.name)">@project.name</a></span>
@if(project.isPrivate){
<span class="project-private">
<i class="yobicon-lock"></i>
</span>
}
</div>
<div class="project-home-header row-fluid">
<div class="project-overview span9 span-hard-wrap">
<div class="project-description" data-toggle="project-description-tab">
<h3><span id="project-description" class="markdown-wrap">@if(StringUtils.isEmpty(project.overview)) {@Messages("project.description.placeholder")} else {@Html(Markdown.render(project.overview))}</span>
@if(isAllowed(UserApp.currentUser(), project.asResource(), Operation.UPDATE)){
<button type="button" class="ybtn ybtn-minimum" data-toggle="description-edit"><i class="yobicon-edit"></i></button>
}
</h3>
</div>
<div class="project-description-edit hidden" data-toggle="project-description-tab">
<form action="@routes.ProjectApp.projectOverviewUpdate(project.owner, project.name)" onsubmit="return false">
<input type="text" id="project-description-input" class="span6" placeholder="@Messages("project.description.placeholder")" value="@project.overview"/>
<button type="button" class="ybtn ybtn-success" id="descriptionSaveBtn" >@Messages("button.save")</button> <button type="button" class="ybtn" data-toggle="description-cancel">@Messages("button.cancel")</button>
</form>
</div>
</div>
@if(project.menuSetting.code) {
<div class="project-clone-wrap span3 hide-in-mobile">
<input type="text" class="project-clone-url" id="cloneURL" readonly="readonly" value="@if(project.isGit){@CodeApp.getURLWithLoginId(project)} else {@CodeApp.getURL(project)}">
<button class="ybtn project-clone-button" id="cloneURLBtn">@Messages("code.copyUrl")</button>
</div>
}
</div>
<div class="row-fluid">
<div class="span9 span-left-pane">
<ul class="nav nav-tabs">
<li class="@isActiveTab("readme")">
<a href="@routes.ProjectApp.project(project.owner, project.name)">README</a>
</li>
<li class="@isActiveTab("history")">
<a href="@buildQueryString(routes.ProjectApp.project(project.owner, project.name), Map("tabId"->"history"))">
@Messages("project.history.recent")
</a>
</li>
<li class="@isActiveTab("dashboard")">
<a href="@buildQueryString(routes.ProjectApp.project(project.owner, project.name), Map("tabId"->"dashboard"))">
@Messages("project.dashboard")
</a>
</li>
</ul>
<div class="tab-content">
<div class="tab-pane active">
@tabId match {
case "readme" => {
@partial_readme(project)
}
case "history" => {
@partial_history(histories)
}
case "dashboard" => {
@partial_dashboard(project)
}
}
</div>
</div>
</div>
<div class="span3 span-right-pane">
<div class="bubble-wrap gray project-home">
<div class="project-btn-wrap">
@if(project.menuSetting.issue) {
<span class="project-btn-item">
<a href="@routes.IssueApp.newIssueForm(project.owner, project.name)" class="ybtn ybtn-success">@Messages("button.newIssue")</a>
</span>
}
@if(project.menuSetting.code) {
@if(project.vcs.equals("GIT")){
<span class="project-btn-item">
<a href="@routes.PullRequestApp.newFork(project.owner, project.name)" class="ybtn ybtn-inverse">
@Messages("fork")
</a>
</span>
}
}
</div>
@if(project.menuSetting.milestone) {
@defining(Milestone.findOpenMilestones(project.id)){ milestones =>
@if(milestones.length > 0){
@views.html.milestone.partial_status(milestones(0), project)
}
}
}
<div class="inner member-info">
<header>
<h3>@Messages("project.members")</h3>
@if(isAllowed(UserApp.currentUser(), project.labelsAsResource(), Operation.UPDATE)){
<a href="@routes.ProjectApp.members(project.owner, project.name)" class="ybtn ybtn-minimum" id="member-add-link"><i class="yobicon-addfriend"></i> @Messages("button.add")</a>
}
</header>
<div class="member-wrap">
<ul class="project-members">
@for(member <- User.findUsersByProject(project.id)){
<li class="member">
<a href="@routes.UserApp.userInfo(member.loginId)" class="avatar-wrap img-rounded pull-left small">
<img src="@member.avatarUrl" alt="@member.loginId" width="24" height="24">
</a>
<a href="@routes.UserApp.userInfo(member.loginId)" class="name">
<strong>@member.getDisplayName (@member.loginId)</strong>
</a>
</li>
}
</ul>
</div>
</div>
@if(isAllowed(UserApp.currentUser(), project.asResource(), Operation.LEAVE)){
<button type="button" class="ybtn ybtn-minimum ybtn-danger pull-right" id="projectLeaveBtn" data-href="@routes.ProjectApp.deleteMember(project.owner, project.name, UserApp.currentUser().id)">@Messages("project.member.leave")</button>
}
</div>
</div>
</div>
@** Confirm to leave the project **@
<div id="alertLeave" class="modal hide">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">×</button>
<h3>@Messages("project.member.leave")</h3>
</div>
<div class="modal-body">
<p>@Messages("project.member.leaveConfirm")</p>
</div>
<div class="modal-footer">
<button type="button" class="ybtn ybtn-info ybtn-mini" id="leaveBtn">@Messages("button.yes")</button>
<button type="button" class="ybtn ybtn-mini" data-dismiss="modal">@Messages("button.no")</button>
</div>
</div>
</div>
</div>
@common.markdown(project)
<script type="text/javascript">
$(document).ready(function(){
$yobi.loadModule("project.Home", {
"sURLProjectLabels": "@routes.ProjectApp.labels(project.owner, project.name)",
"sURLLabels" : "@routes.LabelApp.labels()",
"sURLLabelCategories": "@routes.LabelApp.categories()",
"welLabelBoard": $('#label-board'),
"welLabelEditorToggle": $('#label-editor-toggle'),
"nProjectId" : "@project.id",
"sURLProject" : "@routes.ProjectApp.projectOverviewUpdate(project.owner, project.name)",
"sURLZeroClipboard" : "@routes.Assets.at("javascripts/lib/jquery/ZeroClipboard.swf")"
});
});
</script>
}