Skip to content

Commit

Permalink
subtask: Make Subtak button & design
Browse files Browse the repository at this point in the history
  • Loading branch information
doortts committed Mar 13, 2017
1 parent caf0ee1 commit b629b98
Show file tree
Hide file tree
Showing 8 changed files with 74 additions and 36 deletions.
19 changes: 19 additions & 0 deletions app/assets/stylesheets/less/_page.less
Original file line number Diff line number Diff line change
Expand Up @@ -6687,6 +6687,25 @@ div.diff-body[data-outdated="true"] tr:hover .icon-comment {
color: #9e9e9e;
}

.subtask-message {
font-size: 12px;
color: #9E9E9E;
line-height: 15px;
padding: 7px 0 5px 0;
border: 1px solid #ddd;
text-align: center;
max-width: 80px;
&:hover {
color: @primary;
cursor:pointer;
border: 1px solid @primary;
}
}

.subtask-wrap {
display: none;
}

.infos, .parent-issue {
.upload-progress {
display: inline-block;
Expand Down
6 changes: 5 additions & 1 deletion app/assets/stylesheets/less/_responsive.less
Original file line number Diff line number Diff line change
Expand Up @@ -434,6 +434,11 @@
}
}
}

.subtask-message {
min-width: 50px;
margin-left: -40px;
}
}

@media all and (max-width:1199px){
Expand Down Expand Up @@ -536,7 +541,6 @@
.project-header-outer {
max-width: 1199px;
min-width: 1000px;
padding:0 10px;

.project-header-inner {
.project-header-wrap {
Expand Down
9 changes: 9 additions & 0 deletions app/controllers/IssueApp.java
Original file line number Diff line number Diff line change
Expand Up @@ -410,6 +410,15 @@ public static Result newIssue(String ownerName, String projectName) {
}

final Issue newIssue = issueForm.get();
if(StringUtils.isNotEmpty(newIssue.targetProjectId)){
Project toAnotherProject = Project.find.byId(Long.valueOf(newIssue.targetProjectId));
if(toAnotherProject == null){
flash(Constants.WARNING, Messages.get("error.notfound.project"));
return badRequest(create.render("title.newIssue", new Form<>(Issue.class), project, null));
} else {
project = toAnotherProject;
}
}
removeAnonymousAssignee(newIssue);

if (newIssue.body == null) {
Expand Down
4 changes: 4 additions & 0 deletions app/models/Issue.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import org.apache.shiro.util.CollectionUtils;
import play.data.Form;
import play.data.format.Formats;
import play.db.ebean.Model.Finder;
import play.i18n.Messages;
import utils.JodaDateUtil;

Expand Down Expand Up @@ -95,6 +96,9 @@ public Issue(Project project, User author, String title, String body) {
this.state = State.OPEN;
}

@Transient
public String targetProjectId;

@Transient
public String parentIssueId;

Expand Down
37 changes: 12 additions & 25 deletions app/views/issue/create.scala.html
Original file line number Diff line number Diff line change
Expand Up @@ -30,38 +30,24 @@
<dl>
<dd>
@defining(issueForm.errors().get("title")) { errors =>
<input type="text" id="title" name="title" placeholder="@Messages("title")" value="" class="text title zen-mode @if(errors != null) {error}" maxlength="250" tabindex="1">
<div class="span12">
<div class="span11">
<input type="text" id="title" name="title" value="" class="text title @if(errors != null) {error}" maxlength="250" tabindex="1" placeholder="@Messages("title")">
</div>
<div class="span1"><div><div class="subtask-message">Options</div></div></div>
</div>
@if(errors != null) {
<div class="message">
@for(error <- errors) {
<div>@Messages(error.message)</div>
}
</div>
}
<div class="subtitle-message">+ Sub task</div>
<div class="subtask-wrap">
<div class="span3">
<select id="projects" name="targetProjectName" data-format="projects" data-placeholder="@Messages("organization.choose.projects")" data-toggle="select2" data-container-css-class="fullsize" >
<option value="@project.name" data-avatar-url="@urlToProjectLogo(project)">@project.name</option>
@for(project <- UserApp.currentUser().myProjects("")) {
<option value="@project.name" data-avatar-url="@urlToProjectLogo(project)">@project.name</option>
}
</select>
</div>
<div class="span8">
<select id="parentId" name="parentIssueId" data-format="issues" data-placeholder="@Messages("organization.choose.projects")" data-toggle="select2" data-container-css-class="fullsize" >
<option disabled selected value> -- select an issue -- </option>
@if(StringUtils.isNotEmpty(parentIssueId)){
@defining(Issue.finder.byId(Long.parseLong(parentIssueId))) { issue =>
<option value="@parentIssueId" selected>#@issue.getNumber. @issue.title</option>
}
}
@for(issue <- Issue.findByProject(project, "", 1)) {
<option value="@issue.id" @if(issue.id+"" == parentIssueId){selected}>#@issue.getNumber. @issue.title</option>
}
</select>
</div>
</div>
@if(StringUtils.isNotEmpty(parentIssueId)) {
@partial_select_subtask(project, Long.parseLong(parentIssueId))
} else {
@partial_select_subtask(project, null)
}
}
</dd>
</dl>
Expand Down Expand Up @@ -149,6 +135,7 @@
<link rel="stylesheet" type="text/css" media="screen" href="@routes.Assets.at("javascripts/lib/atjs/jquery.atwho.css")">
<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.caret.min.js")"></script>
<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.atwho.js")"></script>
<script type="text/javascript" src="@routes.Assets.at("javascripts/common/yona.Subtask.js")"></script>
<script type="text/javascript">
$(function(){
// yobi.issue.Write
Expand Down
10 changes: 8 additions & 2 deletions app/views/issue/edit.scala.html
Original file line number Diff line number Diff line change
Expand Up @@ -37,15 +37,20 @@
</dt>
<dd>
@defining(issueForm.errors().get("title")) { errors =>
<input type="text" id="title" name="title" value="@issue.title" class="zen-mode text title @if(errors != null) {error}" maxlength="250" tabindex="1" placeholder="@Messages("title.text")">
<div class="span12">
<div class="span11">
<input type="text" id="title" name="title" value="" class="text title @if(errors != null) {error}" maxlength="250" tabindex="1" placeholder="@Messages("title")">
</div>
<div class="span1 subtask-message">Options</div>
</div>
@if(errors != null) {
<div class="message">
@for(error <- errors) {
<div>@Messages(error.message)</div>
}
</div>
}
@partial_select_subtask(project, issue, parentIssueId)
@partial_select_subtask(project, parentIssueId)
}
</dd>
</dl>
Expand Down Expand Up @@ -177,6 +182,7 @@
<link rel="stylesheet" type="text/css" media="screen" href="@routes.Assets.at("javascripts/lib/atjs/jquery.atwho.css")">
<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.caret.min.js")"></script>
<script type="text/javascript" src="@routes.Assets.at("javascripts/lib/atjs/jquery.atwho.js")"></script>
<script type="text/javascript" src="@routes.Assets.at("javascripts/common/yona.Subtask.js")"></script>
<script type="text/javascript">
$(function(){
// yobi.issue.Write
Expand Down
15 changes: 7 additions & 8 deletions app/views/issue/partial_select_subtask.scala.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,23 +4,22 @@
* Copyright Yona & Yobi Authors & NAVER Corp.
* https://yona.io
**@
@(project:Project, issue:Issue, parentIssueId:Long)
@(project:Project, parentIssueId:Long)

@import utils.TemplateHelper._

<div class="subtitle-message">+ Sub task</div>
<div class="subtask-wrap">
<div class="span3">
<select id="projects" name="targetProjectName" data-format="projects" data-placeholder="@Messages("organization.choose.projects")" data-toggle="select2" data-container-css-class="fullsize" >
<option value="@project.name" data-avatar-url="@urlToProjectLogo(project)">@project.name</option>
<select id="targetProjectId" name="targetProjectId" data-format="projects" data-placeholder="@Messages("organization.choose.projects")" data-toggle="select2" data-container-css-class="fullsize" disabled>
<option value="@project.id" data-avatar-url="@urlToProjectLogo(project)">@project.name</option>
@for(project <- UserApp.currentUser().myProjects("")) {
<option value="@project.name" data-avatar-url="@urlToProjectLogo(project)">@project.name</option>
<option value="@project.id" data-avatar-url="@urlToProjectLogo(project)">@project.name</option>
}
</select>
</div>
<div class="span8">
<select id="parentId" name="parentIssueId" data-format="issues" data-placeholder="@Messages("organization.choose.projects")" data-toggle="select2" data-container-css-class="fullsize" >
<option value="" selected> -- select an issue -- </option>
<div class="span6">
<select id="parentId" name="parentIssueId" data-format="issues" data-placeholder="@Messages("organization.choose.projects")" data-toggle="select2" data-container-css-class="fullsize" disabled>
<option value="" selected> -- select a parent issue -- </option>
@if(Option(parentIssueId).isDefined){
@defining(Issue.finder.byId(parentIssueId)) { issue =>
<option value="@issue.id" selected>#@issue.getNumber. @issue.title</option>
Expand Down
10 changes: 10 additions & 0 deletions public/javascripts/common/yona.Subtask.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
$(function () {
$(".subtask-message").on("click", function () {
var subtaskWrap = $(".subtask-wrap");
subtaskWrap.toggle();
var subtaskInputFields = subtaskWrap.find("select");
subtaskInputFields.each(function(){
this.disabled = !this.disabled;
});
});
});

0 comments on commit b629b98

Please sign in to comment.