diff --git a/src/main/scala/app/LabelsController.scala b/src/main/scala/app/LabelsController.scala index 652674b..f84012d 100644 --- a/src/main/scala/app/LabelsController.scala +++ b/src/main/scala/app/LabelsController.scala @@ -5,6 +5,7 @@ import util.{ReferrerAuthenticator, CollaboratorsAuthenticator} import util.Implicits._ import org.scalatra.i18n.Messages +import org.scalatra.Ok class LabelsController extends LabelsControllerBase with LabelsService with IssuesService with RepositoryService with AccountService @@ -16,14 +17,9 @@ case class LabelForm(labelName: String, color: String) - val newForm = mapping( - "newLabelName" -> trim(label("Label name", text(required, labelName, maxlength(100)))), - "newColor" -> trim(label("Color", text(required, color))) - )(LabelForm.apply) - - val editForm = mapping( - "editLabelName" -> trim(label("Label name", text(required, labelName, maxlength(100)))), - "editColor" -> trim(label("Color", text(required, color))) + val labelForm = mapping( + "labelName" -> trim(label("Label name", text(required, labelName, maxlength(100)))), + "labelColor" -> trim(label("Color", text(required, color))) )(LabelForm.apply) get("/:owner/:repository/issues/labels")(referrersOnly { repository => @@ -38,9 +34,14 @@ issues.labels.html.edit(None, repository) }) - post("/:owner/:repository/issues/labels/new", newForm)(collaboratorsOnly { (form, repository) => - createLabel(repository.owner, repository.name, form.labelName, form.color.substring(1)) - redirect(s"/${repository.owner}/${repository.name}/issues/labels") + ajaxPost("/:owner/:repository/issues/labels/new", labelForm)(collaboratorsOnly { (form, repository) => + val labelId = createLabel(repository.owner, repository.name, form.labelName, form.color.substring(1)) + issues.labels.html.label( + getLabel(repository.owner, repository.name, labelId).get, + // TODO futility + countIssueGroupByLabels(repository.owner, repository.name, IssuesService.IssueSearchCondition()), + repository, + hasWritePermission(repository.owner, repository.name, context.loginAccount)) }) ajaxGet("/:owner/:repository/issues/labels/:labelId/edit")(collaboratorsOnly { repository => @@ -49,14 +50,19 @@ } getOrElse NotFound() }) - post("/:owner/:repository/issues/labels/:labelId/edit", editForm)(collaboratorsOnly { (form, repository) => + ajaxPost("/:owner/:repository/issues/labels/:labelId/edit", labelForm)(collaboratorsOnly { (form, repository) => updateLabel(repository.owner, repository.name, params("labelId").toInt, form.labelName, form.color.substring(1)) - redirect(s"/${repository.owner}/${repository.name}/issues/labels") + issues.labels.html.label( + getLabel(repository.owner, repository.name, params("labelId").toInt).get, + // TODO futility + countIssueGroupByLabels(repository.owner, repository.name, IssuesService.IssueSearchCondition()), + repository, + hasWritePermission(repository.owner, repository.name, context.loginAccount)) }) - get("/:owner/:repository/issues/labels/:labelId/delete")(collaboratorsOnly { repository => + ajaxPost("/:owner/:repository/issues/labels/:labelId/delete")(collaboratorsOnly { repository => deleteLabel(repository.owner, repository.name, params("labelId").toInt) - redirect(s"/${repository.owner}/${repository.name}/issues/labels") + Ok() }) /** diff --git a/src/main/scala/model/Labels.scala b/src/main/scala/model/Labels.scala index e36746a..73ba1b7 100644 --- a/src/main/scala/model/Labels.scala +++ b/src/main/scala/model/Labels.scala @@ -29,9 +29,9 @@ val b = color.substring(4, 6) if(Integer.parseInt(r, 16) + Integer.parseInt(g, 16) + Integer.parseInt(b, 16) > 408){ - "000000" + "black" } else { - "FFFFFF" + "white" } } } diff --git a/src/main/scala/service/LabelsService.scala b/src/main/scala/service/LabelsService.scala index 37c3d35..de1dcb8 100644 --- a/src/main/scala/service/LabelsService.scala +++ b/src/main/scala/service/LabelsService.scala @@ -12,8 +12,8 @@ def getLabel(owner: String, repository: String, labelId: Int)(implicit s: Session): Option[Label] = Labels.filter(_.byPrimaryKey(owner, repository, labelId)).firstOption - def createLabel(owner: String, repository: String, labelName: String, color: String)(implicit s: Session): Unit = - Labels insert Label( + def createLabel(owner: String, repository: String, labelName: String, color: String)(implicit s: Session): Int = + Labels returning Labels.map(_.labelId) += Label( userName = owner, repositoryName = repository, labelName = labelName, diff --git a/src/main/twirl/issues/labels/edit.scala.html b/src/main/twirl/issues/labels/edit.scala.html index c420b8d..b21d33d 100644 --- a/src/main/twirl/issues/labels/edit.scala.html +++ b/src/main/twirl/issues/labels/edit.scala.html @@ -1,41 +1,61 @@ @(label: Option[model.Label], repository: service.RepositoryService.RepositoryInfo)(implicit context: app.Context) @import context._ @import view.helpers._ -@defining(if(label.isEmpty) "new" else "edit"){ mode => -
-
- - - -
- +@defining(label.map(_.labelId).getOrElse("new")){ labelId => +
+ + +
+
+ + - - + + - @if(mode == "edit"){ - - } -
+ } diff --git a/src/main/twirl/issues/labels/label.scala.html b/src/main/twirl/issues/labels/label.scala.html new file mode 100644 index 0000000..4ff82b2 --- /dev/null +++ b/src/main/twirl/issues/labels/label.scala.html @@ -0,0 +1,36 @@ +@(label: model.Label, + counts: Map[String, Int], + repository: service.RepositoryService.RepositoryInfo, + hasWritePermission: Boolean)(implicit context: app.Context) +@import context._ +@import view.helpers._ + + +
+ +
+
+ @counts.get(label.labelName).getOrElse(0) open issues +
+
+ @if(hasWritePermission){ +
+
+ Edit +    + Delete +
+
+ } +
+ + diff --git a/src/main/twirl/issues/labels/list.scala.html b/src/main/twirl/issues/labels/list.scala.html index 7d0ac2b..a9a8129 100644 --- a/src/main/twirl/issues/labels/list.scala.html +++ b/src/main/twirl/issues/labels/list.scala.html @@ -11,41 +11,15 @@ - + @labels.map { label => - - - - } - @if(labels.isEmpty){ + @_root_.issues.labels.html.label(label, counts, repository, hasWritePermission) + } + @if(labels.isEmpty){
@labels.size labels
-
- -
-
- @counts.get(label.labelName).getOrElse(0) open issues -
-
- @if(hasWritePermission){ -
-
- Edit -    - Delete -
-
- } -
-
No labels to show. @@ -60,15 +34,11 @@ } diff --git a/src/main/twirl/issues/tab.scala.html b/src/main/twirl/issues/tab.scala.html index 4bb900f..80ee66f 100644 --- a/src/main/twirl/issues/tab.scala.html +++ b/src/main/twirl/issues/tab.scala.html @@ -12,16 +12,16 @@
@if(newButton){ @if(active == "issues"){ - New issue + New issue } @if(active == "pulls"){ - New pull request + New pull request } @if(active == "labels"){ - New label + New label } @if(active == "milestones"){ - New milestone + New milestone } }