/impl/conf/language/MessageResourcesAnnouncements.properties |
---|
17,11 → 17,14 |
announcement.linkAnnouncement=URL |
announcement.internalLinkAnnouncement=URL interno do sistema |
announcement.target.roles=Pessoas a quem destina |
announcement.created.success=Anúncio criado com sucesso |
announcement.edited.success=Anúncio alterado com sucesso |
announcement.created.success=Anúncio criado com sucesso: <a href="{0}/loadAnnouncement.do?id={1}&dispatch=load">{2}</a> |
announcement.edited.success=Anúncio alterado com sucesso: <a href="{0}/loadAnnouncement.do?id={1}&dispatch=load">{2}</a> |
announcement.deleted.success=Anúncio apagado com sucesso |
announcement.deleted.fail=Não foi possivel apagar o anuncio |
announcement.status=Válido |
announcement.internal=Dominio |
announcement.internal.yes=Interno |
announcement.internal.no=Público |
announcements.type.news=Notícias |
/impl/conf/language/MessageResources.properties |
---|
229,6 → 229,7 |
remove=Remover |
yes=Sim |
no=Não |
edit=Editar |
#Login |
login.first.time.username=Username |
/impl/conf/berserk/sd.xml |
---|
132,6 → 132,7 |
<chain name="Logger"/> |
<chain name="Session"/> |
<!--<chain name="Admins"/>--> |
<chain name="InternalAnnouncement"/> |
<chain name="TargetRolesAnnouncement"/> |
</filterChains> |
</service> |
/impl/conf/berserk/fd.xml |
---|
24,6 → 24,12 |
<isTransactional>false</isTransactional> |
</filter> |
<filter> |
<name>InternalObject</name> |
<implementationClass>pt.estgp.estgweb.filters.filters.InternalObject</implementationClass> |
<description>Checks if the requested object is internal and if user is authenticated</description> |
<isTransactional>false</isTransactional> |
</filter> |
<filter> |
<name>OwnerUsersClass</name> |
<implementationClass>pt.estgp.estgweb.filters.filters.OwnerUsersClass</implementationClass> |
<description>Checks if the requester contains certain roles</description> |
/impl/conf/berserk/fcd.xml |
---|
54,6 → 54,13 |
and referenceClass Name already in 2º filter paramenter |
--> |
<filterChain> |
<name>InternalAnnouncement</name> |
<expression>InternalObject("serializable","pt.estgp.estgweb.domain.Announcement")</expression> |
<description>Check if the object is internal</description> |
<invocationTiming>1</invocationTiming> |
<filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass> |
</filterChain> |
<filterChain> |
<name>TargetRolesAnnouncement</name> |
<expression>TargetRoleUsersClass("serializable","pt.estgp.estgweb.domain.Announcement") || OwnerUsersClass("serializable","pt.estgp.estgweb.domain.Announcement")</expression> |
<description>Owner of an object Control Chain</description> |
/impl/src/java/pt/estgp/estgweb/services/announcements/AnnouncementsCommonServices.java |
---|
19,31 → 19,29 |
import jomm.dao.impl.AbstractDao; |
/* |
* @author Goncalo Luiz gedl [AT] rnl [DOT] ist [DOT] utl [DOT] pt |
* |
* |
* Created at 17/Out/2003 , 23:45:24 |
* |
*/ |
/** |
* @author Jorge Machado |
* <p/> |
* <p/> |
* Created at 17/Out/2003 , 23:45:24 |
* @date 25/Apr/2008 |
* @time 18:01:54 |
* @see pt.estgp.estgweb.web |
*/ |
public class AnnouncementsCommonServices implements IService, IModuleCommonServices { |
public class AnnouncementsCommonServices implements IService, IModuleCommonServices |
{ |
private static final Logger logger = Logger.getLogger(AnnouncementsCommonServices.class); |
public int countSearch(String search, SearchTypeEnum searchType, UserSession userSession) { |
return 0; //To change body of implemented methods use File | Settings | File Templates. |
public int countSearch(String search, SearchTypeEnum searchType, UserSession userSession) |
{ |
return 0; // todo To change body of implemented methods use File | Settings | File Templates. |
} |
public ISearchResults search(String search, SearchTypeEnum searchType, int page, int maxResults, UserSession userSession) { |
public ISearchResults search(String search, SearchTypeEnum searchType, int page, int maxResults, UserSession userSession) |
{ |
DefaultSearchResults searchResults = new DefaultSearchResults(); |
searchResults.setModule(ModuleEnum.Announcements); |
List<String> roles; |
if (userSession == null || userSession.getUser() == null || ((UserImpl) userSession.getUser()).getRolesList() == null || ((UserImpl) userSession.getUser()).getRolesList().size() == 0) { |
if (userSession == null || userSession.getUser() == null || ((UserImpl) userSession.getUser()).getRolesList() == null || ((UserImpl) userSession.getUser()).getRolesList().size() == 0) |
{ |
roles = new ArrayList<String>(); |
roles.add(Globals.ALL_ROLE); |
} |
51,11 → 49,13 |
roles = ((UserImpl) userSession.getUser()).getRolesList(); |
searchResults.setTotalResults(DaoFactory.getAnnouncementDaoImpl().countAnnouncements(search, searchType, roles, null)); |
if (searchResults.getTotalResults() > 0) { |
if (searchResults.getTotalResults() > 0) |
{ |
List<Announcement> announcements = DaoFactory.getAnnouncementDaoImpl().searchAnnouncements(search, searchType, maxResults, page, roles, null); |
if (announcements == null) |
return searchResults; |
for (Announcement a : announcements) { |
for (Announcement a : announcements) |
{ |
DefaultResult defaultResult = new DefaultResult(); |
defaultResult.setTitle(a.getTitle()); |
defaultResult.setSubTitle("announcements.type." + a.getType()); |
68,21 → 68,25 |
return searchResults; |
} |
public int countToDo(UserSession userSession) { |
return 0; //To change body of implemented methods use File | Settings | File Templates. |
public int countToDo(UserSession userSession) |
{ |
return 0; //todo To change body of implemented methods use File | Settings | File Templates. |
} |
public IToDoCat getToDo(UserSession userSession) { |
return null; //To change body of implemented methods use File | Settings | File Templates. |
public IToDoCat getToDo(UserSession userSession) |
{ |
return null; //todo To change body of implemented methods use File | Settings | File Templates. |
} |
public static void main(String[] args) { |
public static void main(String[] args) |
{ |
AbstractDao.getCurrentSession().beginTransaction(); |
UserSession sess = new UserSessionImpl(); |
sess.setUser(new UserImpl()); |
sess.getUser().setRoles("all"); |
ISearchResults searchResults = new AnnouncementsCommonServices().search("teste", SearchTypeEnum.AllWords, 0, 10, sess); |
for (IResult result : searchResults.getResults()) { |
for (IResult result : searchResults.getResults()) |
{ |
System.out.println("title:" + result.getTitle()); |
System.out.println("subTitle:" + result.getSubTitle()); |
System.out.println("text:" + result.getText()); |
/impl/src/java/pt/estgp/estgweb/services/announcements/LoadTopFlashNewsIterateService.java |
---|
16,11 → 16,10 |
import java.util.ArrayList; |
/** |
* Created by IntelliJ IDEA. |
* User: Fabio |
* Date: 28/Mar/2008 |
* Time: 11:42:28 |
* To change this template use File | Settings | File Templates. |
* @author Jorge Machado |
* @date 28/Mar/2008 |
* @time 18:01:54 |
* @see pt.estgp.estgweb.web |
*/ |
public class LoadTopFlashNewsIterateService implements IService |
{ |
37,18 → 36,20 |
iterator = 0; |
int size = DaoFactory.getAnnouncementDaoImpl().countAnnouncements(1,null,Globals.ANNOUNCEMENT_TYPE_TOP_FLASH_NEWS,null); |
iterator = iterator % size; |
List<Announcement> announcements = DaoFactory.getAnnouncementDaoImpl().findAnnouncements(iterator, 1,null,Globals.ANNOUNCEMENT_TYPE_TOP_FLASH_NEWS,subTarget); |
iterator++; |
((UserSessionImpl)sess).put(flashNewsIterator,iterator); |
if(size != 0) |
{ |
iterator = iterator % size; |
List<Announcement> announcements = DaoFactory.getAnnouncementDaoImpl().findAnnouncements(iterator, 1,null,Globals.ANNOUNCEMENT_TYPE_TOP_FLASH_NEWS,subTarget); |
iterator++; |
((UserSessionImpl)sess).put(flashNewsIterator,iterator); |
if(announcements == null) |
return null; |
logger.info("Loading announcement top flash iterator"); |
if(announcements.size() > 0) |
{ |
AnnouncementView announcementView = new AnnouncementView(announcements.get(0)); |
return announcementView; |
if(announcements == null) |
return null; |
logger.info("Loading announcement top flash iterator"); |
if(announcements.size() > 0) |
{ |
return new AnnouncementView(announcements.get(0)); |
} |
} |
return null; |
} |
/impl/src/java/pt/estgp/estgweb/domain/UserImpl.java |
---|
1,6 → 1,7 |
package pt.estgp.estgweb.domain; |
import pt.estgp.estgweb.utils.RoleManager; |
import pt.estgp.estgweb.Globals; |
import java.io.Serializable; |
import java.util.Date; |
90,4 → 91,19 |
{ |
return this; |
} |
public boolean isSuperUser() |
{ |
return super.isSuperuser() || hasRole(Globals.SUPER_USER_ROLE); |
} |
public boolean isAdmin() |
{ |
return hasRole(Globals.ADMIN_ROLE); |
} |
public boolean isSuperUserOrAdmin() |
{ |
return isSuperUser() || isAdmin(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/AnnouncementImpl.java |
---|
1,6 → 1,7 |
package pt.estgp.estgweb.domain; |
import pt.estgp.estgweb.utils.RoleManager; |
import pt.estgp.estgweb.domain.enums.AnnouncementStyleEnum; |
import java.util.Date; |
import java.util.List; |
19,6 → 20,13 |
return super.getOwner(); |
} |
public String getStyle() |
{ |
if(super.getStyle() == null) |
setStyle(AnnouncementStyleEnum.imgEmbeddedLeft.getMessageKey()); |
return super.getStyle(); |
} |
public Serializable getSerializable() |
{ |
return getId(); |
/impl/src/java/pt/estgp/estgweb/domain/views/AnnouncementView.java |
---|
35,6 → 35,7 |
private Date expireDate; |
private Integer counter; |
private boolean status; |
private boolean internal; |
private long ownerID; |
private String style; |
private String internalUrlServer; |
66,6 → 67,7 |
this.internalUrlPath = announcement.getInternalUrlPath(); |
this.style = announcement.getStyle(); |
this.internalUrlInclude = announcement.isInternalUrlInclude(); |
this.internal = announcement.isInternal(); |
} |
public void persistViewInObject(Announcement announcement) |
86,9 → 88,18 |
announcement.setInternalUrlPath(internalUrlPath); |
announcement.setStyle(style); |
announcement.setInternalUrlInclude(internalUrlInclude); |
announcement.setInternal(internal); |
} |
public boolean isInternal() { |
return internal; |
} |
public void setInternal(boolean internal) { |
this.internal = internal; |
} |
public boolean isInternalUrlInclude() { |
return internalUrlInclude; |
} |
/impl/src/java/pt/estgp/estgweb/domain/IInternal.java |
---|
New file |
0,0 → 1,11 |
package pt.estgp.estgweb.domain; |
/** |
* @author Jorge Machado |
* @date 15/Mai/2008 |
* @see pt.estgp.estgweb.domain |
*/ |
public interface IInternal |
{ |
public boolean isInternal(); |
} |
/impl/src/java/pt/estgp/estgweb/domain/DomainObject.java |
---|
14,7 → 14,7 |
* @time 10:56:46 |
* @see pt.estgp.estgweb.domain |
*/ |
public abstract class DomainObject implements IOwned, IContextTimerObject, ITargetRoles |
public abstract class DomainObject implements IOwned, IContextTimerObject, ITargetRoles, IInternal |
{ |
private static final Date MIN_DATE = new Date(0); |
private static final Date MAX_DATE = new Date(Integer.MAX_VALUE); |
120,4 → 120,9 |
roles.add(ALL_ROLE); |
return roles; |
} |
public boolean isInternal() |
{ |
return true; |
} |
} |
/impl/src/java/pt/estgp/estgweb/filters/filters/InternalObject.java |
---|
New file |
0,0 → 1,31 |
package pt.estgp.estgweb.filters.filters; |
import org.apache.log4j.Logger; |
import pt.estgp.estgweb.domain.IInternal; |
import pt.estgp.estgweb.domain.UserSession; |
import pt.estgp.estgweb.filters.chains.LoadControlFilter; |
import pt.estgp.estgweb.filters.exceptions.NeedAuthenticationException; |
import pt.estgp.estgweb.filters.filters.utils.LoadObjectFromParameters; |
import pt.estgp.estgweb.Globals; |
import pt.utl.ist.berserk.ServiceRequest; |
import pt.utl.ist.berserk.ServiceResponse; |
import pt.utl.ist.berserk.logic.filterManager.FilterParameters; |
import pt.utl.ist.berserk.logic.filterManager.exceptions.FilterException; |
public class InternalObject extends LoadControlFilter |
{ |
private static final Logger logger = Logger.getLogger(InternalObject.class); |
public void execute(ServiceRequest request, ServiceResponse response, FilterParameters filterParameters) throws FilterException, Exception |
{ |
UserSession userSession = (UserSession) request.getServiceParameters().getParameter(Globals.USER_SESSION_KEY); |
IInternal iInternal = (IInternal) LoadObjectFromParameters.loadObjectFromClassName((String) filterParameters.getParameter(1),filterParameters,request.getServiceParameters()); |
if(iInternal.isInternal() && userSession.getUser() == null) |
{ |
logger.info("try access restricted area:" + request.getRequester()); |
throw new NeedAuthenticationException(); |
} |
} |
} |
/impl/src/java/pt/estgp/estgweb/web/controllers/announcements/AnnouncementsController.java |
---|
28,32 → 28,34 |
/** |
* @author Jorge Machado |
* @author Fabio Velez |
* @date 26/Fev/2008 |
* @time 18:01:54 |
* @see pt.estgp.estgweb.web |
*/ |
public class AnnouncementsController extends AddRolesController { |
public class AnnouncementsController extends AddRolesController |
{ |
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 , |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws Throwable, ServletException |
{ |
try |
{ |
Image i2=null; |
Image i=null; |
Image i2 = null; |
Image i = null; |
AnnouncementsForm announcementForm = (AnnouncementsForm) form; |
AnnouncementView view = announcementForm.getAnnouncementView(); |
String finalUrl=""; |
if(!announcementForm.getUrl().equals("")) |
String finalUrl = ""; |
if (!announcementForm.getUrl().equals("")) |
{ |
finalUrl=announcementForm.getUrlProtocol()+announcementForm.getUrl(); |
finalUrl = announcementForm.getUrlProtocol() + announcementForm.getUrl(); |
view.setUrl(finalUrl); |
} |
else |
61,16 → 63,16 |
view.setUrl(null); |
} |
if(announcementForm.getBigImage().getFileSize()!= 0) |
if (announcementForm.getBigImage().getFileSize() != 0) |
{ |
FormFile bigImage = announcementForm.getBigImage(); |
InputStream stream = bigImage.getInputStream(); |
ByteArrayOutputStream b = new ByteArrayOutputStream(); |
int readedBytes; |
byte[] buf = new byte[1024]; |
while((readedBytes = stream.read(buf)) > 0) |
while ((readedBytes = stream.read(buf)) > 0) |
{ |
b.write(buf,0,readedBytes); |
b.write(buf, 0, readedBytes); |
} |
b.close(); |
i = DomainObjectFactory.createImageImpl(); |
83,16 → 85,16 |
} |
if(announcementForm.getSmallImage().getFileSize()!= 0) |
if (announcementForm.getSmallImage().getFileSize() != 0) |
{ |
FormFile smallImage = announcementForm.getSmallImage(); |
InputStream stream2 = smallImage.getInputStream(); |
ByteArrayOutputStream b2 = new ByteArrayOutputStream(); |
int readedBytes2; |
byte[] buf2 = new byte[1024]; |
while((readedBytes2 = stream2.read(buf2)) > 0) |
while ((readedBytes2 = stream2.read(buf2)) > 0) |
{ |
b2.write(buf2,0,readedBytes2); |
b2.write(buf2, 0, readedBytes2); |
} |
b2.close(); |
i2 = DomainObjectFactory.createImageImpl(); |
106,30 → 108,30 |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{"object"}; |
Object[] args = new Object[]{view,i, i2}; |
Object[] args = new Object[]{view, i, i2}; |
boolean newAnnouncement = true; |
if(view.getId() > 0) |
if (view.getId() > 0) |
newAnnouncement = false; |
AnnouncementView aV = (AnnouncementView) sm.execute(RequestUtils.getRequester(request),"CreateAnnouncement",args,names); |
if(newAnnouncement) |
addMessage(request,"announcement.created.success","" + aV.getId()); |
AnnouncementView aV = (AnnouncementView) sm.execute(RequestUtils.getRequester(request), "CreateAnnouncement", args, names); |
if (newAnnouncement) |
addMessage(request, "announcement.created.success", request.getContextPath(), "" + aV.getId(), view.getTitle()); |
else |
addMessage(request,"announcement.edited.success","" + aV.getId()); |
addMessage(request, "announcement.edited.success", request.getContextPath(), "" + aV.getId(), view.getTitle()); |
return mapping.findForward("success"); |
} |
catch(FilterChainFailedException e) |
catch (FilterChainFailedException e) |
{ |
return mapping.findForward("error401"); |
} |
catch (Throwable e) |
{ |
logger.error(e,e); |
logger.error(e, e); |
throw e; |
} |
} |
public ActionForward edit(ActionMapping mapping, |
ActionForm form , |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws Throwable, ServletException |
140,7 → 142,7 |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{"serializable"}; |
Object[] args = new Object[]{new Long(request.getParameter("id"))}; |
AnnouncementView aV = (AnnouncementView) sm.execute(RequestUtils.getRequester(request),"LoadEditAnnouncement",args,names); |
AnnouncementView aV = (AnnouncementView) sm.execute(RequestUtils.getRequester(request), "LoadEditAnnouncement", args, names); |
AnnouncementsForm announcementsForm = (AnnouncementsForm) form; |
announcementsForm.setAnnouncementView(aV); |
announcementsForm.setStartDate(DatesUtils.getStringFromDate(aV.getStartDate())); |
150,13 → 152,13 |
sess.serialize(request); |
return mapping.getInputForward(); |
} |
catch(FilterChainFailedException e) |
catch (FilterChainFailedException e) |
{ |
return mapping.findForward("error401"); |
} |
catch (Throwable e) |
{ |
logger.error(e,e); |
logger.error(e, e); |
throw e; |
} |
} |
198,7 → 200,7 |
} |
public ActionForward list(ActionMapping mapping, |
ActionForm form , |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws Throwable, ServletException |
208,23 → 210,23 |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{}; |
Object[] args = new Object[]{}; |
List<AnnouncementView> announcementViews = (List<AnnouncementView>) sm.execute(RequestUtils.getRequester(request),"LoadTargetMaxAnnouncements",args,names); |
request.setAttribute("Announcements",announcementViews); |
List<AnnouncementView> announcementViews = (List<AnnouncementView>) sm.execute(RequestUtils.getRequester(request), "LoadTargetMaxAnnouncements", args, names); |
request.setAttribute("Announcements", announcementViews); |
return mapping.findForward("success"); |
} |
catch(FilterChainFailedException e) |
catch (FilterChainFailedException e) |
{ |
return mapping.findForward("error401"); |
} |
catch (Throwable e) |
{ |
logger.error(e,e); |
logger.error(e, e); |
throw e; |
} |
} |
public ActionForward load(ActionMapping mapping, |
ActionForm form , |
ActionForm form, |
HttpServletRequest request, |
HttpServletResponse response) |
throws Throwable, ServletException |
235,17 → 237,17 |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{"serializable"}; |
Object[] args = new Object[]{new Long(id)}; |
AnnouncementView announcementView = (AnnouncementView) sm.execute(RequestUtils.getRequester(request),"LoadAnnouncementView",args,names); |
request.setAttribute("Announcement",announcementView); |
AnnouncementView announcementView = (AnnouncementView) sm.execute(RequestUtils.getRequester(request), "LoadAnnouncementView", args, names); |
request.setAttribute("Announcement", announcementView); |
return mapping.findForward("load"); |
} |
catch(FilterChainFailedException e) |
catch (FilterChainFailedException e) |
{ |
return mapping.findForward("error401"); |
} |
catch (Throwable e) |
{ |
logger.error(e,e); |
logger.error(e, e); |
throw e; |
} |
} |
/impl/src/hbm/pt/estgp/estgweb/domain/Announcement.hbm.xml |
---|
27,6 → 27,7 |
<property name="internalUrlInclude" type="boolean"/> |
<property name="style" type="string"/> |
<property name="status" type="boolean" /> |
<property name="internal" type="boolean" /> |
<property name="counter" type="integer" /> |
<many-to-one name="bigImage" column="bigImage" class="pt.estgp.estgweb.domain.Image" lazy="no-proxy" outer-join="false" cascade="all" /> |
<many-to-one name="smallImage" column="smallImage" class="pt.estgp.estgweb.domain.Image" lazy="no-proxy" outer-join="false" cascade="all"/> |
/impl/src/web/admin/announcements/submitAnnouncement.jsp |
---|
29,6 → 29,17 |
</html:select> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="announcement.internal"/> |
</th> |
<td> |
<html:select property="announcementView.internal"> |
<html:option value="true"><bean:message key="announcement.internal.yes"/></html:option> |
<html:option value="false"><bean:message key="announcement.internal.no"/></html:option> |
</html:select> |
</td> |
</tr> |
</estgweb:isAdmin> |
<tr> |
<th> |
155,8 → 166,8 |
<html:option value="announcement.style.img.left"><bean:message key="announcement.style.img.left"/></html:option> |
<html:option value="announcement.style.img.right"><bean:message key="announcement.style.img.right"/></html:option> |
<html:option value="announcement.style.img.top"><bean:message key="announcement.style.img.top"/></html:option> |
<html:option value="announcement.style.img.top"><bean:message key="announcement.style.img.embedded.left"/></html:option> |
<html:option value="announcement.style.img.top"><bean:message key="announcement.style.img.embedded.right"/></html:option> |
<html:option value="announcement.style.img.embedded.left"><bean:message key="announcement.style.img.embedded.left"/></html:option> |
<html:option value="announcement.style.img.embedded.right"><bean:message key="announcement.style.img.embedded.right"/></html:option> |
</html:select> |
</td> |
</tr> |
/impl/src/web/public/announcements/loadAnnouncement.jsp |
---|
1,27 → 1,29 |
<%@ page import="jomm.utils.MessageResources" %> |
<%@ page import="org.apache.struts.util.RequestUtils" %> |
<%@ page import="pt.estgp.estgweb.domain.UserImpl" %> |
<%@ page import="pt.estgp.estgweb.domain.UserSessionImpl" %> |
<%@ page import="pt.estgp.estgweb.domain.enums.AnnouncementStyleEnum" %> |
<%@ page import="pt.estgp.estgweb.web.UserSessionProxy" %> |
<%@ page import="pt.estgp.estgweb.domain.enums.AnnouncementStyleEnum" %> |
<%@ 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" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %> |
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %> |
<%@ taglib uri="/WEB-INF/tlds/estgweb.tld" prefix="estgweb" %> |
<jsp:useBean id="Announcement" type="pt.estgp.estgweb.domain.views.AnnouncementView" scope="request"/> |
<% UserSessionImpl userSession = (UserSessionImpl) UserSessionProxy.loadUserSession(request);%> |
<html:link href="http://www.sapo.pt"></html:link> |
<div class="seccao"> |
<h2>${Announcement.title} |
<% if(userSession.getUser()!=null){ |
if((userSession.getUser().getId()==Announcement.getOwnerID())||(userSession.getUser().getRoles().contains("all"))||(userSession.getUser().getRoles().contains("admin"))) |
{%> |
<html:link action="/loadAnnouncement?id=${Announcement.id}&dispatch=edit">Editar</html:link> |
<html:link action="/loadAnnouncement?id=${Announcement.id}&dispatch=delete">Apagar</html:link> |
<%} |
}%> |
</h2> |
<h2>${Announcement.title} |
<% |
if (userSession.getUser() != null && (Announcement.isOwnedBy(userSession.getUser()) || ((UserImpl) userSession.getUser()).isSuperUserOrAdmin())) |
{ |
%> |
<html:link action="/loadAnnouncement?id=${Announcement.id}&dispatch=edit"> <bean:message key="edit"/> </html:link> |
<html:link action="/loadAnnouncement?id=${Announcement.id}&dispatch=delete">Apagar</html:link> |
<% |
} |
%> |
</h2> |
<% |
AnnouncementStyleEnum styleEnum = Announcement.getStyleEnum(); |
if (styleEnum == AnnouncementStyleEnum.imgEmbeddedLeft || styleEnum == AnnouncementStyleEnum.imgEmbeddedRight) { |
String align = "left"; |