mirror of
https://github.com/gitbucket/gitbucket.git
synced 2025-11-01 11:06:06 +01:00
Delete Repository page has been implemented.
This commit is contained in:
@@ -1,8 +1,10 @@
|
||||
package app
|
||||
|
||||
import service._
|
||||
import util.Directory._
|
||||
import util.OwnerOnlyAuthenticator
|
||||
import jp.sf.amateras.scalatra.forms._
|
||||
import org.apache.commons.io.FileUtils
|
||||
|
||||
class SettingsController extends SettingsControllerBase
|
||||
with RepositoryService with AccountService with OwnerOnlyAuthenticator
|
||||
@@ -96,6 +98,33 @@ trait SettingsControllerBase extends ControllerBase {
|
||||
redirect("/%s/%s/settings/collaborators".format(owner, repository))
|
||||
})
|
||||
|
||||
/**
|
||||
* Display the delete repository page.
|
||||
*/
|
||||
get("/:owner/:repository/settings/delete")(ownerOnly {
|
||||
val owner = params("owner")
|
||||
val repository = params("repository")
|
||||
|
||||
getRepository(owner, repository, servletContext) match {
|
||||
case Some(r) => settings.html.delete(r)
|
||||
case None => NotFound()
|
||||
}
|
||||
})
|
||||
|
||||
/**
|
||||
* Delete the repository.
|
||||
*/
|
||||
post("/:owner/:repository/settings/delete")(ownerOnly {
|
||||
val owner = params("owner")
|
||||
val repository = params("repository")
|
||||
|
||||
deleteRepository(owner, repository)
|
||||
|
||||
FileUtils.deleteDirectory(getRepositoryDir(owner, repository))
|
||||
FileUtils.deleteDirectory(getWikiRepositoryDir(owner, repository))
|
||||
|
||||
redirect("/%s".format(owner))
|
||||
})
|
||||
|
||||
/**
|
||||
* Provides Constraint to validate the collaborator name.
|
||||
|
||||
@@ -42,6 +42,16 @@ trait RepositoryService { self: AccountService =>
|
||||
lastActivityDate = currentDate)
|
||||
}
|
||||
|
||||
def deleteRepository(userName: String, repositoryName: String): Unit = {
|
||||
Collaborators
|
||||
.filter { c => (c.userName is userName.bind) && (c.repositoryName is repositoryName.bind) }
|
||||
.delete
|
||||
|
||||
Repositories
|
||||
.filter { r => (r.userName is userName.bind) && (r.repositoryName is repositoryName.bind) }
|
||||
.delete
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the list of specified user's repositories information.
|
||||
*
|
||||
|
||||
21
src/main/twirl/settings/delete.scala.html
Normal file
21
src/main/twirl/settings/delete.scala.html
Normal file
@@ -0,0 +1,21 @@
|
||||
@(repository: service.RepositoryService.RepositoryInfo)(implicit context: app.Context)
|
||||
@import context._
|
||||
@html.main("Delete Repository"){
|
||||
@html.header("settings", repository)
|
||||
@menu("delete", repository){
|
||||
<form id="form" method="post" action="@path/@repository.owner/@repository.name/settings/delete">
|
||||
<h3>Delete repository</h3>
|
||||
<p>
|
||||
Once you delete a repository, there is no going back.
|
||||
</p>
|
||||
<input type="submit" class="btn btn-danger" value="Delete this repository"/>
|
||||
</form>
|
||||
}
|
||||
}
|
||||
<script>
|
||||
$(function(){
|
||||
$('#form').submit(function(){
|
||||
return confirm('Once you delete a repository, there is no going back.\nAre you sure?');
|
||||
});
|
||||
});
|
||||
</script>
|
||||
Reference in New Issue
Block a user