Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 200 → Rev 201

/impl/conf/language/MessageResourcesBlog.properties
28,3 → 28,16
blog.post.created.success=Post adicionado com sucesso
 
blog.old.months=Meses Anteriores
blog.confirm.delete=Tem a certeza que deseja apagar o Blog Selecionado? Todos os Posts serão apagados do Sistema.
blog.deleted.success=Blog {0} apagado com sucesso.
blog.deleted.fail=O Blog {0} não foi apagado, contacte a administração.
blog.add.post=Adicionar POST
blog.delete.post=Apagar POST
blog.confirm.delete.post=Tem a certeza que deseja apagar o POST Selecionado?
blog.post.deleted.success=POST {0} apagado com sucesso.
blog.post.deleted.fail=O POST {0} não foi apagado, contacte a administração.
 
 
 
 
 
/impl/conf/WEB-INF/struts/tiles-blog.xml
56,6 → 56,5
<put name="topnav" value="/user/serviceZone/topnavLoadBlogMonth.jsp"/>
<put name="body" value="/public/blogs/blog.jsp"/>
</definition>
 
 
</tiles-definitions>
/impl/conf/berserk/sd.xml
227,6 → 227,43
</filterChains>
</service>
<service>
<name>EditBlog</name>
<implementationClass>pt.estgp.estgweb.services.blogs.CreateBlogService</implementationClass>
<description>Edit a Blog</description>
<isTransactional>true</isTransactional>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
<!--<chain name="Admins"/>-->
<chain name="OwnersEdit"/>
<!--<chain name="OwnersEditOnlyIfNotValid"/>-->
<!--<chain name="ContextObjectTimer"/>-->
<!--<chain name="ContextStaticTimerExample"/>-->
</filterChains>
</service>
<service>
<name>DeleteBlog</name>
<implementationClass>pt.estgp.estgweb.services.blogs.DeleteBlogService</implementationClass>
<description>Delete an Blog</description>
<isTransactional>true</isTransactional>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
<chain name="OwnersLoadBlog"/>
</filterChains>
</service>
<service>
<name>DeleteBlogPost</name>
<implementationClass>pt.estgp.estgweb.services.blogs.DeleteBlogPostService</implementationClass>
<description>Delete a Post</description>
<isTransactional>true</isTransactional>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
<chain name="OwnerBlogPost"/>
</filterChains>
</service>
<service>
<name>CreateBlogPost</name>
<implementationClass>pt.estgp.estgweb.services.blogs.CreateBlogPostService</implementationClass>
<description>Create a Blog Post</description>
247,9 → 284,24
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
<chain name="InternalBlog"/>
<chain name="TargetRolesBlog"/>
</filterChains>
</service>
<service>
<name>LoadEditBlog</name>
<implementationClass>pt.estgp.estgweb.services.blogs.LoadBlogService</implementationClass>
<description>Load an Announcement view</description>
<isTransactional>true</isTransactional>
<defaultMethod>loadIndex</defaultMethod>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
<!--<chain name="Admins"/>-->
<chain name="OwnersLoadBlog"/>
</filterChains>
</service>
<service>
<name>LoadBlogByDate</name>
<implementationClass>pt.estgp.estgweb.services.blogs.LoadBlogService</implementationClass>
<description>Load a Blog in a specfied month and year</description>
258,6 → 310,8
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
<chain name="InternalBlog"/>
<chain name="TargetRolesBlog"/>
</filterChains>
</service>
<service>
293,32 → 347,9
<chain name="AuthenticatedUsers"/>
</filterChains>
</service>
<service>
<name>LoadBlogPostsByDate</name>
<implementationClass>pt.estgp.estgweb.services.blogs.LoadBlogPostsService</implementationClass>
<description>Load BlogPosts in a given month</description>
<isTransactional>true</isTransactional>
<defaultMethod>loadByDate</defaultMethod>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
<!--<chain name="TargetUsers"/>-->
</filterChains>
</service>
<service>
<name>LoadLastBlogPosts</name>
<implementationClass>pt.estgp.estgweb.services.blogs.LoadBlogPostsService</implementationClass>
<description>Load last Blog Posts</description>
<isTransactional>true</isTransactional>
<defaultMethod>loadLastPosts</defaultMethod>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
<!--<chain name="TargetUsers"/>-->
</filterChains>
</service>
 
 
 
<!--CommonServices-->
<service>
<name>CommonServicesSearch</name>
/impl/conf/berserk/fcd.xml
114,6 → 114,34
<invocationTiming>1</invocationTiming>
<filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
</filterChain>
<filterChain>
<name>InternalBlog</name>
<expression>InternalObject("serializable","pt.estgp.estgweb.domain.BlogImpl")</expression>
<description>Check if the object is internal</description>
<invocationTiming>1</invocationTiming>
<filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
</filterChain>
<filterChain>
<name>TargetRolesBlog</name>
<expression>TargetRoleUsersClass("serializable","pt.estgp.estgweb.domain.BlogImpl") || OwnerUsersClass("serializable","pt.estgp.estgweb.domain.BlogImpl")</expression>
<description>Owner of an object Control Chain</description>
<invocationTiming>1</invocationTiming>
<filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
</filterChain>
<filterChain>
<name>OwnersLoadBlog</name>
<expression>OwnerUsersClass("serializable","pt.estgp.estgweb.domain.BlogImpl")</expression>
<description>Owner of an object Control Chain</description>
<invocationTiming>1</invocationTiming>
<filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
</filterChain>
<filterChain>
<name>OwnerBlogPost</name>
<expression>OwnerUsersClass("serializable","pt.estgp.estgweb.domain.BlogPostImpl")</expression>
<description>Owner of an object Control Chain</description>
<invocationTiming>1</invocationTiming>
<filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
</filterChain>
 
 
 
124,6 → 152,7
 
 
 
 
<filterChain>
<name>ContextStaticTimerExample</name>
<expression>ContextStaticTimer("2008-03-1 12:00:00","2008-03-2 19:56:00")</expression>
/impl/src/java/pt/estgp/estgweb/services/blogs/DeleteBlogService.java
New file
0,0 → 1,46
package pt.estgp.estgweb.services.blogs;
 
import pt.utl.ist.berserk.logic.serviceManager.IService;
import pt.estgp.estgweb.services.announcements.DeleteAnnouncementService;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import org.apache.log4j.Logger;
 
import java.io.Serializable;
 
/*
* @author Goncalo Luiz gedl [AT] rnl [DOT] ist [DOT] utl [DOT] pt
*
*
* Created at 17/Out/2003 , 23:45:24
*
*/
/**
* @author Jorge Machado
*
*
* Created at 17/Out/2003 , 23:45:24
*
*/
public class DeleteBlogService implements IService
{
 
private static final Logger logger = Logger.getLogger(DeleteBlogService.class);
 
 
 
public Boolean run(Serializable id, UserSession userSession)
{
try
{
logger.info("Deleting blog:" + id + " user:" + userSession.getUser().getUsername());
DaoFactory.getBlogDaoImpl().delete(id);
return true;
}
catch(Exception e)
{
logger.error("Can't delete blog:"+id +""+e);
return false;
}
}
}
/impl/src/java/pt/estgp/estgweb/services/blogs/CreateBlogService.java
4,6 → 4,7
import pt.estgp.estgweb.services.expceptions.ServiceException;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.Blog;
import pt.estgp.estgweb.domain.DomainObjectFactory;
import pt.estgp.estgweb.domain.views.BlogView;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.Globals;
29,13 → 30,23
{
private static final Logger logger = Logger.getLogger(CreateBlogService.class);
 
public BlogView run(Blog b, UserSession userSession) throws ServiceException
public BlogView run(BlogView bV, UserSession userSession) throws ServiceException
{
Blog b;
if(bV.getId() <= 0)
{
b = DomainObjectFactory.createBlogImpl();
b.setOwner(userSession.getUser());
b.setSaveDate(new Date());
DaoFactory.getBlogDaoImpl().save(b);
}
else
{
b = DaoFactory.getBlogDaoImpl().get(bV.getSerializable());
}
bV.persistViewInObject(b);
if(b.getTargetRoles() == null || b.getTargetRoles().length() == 0)
b.setTargetRoles(Globals.ALL_ROLE);
b.setOwner(userSession.getUser());
b.setSaveDate(new Date());
DaoFactory.getBlogDaoImpl().save(b);
return new BlogView(b);
}
}
/impl/src/java/pt/estgp/estgweb/services/blogs/DeleteBlogPostService.java
New file
0,0 → 1,45
package pt.estgp.estgweb.services.blogs;
 
import pt.utl.ist.berserk.logic.serviceManager.IService;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import org.apache.log4j.Logger;
 
import java.io.Serializable;
 
/*
* @author Goncalo Luiz gedl [AT] rnl [DOT] ist [DOT] utl [DOT] pt
*
*
* Created at 17/Out/2003 , 23:45:24
*
*/
/**
* @author Jorge Machado
*
*
* Created at 17/Out/2003 , 23:45:24
*
*/
public class DeleteBlogPostService implements IService
{
 
private static final Logger logger = Logger.getLogger(DeleteBlogPostService.class);
 
 
 
public Boolean run(Serializable id, UserSession userSession)
{
try
{
logger.info("Deleting blog post:" + id + " user:" + userSession.getUser().getUsername());
DaoFactory.getBlogPostDaoImpl().delete(id);
return true;
}
catch(Exception e)
{
logger.error("Can't delete blog post:"+id +""+e);
return false;
}
}
}
/impl/src/java/pt/estgp/estgweb/services/announcements/DeleteAnnouncementService.java
34,13 → 34,13
{
try
{
logger.info("Deleting announcement:" + id);
logger.info("Deleting announcement:" + id+ " user:" + userSession.getUser().getUsername());
DaoFactory.getAnnouncementDaoImpl().delete(id);
return true;
}
catch(Exception e)
{
logger.error("Can´t delete announcement:"+id +""+e);
logger.error("Can't delete announcement:"+id +""+e);
return false;
}
}
/impl/src/java/pt/estgp/estgweb/domain/BlogImpl.java
14,7 → 14,7
* @time 14:37:50
* @see pt.estgp.estgweb.domain
*/
public class BlogImpl extends Blog implements IAddContents, IOwned, IInternal, ITargetRoles
public class BlogImpl extends Blog implements IAddContents, IOwned, IInternal, ITargetRoles, IValid
{
 
private static final Logger logger = Logger.getLogger(BlogImpl.class);
65,4 → 65,9
{
return getId();
}
 
public boolean isValid()
{
return isStatus();
}
}
/impl/src/java/pt/estgp/estgweb/domain/BlogPostImpl.java
9,16 → 9,37
* @time 14:38:08
* @see pt.estgp.estgweb.domain
*/
public class BlogPostImpl extends BlogPost
public class BlogPostImpl extends BlogPost implements IOwned, IValid, IInternal
{
public Serializable getSerializable()
{
return getId();
}
 
/*Not Implemented*/
/**
* Not implemeted
* @return null
*/
public List<String> getOwnerRoles()
{
return null;
}
 
/**
* Not implemented
*/
public String getChoosedOwnerRole()
{
return null;
}
 
public boolean isValid()
{
return isStatus();
}
 
public boolean isInternal()
{
return getBlog().isInternal();
}
}
/impl/src/java/pt/estgp/estgweb/domain/views/BlogPostView.java
14,7 → 14,7
* @time 19:34:49
* @see pt.estgp.estgweb.domain.views
*/
public class BlogPostView extends DomainObjectView implements IOwned
public class BlogPostView extends DomainObjectView implements IOwned, IInternal, IValid
{
 
private static final Logger logger = Logger.getLogger(BlogPostView.class);
29,6 → 29,7
private boolean status;
private BlogPost blogPost;
private long blogId;
private boolean internal;
 
public BlogPostView()
{
45,6 → 46,7
this.id = blogPost.getId();
this.owner = blogPost.getOwner();
this.blogId = blogPost.getBlog().getId();
this.internal = blogPost.getBlog().isInternal();
}
 
public void persistViewInObject(BlogPost blogPost)
177,4 → 179,14
else
return null;
}
 
public boolean isInternal()
{
return internal;
}
 
public boolean isValid()
{
return status;
}
}
/impl/src/java/pt/estgp/estgweb/domain/views/BlogView.java
14,7 → 14,7
* @time 19:34:49
* @see pt.estgp.estgweb.domain.views
*/
public class BlogView extends DomainObjectView implements IAddContents, IOwned, IInternal, ITargetRoles
public class BlogView extends DomainObjectView implements IAddContents, IOwned, IInternal, ITargetRoles, IValid
{
 
private static final Logger logger = Logger.getLogger(BlogView.class);
58,8 → 58,10
blog.setTitle(title);
blog.setDescription(description);
blog.setTargetRoles(RoleManager.getSerialRoles(targetRoles));
blog.setImage(image);
if(image != null)
blog.setImage(image);
blog.setStatus(status);
blog.setInternal(internal);
}
 
 
241,6 → 243,11
return getTargetRoles();
}
 
public boolean isValid()
{
return status;
}
 
public static class MonthPosts
{
private int count;
/impl/src/java/pt/estgp/estgweb/web/controllers/AddRolesController.java
29,7 → 29,7
 
private static final Logger logger = Logger.getLogger(AddRolesController.class);
 
private static final String TARGET_ROLES_KEY = AddRolesForm.TARGET_ROLES_KEY;
protected static final String TARGET_ROLES_KEY = AddRolesForm.TARGET_ROLES_KEY;
 
public ActionForward start(ActionMapping mapping,
ActionForm form ,
/impl/src/java/pt/estgp/estgweb/web/controllers/blogs/BlogsController.java
4,12 → 4,16
import pt.estgp.estgweb.web.utils.RequestUtils;
import pt.estgp.estgweb.web.utils.DomainUtils;
import pt.estgp.estgweb.web.form.blogs.BlogForm;
import pt.estgp.estgweb.web.UserSessionProxy;
import pt.estgp.estgweb.web.exceptions.NoCookiesException;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.views.BlogView;
import pt.estgp.estgweb.domain.views.BlogPostView;
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.exceptions.FilterChainFailedException;
import pt.utl.ist.berserk.logic.serviceManager.exceptions.ServiceManagerException;
import pt.utl.ist.berserk.logic.filterManager.exceptions.*;
import org.apache.log4j.Logger;
import org.apache.struts.action.*;
import org.apache.struts.upload.FormFile;
17,13 → 21,8
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.io.InputStream;
import java.io.ByteArrayOutputStream;
import java.util.Date;
import java.util.List;
import java.io.Serializable;
 
import jomm.utils.StreamsUtils;
 
/**
* @author Jorge Machado
* @date 26/Fev/2008
35,6 → 34,25
 
private static final Logger logger = Logger.getLogger(BlogsController.class);
 
 
private ActionForward loadBlogAndForward(long id, ActionMapping mapping, HttpServletRequest request, HttpServletResponse response)
throws Throwable, InvalidFilterException, ServiceManagerException, InvalidFilterExpressionException, IncompatibleFilterException, FilterRetrieveException, NoCookiesException
{
BlogView bV = loadBlogView(id,mapping,request,response);
request.setAttribute("BlogView", bV);
return mapping.findForward("load");
}
 
private BlogView loadBlogView(long id, ActionMapping mapping, HttpServletRequest request, HttpServletResponse response)
throws Throwable, InvalidFilterException, ServiceManagerException, InvalidFilterExpressionException, IncompatibleFilterException, FilterRetrieveException, NoCookiesException
{
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{"serializable"};
Object[] args = new Object[]{id};
BlogView bV = (BlogView) sm.execute(RequestUtils.getRequester(request, response), "LoadBlog", args, names);
return bV;
}
 
public ActionForward save(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
50,35 → 68,30
saveErrors(request,errors);
return mapping.findForward("submit");
}
if (blogForm.getBlogView().getId() <= 0)
 
IServiceManager sm = ServiceManager.getInstance();
if (blogForm.getImage() != null && blogForm.getImage().getFileSize() != 0)
{
Blog blog = DomainObjectFactory.createBlogImpl();
blogForm.getBlogView().persistViewInObject(blog);
IServiceManager sm = ServiceManager.getInstance();
 
if (blogForm.getImage() != null && blogForm.getImage().getFileSize() != 0)
{
FormFile image = blogForm.getImage();
Image i = DomainUtils.getNewImage(image,blog.getTitle());
blog.setImage(i);
}
String[] names = new String[]{"object"};
Object[] args = new Object[]{blog};
BlogView bV = (BlogView) sm.execute(RequestUtils.getRequester(request, response), "CreateBlog", args, names);
FormFile image = blogForm.getImage();
Image i = DomainUtils.getNewImage(image,blogForm.getBlogView().getTitle());
blogForm.getBlogView().setImage(i);
}
String[] names = new String[]{"object"};
Object[] args = new Object[]{blogForm.getBlogView()};
BlogView bV = blogForm.getBlogView();
if(bV.getId() <= 0)
{
bV = (BlogView) sm.execute(RequestUtils.getRequester(request, response), "CreateBlog", args, names);
addMessage(request, "blog.created.success", "" + bV.getId());
request.setAttribute("BlogView", bV);
return mapping.findForward("load");
}
else
{
BlogView bV = blogForm.getBlogView();
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{"object"};
Object[] args = new Object[]{bV};
bV = (BlogView) sm.execute(RequestUtils.getRequester(request, response), "EditBlog", args, names);
addMessage(request, "blog.edited.success", "" + bV.getId());
return mapping.findForward("load");
}
request.setAttribute("BlogView", bV);
return mapping.findForward("load");
 
}
catch (FilterChainFailedException e)
{
99,12 → 112,7
{
try
{
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{"serializable"};
Object[] args = new Object[]{Long.parseLong(request.getParameter("id"))};
BlogView bV = (BlogView) sm.execute(RequestUtils.getRequester(request, response), "LoadBlog", args, names);
request.setAttribute("BlogView", bV);
return mapping.findForward("load");
return loadBlogAndForward(Long.parseLong(request.getParameter("id")),mapping,request,response);
}
catch (FilterChainFailedException e)
{
125,10 → 133,7
{
try
{
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{"serializable"};
Object[] args = new Object[]{Long.parseLong(request.getParameter("id"))};
BlogView bV = (BlogView) sm.execute(RequestUtils.getRequester(request, response), "LoadBlog", args, names);
BlogView bV = loadBlogView(Long.parseLong(request.getParameter("id")),mapping,request,response);
request.setAttribute("BlogView", bV);
BlogForm blogForm = (BlogForm) form;
blogForm.setBlogView(bV);
160,10 → 165,7
if(!errors.isEmpty())
{
saveErrors(request,errors);
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{"serializable"};
Object[] args = new Object[]{blogForm.getBlogView().getId()};
BlogView bV = (BlogView) sm.execute(RequestUtils.getRequester(request, response), "LoadBlog", args, names);
BlogView bV = loadBlogView(blogForm.getBlogView().getId(),mapping,request,response);
request.setAttribute("BlogView", bV);
request.setAttribute("BlogPostView", blogForm.getBlogPostView());
return mapping.findForward("load");
185,12 → 187,7
bPV = (BlogPostView) sm.execute(RequestUtils.getRequester(request, response), "CreateBlogPost", args, names);
addMessage(request, "blog.post.created.success", "" + bPV.getId());
 
 
names = new String[]{"serializable"};
args = new Object[]{blogForm.getBlogView().getId()};
BlogView bV = (BlogView) sm.execute(RequestUtils.getRequester(request, response), "LoadBlog", args, names);
request.setAttribute("BlogView", bV);
return mapping.findForward("load");
return loadBlogAndForward(blogForm.getBlogView().getId(),mapping,request,response);
}
else
{
215,9 → 212,9
}
 
public ActionForward loadMonth(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
try
242,4 → 239,106
return mapping.findForward("error500");
}
}
 
 
public ActionForward edit(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Throwable, ServletException
{
try
{
UserSessionImpl sess = (UserSessionImpl) UserSessionProxy.loadUserSession(request,response);
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{"serializable"};
Object[] args = new Object[]{new Long(request.getParameter("id"))};
BlogView bV = (BlogView) sm.execute(RequestUtils.getRequester(request, response), "LoadEditBlog", args, names);
BlogForm blogForm = (BlogForm) form;
blogForm.setBlogView(bV);
blogForm.setSelectedRoles(bV.getTargetRoles());
sess.put(TARGET_ROLES_KEY, (Serializable) bV.getTargetRoles());
sess.serialize(request,response);
return mapping.findForward("submit");
}
catch (FilterChainFailedException e)
{
return mapping.findForward("error401");
}
catch (Throwable e)
{
logger.error(e, e);
throw e;
}
}
 
public ActionForward delete(ActionMapping mapping,
ActionForm form ,
HttpServletRequest request,
HttpServletResponse response)
throws Throwable, ServletException
{
try
{
 
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{"serializable"};
Object[] args = new Object[]{new Long(request.getParameter("id"))};
Boolean status= (Boolean) sm.execute(RequestUtils.getRequester(request, response),"DeleteBlog",args,names);
if(status)
{
addMessage(request,"blog.deleted.success","" + request.getParameter("id"));
}
else
{
addMessage(request,"blog.deleted.fail","" + request.getParameter("id"));
}
return mapping.getInputForward();
}
catch(FilterChainFailedException e)
{
return mapping.findForward("error401");
}
catch (Throwable e)
{
logger.error(e,e);
throw e;
}
 
}
 
public ActionForward deletePost(ActionMapping mapping,
ActionForm form ,
HttpServletRequest request,
HttpServletResponse response)
throws Throwable, ServletException
{
try
{
 
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{"serializable"};
Object[] args = new Object[]{new Long(request.getParameter("id"))};
Boolean status= (Boolean) sm.execute(RequestUtils.getRequester(request, response),"DeleteBlogPost",args,names);
if(status)
{
addMessage(request,"blog.post.deleted.success","" + request.getParameter("id"));
}
else
{
addMessage(request,"blog.post.deleted.fail","" + request.getParameter("id"));
}
return loadBlogAndForward(new Long(request.getParameter("blogId")),mapping,request,response);
}
catch(FilterChainFailedException e)
{
return mapping.findForward("error401");
}
catch (Throwable e)
{
logger.error(e,e);
throw e;
}
 
}
}
/impl/src/java/pt/estgp/estgweb/web/controllers/announcements/AnnouncementsController.java
38,7 → 38,6
 
private static final Logger logger = Logger.getLogger(AnnouncementsController.class);
 
private static final String TARGET_ROLES_KEY = AddRolesForm.TARGET_ROLES_KEY;
 
public ActionForward save(ActionMapping mapping,
ActionForm form,
/impl/src/hbm/pt/estgp/estgweb/domain/Blog.hbm.xml
20,6 → 20,10
<property name="status" type="boolean" />
<many-to-one name="image" column="image" class="pt.estgp.estgweb.domain.Image" lazy="no-proxy" outer-join="false" cascade="all"/>
<many-to-one name="owner" class="pt.estgp.estgweb.domain.GenericUser" lazy="false" outer-join="true"/>
<set name="posts" cascade="delete" lazy="true">
<key column="blog"/>
<one-to-many class="pt.estgp.estgweb.domain.BlogPost"/>
</set>
<subclass name="pt.estgp.estgweb.domain.BlogImpl" discriminator-value="BlogImpl">
<subclass name="pt.estgp.estgweb.domain.CourseUnitBlog">
<meta attribute="extends">pt.estgp.estgweb.domain.BlogImpl</meta>
28,6 → 32,5
<subclass name="pt.estgp.estgweb.domain.CourseUnitBlogImpl" discriminator-value="CourseUnitBlogImpl"/>
</subclass>
</subclass>
 
</class>
</hibernate-mapping>
/impl/src/web/js/functions.js
57,3 → 57,17
}
 
}
 
function confirmAction(msg,form,actionOk)
{
if(confirm(msg))
{
set(form,actionOk);
form.submit();
}
}
 
function confirmLink(msg)
{
return confirm(msg);
}
/impl/src/web/public/blogs/blog.jsp
1,4 → 1,5
<%@ page import="pt.estgp.estgweb.Globals" %>
<%@ page import="jomm.utils.MessageResources" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
7,6 → 8,7
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %>
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
<jsp:useBean id="BlogView" type="pt.estgp.estgweb.domain.views.BlogView" scope="request"/>
 
<%
String fromAction = "";
String from = "";
21,6 → 23,7
request.setAttribute("user", user);
request.setAttribute("fromAction", fromAction);
%>
 
<html:errors/>
<jomm:messages/>
<div class="blog">
29,7 → 32,22
<h1>
<bean:write name="BlogView" property="title"/>
</h1>
<baco:canManage name="BlogView">
 
<%
String confirmDelete = MessageResources.getMessage(request,"blog.confirm.delete");
request.setAttribute("confirmDelete",confirmDelete);
%>
<!--valid="false">-->
<html:link action="${user}/startEditBlog${fromAction}?id=${BlogView.id}">
<bean:message key="edit"/>
</html:link>
 
<html:link onclick="return confirm('${confirmDelete}')" action="${user}/startDeleteBlog${fromAction}?id=${BlogView.id}">
<bean:message key="delete"/>
</html:link>
</baco:canManage>
 
<table>
<tr>
<td valign="top">
55,8 → 73,7
<div class="toolsContainer">
<div class="tools">
<baco:canAddContent name="BlogView">
<a href="<%=request.getContextPath()%>${user}/startAddPost${fromAction}.do?id=<%=BlogView.getImage().getId()%>">Adicionar
POST</a>
<a href="<%=request.getContextPath()%>${user}/startAddPost${fromAction}.do?id=<%=BlogView.getId()%>"><bean:message key="blog.add.post"/></a>
</baco:canAddContent>
</div>
</div>
107,7 → 124,12
<tr>
<td class="postsContainer">
<logic:notEmpty name="BlogView" property="lastPosts">
<%
String confirmDeletePost = MessageResources.getMessage(request,"blog.confirm.delete.post");
request.setAttribute("confirmDeletePost",confirmDeletePost);
%>
<logic:notEqual value="0" name="BlogView" property="month">
 
<h2><bean:message key="month.${BlogView.month}.year" arg0="${BlogView.year}"/></h2>
</logic:notEqual>
<table class="posts">
117,6 → 139,9
<tr>
<td colspan="2" class="title">
${post.title}
<baco:canManage name="post">
<a onclick="return confirm('${confirmDeletePost}')" href="<%=request.getContextPath()%>${user}/startDeletePost${fromAction}.do?id=${post.id}&blogId=${BlogView.id}"><bean:message key="blog.delete.post"/></a>
</baco:canManage>
</td>
</tr>
<tr>
175,8 → 200,8
</table>
 
<div class="pFooter">
<a href="<%=request.getContextPath()%>/blog/<%=BlogView.getId()%>"><%=Globals.SITE_URL%>
/blog/<%=BlogView.getId()%>
<a href="<%=request.getContextPath()%>/blog/<%=BlogView.getId()%>">
<%=Globals.SITE_URL + "/blog/" + BlogView.getId()%>
</a>
<bean:message key="blog.owner"/>
<a href="mailto:${BlogView.ownerEmail}">${BlogView.owner.name}</a>