Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 132 → Rev 141

/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
233,7 → 233,7
#Login
login.first.time.username=Username
login.first.time.name=Nome
login.first.time.targets=Permissões
login.first.time.targets=Papeis
login.first.time.bi=BI
login.first.time.address=Morada
login.first.time.zip=Código Postal
/impl/conf/WEB-INF/tlds/estgweb.tld
15,6 → 15,20
</attribute>
</tag>
<tag>
<name>canManage</name>
<tagclass>pt.estgp.estgweb.web.tags.CanManageTag</tagclass>
<attribute>
<name>name</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>property</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
</tag>
<tag>
<name>isAuthenticated</name>
<tagclass>pt.estgp.estgweb.web.tags.IsAuthenticatedTag</tagclass>
</tag>
51,7 → 65,7
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<attribute>
<name>altKey</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
62,7 → 76,7
<rtexprvalue>false</rtexprvalue>
</attribute>
</tag>
<tag>
<tag>
<name>ownerImageRole</name>
<tagclass>pt.estgp.estgweb.web.tags.OwnerImageRoleTag</tagclass>
<attribute>
70,7 → 84,7
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<attribute>
<name>property</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
78,17 → 92,17
 
</tag>
<!--<tag>-->
<!--<name>urlStat</name>-->
<!--<tagclass>pt.estgp.estgweb.web.tags.UrlStatTag</tagclass>-->
<!--<attribute>-->
<!--<name>url</name>-->
<!--<required>true</required>-->
<!--<rtexprvalue>true</rtexprvalue>-->
<!--</attribute>-->
<!--<attribute>-->
<!--<name>attributes</name>-->
<!--<required>false</required>-->
<!--<rtexprvalue>false</rtexprvalue>-->
<!--</attribute>-->
<!--<name>urlStat</name>-->
<!--<tagclass>pt.estgp.estgweb.web.tags.UrlStatTag</tagclass>-->
<!--<attribute>-->
<!--<name>url</name>-->
<!--<required>true</required>-->
<!--<rtexprvalue>true</rtexprvalue>-->
<!--</attribute>-->
<!--<attribute>-->
<!--<name>attributes</name>-->
<!--<required>false</required>-->
<!--<rtexprvalue>false</rtexprvalue>-->
<!--</attribute>-->
<!--</tag>-->
</taglib>
/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>
164,6 → 165,7
<isTransactional>true</isTransactional>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
</filterChains>
</service>
<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/profile/EditUserService.java
4,6 → 4,7
import pt.estgp.estgweb.domain.views.UserView;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.User;
import pt.estgp.estgweb.domain.UserImpl;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import org.apache.log4j.Logger;
 
19,7 → 20,7
 
logger.info("Editing user:" + userView.getId());
 
if(userSession.getUser().getRoles().contains("admin"))
if(((UserImpl) userSession.getUser()).isSuperUserOrAdmin())
{
user=DaoFactory.getUserDaoImpl().get(userView.getSerializable());
userView.persistViewInObjectAdmin(user);
/impl/src/java/pt/estgp/estgweb/services/announcements/LoadRoleTypeMaxAnnouncementsService.java
30,7 → 30,7
private static final Logger logger = Logger.getLogger(LoadRoleTypeMaxAnnouncementsService.class);
private static final int MAX_ANNOUNCEMENTS = ConfigProperties.getIntProperty("announcements.max.visible");
 
public List<AnnouncementView> run(String roles,String typeNews,String subTarget)
public List<AnnouncementView> run(String roles,String typeNews,String subTarget,UserSession sess)
{
List<String> targetRoles = new ArrayList<String>();
if (roles.contains(","))
45,7 → 45,11
{
targetRoles.add(roles);
}
List<Announcement> announcements = DaoFactory.getAnnouncementDaoImpl().findAnnouncements(MAX_ANNOUNCEMENTS,targetRoles,typeNews,subTarget);
boolean internal = true;
if(sess.getUser() == null)
internal = false;
 
List<Announcement> announcements = DaoFactory.getAnnouncementDaoImpl().findAnnouncements(MAX_ANNOUNCEMENTS,targetRoles,typeNews,subTarget,internal);
if(announcements == null)
return null;
List<AnnouncementView> announcementViews = new ArrayList<AnnouncementView>();
/impl/src/java/pt/estgp/estgweb/services/announcements/AnnouncementsCommonServices.java
19,43 → 19,46
 
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);
}
else
roles = ((UserImpl) userSession.getUser()).getRolesList();
 
searchResults.setTotalResults(DaoFactory.getAnnouncementDaoImpl().countAnnouncements(search, searchType, roles, null));
if (searchResults.getTotalResults() > 0) {
List<Announcement> announcements = DaoFactory.getAnnouncementDaoImpl().searchAnnouncements(search, searchType, maxResults, page, roles, null);
boolean internal = true;
if (userSession.getUser() == null)
internal = false;
searchResults.setTotalResults(DaoFactory.getAnnouncementDaoImpl().countAnnouncements(search, searchType, roles, null,internal));
if (searchResults.getTotalResults() > 0)
{
List<Announcement> announcements = DaoFactory.getAnnouncementDaoImpl().searchAnnouncements(search, searchType, maxResults, page, roles, null,internal);
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 → 71,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/LoadTargetMaxAnnouncementsService.java
27,7 → 27,10
List<String> targetRoles = null;
if(userSession.getUser() != null)
targetRoles = userSession.getUser().getTargetRolesList();
List<Announcement> announcements = DaoFactory.getAnnouncementDaoImpl().findAnnouncements(MAX_ANNOUNCEMENTS,targetRoles,subTarget);
boolean internal = true;
if (userSession.getUser() == null)
internal = false;
List<Announcement> announcements = DaoFactory.getAnnouncementDaoImpl().findAnnouncements(MAX_ANNOUNCEMENTS,targetRoles,subTarget,internal);
if(announcements == null)
return null;
List<AnnouncementView> announcementViews = new ArrayList<AnnouncementView>();
/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
{
32,23 → 31,29
 
public AnnouncementView run(String subTarget, UserSession sess)
{
Integer iterator = (Integer) ((UserSessionImpl)sess).get(flashNewsIterator);
if(iterator == null)
Integer iterator = (Integer) ((UserSessionImpl) sess).get(flashNewsIterator);
if (iterator == null)
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);
boolean internal = true;
if (sess.getUser() == null)
internal = false;
int size = DaoFactory.getAnnouncementDaoImpl().countAnnouncements(1, null, Globals.ANNOUNCEMENT_TYPE_TOP_FLASH_NEWS, null, internal);
if (size != 0)
{
iterator = iterator % size;
List<Announcement> announcements = DaoFactory.getAnnouncementDaoImpl().findAnnouncements(iterator, 1, null, Globals.ANNOUNCEMENT_TYPE_TOP_FLASH_NEWS, subTarget, internal);
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;
}
58,12 → 63,13
//mudei a propriedade log.file build.properties para log.file=${data.dir}/estgweb.log assim ja nao da o erro do log
//adicionei as libs jsp-api.jar da pasta tomcat/common/lib para nao te falhar os imports nas TAGS aqui no Intellij
//adiciona sempre todos os jars da common aqui no Intellij faltava-te o activation.jar do jaxb e era preciso para o MimeTypeGuesser
public static void main(String[] args) throws Throwable {
public static void main(String[] args) throws Throwable
{
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{};
Object[] arguments = new Object[]{};
AnnouncementView announcementView = (AnnouncementView) sm.execute("testecookie", "LoadTopFlashNewsIterate",arguments,names);
System.out.println("-->"+announcementView.getTitle());
AnnouncementView announcementView = (AnnouncementView) sm.execute("testecookie", "LoadTopFlashNewsIterate", arguments, names);
System.out.println("-->" + announcementView.getTitle());
 
 
}
/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;
18,33 → 19,38
private boolean newUser = false;
 
public UserImpl()
{}
{
}
 
public UserImpl(Date saveDate, boolean superuser, String name, String username, String password, String roles, String address, String zip, String country, String email, String outEmail, String phonenumber, String sex, String bi, Date birthDate, Set<Group> groups, Set<CourseUserAssociation> courses)
{
super(saveDate, superuser, name, username, password, roles, address, zip, country, email, outEmail, phonenumber, sex, bi, birthDate, groups, courses);
super(saveDate, superuser, name, username, password, roles, address, zip, country, email, outEmail, phonenumber, sex, bi, birthDate, groups, courses);
}
 
 
public boolean isNewUser() {
public boolean isNewUser()
{
return newUser;
}
 
public void setNewUser(boolean newUser) {
public void setNewUser(boolean newUser)
{
this.newUser = newUser;
}
}
 
/**
* check if user is in some group
*
* @param g to check
* @return true if belongs to group
*/
public boolean hasGroup(Group g)
{
if(getGroups() == null)
if (getGroups() == null)
return false;
for(Group group: getGroups())
for (Group group : getGroups())
{
if(group.getId() == g.getId())
if (group.getId() == g.getId())
return true;
}
return false;
52,23 → 58,22
 
public void addRole(String role)
{
setRoles(RoleManager.catRole(getRoles(),"student"));
setRoles(RoleManager.catRole(getRoles(), role));
}
 
public boolean hasRole(String r)
{
if(r == null || getRoles() == null || getRoles().length() == 0)
if (r == null || getRoles() == null || getRoles().length() == 0)
return false;
for(String role: RoleManager.getRolesFromSerial(getRoles()))
for (String role : RoleManager.getRolesFromSerial(getRoles()))
{
if(role.equals(r))
if (role.equals(r))
return true;
}
return false;
}
 
/**
*
* @return a list of role Strings
*/
public List<String> getOwnerRoles()
90,4 → 95,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/dao/impl/AnnouncementDaoImpl.java
31,7 → 31,7
return (AnnouncementDaoImpl) myInstance;
}
 
public List<Announcement> findAnnouncements(int maxAnnouncements, List<String> roles, String subTarget) {
public List<Announcement> findAnnouncements(int maxAnnouncements, List<String> roles, String subTarget,boolean internal) {
if (roles == null) {
roles = new ArrayList<String>();
roles.add("all");
53,6 → 53,8
else {
coSubTargets = eq("subTargets", subTarget);
}
if(!internal)
criteria.add(eq("internal",false));
MyCalendar cNow = new MyCalendar();
MyCalendar calendarWithOutTime = new MyCalendar(cNow.getYear(), cNow.getMonth(), cNow.getDay());
Date now = calendarWithOutTime.getTime();
66,31 → 68,31
return criteria.list();
}
 
public List<Announcement> findAnnouncements(int maxAnnouncements, List<String> roles, String type, String subTarget) {
return findAnnouncements(0, maxAnnouncements, roles, type, subTarget);
public List<Announcement> findAnnouncements(int maxAnnouncements, List<String> roles, String type, String subTarget, boolean internal) {
return findAnnouncements(0, maxAnnouncements, roles, type, subTarget,internal);
}
 
public List<Announcement> findAnnouncements(int startPage, int maxAnnouncements, List<String> roles, String type, String subTarget) {
Criteria criteria = createMaxAnnouncementsRolesTypeCriteria(maxAnnouncements, roles, type, subTarget);
public List<Announcement> findAnnouncements(int startPage, int maxAnnouncements, List<String> roles, String type, String subTarget,boolean internal) {
Criteria criteria = createMaxAnnouncementsRolesTypeCriteria(maxAnnouncements, roles, type, subTarget,internal);
return criteria.setFirstResult(maxAnnouncements * startPage).list();
}
 
public int countAnnouncements(int maxAnnouncements, List<String> roles, String type, String subTarget) {
Criteria criteria = createMaxAnnouncementsRolesTypeCriteria(Integer.MAX_VALUE, roles, type, subTarget);
public int countAnnouncements(int maxAnnouncements, List<String> roles, String type, String subTarget,boolean internal) {
Criteria criteria = createMaxAnnouncementsRolesTypeCriteria(Integer.MAX_VALUE, roles, type, subTarget,internal);
return criteria.list().size();
}
 
private Criteria createMaxAnnouncementsRolesTypeCriteria(int maxAnnouncements, List<String> roles, String type, String subTarget) {
return createMaxAnnouncementsPageRolesTypeCriteria(0, maxAnnouncements, roles, type, subTarget);
private Criteria createMaxAnnouncementsRolesTypeCriteria(int maxAnnouncements, List<String> roles, String type, String subTarget,boolean internal) {
return createMaxAnnouncementsPageRolesTypeCriteria(0, maxAnnouncements, roles, type, subTarget,internal);
}
 
private Criteria createMaxAnnouncementsPageRolesTypeCriteria(int page, int maxAnnouncements, List<String> roles, String type, String subTarget) {
return createRolesTypeCriteria(roles, type, subTarget)
private Criteria createMaxAnnouncementsPageRolesTypeCriteria(int page, int maxAnnouncements, List<String> roles, String type, String subTarget,boolean internal) {
return createRolesTypeCriteria(roles, type, subTarget,internal)
.setFirstResult(page * maxAnnouncements)
.setMaxResults(maxAnnouncements);
}
 
private Criteria createRolesTypeCriteria(List<String> roles, String type, String subTarget) {
private Criteria createRolesTypeCriteria(List<String> roles, String type, String subTarget,boolean internal) {
if (roles == null) {
roles = new ArrayList<String>();
roles.add("all");
114,6 → 116,10
}
if (type != null)
criteria.add(eq("type", type));
 
if(!internal)
criteria.add(eq("internal",false));
MyCalendar cNow = new MyCalendar();
MyCalendar calendarWithOutTime = new MyCalendar(cNow.getYear(), cNow.getMonth(), cNow.getDay());
Date now = calendarWithOutTime.getTime();
147,18 → 153,18
AbstractDao.getCurrentSession().beginTransaction().commit();
}*/
 
public List<Announcement> searchAnnouncements(String query, SearchTypeEnum searchTypeEnum, int maxAnnouncements, int page, List<String> roles, String subTarget) {
public List<Announcement> searchAnnouncements(String query, SearchTypeEnum searchTypeEnum, int maxAnnouncements, int page, List<String> roles, String subTarget,boolean internal) {
 
Criterion c = createSearchQuery(query, searchTypeEnum);
Criteria criteria = createMaxAnnouncementsPageRolesTypeCriteria(page, maxAnnouncements, roles, null, null);
Criteria criteria = createMaxAnnouncementsPageRolesTypeCriteria(page, maxAnnouncements, roles, null, null,internal);
criteria.add(c);
return criteria.list();
}
 
public int countAnnouncements(String query, SearchTypeEnum searchTypeEnum, List<String> roles, String subTarget) {
public int countAnnouncements(String query, SearchTypeEnum searchTypeEnum, List<String> roles, String subTarget,boolean internal) {
 
Criterion c = createSearchQuery(query, searchTypeEnum);
Criteria criteria = createRolesTypeCriteria(roles, null, null);
Criteria criteria = createRolesTypeCriteria(roles, null, null,internal);
criteria.add(c);
return criteria.list().size();
}
/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/profile/ProfileController.java
27,6 → 27,7
import java.io.IOException;
import java.io.Serializable;
import java.util.List;
import java.util.ArrayList;
 
/**
* @author Jorge Machado
34,11 → 35,12
* @time 18:01:54
* @see pt.estgp.estgweb.web
*/
public class ProfileController extends ApplicationDispatchController {
public class ProfileController extends AddRolesController {
 
private static final Logger logger = Logger.getLogger(ProfileController.class);
private static final String TARGET_ROLES_KEY = AddRolesForm.TARGET_ROLES_KEY;
 
 
public ActionForward editUser(ActionMapping mapping,
ActionForm form ,
HttpServletRequest request,
51,6 → 53,7
try
{
UserSessionImpl userSession = (UserSessionImpl) UserSessionProxy.loadUserSession(request);
userView.setUserRoles((List<String>) userSession.get(TARGET_ROLES_KEY));
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{"object"};
Object[] args = new Object[]{userView};
81,6 → 84,7
throws Throwable, ServletException {
try
{
ProfileForm pF = (ProfileForm) form;
UserSessionImpl userSession = (UserSessionImpl) UserSessionProxy.loadUserSession(request);
String id = request.getParameter("id");
long userToLoad;
90,14 → 94,15
else
userToLoad=userSession.getUser().getId();
 
ProfileForm profileForm = new ProfileForm();
 
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{"serializable"};
Object[] args = new Object[]{userToLoad};
UserView uV = (UserView) sm.execute(RequestUtils.getRequester(request),"LoadUserById",args,names);
profileForm.setUserView(uV);
profileForm.setSelectedRoles(uV.getUserRoles());
request.setAttribute("ProfileForm",profileForm);
pF.setUserView(uV);
pF.setSelectedRoles(uV.getUserRoles());
userSession.put(TARGET_ROLES_KEY, (Serializable) uV.getUserRoles());
userSession.serialize(request);
return mapping.findForward("load");
}
catch(FilterChainFailedException e)
/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/java/pt/estgp/estgweb/web/tags/IsNotAdminTag.java
21,7 → 21,8
public int doEndTag() throws JspException {
 
UserSessionImpl userSession = (UserSessionImpl) pageContext.getRequest().getAttribute(Globals.USER_SESSION_KEY);
if(userSession == null || userSession.getUser() == null || !(((UserImpl)userSession.getUser()).hasRole(Globals.ADMIN_ROLE) && !((UserImpl)userSession.getUser()).isSuperuser()))
 
if(userSession == null || userSession.getUser() == null)
{
String toPage = bodyContent.getString().trim();
JspWriter writer = pageContext.getOut();
35,6 → 36,20
throw new JspException(e);
}
}
else if(!(((UserImpl)userSession.getUser()).hasRole(Globals.ADMIN_ROLE)) && !((UserImpl)userSession.getUser()).isSuperuser())
{
String toPage = bodyContent.getString().trim();
JspWriter writer = pageContext.getOut();
try
{
writer.write(toPage);
}
catch(Exception e)
{
logger.error(e,e);
throw new JspException(e);
}
}
 
// Continue processing this page
return EVAL_PAGE;
/impl/src/java/pt/estgp/estgweb/web/tags/CanManageTag.java
New file
0,0 → 1,78
package pt.estgp.estgweb.web.tags;
 
import org.apache.log4j.Logger;
import org.apache.struts.util.RequestUtils;
import pt.estgp.estgweb.domain.UserSessionImpl;
import pt.estgp.estgweb.domain.UserImpl;
import pt.estgp.estgweb.domain.IOwned;
import pt.estgp.estgweb.domain.IInternal;
import pt.estgp.estgweb.Globals;
 
import javax.servlet.jsp.tagext.BodyTagSupport;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
 
public class CanManageTag extends BodyTagSupport
{
 
private static final Logger logger = Logger.getLogger(CanManageTag.class);
 
private String name;
 
private String property;
 
public String getName()
{
return name;
}
 
public void setName(String name)
{
this.name = name;
}
 
public String getProperty()
{
return property;
}
 
public void setProperty(String property)
{
this.property = property;
}
 
public int doStartTag() throws JspException {
return EVAL_BODY_TAG;
}
public int doEndTag() throws JspException
{
 
UserSessionImpl userSession = (UserSessionImpl) pageContext.getRequest().getAttribute(Globals.USER_SESSION_KEY);
 
IOwned owned = (IOwned) RequestUtils.lookup(pageContext, name, property, null);
IInternal iInternal = (IInternal) owned;
if(userSession.getUser() == null && iInternal.isInternal())
{
//do nothing
}
else if(owned != null && userSession.getUser() != null && (owned.isOwnedBy(userSession.getUser()) || ((UserImpl) userSession.getUser()).isSuperUserOrAdmin()))
{
String toPage = bodyContent.getString().trim();
JspWriter writer = pageContext.getOut();
try
{
writer.write(toPage);
}
catch(Exception e)
{
logger.error(e,e);
throw new JspException(e);
}
}
 
// Continue processing this page
return EVAL_PAGE;
}
 
 
}
/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/profile/findUser.jsp
9,8 → 9,6
<jomm:messages/>
<html:form action="/profile">
<input type="hidden" name="dispatch" value="search">
<html:hidden property="userView.id"/>
<html:hidden property="userView.userRoles"/>
 
<table class="form">
<tr>
/impl/src/web/admin/profile/profile.jsp
1,25 → 1,27
<%@ page import="java.util.List" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %>
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %>
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %>
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %>
<%@ taglib uri="/WEB-INF/tlds/estgweb.tld" prefix="estgweb" %>
 
 
<jomm:messages/>
<jsp:useBean id="ProfileForm" class="pt.estgp.estgweb.web.form.profile.ProfileForm"/>
<%--<jsp:useBean id="ProfileForm" class="pt.estgp.estgweb.web.form.profile.ProfileForm"/>--%>
<html:form action="/profile">
<input type="hidden" name="dispatch" value="editUser">
<html:hidden property="userView.id"/>
<html:hidden property="userView.userRoles"/>
<html:hidden property="role"/>
<bean:message key="profile.edit"/>
 
<table class="form">
<estgweb:isNotAdmin>
<tr>
<th><bean:message key="login.first.time.username"/></th>
<th>
<bean:message key="login.first.time.username"/>
</th>
<td>
<html:text property="userView.username" maxlength="250" readonly="true" styleClass="readOnly"/>
</td>
27,30 → 29,40
</estgweb:isNotAdmin>
<estgweb:isAdmin>
<tr>
<th><bean:message key="login.first.time.username"/></th>
<th>
<bean:message key="login.first.time.username"/>
</th>
<td>
<html:text property="userView.username" maxlength="250"/>
</td>
</tr>
<tr>
<th><bean:message key="login.first.time.targets"/></th>
<th>
<bean:message key="login.first.time.targets"/>
</th>
<td>
<html:select property="targetRolesStr">
<logic:present name="ProfileForm" property="targetRoles">
<logic:iterate id="item" name="ProfileForm" property="targetRoles">
<jomm:option itemName="item" comparableObjectName="ProfileForm" comparableObjectProperty="targetRolesStr">
<jomm:option itemName="item" comparableObjectName="ProfileForm"
comparableObjectProperty="targetRolesStr">
<jomm:message patternMessage="user.role.{0}" name0="item"/>
</jomm:option>
</logic:iterate>
<input type="button" value="<bean:message key="add"/>" onclick="set(this.form,'addRole');this.form.submit();">
<input type="button" value="<bean:message key="add"/>"
onclick="set(this.form,'addRole');this.form.submit();">
</logic:present>
</html:select>
 
<logic:present name="ProfileForm" property="selectedRoles">
<logic:notEmpty name="ProfileForm" property="selectedRoles">
<ul>
<logic:iterate id="item" name="ProfileForm" property="selectedRoles">
<li><jomm:message patternMessage="user.role.{0}" name0="item"/><input type="button" value="<bean:message key="remove"/>" onclick="AnnouncementsForm.role.value='${item}';set(this.form,'removeRole');this.form.submit();"></li>
<li>
<jomm:message patternMessage="user.role.{0}" name0="item"/>
<input type="button" value="<bean:message key="remove"/>"
onclick="ProfileForm.role.value='${item}';set(this.form,'removeRole');this.form.submit();">
</li>
</logic:iterate>
</ul>
</logic:notEmpty>
59,50 → 71,66
</tr>
</estgweb:isAdmin>
<tr>
<th><bean:message key="login.first.time.bi"/></th>
<th>
<bean:message key="login.first.time.bi"/>
</th>
<td>
<html:text property="userView.bi" maxlength="250" readonly="true" styleClass="readOnly"/>
</td>
</tr>
<tr>
<th><bean:message key="login.first.time.birthday.date"/></th>
<th>
<bean:message key="login.first.time.birthday.date"/>
</th>
<td>
<html:text property="birthDayDate" maxlength="100" readonly="true" styleClass="readOnly"/>
</td>
</tr>
<tr>
<th><bean:message key="login.first.time.name"/></th>
<th>
<bean:message key="login.first.time.name"/>
</th>
<td>
<html:text property="userView.name" maxlength="250" readonly="true" styleClass="readOnly"/>
</td>
</tr>
<tr>
<th><bean:message key="login.first.time.address"/></th>
<th>
<bean:message key="login.first.time.address"/>
</th>
<td>
<html:text property="userView.address" maxlength="250" readonly="true" styleClass="readOnly"/>
</td>
</tr>
<tr>
<th><bean:message key="login.first.time.zip"/></th>
<th>
<bean:message key="login.first.time.zip"/>
</th>
<td>
<html:text property="userView.zip" maxlength="8" readonly="true" styleClass="readOnly"/>
</td>
</tr>
<tr>
<th><bean:message key="login.first.time.country"/></th>
<th>
<bean:message key="login.first.time.country"/>
</th>
<td>
<html:text property="userView.country" maxlength="100" readonly="true" styleClass="readOnly"/>
</td>
</tr>
<tr>
<th><bean:message key="login.first.time.phone.number"/></th>
<th>
<bean:message key="login.first.time.phone.number"/>
</th>
<td>
<html:text property="userView.phonenumber" maxlength="250" styleClass="readOnly"/>
</td>
</tr>
<estgweb:isNotAdmin>
<tr>
<th><bean:message key="login.first.time.email.institucion"/></th>
<th>
<bean:message key="login.first.time.email.institucion"/>
</th>
<td>
<html:text property="userView.email" maxlength="250" readonly="true" styleClass="readOnly"/>
</td>
110,31 → 138,33
</estgweb:isNotAdmin>
<estgweb:isAdmin>
<tr>
<estgweb:isAdmin>
<th><bean:message key="login.first.time.email.institucion2"/></th>
</estgweb:isAdmin>
<estgweb:isNotAdmin>
<th><bean:message key="login.first.time.email.institucion"/></th>
</estgweb:isNotAdmin>
<th>
<bean:message key="login.first.time.email.institucion2"/>
</th>
<td>
<html:text property="userView.email" maxlength="250"/>
</td>
</tr>
</estgweb:isAdmin>
<tr>
<th><bean:message key="login.first.time.email.secundary"/></th>
<th>
<bean:message key="login.first.time.email.secundary"/>
</th>
<td>
<html:text property="userView.outEmail" maxlength="250"/>
</td>
</tr>
<estgweb:isNotAdmin>
<tr>
<th><bean:message key="profile.email.change"/></th>
<th>
<bean:message key="profile.email.change"/>
</th>
</tr>
</estgweb:isNotAdmin>
<tr class="buttons">
<td colspan="2">
<input type="button" onclick="set(this.form,'editUser');this.form.submit()" value="<bean:message key="confirm"/>"/>
<input type="button" onclick="set(this.form,'editUser');this.form.submit()"
value="<bean:message key="confirm"/>"/>
</td>
</tr>
</table>
/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,26 → 1,23
<%@ 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.web.UserSessionProxy" %>
<%@ page import="pt.estgp.estgweb.domain.enums.AnnouncementStyleEnum" %>
<%@ page import="pt.estgp.estgweb.web.UserSessionProxy" %>
<%@ 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}
<estgweb:canManage name="Announcement">
<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>
</estgweb:canManage>
</h2>
<%
AnnouncementStyleEnum styleEnum = Announcement.getStyleEnum();
if (styleEnum == AnnouncementStyleEnum.imgEmbeddedLeft || styleEnum == AnnouncementStyleEnum.imgEmbeddedRight) {