mirror of
https://github.com/gitbucket/gitbucket.git
synced 2025-11-06 13:35:50 +01:00
Add the account editing page.
This commit is contained in:
@@ -7,10 +7,11 @@ class ScalatraBootstrap extends LifeCycle {
|
|||||||
context.mount(new IndexController, "/")
|
context.mount(new IndexController, "/")
|
||||||
context.mount(new SignInController, "/*")
|
context.mount(new SignInController, "/*")
|
||||||
context.mount(new UsersController, "/*")
|
context.mount(new UsersController, "/*")
|
||||||
|
context.mount(new CreateRepositoryController, "/*")
|
||||||
|
context.mount(new AccountController, "/*")
|
||||||
|
context.mount(new RepositoryViewerController, "/*")
|
||||||
context.mount(new WikiController, "/*")
|
context.mount(new WikiController, "/*")
|
||||||
context.mount(new IssuesController, "/*")
|
context.mount(new IssuesController, "/*")
|
||||||
context.mount(new CreateRepositoryController, "/*")
|
|
||||||
context.mount(new RepositoryViewerController, "/*")
|
|
||||||
context.mount(new SettingsController, "/*")
|
context.mount(new SettingsController, "/*")
|
||||||
|
|
||||||
context.addListener(new ServletContextListener(){
|
context.addListener(new ServletContextListener(){
|
||||||
|
|||||||
50
src/main/scala/app/AccountController.scala
Normal file
50
src/main/scala/app/AccountController.scala
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
package app
|
||||||
|
|
||||||
|
import service._
|
||||||
|
import util.OwnerOnlyAuthenticator
|
||||||
|
import jp.sf.amateras.scalatra.forms._
|
||||||
|
|
||||||
|
class AccountController extends AccountControllerBase
|
||||||
|
with AccountService with RepositoryService with OwnerOnlyAuthenticator
|
||||||
|
|
||||||
|
trait AccountControllerBase extends ControllerBase {
|
||||||
|
self: AccountService with RepositoryService with OwnerOnlyAuthenticator =>
|
||||||
|
|
||||||
|
case class AccountEditForm(mailAddress: String, url: Option[String])
|
||||||
|
|
||||||
|
val form = mapping(
|
||||||
|
"mailAddress" -> trim(label("Mail Address" , text(required, maxlength(100)))),
|
||||||
|
"url" -> trim(label("URL" , optional(text(maxlength(200)))))
|
||||||
|
)(AccountEditForm.apply)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Displays user information.
|
||||||
|
*/
|
||||||
|
get("/:userName") {
|
||||||
|
val userName = params("userName")
|
||||||
|
getAccountByUserName(userName) match {
|
||||||
|
case Some(a) => account.html.userinfo(a, getRepositoriesOfUser(userName, servletContext))
|
||||||
|
case None => NotFound()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
get("/:userName/_edit")(ownerOnly {
|
||||||
|
val userName = params("userName")
|
||||||
|
getAccountByUserName(userName) match {
|
||||||
|
case Some(a) => account.html.useredit(a)
|
||||||
|
case None => NotFound()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
post("/:userName/_edit", form)(ownerOnly { form =>
|
||||||
|
val userName = params("userName")
|
||||||
|
val currentDate = new java.sql.Date(System.currentTimeMillis)
|
||||||
|
updateAccount(getAccountByUserName(userName).get.copy(
|
||||||
|
mailAddress = form.mailAddress,
|
||||||
|
url = form.url,
|
||||||
|
updatedDate = currentDate))
|
||||||
|
|
||||||
|
redirect("/%s".format(userName))
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
@@ -20,18 +20,6 @@ class RepositoryViewerController extends RepositoryViewerControllerBase
|
|||||||
trait RepositoryViewerControllerBase extends ControllerBase {
|
trait RepositoryViewerControllerBase extends ControllerBase {
|
||||||
self: RepositoryService with AccountService with ReadableRepositoryAuthenticator =>
|
self: RepositoryService with AccountService with ReadableRepositoryAuthenticator =>
|
||||||
|
|
||||||
// TODO separate to AccountController?
|
|
||||||
/**
|
|
||||||
* Displays user information.
|
|
||||||
*/
|
|
||||||
get("/:owner") {
|
|
||||||
val owner = params("owner")
|
|
||||||
getAccountByUserName(owner) match {
|
|
||||||
case Some(account) => html.user(account, getRepositoriesOfUser(owner, servletContext))
|
|
||||||
case None => NotFound()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns converted HTML from Markdown for preview.
|
* Returns converted HTML from Markdown for preview.
|
||||||
*/
|
*/
|
||||||
|
|||||||
20
src/main/twirl/account/useredit.scala.html
Normal file
20
src/main/twirl/account/useredit.scala.html
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
@(account: model.Account)(implicit context: app.Context)
|
||||||
|
@import context._
|
||||||
|
@html.main(account.userName){
|
||||||
|
<form action="@path/@account.userName/_edit" method="POST" validate="true">
|
||||||
|
<fieldset>
|
||||||
|
<label><strong>Mail Address</strong></label>
|
||||||
|
<input type="text" name="mailAddress" id="mailAddress" value="@account.mailAddress"/>
|
||||||
|
<span id="error-mailAddress" class="error"></span>
|
||||||
|
</fieldset>
|
||||||
|
<fieldset>
|
||||||
|
<label><strong>URL (Optional)</strong></label>
|
||||||
|
<input type="text" name="url" id="url" style="width: 400px;" value="@account.url"/>
|
||||||
|
<span id="error-url" class="error"></span>
|
||||||
|
</fieldset>
|
||||||
|
<fieldset>
|
||||||
|
<input type="submit" class="btn btn-primary" value="Save"/>
|
||||||
|
<a href="@path/@account.userName" class="btn">Cancel</a>
|
||||||
|
</fieldset>
|
||||||
|
</form>
|
||||||
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
@(account: model.Account, repositories: List[service.RepositoryService.RepositoryInfo])(implicit context: app.Context)
|
@(account: model.Account, repositories: List[service.RepositoryService.RepositoryInfo])(implicit context: app.Context)
|
||||||
@import context._
|
@import context._
|
||||||
@import service.RepositoryService._
|
@import service.RepositoryService._
|
||||||
@main(account.userName){
|
@html.main(account.userName){
|
||||||
<div class="container-fluid">
|
<div class="container-fluid">
|
||||||
<div class="row-fluid">
|
<div class="row-fluid">
|
||||||
<div class="span4">
|
<div class="span4">
|
||||||
@@ -16,12 +16,16 @@
|
|||||||
<div class="span8">
|
<div class="span8">
|
||||||
<ul class="nav nav-tabs">
|
<ul class="nav nav-tabs">
|
||||||
<li class="active"><a href="#">Repositories</a></li>
|
<li class="active"><a href="#">Repositories</a></li>
|
||||||
|
<!--
|
||||||
<li><a href="#">Activity</a></li>
|
<li><a href="#">Activity</a></li>
|
||||||
|
-->
|
||||||
|
@if(loginAccount.isDefined && loginAccount.get.userName == account.userName){
|
||||||
<li class="pull-right">
|
<li class="pull-right">
|
||||||
<div class="button-group">
|
<div class="button-group">
|
||||||
<a href="" class="btn">Edit Your Profile</a>
|
<a href="@path/@account.userName/_edit" class="btn">Edit Your Profile</a>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
|
}
|
||||||
</ul>
|
</ul>
|
||||||
@repositories.map { repository =>
|
@repositories.map { repository =>
|
||||||
<div class="block">
|
<div class="block">
|
||||||
Reference in New Issue
Block a user