This commit is contained in:
Maxime Dagnicourt
2008-02-22 13:39:37 +00:00
parent 4a99c6b959
commit 12c8adc4e0
9 changed files with 461 additions and 78 deletions

View File

@@ -65,6 +65,7 @@ menu.chairman.conference.create=Create new conference
menu.chairman.conference.modify=Modify this conference menu.chairman.conference.modify=Modify this conference
menu.chairman.article.dispatch=Dispatch articles menu.chairman.article.dispatch=Dispatch articles
menu.chairman.article.validate=Validate articles menu.chairman.article.validate=Validate articles
menu.chairman.article.conflict=Manage the conflict list
menu.pcmember.title=PC Member menu.pcmember.title=PC Member
menu.pcmember.article.preference=Article's preference menu.pcmember.article.preference=Article's preference
@@ -250,19 +251,24 @@ evaluation.help=Choose an article that you would like to evaluate
invitation.send=Send an invitation invitation.send=Send an invitation
#ConflictList
ConflictList.list1=Members of the conference
ConflictList.list2=ConflictList of the article
ConflictList.choose=manage the conflict list of the conference's articles
ConflictList.help=Click to an article to edit the conclict list
#DispatchMembers #DispatchMembers
members.list1=Members of the conference members.list1=Members of the conference
members.list2=Members associate to the article members.list2=Members associate to the article
dipatchArticle.description=Article's description dipatchArticle.description=Article's description
dipatchArticle.choose=Dispatch the articles between the members dipatchArticle.choose=Dispatch the articles between the members
disptachArticle.help=Click on an article to dispatch the members disptachArticle.help=Click to an article to dispatch the members
#DelegateArticles #DelegateArticles
delegateArticles.choose=delegate the articles between to the referees delegateArticles.choose=delegate the articles between to the referees
delegateArticles.list1= referees of the conference delegateArticles.list1= referees of the conference
delegateArticles.list2= referees aassociate to the article delegateArticles.list2= referees aassociate to the article
delegateArticles.help=Click on an article to delegate it to the referees delegateArticles.help=Click to an article to delegate it to the referees
#valider les articles #valider les articles
validate.download=download the article validate.download=download the article

View File

@@ -23,6 +23,7 @@
<li><a href="<c:url value="addConference.htm?action=modify"/>"><fmt:message key="menu.chairman.conference.modify" /></a></li> <li><a href="<c:url value="addConference.htm?action=modify"/>"><fmt:message key="menu.chairman.conference.modify" /></a></li>
<li><a href="<c:url value="dispatchArticle.htm"/>"><fmt:message key="menu.chairman.article.dispatch" /></a></li> <li><a href="<c:url value="dispatchArticle.htm"/>"><fmt:message key="menu.chairman.article.dispatch" /></a></li>
<li><a href="<c:url value="validateArticle.htm"/>"><fmt:message key="menu.chairman.article.validate" /></a></li> <li><a href="<c:url value="validateArticle.htm"/>"><fmt:message key="menu.chairman.article.validate" /></a></li>
<li><a href="<c:url value="conflictList.htm"/>"><fmt:message key="menu.chairman.article.conflict" /></a></li>
</ul> </ul>
<div id="footer"></div> <div id="footer"></div>
</div> </div>

View File

@@ -0,0 +1,214 @@
<%@ include file="/WEB-INF/decorators/include.jsp"%>
<html>
<head>
<script type='text/javascript' src='./javascripts/prototype.js'></script>
<script type='text/javascript' src='./javascripts/scriptaculous.js'></script>
<script type='text/javascript' src='./dwr/engine.js'></script>
<script type='text/javascript' src='./dwr/util.js'></script>
<script type='text/javascript' src='./dwr/interface/ConflictListJS.js'></script>
<script type="text/javascript">
var selectedArticleId;
var articleId;
var pattern;
function showDetail(artId){
articleId = artId;
var divTitle = 'title'+artId;
var divArticle = 'article'+artId;
if (!$(divTitle).hasClassName('selected')){
if(selectedArticleId != null){
removeAll(selectedArticleId);
$('title'+selectedArticleId).removeClassName('selected');
new Effect.SlideUp('dispatcher'+selectedArticleId);
//$('dispatcher'+selectedArticleId).hide();
}
selectedArticleId = articleId;
$(divTitle).addClassName('selected');
initDispatcher(divArticle);
}else{
removeAll(articleId);
//$('dispatcher'+articleId).remove();
new Effect.SlideUp('dispatcher'+articleId);
//$('dispatcher'+articleId).hide();
$(divTitle).removeClassName('selected');
selectedArticleId = null;
//, {afterFinish:function(){$('dispatcher').remove();}});
// $('dispatcherPattern').innerHTML = pattern;
}
}
function initDispatcher(elementId){
//container
//var pattern = $('dispatcherPattern').innerHTML
//$('dispatcherPattern').innerHTML = "";
//var elem = new Element('div',
//{'class':'dynamicListItem',
//'id':"dispatcher"}).update(pattern);
//$(elementId).insert(elem);
//listes
//DispatchArticlesJS.sayHello(articleId,retour);
ConflictListJS.getMembersWithoutConflict(articleId,fillListMembers);
ConflictListJS.getMembersWithConflict(articleId,fillListConflictMembers);
new Effect.SlideDown('dispatcher'+articleId);
//$('dispatcher'+articleId).show();
//buttons
//$('addButton').observe("click",addRemote());
//$('removeButton').observe("click",removeRemote());
//$('dispatcherPattern').innerHTML = pattern;
}
function fillListConflictMembers(data){
for (var i = 0; i < data.length; i++) {
var member = data[i];
var value= member.firstName+" "+member.lastName;
var elem = new Element('div',
{'class':'dynamicListItem','id':member.login,
"style":"border:1px black;"}).update(value);
$('membersConflictList'+articleId).insert(elem);
elem.observe('click', function(event){
select(Event.element(event));
});
}
}
function fillListMembers(data){
for (var i = 0; i < data.length; i++) {
var member = data[i];
var value= member.firstName+" "+member.lastName;
var elem = new Element('div',
{'class':'dynamicListItem','id':member.login,
"style":"border:1px"}).update(value);
$('membersList'+articleId).insert(elem);
elem.observe('click', function(event){
select(Event.element(event));
});
}
}
function select(elem){
var item = elem;
if(item.hasClassName('selected')){
item.removeClassName('selected');
} else {
item.addClassName('selected');
}
}
function removeRemote() {
var itemsToRemove = $('membersList'+articleId).select('div.selected');
var membersId = itemsToRemove.pluck('id');
//var articleId = $('articleId').value;
ConflictListJS.removeMembers(membersId, articleId, remove);
}
function remove() {
var itemsToRemove = $('membersConflictList'+articleId).select('div.selected');
//suppression dans la premi<6D>re liste
itemsToRemove.invoke('remove');
//ajout dans la seconde liste
if (itemsToRemove.length != 0){
for (var i = 0; i < itemsToRemove.length; i++) {
item = itemsToRemove[i];
item.removeClassName('selected');
$('membersList'+articleId).insert(item);
}
}
}
function addRemote(){
var itemsToAdd = $('membersList'+articleId).select('div.selected');
var membersId = itemsToAdd.pluck('id');
//var articleId = $('articleId').value;
ConflictListJS.addMembers(membersId, articleId, add());
}
function add() {
var itemsToAdd = $('membersList'+articleId).select('div.selected');
//suppression dans la premi<6D>re liste
itemsToAdd.invoke('remove');
//ajout dans la seconde liste
if (itemsToAdd.length != 0){
for (var i = 0; i < itemsToAdd.length; i++) {
item = itemsToAdd[i];
item.removeClassName('selected');
$('membersConflictList'+articleId).insert(item);
}
}
}
function removeAll(artId){
var itemsToRemove = $('membersConflictList'+artId).select('div.dynamicListItem');
itemsToRemove.invoke('remove');
itemsToRemove = $('membersList'+artId).select('div.dynamicListItem');
itemsToRemove.invoke('remove');
}
</script>
</head>
<body>
<h4 class="title"><fmt:message key="ConflictList.choose" /></h4>
<p class="formHelp">
<fmt:message key="ConflictList.help" />
</p>
<c:forEach var="article" items="${articles}">
<div style="border:1px solid orange;">
<div id="article${article.id}">
<div id="title${article.id}" onclick="showDetail(${article.id})">
<table style="width:100%;text-align:center;">
<tr>
<td><img src="./images/cc-wp-64x64.png"></td>
<td>title : ${article.title}
<br/>theme: ${article.topic}
<br/>main author: ${article.mainAuthor.firstName}${article.mainAuthor.lastName}
<c:if test="${!empty article.secondaryAuthors}">
<br/>secondaries authors:
<c:forEach var="author" items="${article.secondaryAuthors}">
<br/>${author}
</c:forEach>
</c:if>
</td>
<td><a href="${article.URL_article}">download the article</a></td>
</tr>
</table>
</div>
<div id='dispatcher${article.id}' class="textBox" style="display:none;">
<table style="width:100%;">
<tr><td>
<h1><fmt:message key="members.list1"/></h1>
<div id="membersList${article.id}" style="border:1px solid black; max-height:150px;overflow:auto;">
</div>
</td><td>
<input type="button" id="addButton" value="add>>>" onclick="addRemote()"/><br/>
<input type="button" id="removeButton" value="<<<remove" onclick="removeRemote()"/>
</td><td>
<h1><fmt:message key="members.list2"/></h1>
<div id="membersConflictList${article.id}" style="border:1px solid black; max-height:150px;overflow:auto;">
</div>
</td></tr>
</table>
</div>
</div>
</div>
</c:forEach>
</body>
</html>

View File

@@ -6,7 +6,7 @@
<script type='text/javascript' src='./javascripts/scriptaculous.js'></script> <script type='text/javascript' src='./javascripts/scriptaculous.js'></script>
<script type='text/javascript' src='./dwr/engine.js'></script> <script type='text/javascript' src='./dwr/engine.js'></script>
<script type='text/javascript' src='./dwr/util.js'></script> <script type='text/javascript' src='./dwr/util.js'></script>
<script type='text/javascript' src='./dwr/interface/DispatchArticlesJS.js'></script> <script type='text/javascript' src='./dwr/interface/DelegateArticlesJS.js'></script>
<script type="text/javascript"> <script type="text/javascript">
var selectedArticleId; var selectedArticleId;
@@ -54,8 +54,8 @@
//$(elementId).insert(elem); //$(elementId).insert(elem);
//listes //listes
//DispatchArticlesJS.sayHello(articleId,retour); //DispatchArticlesJS.sayHello(articleId,retour);
DispatchArticlesJS.getMembersWithoutTheArticle(articleId,fillListMembers); DelegateArticlesJS.getRefereesWithoutTheArticle(articleId,fillListReferee);
DispatchArticlesJS.getMembersWithTheArticle(articleId,fillListArticleMembers); DelegateArticlesJS.getRefereesWithTheArticle(articleId,fillListArticleReferee);
//new Effect.SlideDown('dispatcher'+articleId); //new Effect.SlideDown('dispatcher'+articleId);
@@ -70,31 +70,29 @@
alert(data); alert(data);
} }
function fillListArticleMembers(data){ function fillListArticleReferee(data){
for (var i = 0; i < data.length; i++) { for (var i = 0; i < data.length; i++) {
var member = data[i]; var member = data[i];
var value= member.firstName+" "+member.lastName +' nb articles:' + member.nbArticles var value= member.firstName+" "+member.lastName;
+ " preferences:"+ member.preference;
var elem = new Element('div', var elem = new Element('div',
{'class':'dynamicListItem','id':member.login, {'class':'dynamicListItem','id':member.login,
"style":"border:1px"}).update(value); "style":"border:1px"}).update(value);
$('membersArticleList'+articleId).insert(elem); $('refereesArticleList'+articleId).insert(elem);
elem.observe('click', function(event){ elem.observe('click', function(event){
select(Event.element(event)); select(Event.element(event));
}); });
} }
} }
function fillListMembers(data){ function fillListReferee(data){
for (var i = 0; i < data.length; i++) { for (var i = 0; i < data.length; i++) {
var member = data[i]; var member = data[i];
var value= member.firstName+" "+member.lastName +' nb articles:' + member.nbArticles var value= member.firstName+" "+member.lastName;
+ " preferences:"+ member.preference;
var elem = new Element('div', var elem = new Element('div',
{'class':'dynamicListItem','id':member.login, {'class':'dynamicListItem','id':member.login,
"style":"border:1px"}).update(value); "style":"border:1px"}).update(value);
$('membersList'+articleId).insert(elem); $('refereesList'+articleId).insert(elem);
elem.observe('click', function(event){ elem.observe('click', function(event){
select(Event.element(event)); select(Event.element(event));
}); });
@@ -112,10 +110,10 @@
} }
function removeRemote() { function removeRemote() {
var itemsToRemove = $('membersList'+articleId).select('div.selected'); var itemsToRemove = $('refereesList'+articleId).select('div.selected');
var membersId = itemsToRemove.pluck('id'); var membersId = itemsToRemove.pluck('id');
//var articleId = $('articleId').value; //var articleId = $('articleId').value;
DispatchArticlesJS.removeMembers(membersId, articleId, remove); DelegateArticlesJS.removeMembers(membersId, articleId, remove);
} }
function remove() { function remove() {
@@ -128,21 +126,21 @@
for (var i = 0; i < itemsToRemove.length; i++) { for (var i = 0; i < itemsToRemove.length; i++) {
item = itemsToRemove[i]; item = itemsToRemove[i];
item.removeClassName('selected'); item.removeClassName('selected');
$('membersList'+articleId).insert(item); $('refereesList'+articleId).insert(item);
} }
} }
} }
function addRemote(){ function addRemote(){
var itemsToAdd = $('membersList'+articleId).select('div.selected'); var itemsToAdd = $('refereesList'+articleId).select('div.selected');
var membersId = itemsToAdd.pluck('id'); var refereeId = itemsToAdd.pluck('id');
//var articleId = $('articleId').value; //var articleId = $('articleId').value;
DispatchArticlesJS.addMembers(membersId, articleId, add()); DelegateArticlesJS.addReferee(membersId, articleId, add());
} }
function add() { function add() {
var itemsToAdd = $('membersList'+articleId).select('div.selected'); var itemsToAdd = $('refereeList'+articleId).select('div.selected');
//suppression dans la premi<6D>re liste //suppression dans la premi<6D>re liste
itemsToAdd.invoke('remove'); itemsToAdd.invoke('remove');
@@ -151,15 +149,15 @@
for (var i = 0; i < itemsToAdd.length; i++) { for (var i = 0; i < itemsToAdd.length; i++) {
item = itemsToAdd[i]; item = itemsToAdd[i];
item.removeClassName('selected'); item.removeClassName('selected');
$('membersArticleList'+articleId).insert(item); $('refereesArticleList'+articleId).insert(item);
} }
} }
} }
function removeAll(artId){ function removeAll(artId){
var itemsToRemove = $('membersArticleList'+artId).select('div.dynamicListItem'); var itemsToRemove = $('refereesArticleList'+artId).select('div.dynamicListItem');
itemsToRemove.invoke('remove'); itemsToRemove.invoke('remove');
itemsToRemove = $('membersList'+artId).select('div.dynamicListItem'); itemsToRemove = $('refereesList'+artId).select('div.dynamicListItem');
itemsToRemove.invoke('remove'); itemsToRemove.invoke('remove');
} }
</script> </script>
@@ -175,32 +173,41 @@
</p> </p>
<c:forEach var="article" items="${articles}"> <c:forEach var="article" items="${articles}">
<div class=" conferenceBloc cbb"> <div style="border:1px solid orange;">
<div id="article${article.id}"> <div id="article${article.id}">
<div id="title${article.id}" onclick="showDetail(${article.id})"> <div id="title${article.id}" onclick="showDetail(${article.id})">
<h2> <table style="width:100%;text-align:center;">
<tr>
<td><img src="./images/cc-wp-64x64.png"></td>
<td>title : ${article.title}
<br/>theme: ${article.topic}
<br/>main author: ${article.mainAuthor.firstName}${article.mainAuthor.lastName}
title : ${article.title} <c:if test="${!empty article.secondaryAuthors}">
<br/>theme: ${article.topic} <br/>secondaries authors:
<br/>main author: ${article.mainAuthor.firstName}{article.mainAuthor.lastName} <c:forEach var="author" items="${article.secondaryAuthors}">
<a href="${article.URL_article}">download the article</a> <br/>${author}
</c:forEach>
</h2> </c:if>
</td>
<td><a href="${article.URL_article}">download the article</a></td>
</tr>
</table>
</div> </div>
<div id='dispatcher${article.id}' style="display:none;"> <div id='dispatcher${article.id}' style="display:none;">
<table style="width:100%;"> <table style="width:100%;">
<tr><td> <tr><td>
<h1><fmt:message key="members.List1"/></h1> <h1><fmt:message key="delegateArticles.list1"/></h1>
<div id="membersList${article.id}" style="border:1px solid black; max-height:150px;overflow:auto;"> <div id="refereesList${article.id}" style="border:1px solid black; max-height:150px;overflow:auto;">
</div> </div>
</td><td> </td><td>
<input type="button" id="addButton" value="add>>>" onclick="addRemote()"/><br/> <input type="button" id="addButton" value="add>>>" onclick="addRemote()"/><br/>
<input type="button" id="removeButton" value="<<<remove" onclick="removeRemote()"/> <input type="button" id="removeButton" value="<<<remove" onclick="removeRemote()"/>
</td><td> </td><td>
<h1><fmt:message key="members.List2"/></h1> <h1><fmt:message key="delegateArticles.list2"/></h1>
<div id="membersArticleList${article.id}" style="border:1px solid black; max-height:150px;overflow:auto;"> <div id="refereesArticleList${article.id}" style="border:1px solid black; max-height:150px;overflow:auto;">
</div> </div>
</td></tr> </td></tr>
</table> </table>

View File

@@ -22,8 +22,8 @@
if(selectedArticleId != null){ if(selectedArticleId != null){
removeAll(selectedArticleId); removeAll(selectedArticleId);
$('title'+selectedArticleId).removeClassName('selected'); $('title'+selectedArticleId).removeClassName('selected');
//new Effect.SlideUp('dispatcher'+selectedArticleId); new Effect.SlideUp('dispatcher'+selectedArticleId);
$('dispatcher'+selectedArticleId).hide(); //$('dispatcher'+selectedArticleId).hide();
} }
selectedArticleId = articleId; selectedArticleId = articleId;
$(divTitle).addClassName('selected'); $(divTitle).addClassName('selected');
@@ -32,8 +32,8 @@
}else{ }else{
removeAll(articleId); removeAll(articleId);
//$('dispatcher'+articleId).remove(); //$('dispatcher'+articleId).remove();
//new Effect.SlideUp('dispatcher'+articleId); new Effect.SlideUp('dispatcher'+articleId);
$('dispatcher'+articleId).hide(); //$('dispatcher'+articleId).hide();
$(divTitle).removeClassName('selected'); $(divTitle).removeClassName('selected');
selectedArticleId = null; selectedArticleId = null;
//, {afterFinish:function(){$('dispatcher').remove();}}); //, {afterFinish:function(){$('dispatcher').remove();}});
@@ -58,18 +58,14 @@
DispatchArticlesJS.getMembersWithTheArticle(articleId,fillListArticleMembers); DispatchArticlesJS.getMembersWithTheArticle(articleId,fillListArticleMembers);
//new Effect.SlideDown('dispatcher'+articleId); new Effect.SlideDown('dispatcher'+articleId);
$('dispatcher'+articleId).show(); //$('dispatcher'+articleId).show();
//buttons //buttons
//$('addButton').observe("click",addRemote()); //$('addButton').observe("click",addRemote());
//$('removeButton').observe("click",removeRemote()); //$('removeButton').observe("click",removeRemote());
//$('dispatcherPattern').innerHTML = pattern; //$('dispatcherPattern').innerHTML = pattern;
} }
function retour(data){
alert(data);
}
function fillListArticleMembers(data){ function fillListArticleMembers(data){
for (var i = 0; i < data.length; i++) { for (var i = 0; i < data.length; i++) {
@@ -166,25 +162,34 @@
</head> </head>
<body> <body>
<div>
<h4 class="title"><fmt:message key="delegateArticles.choose" /></h4> <h4 class="title"><fmt:message key="delegateArticles.choose" /></h4>
<p class="formHelp"> <p class="formHelp">
<fmt:message key="disptachArticle.help" /> <fmt:message key="disptachArticle.help" />
</p> </p>
<c:forEach var="article" items="${articles}"> <c:forEach var="article" items="${articles}">
<div class=" conferenceBloc cbb"> <div style="border:1px solid orange;">
<div id="article${article.id}"> <div id="article${article.id}">
<div id="title${article.id}" onclick="showDetail(${article.id})"> <div id="title${article.id}" onclick="showDetail(${article.id})">
<h2> <table style="width:100%;text-align:center;">
<tr>
<td><img src="./images/cc-wp-64x64.png"></td>
<td>title : ${article.title}
<br/>theme: ${article.topic}
<br/>main author: ${article.mainAuthor.firstName}${article.mainAuthor.lastName}
title : ${article.title} <c:if test="${!empty article.secondaryAuthors}">
<br/>theme: ${article.topic} <br/>secondaries authors:
<br/>main author: ${article.mainAuthor.firstName}{article.mainAuthor.lastName} <c:forEach var="author" items="${article.secondaryAuthors}">
<a href="${article.URL_article}">download the article</a> <br/>${author}
</c:forEach>
</h2> </c:if>
</td>
<td><a href="${article.URL_article}">download the article</a></td>
</tr>
</table>
</div> </div>
<div id='dispatcher${article.id}' style="display:none;"> <div id='dispatcher${article.id}' class="textBox" style="display:none;">
<table style="width:100%;"> <table style="width:100%;">
<tr><td> <tr><td>
<h1><fmt:message key="members.list1"/></h1> <h1><fmt:message key="members.list1"/></h1>
@@ -205,7 +210,7 @@
</div> </div>
</div> </div>
</c:forEach> </c:forEach>
<div>
</body> </body>
</html> </html>

View File

@@ -30,6 +30,7 @@
<prop key="/dispatchArticle.htm">DispatchArticleController</prop> <prop key="/dispatchArticle.htm">DispatchArticleController</prop>
<prop key="/delegateArticle.htm">DelegateArticleController</prop> <prop key="/delegateArticle.htm">DelegateArticleController</prop>
<prop key="/addConference.htm">AddConferenceController</prop> <prop key="/addConference.htm">AddConferenceController</prop>
<prop key="/conflictList.htm">ConflictListController</prop>
<prop key="/reportConfCreate.htm">ReportConfCreateController</prop> <prop key="/reportConfCreate.htm">ReportConfCreateController</prop>
<prop key="/evaluation.htm">EvaluationController</prop> <prop key="/evaluation.htm">EvaluationController</prop>
<prop key="/createReport.htm">CreateReportController</prop> <prop key="/createReport.htm">CreateReportController</prop>
@@ -165,11 +166,21 @@
<property name="articleManager" ref="articleManager" /> <property name="articleManager" ref="articleManager" />
</bean> </bean>
<bean id="ValidateOrRejectController" <bean id="ValidateOrRejectController"
class="org.yacos.web.PCmember.controller.ValidateOrRejectController"> class="org.yacos.web.PCmember.controller.ValidateOrRejectController">
<property name="articleManager" ref="articleManager" /> <property name="articleManager" ref="articleManager" />
</bean> </bean>
<bean id="ConflictListController"
class="org.yacos.web.chairman.controller.ConflictListController">
<dwr:remote javascript="ConflictListJS" />
<property name="articleManager" ref="articleManager" />
<property name="userManager" ref="userManager" />
<property name="conferenceManager" ref="conferenceManager" />
</bean>
<bean id="DispatchArticleController" <bean id="DispatchArticleController"
class="org.yacos.web.chairman.controller.DispatchArticleController"> class="org.yacos.web.chairman.controller.DispatchArticleController">
<dwr:remote javascript="DispatchArticlesJS" /> <dwr:remote javascript="DispatchArticlesJS" />
@@ -187,6 +198,7 @@
</bean> </bean>
<bean id="AddConferenceController" <bean id="AddConferenceController"
class="org.yacos.web.chairman.controller.AddConferenceController" class="org.yacos.web.chairman.controller.AddConferenceController"
scope="session"> scope="session">

View File

@@ -17,7 +17,6 @@ import org.yacos.core.conferences.IConferenceManager;
import org.yacos.core.users.IUserManager; import org.yacos.core.users.IUserManager;
import org.yacos.core.users.Speciality; import org.yacos.core.users.Speciality;
import org.yacos.core.users.User; import org.yacos.core.users.User;
import org.yacos.core.users.Role.RoleType;
import org.yacos.web.system.session.SessionService; import org.yacos.web.system.session.SessionService;
public class DelegateArticleController implements Controller{ public class DelegateArticleController implements Controller{
@@ -49,18 +48,20 @@ public class DelegateArticleController implements Controller{
} }
Conference conf; Conference conf;
String memberId;
public ModelAndView handleRequest(HttpServletRequest arg0, public ModelAndView handleRequest(HttpServletRequest arg0,
HttpServletResponse arg1) throws Exception { HttpServletResponse arg1) throws Exception {
conf = SessionService.getInstance().getCurrentConference(); conf = SessionService.getInstance().getCurrentConference();
memberId = SessionService.getInstance().getCurrentUserLogin();
String login = SessionService.getInstance().getCurrentUserLogin(); String login = SessionService.getInstance().getCurrentUserLogin();
List<Article> listArticles = articleManager.getArticlesOfMember(conf.getId(), login); List<Article> listArticles = articleManager.getArticlesOfMember(conf.getId(), login);
logger.info("returning delegateArticle with "+ listArticles.size() +" article"); logger.info("returning delegateArticle with "+ listArticles.size() +" article");
return new ModelAndView("delegateArticle","articles", listArticles); return new ModelAndView("delegateArticle","articles", listArticles);
} }
public List<RefereeBean> getMembersWithTheArticle(int articleId ){ public List<RefereeBean> getRefereesWithTheArticle(int articleId ){
RefereeBean member; RefereeBean member;
//Conference conf = SessionService.getInstance().getCurrentConference(); //Conference conf = SessionService.getInstance().getCurrentConference();
@@ -69,7 +70,7 @@ public List<RefereeBean> getMembersWithTheArticle(int articleId ){
List<RefereeBean> articleMembers = new ArrayList<RefereeBean>(); List<RefereeBean> articleMembers = new ArrayList<RefereeBean>();
//list of the member who have this article //list of the member who have this article
List<User> articleMembersTmp = userManager.getPCMemberForArticle(articleId); List<User> articleMembersTmp = userManager.getRefereesOfPcMemberForArticle(memberId, articleId);
for (User user : articleMembersTmp) { for (User user : articleMembersTmp) {
member = new RefereeBean(); member = new RefereeBean();
@@ -93,7 +94,7 @@ public List<RefereeBean> getMembersWithTheArticle(int articleId ){
return articleMembers; return articleMembers;
} }
public List<RefereeBean> getMembersWithoutTheArticle(int articleId ){ public List<RefereeBean> getRefereesWithoutTheArticle(int articleId ){
RefereeBean member; RefereeBean member;
//Conference conf = SessionService.getInstance().getCurrentConference(); //Conference conf = SessionService.getInstance().getCurrentConference();
@@ -102,7 +103,7 @@ public List<RefereeBean> getMembersWithTheArticle(int articleId ){
List<RefereeBean> members = new ArrayList<RefereeBean>(); List<RefereeBean> members = new ArrayList<RefereeBean>();
//list of all pcmembers of the conference //list of all pcmembers of the conference
List<User> membersTmp = userManager.getUsers(conf.getId(),RoleType.PCMEMBER); List<User> membersTmp = userManager.getUsers();
for (User user : membersTmp) { for (User user : membersTmp) {
member = new RefereeBean(); member = new RefereeBean();
@@ -118,30 +119,25 @@ public List<RefereeBean> getMembersWithTheArticle(int articleId ){
spectialities.add(speciality.getName()); spectialities.add(speciality.getName());
} }
member.setSpecialities(spectialities); member.setSpecialities(spectialities);
members.add(member);
} }
logger.debug("return"+ members.size() +"members"); logger.debug("return"+ members.size() +"members");
return members; return members;
} }
public List<User> addMembers(List<String> membersId,int articleId){ public void addReferee(List<String> refereesId,int articleId){
for (String memberId : membersId) { for (String refereeId : refereesId) {
articleManager.assignArticleToPCMember(articleId, memberId); articleManager.delegateArticleToReferee(articleId, refereeId,memberId);
} }
logger.debug("add members to article"); logger.debug("add referee to article");
return userManager.getPCMemberForArticle(articleId);
} }
public List<User> removeMembers(List<String> membersId,int articleId){ public void removeReferee(List<String> refereesId,int articleId){
for (String memberId : membersId) { for (String refereeId : refereesId) {
articleManager.unassignArticleToPCMember(articleId, memberId); articleManager.undelegateArticleToReferee(articleId, refereeId, memberId);
} }
logger.debug("remove members to article"); logger.debug("remove members to article");
return userManager.getPCMemberForArticle(articleId);
}
public String sayHello(String name){
return name;
} }
} }

View File

@@ -0,0 +1,142 @@
package org.yacos.web.chairman.controller;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import org.yacos.core.article.Article;
import org.yacos.core.article.IArticleManager;
import org.yacos.core.article.Preference;
import org.yacos.core.article.Preference.PreferenceType;
import org.yacos.core.conferences.Conference;
import org.yacos.core.conferences.IConferenceManager;
import org.yacos.core.users.IUserManager;
import org.yacos.core.users.User;
import org.yacos.core.users.Role.RoleType;
import org.yacos.web.system.session.SessionService;
public class ConflictListController implements Controller{
protected final Log logger = LogFactory.getLog(getClass());
private IArticleManager articleManager;
public IArticleManager getArticleManager() {
return articleManager;
}
public void setArticleManager(IArticleManager articleManager) {
this.articleManager = articleManager;
}
private IUserManager userManager;
public IUserManager getUserManager() {
return userManager;
}
public void setUserManager(IUserManager userManager) {
this.userManager = userManager;
}
private IConferenceManager conferenceManager;
public IConferenceManager getConferenceManager() {
return conferenceManager;
}
public void setConferenceManager(IConferenceManager conferenceManager) {
this.conferenceManager = conferenceManager;
}
Conference conf;
public ModelAndView handleRequest(HttpServletRequest arg0,
HttpServletResponse arg1) throws Exception {
conf = SessionService.getInstance().getCurrentConference();
List<Article> listArticles = articleManager.getArticles(conf.getId());
logger.info("returning confictArticleList with "+ listArticles.size() +" article");
return new ModelAndView("conflictList","articles", listArticles);
}
public List<PCMemberBean> getMembersWithConflict(int articleId ){
PCMemberBean member;
//Conference conf = SessionService.getInstance().getCurrentConference();
//List de pcmemberbean qui sera retourn<72>
List<PCMemberBean> conflictMembers = new ArrayList<PCMemberBean>();
//list of the member who have this article
List<Preference> preferences = articleManager.getPreferencesForArticle(articleId);
for (Preference pref : preferences) {
if(pref.getPreferenceType() == PreferenceType.CONFLICT){
User user = pref.getPcMember();
member = new PCMemberBean();
member.setFirstName(user.getFirstName());
member.setLastName(user.getLastName());
member.setLogin(user.getLogin());
//add the member to the return list
conflictMembers.add(member);
}
}
return conflictMembers;
}
public List<PCMemberBean> getMembersWithoutConflict(int articleId ){
PCMemberBean member;
//Conference conf = SessionService.getInstance().getCurrentConference();
//List de pcmemberbean qui sera retourn<72>
List<PCMemberBean> members = new ArrayList<PCMemberBean>();
//list of all pcmembers of the conference
List<User> membersTmp = userManager.getUsers(conf.getId(),RoleType.PCMEMBER);
for (User user : membersTmp) {
member = new PCMemberBean();
member.setFirstName(user.getFirstName());
member.setLastName(user.getLastName());
member.setLogin(user.getLogin());
//recuperation des preferences
Preference pref = articleManager.getPreferenceForUserAndArticle(articleId, user.getLogin());
if (pref != null){
if(pref.getPreferenceType() != PreferenceType.CONFLICT){
//add the member to the return list
members.add(member);
}
}else{
//add the member to the return list
members.add(member);
}
}
logger.debug("return"+ members.size() +"members");
return members;
}
public void addMembers(List<String> membersId,int articleId){
for (String memberId : membersId) {
articleManager.addPreference(articleId, memberId, PreferenceType.CONFLICT);
}
logger.debug("add members to article");
}
public void removeMembers(List<String> membersId,int articleId){
for (String memberId : membersId) {
articleManager.removePreference(articleId, memberId);
}
logger.debug("remove members to article");
}
}

View File

@@ -57,7 +57,7 @@ public class DispatchArticleController implements Controller{
conf = SessionService.getInstance().getCurrentConference(); conf = SessionService.getInstance().getCurrentConference();
List<Article> listArticles = articleManager.getArticles(conf.getId()); List<Article> listArticles = articleManager.getArticles(conf.getId());
logger.info("returning dispatchArticleList with "+ listArticles.size() +" article"); logger.info("returning dispatchArticleList with "+ listArticles.size() +" article");
return new ModelAndView("dispatchArticle","articles", listArticles); return new ModelAndView("dispatchArticle","articles",listArticles);
} }
public List<PCMemberBean> getMembersWithTheArticle(int articleId ){ public List<PCMemberBean> getMembersWithTheArticle(int articleId ){