rendered paste body/*
* UserArticle.java created on Dec 31, 2004
*
*/
package org.remiss.db;
import javax.servlet.http.HttpServletRequest;
/**
* @author roger
*
*/
public class UserArticle {
private int view,start,action;
private final Articles art;
private static final int ART_LIMIT=10;
public static String startPage, processPage;
//ACTIONS
public static final int NO_ACTION=0, EDIT_ART=1, UPDATE_ART=3, NEW_ART=4;
public static final int INSERT_ART=5, DELETE_ART=6, LIST_ART=7, DELETE_CONFIRM=8;
public static final int DELETE_COMMENT = 9;
public UserArticle(){
view=0;
start=0;
startPage = "/index.jsp";
processPage = "/docs/articles.jsp";
art = new Articles();
}
public void setView(String view) {
try {
this.view = Integer.parseInt(view);
}
catch(NumberFormatException e) {
this.view = -1;
}
}
public void setStart(String start) {
try {
this.start = Integer.parseInt(start);
if(this.start<0)
this.start=0;
}
catch(NumberFormatException e) {
this.start = 0;
}
}
public void setAction(String a) {
try {
action = Integer.parseInt(a);
if(action<0)
action=UserArticle.NO_ACTION;
}
catch(NumberFormatException e) {
action = UserArticle.NO_ACTION;
}
}
private void checkVars(HttpServletRequest request) {
if(request.getServletPath().equals(startPage)){
// view does not make sense on this page
view=0;
// reset if not specified
if(request.getParameter("start")==null)
start = 0;
}
else if(request.getServletPath().equals(processPage)&&request.getParameter("action")==null)
action=0;
}
public String getArticleList(int uid) {
return "<div class='optionbox'><ul class='optionbox'><li><a href='" + processPage +
"?action=" + UserArticle.NEW_ART + "'>Ny artikkel</a></li></ul></div>\n" +
art.getArticleList(uid);
}
public String processAuthenticatedRequest(HttpServletRequest request, int uid, boolean admin) {
checkVars(request);
StringBuffer ret= new StringBuffer();
if(action==UserArticle.LIST_ART) {
ret.append("<h1>Artikkelliste</h1>\n");
ret.append(getArticleList(admin?0:uid));
}
else if(action==UserArticle.NEW_ART) {
ret.append("<h1>Ny artikkel</h1>\n");
ret.append( art.createNewForm());
}
else if(action==UserArticle.EDIT_ART) {
if(view>0) {
ret.append("<p>Rediger artikkel\n</p>");
ret.append(art.createEditForm(view));
}
else {
ret.append("<p>Velg artikkel som skal redigeres</p>");
ret.append(art.getArticleList(admin?0:uid));
}
}
else if(action == UserArticle.INSERT_ART || action == UserArticle.UPDATE_ART) {
String topic = request.getParameter("topic");
String ingress = request.getParameter("ingress");
String text = request.getParameter("text");
if(topic==null||topic.equals(""))
return "<p class='error'>Topic er ikke satt</p>\n";
if(ingress==null||ingress.equals(""))
return "<p class='error'>Ingress er ikke satt</p>\n";
if(text==null)
text="";
if(action==UserArticle.INSERT_ART) {
if(art.addArticle(uid,topic,ingress,text))
ret.append("<p class='aok'>Vellykket! Satt inn ny artikkel.</p>\n");
else
ret.append("<p class='error'>Det oppstod et problem når artikkelen skulle settes inn.</p>\n");
ret.append(getArticleList(admin?0:uid));
}
else {
if(view>0) {
if(art.modifyArticle(view,topic,ingress,text))
ret.append("<p class='aok'>Endret artikkel.</p>");
else
ret.append("<p class='error'>Kunne ikke endre artikkel.</p>");
ret.append(getArticleList(admin?0:uid));
}
}
}
else if(action == UserArticle.DELETE_ART||action==UserArticle.DELETE_CONFIRM) {
if(view>0) {
if(action==UserArticle.DELETE_CONFIRM) {
if(art.deleteArticle(view, admin?0:uid))
ret.append("<p class='aok'>Slettet artikkelen.</p>\n");
else
ret.append("<p class='error'>Kunne ikke slette artikkelen./p>\n");
ret.append(getArticleList(admin?0:uid));
}
else {
ret.append("<p>Sikker på at du vil slette denne artikkelen? <a href='" + processPage);
ret.append("?action=" + UserArticle.DELETE_CONFIRM + "&view="+ view+ "'>Yes</a></p>\n");
ret.append(art.viewArticle(view,admin));
}
}
else
ret.append("<p class='error'>Ingen artikkel spesifisert til sletting.</p>\n");
}
else if(action==DELETE_COMMENT) {
ret.append("<p class='error'>Feil med kommentarid</p>");
if(request.getParameter("comid")!=null) {
try {
int comId = Integer.parseInt(request.getParameter("comid"));
if(comId>0) {
art.deleteComment(comId);
ret.setLength(0);
ret.append("<p class='aok'>Fjernet kommentar</p>\n");
}
}catch(NumberFormatException e) {}
}
}
else
return processRequest(request, admin);
return ret.toString();
}
public String processRequest(HttpServletRequest request) {
return processRequest(request, false);
}
public String processRequest(HttpServletRequest request, boolean admin) {
checkVars(request);
StringBuffer ret = new StringBuffer();
if(view>0) {
if(request.getParameter("subcom")!=null) {
if(request.getParameter("name")!=null&&request.getParameter("comment")!=null) {
if(!art.addComment(view, request.getParameter("name"), request.getParameter("comment")))
ret.append("<p class='error'>En feil oppstod når kommentar skulle legges til</p>");
}
else ret.append("<p class='error'>Kommentar ikke lagt til</p>");
}
ret.append(art.viewArticle(view,admin));
ret.append("\n<a href='");
ret.append(startPage);
ret.append("?start=");
ret.append(start);
ret.append("'>");
ret.append(Articles.BACK);
ret.append("</a>\n");
String ua =request.getHeader("user-agent");
if(ua!=null&&(ua=ua.toLowerCase()).indexOf("bot")<0&&ua.indexOf("slurp")<0&&!admin)
art.incrementCount(view);
view=0;
}
else {
String txt = art.viewArticles(start,ART_LIMIT,admin);
if(txt!=null)
ret.append(txt);
else ret.append("<p class='error'>Fikk ikke valgt forespurt artikkel eller ingen " +
"tidligere artikler</p>\n");
ret.append("<p>\n");
int tStart=start-ART_LIMIT;
if(tStart<0)
tStart=0;
if(start>0||txt==null)
ret.append("\n<a href='" + startPage + "?start=" + tStart + "'>" + Articles.BACK + "</a>\n");
if(txt!=null)
ret.append("\n<a href='"+ startPage + "?start=" + (start+ART_LIMIT) + "'>" + Articles.NEXT + "</a>\n");
ret.append("</p>\n");
}
return ret.toString();
}
}