Filter sur Admin (manage user)

Notification d'ajout de token dans admin
Correction message addConference Dates
Correction bug MailSenderService quand echec de l'envoi
This commit is contained in:
2008-02-26 00:05:22 +00:00
parent 7d94c4d0e1
commit 304937f955
5 changed files with 52 additions and 18 deletions

View File

@@ -20,9 +20,9 @@
User list User list
</div> </div>
<div class="dynamicListPlaceholder"> <div class="dynamicListPlaceholder">
Please enter a value in the filter field. Sorry, there's no users matching this filter.
</div> </div>
<div class="dynamicListItem" id="person_item_pattern" style="display:none;height:0px;width:0px;"> <div class="dynamicListItemPattern" id="person_item_pattern" style="display:none;height:0px;width:0px;">
<div id="person_name" style="display:table-cell;">Name</div> <div id="person_name" style="display:table-cell;">Name</div>
<div style="display:table-cell"> <div style="display:table-cell">
<a href="#" id="person_add_token">+</a> <a href="#" id="person_add_token">+</a>
@@ -31,6 +31,7 @@
</div> </div>
</div> </div>
</div> </div>
<input type="button" id="sendNotificationsButton" value="Send email notifications" style="display:none;"/>
</div> </div>
</body> </body>

View File

@@ -1,8 +1,9 @@
var AdminManager = Class.create({ var AdminManager = Class.create({
initialize: function(){ initialize: function(){
this.input = $('userFilterInput'); this.input = $('userFilterInput');
this.input.observe('keyPress',this.userInputKeyHandler.bind(this)); this.input.observe('keypress',this.userInputKeyHandler.bindAsEventListener(this));
this.fillUserList(); $('sendNotificationsButton').observe('click',this.sendNotifications.bind(this));
this.filterTimeout = window.setTimeout(this.fillUserList.bind(this),0);
}, },
addConferenceCreationToken: function(event,user_object){ addConferenceCreationToken: function(event,user_object){
AdminController.addConferenceCreationToken(user_object.login, AdminController.addConferenceCreationToken(user_object.login,
@@ -11,6 +12,7 @@ var AdminManager = Class.create({
updated_number); updated_number);
} }
); );
$('sendNotificationsButton').appear({duration:0.5});
event.stop(); event.stop();
}, },
removeConferenceCreationToken: function(event,user_object){ removeConferenceCreationToken: function(event,user_object){
@@ -22,7 +24,16 @@ var AdminManager = Class.create({
); );
event.stop(); event.stop();
}, },
userInputKeyHandler: function(){ sendNotifications: function(){
AdminController.sendNotifications(function(){
alert("The users have been notified of their new rights.");
});
},
userInputKeyHandler: function(event){
window.clearTimeout(this.filterTimeout);
this.filterTimeout = window.setTimeout(
this.fillUserList.bind(this),1000);
this.input.pulsate({duration:1.0,from:0.7,pulses:3});
switch(event.keyCode){ switch(event.keyCode){
case Event.KEY_RETURN: case Event.KEY_RETURN:
this.addRemote(); this.addRemote();
@@ -31,12 +42,19 @@ var AdminManager = Class.create({
} }
}, },
fillUserList: function(){ fillUserList: function(){
AdminController.getUsersList(function(people){ var filter = this.input.value;
AdminController.getUsersList(filter,function(people){
$$('#userDynamicList .dynamicListItem').invoke("remove");
var content; var content;
var elemName; var elemName;
var contentValue; var contentValue;
var id; var id;
var person; var person;
if(people.length > 0){
$$(".dynamicListPlaceholder").invoke("fade");
} else {
$$(".dynamicListPlaceholder").invoke("appear");
}
for (var i = 0; i < people.length; i++) { for (var i = 0; i < people.length; i++) {
person = people[i]; person = people[i];
id = "_"+person.id; id = "_"+person.id;
@@ -46,6 +64,9 @@ var AdminManager = Class.create({
dwr.util.setValue("person_name" + id, person.firstName + " " + person.lastName); dwr.util.setValue("person_name" + id, person.firstName + " " + person.lastName);
dwr.util.setValue("person_num_tokens"+id,person.numTokens); dwr.util.setValue("person_num_tokens"+id,person.numTokens);
$(elemName).removeClassName("dynamicListItemPattern");
$(elemName).addClassName("dynamicListItem");
$("person_add_token"+id).observe('click', $("person_add_token"+id).observe('click',
this.addConferenceCreationToken.bindAsEventListener(this,person)); this.addConferenceCreationToken.bindAsEventListener(this,person));
$("person_remove_token"+id).observe('click', $("person_remove_token"+id).observe('click',

View File

@@ -799,6 +799,12 @@ div.user_new {
.button .down { .button .down {
background-image: url(../images/button-box-down.png); background-image: url(../images/button-box-down.png);
} }
.button .hover div {
background-image: url(../images/button-box-hover.png);
}
.button .down div {
background-image: url(../images/button-box-down.png);
}
.to-right { .to-right {
float: right; float: right;

View File

@@ -3,7 +3,6 @@ package org.yacos.web.admin;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
@@ -14,7 +13,6 @@ import org.yacos.core.exceptions.NoConferenceCreationTokenLeftException;
import org.yacos.core.users.IUserManager; import org.yacos.core.users.IUserManager;
import org.yacos.core.users.User; import org.yacos.core.users.User;
import org.yacos.web.system.controller.MailSenderService; import org.yacos.web.system.controller.MailSenderService;
import org.yacos.web.system.session.SessionService;
import org.yacos.web.system.session.YACOSUtils; import org.yacos.web.system.session.YACOSUtils;
public class AdminController extends MultiActionController { public class AdminController extends MultiActionController {
@@ -79,25 +77,33 @@ public class AdminController extends MultiActionController {
User user; User user;
for(String login : addedConferenceCreationTokens){ for(String login : addedConferenceCreationTokens){
user = userManager.getUser(login); user = userManager.getUser(login);
MailSenderService.getInstance().sendEMail(user.getEmail(), // We can't be sure of what happened on the client side, so we avoid sending mails for nothing
if(user.getConferenceCreationTokens() > 0 ){
MailSenderService.getInstance().sendEMail(user.getEmail(),
"YACOS : "+user.getFirstName()+" "+user.getLastName()+" you have been granted a conference creation token", "YACOS : "+user.getFirstName()+" "+user.getLastName()+" you have been granted a conference creation token",
"You receive this email because the YACOS admin allowed you to create a new conference in the system.\n" "You receive this email because the YACOS admin allowed you to create a new conference in the system.\n"
+ "Your current conference creation token count is "+user.getConferenceCreationTokens()+"\n" + "Your current conference creation token count is "+user.getConferenceCreationTokens()+"\n"
+ YACOSUtils.fullURL("addConference.htm")); + YACOSUtils.fullURL("addConference.htm"));
}
} }
} }
public List<DWRPersonBean> getUsersList(){ public List<DWRPersonBean> getUsersList(String filter){
List<DWRPersonBean> beans = new ArrayList<DWRPersonBean>(); List<DWRPersonBean> beans = new ArrayList<DWRPersonBean>();
DWRPersonBean bean; DWRPersonBean bean;
for(User user : userManager.getUsers()){ for(User user : userManager.getUsers()){
bean = new DWRPersonBean(); if (filter.equals("") ||
bean.setLogin(user.getLogin()); user.getFirstName().toLowerCase().startsWith(filter.toLowerCase()) ||
bean.setFirstName(user.getFirstName()); user.getLastName().toLowerCase().startsWith(filter.toLowerCase())){
bean.setLastName(user.getLastName());
bean.setId(beans.size()); bean = new DWRPersonBean();
bean.setNumTokens(conferenceManager.conferenceCreationTokens(user.getLogin())); bean.setLogin(user.getLogin());
beans.add(bean); bean.setFirstName(user.getFirstName());
bean.setLastName(user.getLastName());
bean.setId(beans.size());
bean.setNumTokens(conferenceManager.conferenceCreationTokens(user.getLogin()));
beans.add(bean);
}
} }
return beans; return beans;
} }

View File

@@ -29,7 +29,7 @@ public class MailSenderService {
try { try {
mailSender.send(message); mailSender.send(message);
} catch (Exception e) { } catch (Exception e) {
logger.warn("Could not send email to "+toEmail,e); logger.warn("Could not send email to "+toEmail+" :\n"+e.getCause());
} }
} }