Ajout du service d'envoi d'email

Mise en place des invitations dans creer conf
Mise en place de proprietés de config pour Servlet-config.xml
Ajout des listes dynamiques dans le CSS
This commit is contained in:
2008-02-11 22:47:22 +00:00
parent 65d3e8cbcf
commit 5799259547
14 changed files with 397 additions and 164 deletions

View File

@@ -1 +1,3 @@
download.dir.path=../server/default/data/uploadedFiles/
download.dir.path=../server/default/data/uploadedFiles/
mailService.fromEmailAddress=system@yacos.dreamhosters.com
mailService.replyToEmailAddress=no-reply@yacos.dreamhosters.com

View File

@@ -97,7 +97,7 @@ form.submission.listauthor=Article's author
form.submission.mainauthor=Main author
form.submission.secondaryauthor=Secondary authors
form.submission.file=File
form.addConference.invitationsHeader=Invitations
button.add=Add
@@ -162,7 +162,7 @@ submissionArticle.file=please choose an article to submit
#valider les articles
validate.download=download the article
validate.report=consulter the result of the evaluation
validate.report=View the result of the evaluation
validate.validate=validate
validate.reject=reject

View File

@@ -7,6 +7,8 @@
<script type='text/javascript' src='./dwr/util.js'></script>
<script type='text/javascript' src='./dwr/interface/AddCriteriaJS.js'></script>
<script type='text/javascript' src='./javascripts/prototype.js'></script>
<script type='text/javascript' src='./javascripts/yacos/addConference_invitation.js'></script>
<script type='text/javascript' src='./javascripts/scriptaculous.js'></script>
<script type='text/javascript'>
@@ -81,15 +83,6 @@ function addPerson(eleid) {
dwr.engine.endBatch();
}
function addInvitation() {
var email = $("emailAddress").value;
dwr.engine.beginBatch();
AddCriteriaJS.addInvitation(email);
fillTable();
fillTable2();
dwr.engine.endBatch();
}
function deletePerson(eleid) {
var person = peopleCache2[eleid.substring(11)];
if (confirm("Are you sure you want to delete " + person.firstName + " " + person.lastName + "?")) {
@@ -153,11 +146,6 @@ function filterUser(el, value) {
</tbody>
</table>
<br />
<fmt:message key="invitation.send"/> <br/>
Mail: <input id="emailAddress" type="text"/> <a id="invitationEmail" href="#" onclick="addInvitation()" >Invite</a>
<br />
<br />
<table border="1" id="tableNameAdded" style="display: none;">
<thead>
@@ -176,6 +164,17 @@ function filterUser(el, value) {
</tbody>
</table>
<br />
<fmt:message key="invitation.send"/> <br/>
Mail: <input id="emailAddress" type="text"/> <input type="button" name="inviteButton" id="inviteButton" value="Invite"/>
<div id="invitationList" class="dynamicList">
<div class="dynamicListHeader">
<fmt:message key="form.addConference.invitationsHeader" />
</div>
</div>
<input type="button" id="removeInvitationButton" name="removeInvitation" value="<fmt:message key="button.removeSelected" />"/>
<br />
<input type="submit" align="middle" name="_target3" value="Back">

View File

@@ -6,11 +6,10 @@
<h4 class="title"><fmt:message key="preference.title" /></h4>
<h4 class="title"><fmt:message key="preference.title" /></h4>
<c:if test="${message}">
<fmt:message key="message"/>
huhu
<fmt:message key="message"/>
</c:if>
<form:form method="post" commandName="choosePreference">
@@ -23,11 +22,11 @@ huhu
<form:hidden path="preferences[${i.index}].article.id" />
<form:hidden path="preferences[${i.index}].pcMember.login" />
<td><fmt:message key="preference.like"/></td>
<td><form:radiobutton path="preferences[${i.index}].preference" value="Like"/></td>
<td><form:radiobutton path="preferences[${i.index}].preferenceType" value="LIKE"/></td>
<td><fmt:message key="preference.indifferent"/></td>
<td><form:radiobutton path="preferences[${i.index}].preference" value="Indifferent"/></td>
<td><form:radiobutton path="preferences[${i.index}].preferenceType" value="INDIFFERENT"/></td>
<td><fmt:message key="preference.dislike"/></td>
<td><form:radiobutton path="preferences[${i.index}].preference" value="Dislike"/></td>
<td><form:radiobutton path="preferences[${i.index}].preferenceType" value="DISLIKE"/></td>
</tr>
</c:forEach>
</table>

View File

@@ -5,78 +5,7 @@
<script type='text/javascript' src='./javascripts/prototype.js'></script>
<script type='text/javascript' src='./javascripts/scriptaculous.js'></script>
<script type='text/javascript' src='./javascripts/effects.js'></script>
<style type="text/css">
.dynamicList {
display: table;
border-collapse: collapse;
min-width: 200px;
max-height: 200px;
overflow: scroll;
}
.dynamicList > * {
display: table-row;
border: thin solid #f57627;
padding:3px;
}
.dynamicListHeader {
background-color: #f57627;
}
.selected {
background-color: #fea752;
}
</style>
<script language="JavaScript">
var SecondaryAuthorManager = Class.create({
lastRef: 0,
initialize: function(buttonAdd,buttonRemove,inputField){
this.buttonAdd = buttonAdd;
this.buttonRemove = buttonRemove;
this.inputField = inputField;
$(buttonAdd).observe("click",this.AddSecondaryAuthor.bind(this));
$(buttonRemove).observe("click",this.RemoveSecondaryAuthor.bind(this));
$(inputField).observe("keypress", this.KeyPressHandler.bindAsEventListener(this));
},
SelectSecondaryAuthor: function(event){
var item = event.element();
if(item.hasClassName('selected')){
item.removeClassName('selected');
} else {
item.addClassName('selected');
}
},
RemoveSecondaryAuthor: function() {
var itemsToRemove = $('secondaryAuthorList').select('div.selected');
itemsToRemove.invoke('remove');
},
KeyPressHandler: function(event){
switch(event.keyCode){
case Event.KEY_RETURN:
this.AddSecondaryAuthor();
event.stop();
return false;
}
},
AddSecondaryAuthor: function() {
var ref = this.lastRef++;
var elemName = "liste["+ref+"]";
var value = $('newSecondaryAuthorInput').value;
var hidden = new Element('input',{'id':elemName,'name':elemName,'type':'hidden','value':value});
var elem = new Element('div',
{ 'class':'dynamicListItem',
'style':'display:none;height:0px;width:0px;',
'id':elemName}).update(value).insert(hidden);
elem.observe('click', this.SelectSecondaryAuthor.bindAsEventListener());
$('secondaryAuthorList').insert(elem);
$(this.inputField).clear();
Effect.Appear(elemName);
}
});
</script>
<script type='text/javascript' src='./javascripts/yacos/submissionArticle.js'></script>
</head>
<body>
@@ -108,11 +37,7 @@ var SecondaryAuthorManager = Class.create({
<fmt:message key="form.submission.secondaryauthor" />
</div>
</div>
<input type="button" id="removeSecondaryButton" name="removeSecondary" value="<fmt:message key="button.removeSelected" />"/>
<script type="text/javascript">
new SecondaryAuthorManager('addSecondaryButton','removeSecondaryButton','newSecondaryAuthorInput');
</script>
<input type="button" id="removeSecondaryButton" name="removeSecondary" value="<fmt:message key="button.removeSelected" />"/>
<br /><br />
</fieldset>

View File

@@ -202,7 +202,7 @@
class="org.yacos.web.PCmember.controller.CreateReportController">
<property name="articleManager" ref="articleManager" />
</bean>
<bean id="LogonController"
class="org.yacos.web.system.controller.LogonController">
</bean>
@@ -212,6 +212,7 @@
class="org.yacos.web.system.controller.ListConferenceController">
<property name="conferenceManager" ref="conferenceManager" />
</bean>
<bean id="ListEvaluationController"
class="org.yacos.web.PCmember.controller.ListEvaluationController">
@@ -285,6 +286,17 @@
class="org.yacos.web.system.session.SessionService">
<property name="conferenceManager" ref="conferenceManager" />
<property name="userManager" ref="userManager" />
</bean>
<bean id="mailSender" class="org.springframework.mail.javamail.JavaMailSenderImpl">
<property name="host" value="smtp.univ-lille1.fr"/>
</bean>
<bean id="mailSenderService"
class="org.yacos.web.system.controller.MailSenderService" factory-method="getInstance">
<property name="mailSender" ref="mailSender"/>
<property name="fromEmail" value="${mailService.fromEmailAddress}" />
<property name="replyTo" value="${mailService.replyToEmailAddress}" />
</bean>
<!-- EJB Services Linking -->

Binary file not shown.

After

Width:  |  Height:  |  Size: 141 B

View File

@@ -0,0 +1,66 @@
var InvitationsManager = Class.create({
initialize: function(buttonAdd,buttonRemove,inputField){
this.buttonAdd = buttonAdd;
this.buttonRemove = buttonRemove;
this.inputField = inputField;
$(buttonAdd).observe("click",this.addRemote.bind(this));
$(buttonRemove).observe("click",this.removeRemote.bind(this));
$(inputField).observe("keypress", this.keyPressHandler.bindAsEventListener(this));
},
select: function(event){
var item = event.element();
if(item.hasClassName('selected')){
item.removeClassName('selected');
} else {
item.addClassName('selected');
}
},
removeRemote: function() {
var itemsToRemove = $('invitationList').select('div.selected');
var emailList = itemsToRemove.pluck('id');
AddCriteriaJS.removeInvitations(emailList,this.remove.bind(this));
},
remove: function() {
var itemsToRemove = $('invitationList').select('div.selected');
itemsToRemove.invoke('remove');
},
keyPressHandler: function(event){
switch(event.keyCode){
case Event.KEY_RETURN:
this.addRemote();
event.stop();
return false;
}
},
addRemote: function(){
var value = $(this.inputField).value;
AddCriteriaJS.addInvitation(value,function(success){
if(success){
this.add(value);
}
}.bind(this));
},
add: function(email) {
var elem = new Element('div',
{ 'class':'dynamicListItem',
'style':'display:none;height:0px;width:0px;',
'id':email}).update(email);
$('invitationList').insert(elem);
elem.observe('click', this.select.bindAsEventListener());
elem.appear();
},
refreshList: function(){
AddCriteriaJS.getInvitations(function(emailList){
this.removeAll();
emailList.each(this.add.bind(this));
});
},
removeAll: function(){
var itemsToRemove = $('invitationList').select('div.dynamicListItem');
itemsToRemove.invoke('remove');
}
});
Event.observe(window,'load', function(){
new InvitationsManager('inviteButton','removeInvitationButton','emailAddress')});

View File

@@ -0,0 +1,54 @@
var SecondaryAuthorManager = Class.create({
lastRef: 0,
initialize: function(buttonAdd,buttonRemove,inputField){
this.buttonAdd = buttonAdd;
this.buttonRemove = buttonRemove;
this.inputField = inputField;
$(buttonAdd).observe("click",this.AddSecondaryAuthor.bind(this));
$(buttonRemove).observe("click",this.RemoveSecondaryAuthor.bind(this));
$(inputField).observe("keypress", this.KeyPressHandler.bindAsEventListener(this));
},
SelectSecondaryAuthor: function(event){
var item = event.element();
if(item.hasClassName('selected')){
item.removeClassName('selected');
} else {
item.addClassName('selected');
}
},
RemoveSecondaryAuthor: function() {
var itemsToRemove = $('secondaryAuthorList').select('div.selected');
// Fade and remove
itemsToRemove.invoke('fade',{
afterFinish: function(obj){
obj.element.remove();
}
});
},
KeyPressHandler: function(event){
switch(event.keyCode){
case Event.KEY_RETURN:
this.AddSecondaryAuthor();
event.stop();
return false;
}
},
AddSecondaryAuthor: function() {
var ref = this.lastRef++;
var elemName = "liste["+ref+"]";
var value = $('newSecondaryAuthorInput').value;
var hidden = new Element('input',{'id':elemName,'name':elemName,'type':'hidden','value':value});
var elem = new Element('div',
{ 'class':'dynamicListItem',
'style':'display:none;height:0px;width:0px;',
'id':elemName}).update(value).insert(hidden);
elem.observe('click', this.SelectSecondaryAuthor.bindAsEventListener());
$('secondaryAuthorList').insert(elem);
$(this.inputField).clear();
elem.appear();
}
});
Event.observe(window,'load', function(){
new SecondaryAuthorManager('addSecondaryButton','removeSecondaryButton','newSecondaryAuthorInput')});

View File

@@ -251,3 +251,31 @@ body {
}
/* @end */
/* @group dynamicList */
.dynamicList {
display: table;
border-collapse: collapse;
border-spacing: 3px;
min-width: 200px;
min-height: 40px;
max-height: 200px;
overflow: auto;
}
.dynamicList > * {
display: table-row;
border: thin solid #f57627;
padding:3px;
}
.dynamicListHeader {
background-image: url(../images/menu-header-background-repeat.png);
background-repeat: repeat-x;
height: 23px;
}
.selected {
background-color: #fea752;
}
/* @end */