mirror of
https://github.com/gitbucket/gitbucket.git
synced 2025-11-05 21:15:49 +01:00
(refs #8)Implementing group register/edit form.
This commit is contained in:
@@ -54,7 +54,11 @@ trait UserManagementControllerBase extends AccountManagementControllerBase {
|
|||||||
)(EditGroupForm.apply)
|
)(EditGroupForm.apply)
|
||||||
|
|
||||||
get("/admin/users")(adminOnly {
|
get("/admin/users")(adminOnly {
|
||||||
admin.users.html.list(getAllUsers())
|
val users = getAllUsers()
|
||||||
|
val members = users.collect { case account if(account.isGroupAccount) =>
|
||||||
|
account.userName -> getGroupMembers(account.userName)
|
||||||
|
}.toMap
|
||||||
|
admin.users.html.list(users, members)
|
||||||
})
|
})
|
||||||
|
|
||||||
get("/admin/users/_new")(adminOnly {
|
get("/admin/users/_new")(adminOnly {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
@(account: Option[model.Account], members: List[String])(implicit context: app.Context)
|
@(account: Option[model.Account], members: List[String])(implicit context: app.Context)
|
||||||
@import context._
|
@import context._
|
||||||
@import view.helpers._
|
@import view.helpers._
|
||||||
@html.main(if(account.isEmpty) "New User" else "Update User"){
|
@html.main(if(account.isEmpty) "New Group" else "Update Group"){
|
||||||
@admin.html.menu("users"){
|
@admin.html.menu("users"){
|
||||||
<form method="POST" action="@if(account.isEmpty){@path/admin/users/_newgroup} else {@path/admin/users/@account.get.userName/_editgroup}" validate="true">
|
<form method="POST" action="@if(account.isEmpty){@path/admin/users/_newgroup} else {@path/admin/users/@account.get.userName/_editgroup}" validate="true">
|
||||||
<div class="row-fluid">
|
<div class="row-fluid">
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
<label><strong>Members</strong></label>
|
<label><strong>Members</strong></label>
|
||||||
<ul id="members" class="collaborator">
|
<ul id="members" class="collaborator">
|
||||||
@members.map { userName =>
|
@members.map { userName =>
|
||||||
<li data-userName="@userName">
|
<li data-name="@userName">
|
||||||
<a href="@path/@url(userName)">@userName</a>
|
<a href="@path/@url(userName)">@userName</a>
|
||||||
<a href="#" class="remove">(remove)</a>
|
<a href="#" class="remove">(remove)</a>
|
||||||
</li>
|
</li>
|
||||||
@@ -35,7 +35,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<fieldset class="margin">
|
<fieldset class="margin">
|
||||||
<input type="submit" class="btn btn-success" id="submit" value="@if(account.isEmpty){Create Group} else {Update Group}"/>
|
<input type="submit" class="btn btn-success" value="@if(account.isEmpty){Create Group} else {Update Group}"/>
|
||||||
<a href="@path/admin/users" class="btn">Cancel</a>
|
<a href="@path/admin/users" class="btn">Cancel</a>
|
||||||
</fieldset>
|
</fieldset>
|
||||||
</form>
|
</form>
|
||||||
@@ -56,35 +56,47 @@ $(function(){
|
|||||||
$('#error-memberName').text('');
|
$('#error-memberName').text('');
|
||||||
var userName = $('#memberName').val();
|
var userName = $('#memberName').val();
|
||||||
|
|
||||||
|
// check empty
|
||||||
|
if($.trim(userName) == ''){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
// TODO check existence
|
// TODO check existence
|
||||||
|
|
||||||
|
|
||||||
// check duplication
|
// check duplication
|
||||||
var exists = $('#members li').filter(function(){
|
var exists = $('#members li').filter(function(){
|
||||||
return $(this).data('userName') == userName;
|
return $(this).data('name') == userName;
|
||||||
}).length > 0;
|
}).length > 0;
|
||||||
if(exists){
|
if(exists){
|
||||||
$('#error-memberName').text('User has been already added.');
|
$('#error-memberName').text('User has been already added.');
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// add member
|
||||||
$('#members').append($('<li>')
|
$('#members').append($('<li>')
|
||||||
.data('userName', userName)
|
.data('name', userName)
|
||||||
.append($('<a>').attr('href', '@path/' + userName).text(userName))
|
.append($('<a>').attr('href', '@path/' + userName).text(userName))
|
||||||
.append(' ')
|
.append(' ')
|
||||||
.append($('<a>').attr('href', '#').addClass('remove').text('(remove)')));
|
.append($('<a>').attr('href', '#').addClass('remove').text('(remove)')));
|
||||||
$('#memberName').val('');
|
$('#memberName').val('');
|
||||||
|
|
||||||
|
// update hidden value
|
||||||
|
var userNames = $('#members li').map(function(i, e){
|
||||||
|
return $(e).data('name');
|
||||||
|
}).get().join(',');
|
||||||
|
$('#memberNames').val(userNames);
|
||||||
});
|
});
|
||||||
|
|
||||||
$(document).on('click', '.remove', function(){
|
$(document).on('click', '.remove', function(){
|
||||||
|
// remove member
|
||||||
$(this).parent().remove();
|
$(this).parent().remove();
|
||||||
});
|
|
||||||
|
|
||||||
$('#submit').click(function(){
|
// update hidden value
|
||||||
var userNames = $('#members li').map(function(i, e){
|
var userNames = $('#members li').map(function(i, e){
|
||||||
return $(e).data('userName');
|
return $(e).data('name');
|
||||||
}).get().join(',');
|
}).get().join(',');
|
||||||
$('#memberNames').val(userNames);
|
$('#memberNames').val(userNames);
|
||||||
return true;
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
@(users: List[model.Account])(implicit context: app.Context)
|
@(users: List[model.Account], members: Map[String, List[String]])(implicit context: app.Context)
|
||||||
@import context._
|
@import context._
|
||||||
@import view.helpers._
|
@import view.helpers._
|
||||||
@html.main("Manage Users"){
|
@html.main("Manage Users"){
|
||||||
@@ -33,7 +33,16 @@
|
|||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<hr>
|
<hr>
|
||||||
@if(!account.isGroupAccount){
|
@if(account.isGroupAccount){
|
||||||
|
@if(members(account.userName).isEmpty){
|
||||||
|
No members
|
||||||
|
} else {
|
||||||
|
Members:
|
||||||
|
@members(account.userName).map { userName =>
|
||||||
|
@avatar(userName, 20, tooltip = true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
<i class="icon-envelope"></i> @account.mailAddress
|
<i class="icon-envelope"></i> @account.mailAddress
|
||||||
@account.url.map { url =>
|
@account.url.map { url =>
|
||||||
<i class="icon-home"></i> @url
|
<i class="icon-home"></i> @url
|
||||||
|
|||||||
Reference in New Issue
Block a user