Manage your article : on peut downloader, modifier, supprimer (à finaliser)

This commit is contained in:
Frederic Debuire
2008-02-16 00:55:18 +00:00
parent e7be4d4d1b
commit f31e946d2d
12 changed files with 143 additions and 33 deletions

View File

@@ -107,8 +107,9 @@ message.error.page404.content=Sorry, the page where you looking for, doesn't fou
message.error.page403.title=Acces denied message.error.page403.title=Acces denied
message.error.page403.content=Sorry, you have not access at this page. message.error.page403.content=Sorry, you have not access at this page.
submission.title=Article's submission submission.title=Article's submission
submission.modify=Modify your article
submission.modify.denied=Sorry, you aren't allowed to do that operation.
form.submission.article.title=Article's title form.submission.article.title=Article's title
form.submission.article.theme=Article's theme form.submission.article.theme=Article's theme

View File

@@ -11,6 +11,7 @@
<link rel="icon" type="image/png" href="./images/favicon.png" /> <link rel="icon" type="image/png" href="./images/favicon.png" />
<title><fmt:message key="title" /></title> <title><fmt:message key="title" /></title>
<link rel="stylesheet" href="./stylesheets/base.css" type="text/css" /> <link rel="stylesheet" href="./stylesheets/base.css" type="text/css" />
<script type='text/javascript' src='./javascripts/prototype.js'></script>
<script type='text/javascript' src='./javascripts/rounded_boxes.js'></script> <script type='text/javascript' src='./javascripts/rounded_boxes.js'></script>
<script type="text/javascript"> <script type="text/javascript">

View File

@@ -5,7 +5,7 @@
<body> <body>
Acces denied. Sorry for this inconvenience. <h4 class="title">Access denied</h4>
<div class="errorBox"> <div class="errorBox">
${message} ${message}

View File

@@ -26,7 +26,7 @@
<h1> <a href="main.htm"> <h1> <a href="main.htm">
4o4 Error - Page not found 404 Error - Page not found
</a></h1> </a></h1>

View File

@@ -5,8 +5,6 @@
<script type='text/javascript' src='./javascripts/prototype.js'></script> <script type='text/javascript' src='./javascripts/prototype.js'></script>
<script type='text/javascript' src='./javascripts/scriptaculous.js'></script> <script type='text/javascript' src='./javascripts/scriptaculous.js'></script>
<script type='text/javascript' src='./javascripts/effects.js'></script> <script type='text/javascript' src='./javascripts/effects.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='./javascripts/yacos/manageArticle.js'></script> <script type='text/javascript' src='./javascripts/yacos/manageArticle.js'></script>
</head> </head>
<body> <body>
@@ -35,8 +33,8 @@
</ul> </ul>
</td> </td>
<td><a id="articleURL${i.index}" title="Download" href="<c:url value="/download.htm"><c:param name="articleId" value="${article.id}"/></c:url>"><img src="./images/cc-download_manager-128x128.png" alt="Download" /></a></td> <td><a id="articleURL${i.index}" title="Download" href="<c:url value="/download.htm"><c:param name="articleId" value="${article.id}"/></c:url>"><img src="./images/cc-download_manager-128x128.png" alt="Download" /></a></td>
<td><a id="modifyArticle${i.index}" title="Modify" href=""/><img src="./images/cc-button_ok-128x128.png" alt="Modify" /></a></td> <td><a id="modifyArticle${i.index}" title="Modify" href="<c:url value="/submissionArticle.htm"><c:param name="action" value="modify"/><c:param name="articleID" value="${article.id}"/></c:url>"><img src="./images/cc-button_ok-128x128.png" alt="Modify" /></a></td>
<td><a id="suppressArticle${i.index}" title="Delete" href="" /><img src="./images/cc-button_cancel-128x128.png" alt="Delete" /></a></td> <td><a id="suppressArticle${i.index}" title="Delete" href="<c:url value="/delete.htm"><c:param name="articleId" value="${article.id}"/></c:url>"><img src="./images/cc-button_cancel-128x128.png" alt="Delete"/></a></td>
</tr> </tr>
</tbody> </tbody>
</table> </table>

View File

@@ -9,8 +9,17 @@
</head> </head>
<body> <body>
<h4 class="title">
<c:choose>
<c:when test="${param['action'] eq 'modify'}">
<fmt:message key="submission.modify" />
</c:when>
<c:otherwise>
<fmt:message key="submission.title" />
</c:otherwise>
</c:choose>
</h4>
<h4 class="title"><fmt:message key="submission.title" /></h4>
<form:form method="post" enctype="multipart/form-data" commandName="submissionArticle"> <form:form method="post" enctype="multipart/form-data" commandName="submissionArticle">
<fieldset> <fieldset>

View File

@@ -39,11 +39,10 @@
<prop key="/login.htm">LogonController</prop> <prop key="/login.htm">LogonController</prop>
<prop key="/listEvaluation.htm">ListEvaluationController</prop> <prop key="/listEvaluation.htm">ListEvaluationController</prop>
<prop key="/download.htm">ArticleDownloadController</prop> <prop key="/download.htm">ArticleDownloadController</prop>
<prop key="/delete.htm">ArticleDeleteController</prop>
<prop key="/listReport.htm">ListReportController</prop> <prop key="/listReport.htm">ListReportController</prop>
<prop key="/forgotPassword.htm">ForgotPasswordController</prop> <prop key="/forgotPassword.htm">ForgotPasswordController</prop>
<prop key="/detailArticle.htm"> <prop key="/detailArticle.htm">DetailArticleController</prop>
DetailArticleController
</prop>
</props> </props>
</property> </property>
</bean> </bean>
@@ -66,6 +65,10 @@
<property name="downloadDirPath" value="${download.dir.path}"/> <property name="downloadDirPath" value="${download.dir.path}"/>
</bean> </bean>
<bean id="ArticleDeleteController" class="org.yacos.web.author.controller.ArticleDeleteController">
<property name="articleManager" ref="articleManager" />
</bean>
<bean id="SUserRegistrationController" <bean id="SUserRegistrationController"
class="org.yacos.web.system.controller.SUserRegistrationController"> class="org.yacos.web.system.controller.SUserRegistrationController">
<property name="sessionForm" value="true" /> <property name="sessionForm" value="true" />
@@ -73,7 +76,7 @@
<property name="commandClass" <property name="commandClass"
value="org.yacos.web.system.form.FormUser" /> value="org.yacos.web.system.form.FormUser" />
<property name="formView" value="registerUser" /> <property name="formView" value="registerUser" />
<property name="successView" value="listArticle.htm" /> <property name="successView" value="listConference.htm" />
<property name="userManager" ref="userManager" /> <property name="userManager" ref="userManager" />
<property name="validator" ref="UserValidator"/> <property name="validator" ref="UserValidator"/>
</bean> </bean>
@@ -100,7 +103,7 @@
<property name="commandClass" <property name="commandClass"
value="org.yacos.web.author.form.FormSubmission" /> value="org.yacos.web.author.form.FormSubmission" />
<property name="formView" value="submissionArticle" /> <property name="formView" value="submissionArticle" />
<property name="successView" value="listArticle.htm" /> <property name="successView" value="manageArticle.htm" />
<property name="articleManager" ref="articleManager" /> <property name="articleManager" ref="articleManager" />
<property name="validator" ref="submissionCheck" /> <property name="validator" ref="submissionCheck" />
<property name="downloadDirPath" value="${download.dir.path}"/> <property name="downloadDirPath" value="${download.dir.path}"/>

View File

@@ -0,0 +1,49 @@
package org.yacos.web.author.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.swing.text.html.FormView;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.ModelAndViewDefiningException;
import org.springframework.web.servlet.mvc.Controller;
import org.springframework.web.servlet.view.RedirectView;
import org.yacos.core.article.Article;
import org.yacos.core.article.IArticleManager;
public class ArticleDeleteController implements Controller {
private IArticleManager articleManager;
public IArticleManager getArticleManager() {
return articleManager;
}
public void setArticleManager(IArticleManager articleManager) {
this.articleManager = articleManager;
}
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws Exception {
try {
Integer articleId = Integer.parseInt(request.getParameter("articleId"));
Article article = articleManager.getArticle(articleId);
// FIXME : v<>rifier si le gars a le droit de suppr ou pas
if(article == null){
return new ModelAndView(new RedirectView("404error.htm"));
}
articleManager.removeArticle(articleId);
}
catch(NumberFormatException e) {
throw new ModelAndViewDefiningException(new ModelAndView("404error"));
}
return new ModelAndView(new RedirectView("manageArticle.htm"));
}
}

View File

@@ -22,6 +22,12 @@ public class ManageArticleController extends SimpleFormController {
private IArticleManager articleManager; private IArticleManager articleManager;
public void deleteArticle(Integer id) {
articleManager.removeArticle(id);
}
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException, NoConferenceSelectedException { throws ServletException, IOException, NoConferenceSelectedException {

View File

@@ -15,6 +15,7 @@ import org.apache.commons.logging.LogFactory;
import org.springframework.validation.BindException; import org.springframework.validation.BindException;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.ModelAndViewDefiningException;
import org.springframework.web.servlet.mvc.SimpleFormController; import org.springframework.web.servlet.mvc.SimpleFormController;
import org.springframework.web.servlet.view.RedirectView; import org.springframework.web.servlet.view.RedirectView;
import org.yacos.core.article.Article; import org.yacos.core.article.Article;
@@ -108,13 +109,53 @@ public class SArticleController extends SimpleFormController {
return new ModelAndView(new RedirectView(getSuccessView())); return new ModelAndView(new RedirectView(getSuccessView()));
} }
protected Object formBackingObject(HttpServletRequest request) throws ServletException { protected Object formBackingObject(HttpServletRequest request) throws ModelAndViewDefiningException {
FormSubmission myArticle = new FormSubmission(); String action = request.getParameter("action");
myArticle.setTitle(""); if (action == null || action.equals(""))
myArticle.setTheme(""); {
//myArticle.setMainauthor(""); FormSubmission myArticle = new FormSubmission();
myArticle.setSecondaryauthor(""); return myArticle;
return myArticle; }
else if (action.equals("modify")) {
String articleID = request.getParameter("articleID");
try {
Integer id = new Integer(articleID);
// TODO : v<>rifier que l'id de l'article appartient <20> l'auteur... vive les GET...
Article a = articleManager.getArticle(id);
if (a == null)
throw new ModelAndViewDefiningException(new ModelAndView("denied", "message", getMessageSourceAccessor().getMessage("submission.modify.denied")));
FormSubmission myArticle = new FormSubmission();
// FIXME : stocker l'abstract texte ds la BDD... et le r<>cup apr<70>s...
//myArticle.setAbstractText();
myArticle.setTitle(a.getTitle());
myArticle.setListe(a.getSecondaryAuthors());
myArticle.setTheme(a.getTopic());
return myArticle;
}
catch (NumberFormatException e) {
throw new ModelAndViewDefiningException(new ModelAndView("404error"));
}
}
else {
throw new ModelAndViewDefiningException(new ModelAndView("404error"));
}
} }
public IArticleManager getArticleManager() { public IArticleManager getArticleManager() {

View File

@@ -19,13 +19,13 @@ public class FormSubmission {
} }
public void setFile(MultipartFile file) { public void setFile(MultipartFile file) {
this.file = file; this.file = file;
} }
public MultipartFile getFile() { public MultipartFile getFile() {
return file; return file;
} }
public String getTitle() { public String getTitle() {
return title; return title;
@@ -57,13 +57,13 @@ public class FormSubmission {
} }
public void setListe(ArrayList<String> liste) { public void setListe(ArrayList<String> liste) {
if(liste!=null) if(liste != null)
{ {
this.liste=new ArrayList<String>(liste); this.liste = new ArrayList<String>(liste);
} }
else else
{ {
this.liste = new ArrayList<String>(); this.liste = new ArrayList<String>();
} }
} }

View File

@@ -42,6 +42,8 @@ public class ArticleDownloadController implements Controller {
Integer articleId = Integer.parseInt(request.getParameter("articleId")); Integer articleId = Integer.parseInt(request.getParameter("articleId"));
Article article = articleManager.getArticle(articleId); Article article = articleManager.getArticle(articleId);
// FIXME : v<>rifier si le gars a le droit de dl ou pas
if(article == null){ if(article == null){
return new ModelAndView(new RedirectView("404error.htm")); return new ModelAndView(new RedirectView("404error.htm"));
} }