(refs #8)Implementing group register/edit form.

This commit is contained in:
takezoe
2013-07-23 13:02:30 +09:00
parent e4b3f0ddef
commit e61bde1415
3 changed files with 37 additions and 12 deletions

View File

@@ -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 {

View File

@@ -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>

View File

@@ -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