Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 48 → Rev 60

/log.txt
1,5 → 1,5
Estão feitos os templates base para o pedro começar a fazer as paginas á vontade.
Foi criado dois tipos diferentes de templates:
 
*templatePortal-template mais especifico para as páginas que vão ter listas de links para outras páginas
*templatePage-template genérico com o qual o pedro têm vários objectos para poder contruir grande parte dos sites da escola
-Auto validação a funcionar
-Corrigido noticias do lado esquerdo nos portais o tipo que aparecia estava errado
-No index os announcements center e bottom já carregam as imagens da base de dados, carregam o tipo de noticas certo
-Acrescentado links para cantinas e associação de estudantes nos alunos (falta por a redirecionar)
-Atribuição automatica de roles atraves do LDAP feita (fazer alguns testes)
/impl/database.sql
File deleted
/impl/conf/language/MessageResourcesAnnouncements.properties
28,4 → 28,5
announcement.protocol.error.https=https
announcement.protocol.error.ftp=ftp
 
announcements.loading=carregando anúncio...
announcements.loading=carregando anúncio...
 
/impl/conf/language/MessageResources.properties
173,6 → 173,7
portal.contactos.centro.informatico=Centro informático
portal.contactos.reprografia=Reprografia
portal.contactos.docentes=Docentes
portal.contactos.associacao.estudantes=Associação de Estudantes
portal.contactos.gabinete.comunicacao=Gabinete de Comunicação
portal.contactos.aaaipp=AAAIPP
portal.contactos.conselho.directivo=Conselho Directivo
/impl/conf/WEB-INF/struts/tiles-processworkflow.xml
1,8 → 1,8
<?xml version="1.0" encoding="UTF-8" ?>
 
<!--<!DOCTYPE tiles-definitions PUBLIC-->
<!--"-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN"-->
<!--"http://struts.apache.org/dtds/tiles-config_1_1.dtd">-->
<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN"
"http://struts.apache.org/dtds/tiles-config_1_1.dtd">
 
<tiles-definitions>
10,4 → 10,8
<definition name="page.load.process" extends="base.layout1">
</definition>
 
<definition name="page.teste" extends="base.layout1">
<put name="body" value="/teste.jsp"/>
</definition>
 
</tiles-definitions>
/impl/conf/WEB-INF/struts/struts-processworkflow.xml
1,13 → 1,13
<?xml version="1.0" encoding="UTF-8"?>
 
<!--<!DOCTYPE struts-config PUBLIC-->
<!--"-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"-->
<!--"http://struts.apache.org/dtds/struts-config_1_3.dtd">-->
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
"http://struts.apache.org/dtds/struts-config_1_3.dtd">
 
<struts-config>
 
<form-beans>
<form-bean type="pt.estgp.estgweb.web.form.TesteForm" name="TesteForm"/>
</form-beans>
 
<global-exceptions>
20,6 → 20,17
 
 
<action-mappings>
 
<!--Authentication-->
<action path="/testeStart" forward="page.teste"/>
<action path="/teste"
type="pt.estgp.estgweb.web.controllers.TesteController"
name="TesteForm"
scope="request"
parameter="dispatch"
validate="false"
input="page.teste">
<forward name="ok" path="page.teste"/>
</action>
</action-mappings>
</struts-config>
/impl/conf/WEB-INF/struts/struts-announcements.xml
1,8 → 1,8
<?xml version="1.0" encoding="UTF-8"?>
 
<!--<!DOCTYPE struts-config PUBLIC-->
<!--"-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"-->
<!--"http://struts.apache.org/dtds/struts-config_1_3.dtd">-->
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
"http://struts.apache.org/dtds/struts-config_1_3.dtd">
 
<struts-config>
 
/impl/conf/app.properties
61,7 → 61,14
announcements.automatic.validation.role.3=ci
announcements.automatic.validation.role.4=administrativeCouncil
 
student.auto.validation.targets=student,oldStudent,futureStudent,erasmusStudent
 
 
student.auto.validation.types=news,top.flash.news
 
 
announcements.max.visible=10
announcements.top.flash.news.timeout.miliseconds=7000
 
announcements.type.0=news
announcements.type.1=top.flash.news
96,6 → 103,12
url.stat.ignore.extension.8=.swf
 
url.stat.ignore.prefix.1=/urlstat
url.stat.ignore.prefix.2=/public/
url.stat.ignore.prefix.3=/admin/
url.stat.ignore.prefix.4=/user/
url.stat.ignore.prefix.5=/css/
url.stat.ignore.prefix.6=/js/
url.stat.ignore.prefix.7=/auth/
 
#See java.text.SimpleDateFormat
urlstat.chart.week.days=EEE dd-MMM
/impl/conf/berserk/sd.xml
163,4 → 163,16
</filterChains>
</service>
 
 
<!--Teste-->
<service>
<name>TesteSaver</name>
<implementationClass>pt.estgp.estgweb.services.teste.TesteService</implementationClass>
<description>Saves a teste</description>
<isTransactional>true</isTransactional>
<filterChains>
<chain name="Logger"/>
</filterChains>
</service>
 
</serviceDefinitions>
/impl/src/java/jomm/dao/impl/AbstractDao.java
15,6 → 15,7
import java.sql.SQLException;
import java.util.Collection;
import java.util.List;
import java.util.Date;
 
 
/**
400,6 → 401,8
public Serializable save(CLAZZ obj)
{
try {
DomainObject o = (DomainObject) obj;
o.setSaveDate(new Date());
return (Serializable) getCurrentSession().save(obj);
}
catch (HibernateException e) {
/impl/src/java/openldap/Test.java
7,40 → 7,106
import java.util.Set;
import openldap.LdapManagerFactory;
 
public class Test
public class Test
{
public static void main(String[] args) throws Exception
 
public String getName(HashMap text)
{
//System.out.println(LdapManagerFactory.getLdapManager().login("a8824","21286"));
HashMap map = LdapManagerFactory.getLdapManager().getUserInfo("a8822");
Set s = map.entrySet();
Set s = text.entrySet();
Iterator iter = s.iterator();
/* while(iter.hasNext())
int iterCount=0;
String name=null;
 
while(iter.hasNext())
{
Map.Entry e = (Entry) iter.next();
System.out.println(e.getKey() + ":" + e.getValue());
if(iterCount==3)
{
name=e.getValue().toString();
}
iterCount++;
}
map = LdapManagerFactory.getLdapManager().getUserInfo("a8822");
s = map.entrySet();
iter = s.iterator();*/
int iterNumber=0;
String[] messageBrokenDot=null;
String[] spliters={",","="};
return name;
}
 
public String getRoles(HashMap text)
{
Set s = text.entrySet();
Iterator iter = s.iterator();
int iterCount=0;
String roles=null;
 
while(iter.hasNext())
{
Map.Entry e = (Entry) iter.next();
if(iterNumber==3)
if(iterCount==0)
{
messageBrokenDot=e.getValue().toString().split(spliters[0]);
String[] splitText=e.getValue().toString().split(",");
if(splitText[1].contains("CN"))
{
roles="student";
}
else if(splitText[1].contains("OU"))
{
roles="teacher";
}
}
iterNumber++;
//System.out.println(e.getKey() + ":" + e.getValue());
iterCount++;
}
for (int i = 0 ; i < iterNumber ; i++) {
// System.out.println("->" + messageBrokenDot[i].split(spliters[1]));
return roles;
}
 
public static void main(String[] args) throws Exception
{
//System.out.println(LdapManagerFactory.getLdapManager().login("a8824","21286"));
HashMap map = LdapManagerFactory.getLdapManager().getUserInfo("jmachado");
Set s = map.entrySet();
Iterator iter = s.iterator();
/* while(iter.hasNext())
{
Map.Entry e = (Entry) iter.next();
System.out.println(e.getKey() + ":" + e.getValue());
}
map = LdapManagerFactory.getLdapManager().getUserInfo("a8822");
s = map.entrySet();
iter = s.iterator();*/
 
/*while(iter.hasNext())
{
Map.Entry e = (Entry) iter.next();
 
System.out.println(e.getKey() + "-->" + e.getValue());
} */
//Set s = text.entrySet();
//Iterator iter = s.iterator();
int iterCount=0;
String name=null;
String roles=null;
 
while(iter.hasNext())
{
Map.Entry e = (Entry) iter.next();
if(iterCount==0)
{
String[] splitText=e.getValue().toString().split(",");
if(splitText[1].contains("CN"))
{
roles="student";
}
else if(splitText[1].contains("OU"))
{
roles="teacher";
}
}
 
if(iterCount==3)
{
name=e.getValue().toString();
}
iterCount++;
}
System.out.println("nome-->" + name);
System.out.println("nome-->" + roles);
 
}
}
/impl/src/java/pt/estgp/estgweb/Globals.java
27,5 → 27,6
public static final int NUMBER_ANNOUNCEMENT_TYPE_NEW_INDEX=5;
public static final int NUMBER_ANNOUNCEMENT_TYPE_TOP_FLASH_NEWS_INDEX=1;
public static final int NUMBER_ANNOUNCEMENT_TYPE_BOTTOM_FLASH_NEWS_INDEX=2;
public static final int ANNOUNCEMENT_TYPE_TOP_FLASH_NEWS_TIMEOUT=ConfigProperties.getIntProperty("announcements.top.flash.news.timeout.miliseconds");
 
}
/impl/src/java/pt/estgp/estgweb/services/teste/TesteService.java
New file
0,0 → 1,34
package pt.estgp.estgweb.services.teste;
 
import pt.utl.ist.berserk.logic.serviceManager.IService;
import pt.estgp.estgweb.services.authenticate.LogoutService;
import pt.estgp.estgweb.services.expceptions.ServiceException;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.UserSessionImpl;
import pt.estgp.estgweb.domain.Teste;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import org.apache.log4j.Logger;
 
/*
* @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 TesteService implements IService
{
private static final Logger logger = Logger.getLogger(TesteService.class);
 
public void run(Teste t) throws ServiceException
{
DaoFactory.getTesteDaoImpl().save(t);
}
}
/impl/src/java/pt/estgp/estgweb/services/announcements/CreateAnnouncementService.java
44,9 → 44,85
 
//Se for de validacao automatica ha de aparecer a combobox na web page e o user é que escolhe
//se não pomos false
if(!RoleManager.hasRole(userSession.getUser(),Globals.AUTOMATIC_VALIDATION_ROLES))
announcement.setStatus(false);
if(RoleManager.hasRole(userSession.getUser(),Globals.AUTOMATIC_VALIDATION_ROLES))
announcement.setStatus(true);
else
{
String[] userRoles=announcement.getChoosedOwnerRole().split(",");
Boolean validation=false;
 
for(String role: userRoles)
{
if(!role.equals("all")&&validation==false)
{
try
{
String validationTargets=role+".auto.validation.targets";
String userAutoValitation=ConfigProperties.getProperty(validationTargets);
String[] userAutoValitationRoles=userAutoValitation.split(",");
int validTargetRoles=0;
if(announcement.getTargetRoles().contains(","))
{
String[] targetRolesAnnouncementSplited=announcement.getTargetRoles().split(",");
 
//Percorre os targets todos a quem se destina
for(String target: targetRolesAnnouncementSplited)
{
//Percorre todos os validation targets
for(String userTargetRoles: userAutoValitationRoles)
{
//Se o target a quem se destina constar na lista dos validation targets então incrementa
//o validTargetRoles
if(target.equals(userTargetRoles))
{
validTargetRoles++;
}
}
}
//Se o numero de roles validados for igual ao numero de targets a quem se destina
//Vai verificar se possui validationType para o type announcement
if(validTargetRoles==targetRolesAnnouncementSplited.length)
{
String validationTypes=role +".auto.validation.types";
String userAutoTypes=ConfigProperties.getProperty(validationTypes);
String[] userAutoValitationTypes=userAutoTypes.split(",");
for(String types: userAutoValitationTypes)
{
if(types.equals(announcement.getType()))
validation=true;
}
}
}
else
{
String targetRolesAnnouncement=announcement.getTargetRoles();
//Percorre todos os validation targets
for(String userTargetRoles: userAutoValitationRoles)
{
if(targetRolesAnnouncement.equals(userTargetRoles))
{
validTargetRoles++;
}
}
if(validTargetRoles==1)
{
String validationTypes=role +".auto.validation.types";
String userAutoTypes=ConfigProperties.getProperty(validationTypes);
String[] userAutoValitationTypes=userAutoTypes.split(",");
for(String types: userAutoValitationTypes)
{
if(types.equals(announcement.getType()))
validation=true;
}
}
}
}
catch(Exception e){}
}
}
announcement.setStatus(validation);
}
 
DaoFactory.getAnnouncementDaoImpl().save(announcement);
logger.info("Creating announcement:" + announcement.getId());
return new AnnouncementView(announcement);
/impl/src/java/pt/estgp/estgweb/services/announcements/LoadRoleTypeMaxAnnouncementsService.java
60,8 → 60,8
 
//tens de ter cuidado com o nome que metes no servico, tavas a meter LoadRoleTypeMaxAnnouncements e no XML estava LoadRoleTypeMaxAnnouncementsService, o nome nao tem de ser igual a classe mas convem, por norma eu tenho tirado a palavra service do nome do servico
//ou seja esta LoadRoleTypeMaxAnnouncements para a classe LoadRoleTypeMaxAnnouncementsService logo no sm.execute tem de estar LoadRoleTypeMaxAnnouncements
//mudei a propriedade log.file build.properties para log.file=${data.dir}/estgweb.log assim já não dá o erro do log
//adicionei as libs jsp-api.jar da pasta tomcat/common/lib para não te falhar os imports nas TAGS aqui no Intellij
//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 {
IServiceManager sm = ServiceManager.getInstance();
/impl/src/java/pt/estgp/estgweb/services/announcements/LoadTopFlashNewsIterateService.java
55,8 → 55,8
 
//tens de ter cuidado com o nome que metes no servico, tavas a meter LoadRoleTypeMaxAnnouncements e no XML estava LoadRoleTypeMaxAnnouncementsService, o nome nao tem de ser igual a classe mas convem, por norma eu tenho tirado a palavra service do nome do servico
//ou seja esta LoadRoleTypeMaxAnnouncements para a classe LoadRoleTypeMaxAnnouncementsService logo no sm.execute tem de estar LoadRoleTypeMaxAnnouncements
//mudei a propriedade log.file build.properties para log.file=${data.dir}/estgweb.log assim já não dá o erro do log
//adicionei as libs jsp-api.jar da pasta tomcat/common/lib para não te falhar os imports nas TAGS aqui no Intellij
//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 {
IServiceManager sm = ServiceManager.getInstance();
/impl/src/java/pt/estgp/estgweb/services/authenticate/AuthenticateService.java
13,6 → 13,9
import openldap.LdapManagerFactory;
 
import java.util.HashMap;
import java.util.Set;
import java.util.Iterator;
import java.util.Map;
 
 
/*
81,13 → 84,59
{
HashMap map = ldapManager.getUserInfo(username);
UserImpl u = DomainObjectFactory.createUserImpl();
u.setUsername(username);
u.setEmail((String) map.get("email"));
u.setName((String) map.get("name")); //isto esta mal e so para exemplificar depois tem de se ver isto bem
u.setUsername(username);
u.setName(getName(map));
u.setRoles(getRoles(map));
u.setNewUser(true);
DaoFactory.getUserDaoImpl().save(u);
return u;
}
 
private String getName(HashMap text)
{
Set s = text.entrySet();
Iterator iter = s.iterator();
int iterCount=0;
String name=null;
 
while(iter.hasNext())
{
Map.Entry e = (Map.Entry) iter.next();
if(iterCount==3)
{
name=e.getValue().toString();
}
iterCount++;
}
return name;
}
 
public String getRoles(HashMap text)
{
Set s = text.entrySet();
Iterator iter = s.iterator();
int iterCount=0;
String roles=null;
 
while(iter.hasNext())
{
Map.Entry e = (Map.Entry) iter.next();
if(iterCount==0)
{
String[] splitText=e.getValue().toString().split(",");
if(splitText[1].contains("CN"))
{
roles="student";
}
else if(splitText[1].contains("OU"))
{
roles="teacher";
}
}
iterCount++;
}
return roles;
}
}
 
 
/impl/src/java/pt/estgp/estgweb/services/urlstat/UrlStatService.java
39,7 → 39,7
{
String relativePath = entry.getKey();
UrlStatFilter.IntegerContainer ic = entry.getValue();
 
UrlStatImpl urlStat = (UrlStatImpl) DaoFactory.getUrlStatDaoImpl().loadOrNullLockUpgrade(relativePath);
if(urlStat == null)
{
/impl/src/java/pt/estgp/estgweb/services/urlstat/ChartBuilderService.java
105,7 → 105,7
 
private String build(HttpServletRequest request, String messageTitle, List<String> relativePaths, Date startDate, Date endDate,ChartTypeEnum type)
{
String location = linkToFileName(relativePaths,startDate,endDate,type.getScale());
String location = linkToFileNameEncode(relativePaths,startDate,endDate,type.getScale(),true);
File img = new File(Globals.TMP_DIR + location);
if(img.exists() && ((System.currentTimeMillis() - img.lastModified()) < LINK_CHART_EXPIRE_INTERVAL))
{
195,7 → 195,7
String dates = sp.format(startDate) + "_UNTIL_" + sp.format(endDate) + "_" + seriesScaleEnum.getType();
String path;
if(encode)
path = URIUtil.encodeAll(relativePathName.replaceAll("/","_"),"ISO-8859-1");
path = URIUtil.encodePath(relativePathName.replaceAll("/","_"),"ISO-8859-1");
else
path = relativePathName.replaceAll("/","_");
return LINK_CHART_TMP_DIR + "/" + path + "_" + dates + ".png";
219,7 → 219,7
// UrlStatService.main(null);
AbstractDao.getCurrentSession().beginTransaction();
List<String> relativePaths = new ArrayList<String>();
relativePaths.add("/Welcome.do");
relativePaths.add("/public/announcements/getFlashNews.jsp?sid=0.9998549583612295");
// relativePaths.add("/teste2");
System.out.println(new ChartBuilderService().run(new TestHttpServletRequest(),relativePaths, ChartTypeEnum.weekDays));
System.out.println(new ChartBuilderService().run(new TestHttpServletRequest(),relativePaths, ChartTypeEnum.monthDays));
/impl/src/java/pt/estgp/estgweb/domain/TesteImpl.java
New file
0,0 → 1,10
package pt.estgp.estgweb.domain;
 
/**
* @author Jorge Machado
* @date 9/Abr/2008
* @time 16:57:12
* @see pt.estgp.estgweb.domain
*/
public class TesteImpl extends Teste{
}
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/TesteDaoImpl.java
New file
0,0 → 1,42
package pt.estgp.estgweb.domain.dao.impl;
 
import pt.estgp.estgweb.domain.DomainObjectFactory;
import pt.estgp.estgweb.domain.Teste;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.exceptions.ServiceManagerException;
import pt.utl.ist.berserk.logic.filterManager.exceptions.*;
 
 
/**
* @author Jorge Machado
* @date 28/Fev/2008
* @time 2:51:06
* @see pt.estgp.estgweb.domain.dao.impl
*/
public class TesteDaoImpl extends TesteDao {
public static TesteDaoImpl getInstance() {
if (myInstance == null)
myInstance = new TesteDaoImpl();
return (TesteDaoImpl) myInstance;
}
 
 
public static void main(String[] args) throws ClassNotIFilterException, InvalidFilterException, ServiceManagerException, InvalidFilterExpressionException, IncompatibleFilterException, FilterRetrieveException {
 
Teste t = DomainObjectFactory.createTesteImpl();
t.setMorada("portalegre");
t.setName("jorge");
 
Object[] args2 = {t};
IServiceManager sm = ServiceManager.getInstance();
try {
sm.execute("123", "TesteSaver", args2);
}
catch (Throwable e) {
System.out.println("Already exist fail creation, gone login now");
}
}
 
}
/impl/src/java/pt/estgp/estgweb/domain/dao/DaoFactory.java
64,4 → 64,9
{
return UrlStatDayDaoImpl.getInstance();
}
 
public static TesteDaoImpl getTesteDaoImpl()
{
return TesteDaoImpl.getInstance();
}
}
/impl/src/java/pt/estgp/estgweb/domain/DomainObjectFactory.java
72,4 → 72,10
{
return new UrlStatDayImpl();
}
 
public static TesteImpl createTesteImpl()
{
return new TesteImpl();
}
 
}
/impl/src/java/pt/estgp/estgweb/domain/DomainObject.java
21,6 → 21,8
private static final String ALL_ROLE = ConfigProperties.getProperty("user.super");
 
 
public void setSaveDate(Date d){}
 
/**
* can be override in proper classes
* @return generic user owner of object
/impl/src/java/pt/estgp/estgweb/web/form/TesteForm.java
New file
0,0 → 1,26
package pt.estgp.estgweb.web.form;
 
import org.apache.struts.action.ActionForm;
import pt.estgp.estgweb.domain.Teste;
import pt.estgp.estgweb.domain.DomainObjectFactory;
 
/**
* @author Jorge Machado
* @date 28/Fev/2008
* @time 20:42:25
* @see pt.estgp.estgweb.web.form
*/
public class TesteForm extends ApplicationForm
{
 
Teste teste = DomainObjectFactory.createTesteImpl();
 
 
public Teste getTeste() {
return teste;
}
 
public void setTeste(Teste teste) {
this.teste = teste;
}
}
/impl/src/java/pt/estgp/estgweb/web/controllers/TesteController.java
New file
0,0 → 1,66
package pt.estgp.estgweb.web.controllers;
 
import org.apache.log4j.Logger;
import org.apache.struts.action.*;
import pt.estgp.estgweb.web.controllers.authenticate.AuthenticateController;
import pt.estgp.estgweb.web.utils.RequestUtils;
import pt.estgp.estgweb.web.UserSessionProxy;
import pt.estgp.estgweb.web.form.TesteForm;
import pt.estgp.estgweb.web.exceptions.NoCookiesException;
import pt.estgp.estgweb.services.authenticate.AuthenticateException;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.Globals;
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.exceptions.ServiceManagerException;
import pt.utl.ist.berserk.logic.filterManager.exceptions.*;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.io.IOException;
 
/**
* @author Jorge Machado
* @date 26/Fev/2008
* @time 18:01:54
* @see pt.estgp.estgweb.web
*/
public class TesteController extends ApplicationDispatchController
{
 
private static final Logger logger = Logger.getLogger(TesteController.class);
 
public ActionForward save(ActionMapping mapping,
ActionForm form ,
HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
 
 
TesteForm tf = (TesteForm) form;
Object[] args2 = {tf.getTeste()};
IServiceManager sm = null;
try
{
sm = ServiceManager.getInstance();
}
catch (Exception e)
{
logger.error(e);
}
try
{
sm.execute(RequestUtils.getRequester(request), "TesteSaver", args2);
}
catch (Throwable e)
{
System.out.println("Already exist fail creation, gone login now");
}
return mapping.findForward("ok");
 
}
 
 
}
/impl/src/java/pt/estgp/estgweb/web/filters/UserSessionFilter.java
45,7 → 45,7
{
HttpServletRequest hrequest = (HttpServletRequest) request;
System.out.println(hrequest.getCookies()[0].getValue());
 
if(((HttpServletRequest)request).getServletPath().indexOf("errorNoCookies.do")>=0 || !hrequest.isRequestedSessionIdFromCookie())
chain.doFilter(request,response);
try
/impl/src/java/pt/estgp/estgweb/web/ImageStream.java
31,7 → 31,6
AbstractDao.getCurrentSession().beginTransaction();
Image image = new ImageDaoImpl().get(id);
try {
//String mimeType = MimeTypeGuesser.getInstance().guessMimeType(a.getName());
response.setContentType(image.getContentType());
byte[] imagemStream = image.getImage();
response.setContentLength(imagemStream.length);
/impl/src/hbm/pt/estgp/estgweb/domain/Teste.hbm.xml
New file
0,0 → 1,20
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
 
<hibernate-mapping>
<class name="pt.estgp.estgweb.domain.Teste" table="teste" abstract="true">
<meta attribute="extends">pt.estgp.estgweb.domain.DomainObject</meta>
<meta attribute="scope-class">public abstract</meta>
<id name="id" type="long">
<generator class="native"/>
</id>
<discriminator column="discrimitator"/>
<timestamp name="updateDate" unsaved-value="null"/>
<property name="saveDate" type="timestamp"/>
<property name="name" type="string"/>
<property name="morada" type="string"/>
<subclass name="pt.estgp.estgweb.domain.TesteImpl" discriminator-value="TesteImpl"/>
</class>
</hibernate-mapping>
/impl/src/web/teste.jsp
New file
0,0 → 1,13
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
 
 
<html:form action="/teste">
<input type="hidden" name="dispatch" value="save">
 
Nome <html:text property="teste.name"/><br>
Morada <html:text property="teste.morada"/><br>
<html:submit/>
</html:form>
 
 
/impl/src/web/auth/autenticationok.jsp
8,4 → 8,4
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
 
<bean:message key="authentication.ok"/> <bean:write name="UserSession" property="username"/>
<bean:message key="authentication.ok"/> <bean:write name="UserSession" property="name"/>
/impl/src/web/css/style.css
8,9 → 8,9
 
#body
{
width:950px;
margin-left: auto;
margin-right: auto;
width:950px;
margin-left: auto;
margin-right: auto;
}
 
#pageStructure
114,16 → 114,16
 
.block P,.navLeftMenu h2
{
background-color:#ededed;
padding-left:10px;
margin:0;
background-color:#ededed;
padding-left:10px;
margin:0;
 
}
 
.block UL
{
LIST-STYLE-TYPE: none;
padding-left:10px;
padding-left:10px;
}
 
.block a:link
153,40 → 153,40
 
.portalRightAnnouncements table
{
table-layout:fixed;
width:250px;
table-layout:fixed;
width:250px;
}
 
.portalAnnouncement a:link,.portalAnnouncement a:visited
{
font-size:10pt;
margin:0;
font-size:10pt;
margin:0;
}
 
.portalAnnouncementTitle a
{
color:#000000;
color:#000000;
}
 
.portalAnnouncement a
{
text-decoration :none;
text-decoration :none;
}
 
.portalAnnouncementText a:link,.portalAnnouncementText a:visited
{
color:#4d4d4d;
color:#4d4d4d;
}
 
.navleftMenu
{
width:180px;
padding-left:10px;
padding-left:10px;
}
 
#portalMenu li.selected a
{
color:#8EC73F;
color:#8EC73F;
}
/**********************************************************************************/
 
232,8 → 232,8
 
.pageBlock a:hover
{
color:#8EC73F;
text-decoration :underline;
color:#8EC73F;
text-decoration :underline;
}
 
.pageColumnTableSolid
243,28 → 243,28
 
.listClean UL /*Lista sem nada*/
{
LIST-STYLE-TYPE: none;
padding:0;
LIST-STYLE-TYPE: none;
padding:0;
}
 
.listCircleWhite UL/*Lista circulo branco*/
{
LIST-STYLE-TYPE: circle;
LIST-STYLE-TYPE: circle;
}
 
.listDecimal UL/*Lista decimal*/
{
LIST-STYLE-TYPE: decimal;
LIST-STYLE-TYPE: decimal;
}
 
.listDisc UL/*Lista circulo preto*/
{
LIST-STYLE-TYPE: disc;
LIST-STYLE-TYPE: disc;
}
 
.listSquare UL/*Lista quadrado preto*/
{
LIST-STYLE-TYPE: square;
LIST-STYLE-TYPE: square;
}
 
.pageSection
273,7 → 273,7
 
.sectionTitle h2
{
color:#000000;
color:#000000;
}
 
.pageText,.pageBlock a,.pageBlock a:visited
281,114 → 281,180
color:#4d4d4d;
text-decoration:none;
}
/*********************************************************************************/
 
/******************************* Index Page***************************************/
.indexPage Table
.portalLeftAnnouncements img
{
width:100%;
border-collapse: collapse;
height:133px;
}
 
.header
{
color:#FFFFFF;
background-color:#8EC73F;
padding-left:10px;
}
/*PASSA PARA AQUI TUDO O QUE SEJA DE BLOCOS E VAMOS LIMPAR TUDO */
 
.flashTopNews
/*Isto tem de ser generico o H1 jáe um header nao necessita da classe .header para nada*/
/*Block Titles*/
.content h1, #lastnews h1
{
text-align :right;
margin-bottom:1px;
color:#FFFFFF;
background-color:#8EC73F;
padding-left:10px;
}
 
.flashTopNews tr
/*********************************************************************************/
/******************************* Index Page***************************************/
#flashTopNews * td, #flashCenterNews * td, #flashBottomNews * td
{
background-color:#4d4d4d;
vertical-align:top;
}
 
/*FlashTopNews*/
#flashTopNews
{
padding:0;
margin:0;
}
#flashTopNews .container
{
background-color:#4d4d4d;
height:100px;
width:100%;
margin:0;
}
#flashTopNews img
#flashTopNews .container .textContainer
{
 
height:100px;
margin:0;
text-align :justify;
}
.imageNewsTop
#flashTopNews .container .imageContainer
{
text-align:right;
margin:0;
text-align :right;
text-decoration:none;
}
#flashTopNews td,.flashCenterNews td,.flashBottomNews td
#flashTopNews img
{
height:167px;
}
#flashTopNews * td
{
vertical-align:top;
}
#flashTopNews .container .textContainer h2
{
margin:0;
margin-top:1px;
}
#flashTopNews .container .textContainer p
{
margin:0;
margin-top:1px;
}
#flashTopNews h2 a:link,#flashTopNews h2 a:visited
{
color:#8EC73F;
font-weight:bold;
text-decoration:none;
}
#flashTopNews p a:link, #flashTopNews p a:visited
{
color:#FFFFFF;
text-decoration:none;
}
 
.flashCenterNews
/*FlashCenterNews*/
#flashCenterNews
{
margin-top:2px;
border-top-style: dotted;
border-top-color:#DEDEDD;
border-top-color:gray;
}
 
.textNewsTop
#flashCenterNews .container
{
text-align :left;
width:100%;
margin:0;
}
 
.textNewsCenter,.textNewsBottom
#flashCenterNews .textContainer
{
padding-top :10px;
}
 
.titleNewsTop a,.titleNewsCenter a,.titleNewsBottom a,.titleLastNews a:hover,.copyRightLink a:hover,.linkLeftMenu a:hover,#leftMenuModule h2
#flashCenterNews h2 a:link,#flashCenterNews h2 a:visited
{
color:#8EC73F;
font-weight:bold;
text-decoration:none;
}
 
.titleNewsTop a,.titleNewsCenter a,.titleNewsBottom a
#flashCenterNews p a:link, #flashCenterNews p a:visited
{
font-weight:bold;
color:#4d4d4d;
text-decoration:none;
}
 
.flashCenterNews a,.descriptionNewsBottom a,.linkLeftMenu a,.flashTopNews a
#flashCenterNews img,#flashCenterNews td.imageContainer
{
text-decoration:none;
width:133px;
}
 
.descriptionNewsCenter a:link,.descriptionNewsCenter a:visited,.descriptionNewsBottom a:link,.descriptionNewsBottom a:visited,.titleLastNews a,.copyRightLink a,.linkLeftMenu a
 
 
/*FlashBottomNews*/
#flashBottomNews img
{
color:#4d4d4d;
width:100px;
}
 
.descriptionNewsTop a:link,.descriptionNewsTop a:visited
#flashBottomNews h2 a:link,#flashBottomNews h2 a:visited
{
color:#FFFFFF;
color:#8EC73F;
font-weight:bold;
}
 
.imageNewsCenter
#flashBottomNews p a:link,#flashBottomNews p a:visited
{
width:50px;
color:#4d4d4d;
}
 
.titleNewsTop,.titleNewsCenter,.titleNewsBottom,.descriptionNewsCenter,.descriptionNewsBottom,.descriptionNewsTop
/*Last News Block*/
#lastnews ul
{
padding-left :10px;
list-style: none;
width:160px;
LIST-STYLE-TYPE: none;
padding:0;
margin:0;
}
 
.lastnews ul
#lastnews li
{
margin:0;
padding:0;
padding-left:5px;
WIDTH: 160px;
}
#lastnews li h2
{
padding:0;
padding-left:2px;
margin:1px;
}
#lastnews li h2 a,.linkLeftMenu a
{
text-decoration:none;
}
#lastnews li h2 a:link,.linkLeftMenu a:link
{
color:#4d4d4d;
}
#lastnews li h2 a:visited,.linkLeftMenu a:visited
{
color:#4d4d4d;
}
#lastnews li h2 a:hover,.linkLeftMenu a:hover
{
color:#8EC73F;
}
 
/**/
 
/*LEFT MENUS*/
#leftMenuModule h2
{
MARGIN: 0;
color:#8EC73F;
}
 
#leftMenuModule UL
{
MARGIN: 0;
514,7 → 580,7
/*************************Staff Links Structure***************************************/
.staffLinks P
{
font-weight :bold;
font-weight :bold;
}
/*************************************************************************************/
 
681,50 → 747,50
 
/********************************************** Navigation Menu ********************************/
ul.menubar{
margin: 0px;
padding: 0px;
background-color: #FFFFFF; /* IE6 Bug */
font-size: 100%;
margin: 0px;
padding: 0px;
background-color: #FFFFFF; /* IE6 Bug */
font-size: 100%;
 
}
.submenu
{
font: bold 16px sans;
font: bold 16px sans;
}
 
.menu
{
font: normal 14px sans;
font: normal 14px sans;
}
 
ul.menubar .submenu{
margin: 0px;
padding: 0px;
list-style: none;
background-color: #FFFFFF;
float:left;
margin: 0px;
padding: 0px;
list-style: none;
background-color: #FFFFFF;
float:left;
}
 
ul.menubar ul.menu{
display: none;
position: absolute;
margin: 0px;
display: none;
position: absolute;
margin: 0px;
}
 
ul.menubar a{
padding: 5px;
display:block;
text-decoration: none;
color: #4D4D4D;
padding: 5px;
padding: 5px;
display:block;
text-decoration: none;
color: #4D4D4D;
padding: 5px;
}
 
ul.menubar a:hover{
padding: 5px;
display:block;
text-decoration: none;
color: #4D4D4D;
padding: 5px;
padding: 5px;
display:block;
text-decoration: none;
color: #4D4D4D;
padding: 5px;
}
 
.menuTop
733,43 → 799,43
}
 
.menu a:hover{
padding: 5px;
display:block;
/* border-left: none;
padding: 5px;
display:block;
/* border-left: none;
border-right: none;
border-top: none;
border-bottom: none; */
padding: 5px;
padding: 5px;
}
 
ul.menu, ul.menu ul{
margin: 0;
padding: 2px;
/* border-left: 1px solid #ccc;
border-bottom: 1px solid #ccc;
border-top: 1px solid #ccc;
border-right: 1px solid #ccc; */
background-color: #FFFFFF; /* IE6 Bug */
margin: 0;
padding: 2px;
/* border-left: 1px solid #ccc;
border-bottom: 1px solid #ccc;
border-top: 1px solid #ccc;
border-right: 1px solid #ccc; */
background-color: #FFFFFF; /* IE6 Bug */
}
 
ul.menu li{
position: relative;
list-style: none;
/*border: 0px;*/
opacity:0.9;
background-color: #4D4D4D;
width:250px;
position: relative;
list-style: none;
/*border: 0px;*/
opacity:0.9;
background-color: #4D4D4D;
width:250px;
}
 
ul.menu li a{
display: block;
text-decoration: none;
/* border-bottom: 0px;*/
/*color: #4D4D4D;*/
/* background-color: #FFFFFF; */
color: #4d4d4d;
background-color: #CCCCCC;
padding: 5px 10px 5px 5px;
display: block;
text-decoration: none;
/* border-bottom: 0px;*/
/*color: #4D4D4D;*/
/* background-color: #FFFFFF; */
color: #4d4d4d;
background-color: #CCCCCC;
padding: 5px 10px 5px 5px;
}
 
/*
791,9 → 857,9
}
 
ul.menu li sup{
font-weight:bold;
font-size:7px;
color: red;
font-weight:bold;
font-size:7px;
color: red;
}
 
/* Fix IE. Hide from IE Mac \*/
802,10 → 868,10
/* End */
 
ul.menu ul{
position: absolute;
display: none;
left: 149px; /* Set 1px less than menu width */
top: 0px;
position: absolute;
display: none;
left: 149px; /* Set 1px less than menu width */
top: 0px;
}
 
ul.menu li.submenu ul
/impl/src/web/js/ajax.js
1,154 → 1,160
var xmlHttp;
var servidorBaseUrl = "@server.base.url@";
/**
*
* AJAX Functions
*
* This code is protected under GNU LGPL License
*
* @author Jorge Machado
* @date April 2008
**/
 
/**
* Starts XMLHTTP Ajax request
*
* @author Jorge Machado
* @date April 2008
*
* params:
* @params HTTP GET Parameters for query string
* @xmlHttpRequest request
* @id target element
* @stateChanged target function
* @innerPhrase to put while waiting for response
* @navjsp requested jsp
*/
function startRequest(xmlHttpRequest,params,id,stateChanged,innerPhrase,navjsp)
{
if(innerPhrase != '')
getObjectById(id).innerHTML = innerPhrase;
if (xmlHttpRequest==null)
{
alert ("Browser does not support HTTP Request");
return;
}
var url= navjsp;
if(params != null && params.length > 0)
{
url=url+"?"+ params;
url=url+"&sid="+Math.random();
}
else
{
url=url+"?sid="+Math.random();
}
xmlHttpRequest.onreadystatechange=stateChanged;
xmlHttpRequest.open("GET",url,true);
xmlHttpRequest.send(null);
}
 
function getObjectById(objectId) {
 
// cross-browser function to get an object's style object given its id
try
/**
* Return an HTML element given ID
*
* @author Jorge Machado
* @date April 2008
*
* params:
* @objectId required object
*/
function getObjectById(objectId)
{
// cross-browser function to get an object's style object given its id
try
{
if(document.getElementById && document.getElementById(objectId))
{
if(document.getElementById && document.getElementById(objectId)) {
// W3C DOM
return document.getElementById(objectId);
} else if (document.all(objectId)) {
return document.getElementById(objectId);
}
else if (document.all(objectId))
{
// MSIE 4 DOM
return document.all(objectId);
} else if (document.layers && document.layers[objectId]) {
return document.all(objectId);
}
else if (document.layers && document.layers[objectId])
{
// NN 4 DOM.. note: this won't find nested layers
return document.layers[objectId];
} else {
return false;
}
return document.layers[objectId];
}
catch(e)
else
{
return false;
}
 
} // getObjectById
 
function GetXmlHttpObject()
{
var objXMLHttp=null;
if (window.XMLHttpRequest)
{
objXMLHttp=new XMLHttpRequest();
}
else if (window.ActiveXObject)
{
objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
return objXMLHttp;
}
catch(e)
{
return false;
}
}
 
function GetXmlHttpObject(handler)
{
 
var objXmlHttp=null;
 
if (navigator.userAgent.indexOf("Opera")>=0)
{
alert("This example doesn't work in Opera") ;
return ;
}
if (navigator.userAgent.indexOf("MSIE")>=0)
{
var strName="Msxml2.XMLHTTP";
if (navigator.appVersion.indexOf("MSIE 5.5")>=0)
{
strName="Microsoft.XMLHTTP";
}
try
{
objXmlHttp=new ActiveXObject(strName);
objXmlHttp.onreadystatechange=handler ;
return objXmlHttp;
}
catch(e)
{
alert("Error. Scripting for ActiveX might be disabled") ;
return ;
}
}
if (navigator.userAgent.indexOf("Mozilla")>=0)
{
objXmlHttp=new XMLHttpRequest();
objXmlHttp.onload=handler;
objXmlHttp.onerror=handler;
return objXmlHttp;
}
}
 
/**
* Creates a new XmlHttpObject
* @author Jorge Machado
* @date April 2008
*
* Application Methods Examples
*
*
* params:
* @handler target xmlHttpObject function
*/
 
 
function getImportState()
function GetXmlHttpObject(handler)
{
xmlHttp=GetXmlHttpObject(stateChangedGetImportState);
getObjectById("importState").innerHTML = "<div class=\"statusSearch\">Updating import state ....</div>";
if (xmlHttp==null)
{
alert ("Browser does not support HTTP Request");
return;
}
//http://servidor:8080
var url= servidorBaseUrl + "/jsp/import/getImportState.jsp";
url=url+"?sid="+Math.random();
xmlHttp.onreadystatechange=stateChangedGetImportState;
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
}
 
function stateChangedGetImportState()
{
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{
var html = xmlHttp.responseText;
getObjectById("importState").innerHTML=html;
if(!(getObjectById("importStateStatus") != null && getObjectById("importStateStatus").value == 'STOPPED'))
var objXmlHttp = null;
if (navigator.userAgent.indexOf("Opera")>=0)
{
alert("This example doesn't work in Opera") ;
return objXmlHttp;
}
if (navigator.userAgent.indexOf("MSIE")>=0)
{
var strName="Msxml2.XMLHTTP";
if (navigator.appVersion.indexOf("MSIE 5.5")>=0)
{
setTimeout(getImportState,5000);
strName="Microsoft.XMLHTTP";
}
}
try
{
objXmlHttp=new ActiveXObject(strName);
objXmlHttp.onreadystatechange=handler ;
return objXmlHttp;
}
catch(e)
{
alert("Error. Scripting for ActiveX might be disabled") ;
return objXmlHttp;
}
}
if (navigator.userAgent.indexOf("Mozilla")>=0)
{
objXmlHttp=new XMLHttpRequest();
objXmlHttp.onload=handler;
objXmlHttp.onerror=handler;
return objXmlHttp;
}
}
 
/***************************************************
TopFlashNews
***************************************************/
var xmlHttpTopFlashNews;
var getFlashNewsTimeout;
var getFlashNewsJsp;
 
//GET DESTAQUE
 
var iterator = 0;
var cookie;
function getFlashNewsNext()
function getFlashNews(jsp,timeout)
{
getFlashNews(cookie);
getFlashNewsJsp = jsp;
getFlashNewsTimeout = timeout;
getFlashNewsTimeoutCall();
}
function getFlashNews()
function getFlashNewsTimeoutCall()
{
xmlHttp=GetXmlHttpObject(stateChangedGetFlashNews);
if (xmlHttp==null)
{
alert ("Browser does not support HTTP Request");
return;
}
var url= servidorBaseUrl + "/public/announcements/getFlashNews.jsp";
url=url+"?sid="+Math.random()+"&iterator="+iterator;
iterator++;
xmlHttp.onreadystatechange=stateChangedGetFlashNews;
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
xmlHttpTopFlashNews=GetXmlHttpObject(stateChangedGetFlashNews);
startRequest(xmlHttpTopFlashNews,"","flashTopNews",stateChangedGetFlashNews,"",getFlashNewsJsp)
}
 
function stateChangedGetFlashNews()
{
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{
getObjectById("flashTopNews").innerHTML=xmlHttp.responseText;
setTimeout(getFlashNews,5000);
}
if (xmlHttpTopFlashNews.readyState==4 || xmlHttpTopFlashNews.readyState=="complete")
{
getObjectById("flashTopNews").innerHTML=xmlHttpTopFlashNews.responseText;
setTimeout(getFlashNewsTimeoutCall,getFlashNewsTimeout);
}
}
 
 
/impl/src/web/public/index.jsp
23,104 → 23,109
<jomm:messages/>
<html:errors/>
 
<script type="text/javascript">
<%--getFlashNews('<%=request.getCookies()[0].getValue()%>');--%>
getFlashNews();
</script>
<script type="text/javascript">
<!--
getFlashNews('<%=request.getContextPath()%>/public/announcements/getFlashNews.jsp',<%=Globals.ANNOUNCEMENT_TYPE_TOP_FLASH_NEWS_TIMEOUT%>);
-->
</script>
 
<div class="indexPage" >
<div class="indexPage">
 
<div class="header">
<h1> <bean:message key="mainAnnouncements"/></h1>
<h1><bean:message key="mainAnnouncements"/></h1>
 
<div id="flashTopNews">
<table class="container">
<tr>
<td class="textContainer">
<bean:message key="announcements.loading"/>
</td>
<td class="imageContainer">
</td>
</tr>
</table>
</div>
 
<table id="flashTopNews">
<tr>
<td>
<div class="textNewsTop">
<bean:message key="announcements.loading"/>
</div>
</td>
<td class="imageNewsTop">
</td>
</tr>
</table>
<logic:iterate id="item" name="Announcements" type="pt.estgp.estgweb.domain.views.AnnouncementView">
<logic:equal value="bottom.flash.news" name="item" property="type">
 
<table class="flashCenterNews">
<tr>
<div class="textNewsCenter">
<logic:iterate id="item" name="Announcements" type="pt.estgp.estgweb.domain.views.AnnouncementView">
<logic:equal value="bottom.flash.news" name="item" property="type">
<%if(centerAnnouncements<=Globals.NUMBER_ANNOUNCEMENT_TYPE_BOTTOM_FLASH_NEWS_INDEX)
{
%>
<td class="imageNewsCenter">
<img src="<%=request.getContextPath()%>/imgs/destaque_2_1.jpg"/>
</td>
<td>
<div class="titleNewsCenter">
<html:link action="/loadAnnouncement?id=${item.id}&dispatch=load" >${item.title}</html:link>
</div>
<div class="descriptionNewsCenter">
<html:link action="/loadAnnouncement?id=${item.id}&dispatch=load" >${item.text}</html:link>
</div>
</td>
<%
}
else{
}
centerAnnouncements++;
%>
</logic:equal>
</logic:iterate>
</div>
</table>
<%if(centerAnnouncements<=Globals.NUMBER_ANNOUNCEMENT_TYPE_BOTTOM_FLASH_NEWS_INDEX)
{
if(centerAnnouncements==1)
{ %>
<div id="flashCenterNews">
<table class="container">
<tr>
<%}%>
<td class="imageContainer">
<%if(item.getSmallImage() != null){%><img alt="<%=item.getTitle()%>" src="<%=request.getContextPath()%>/imageStream/<%=item.getSmallImage().getId()%>"><%}%>
</td>
<td class="textContainer">
<h2>
<html:link action="/loadAnnouncement?id=${item.id}&dispatch=load" >${item.title}</html:link>
</h2>
<p>
<html:link action="/loadAnnouncement?id=${item.id}&dispatch=load" >${item.text}</html:link>
</p>
</td>
 
<table class="flashBottomNews">
<tr>
<div class="textNewsBottom">
<logic:iterate id="item" name="Announcements" type="pt.estgp.estgweb.domain.views.AnnouncementView">
<logic:equal value="news" name="item" property="type">
<%if(bottomAnnouncements<=Globals.NUMBER_ANNOUNCEMENT_TYPE_NEW_INDEX)
{
%>
<td class="imageNewsBottom">
<img src="<%=request.getContextPath()%>/imgs/destaque_3_3.gif"/>
</td>
<%
}
else{
}
bottomAnnouncements++;
%>
</logic:equal>
</logic:iterate>
<%if(centerAnnouncements==Globals.NUMBER_ANNOUNCEMENT_TYPE_BOTTOM_FLASH_NEWS_INDEX)
{%>
</tr>
</table>
</div>
</tr>
<tr>
<%bottomAnnouncements=0;%>
<div class="textNewsBottom">
<logic:iterate length="5" id="item" name="Announcements" type="pt.estgp.estgweb.domain.views.AnnouncementView">
<logic:equal value="news" name="item" property="type">
<%
if(bottomAnnouncements<=4)
{
%>
<td width="50px">
<div class="titleNewsBottom">
<html:link action="/loadAnnouncement?id=${item.id}&dispatch=load">${item.title}</html:link>
<%
}
centerAnnouncements++;
}
else if(bottomAnnouncements<=Globals.NUMBER_ANNOUNCEMENT_TYPE_NEW_INDEX)
{
if(bottomAnnouncements==1)
{
%>
 
<div id="flashBottomNews">
<table class="container">
<tr>
<%}%>
<td>
<div class="imageContainer">
<%if(item.getSmallImage() != null){%><img alt="<%=item.getTitle()%>" src="<%=request.getContextPath()%>/imageStream/<%=item.getSmallImage().getId()%>"><%}%>
</div>
<div class="descriptionNewsBottom">
<html:link action="/loadAnnouncement?id=${item.id}&dispatch=load" >${item.text}</html:link>
<div class="textContainer">
<h2>
<html:link action="/loadAnnouncement?id=${item.id}&dispatch=load">${item.title}</html:link>
</h2>
<p>
<html:link action="/loadAnnouncement?id=${item.id}&dispatch=load" >${item.text}</html:link>
</p>
</div>
</td>
<%
}
bottomAnnouncements++;
%>
</logic:equal>
</logic:iterate>
<%if(bottomAnnouncements==Globals.NUMBER_ANNOUNCEMENT_TYPE_NEW_INDEX)
{%>
</tr>
</table>
</div>
</tr>
</table>
<%
}
 
bottomAnnouncements++;
}
%>
</logic:equal>
</logic:iterate>
<%if(bottomAnnouncements>1 && bottomAnnouncements<=Globals.NUMBER_ANNOUNCEMENT_TYPE_NEW_INDEX)
{
%>
</tr>
</table>
</div>
<%}%>
<%if(centerAnnouncements>1 && centerAnnouncements<=Globals.NUMBER_ANNOUNCEMENT_TYPE_BOTTOM_FLASH_NEWS_INDEX)
{
%>
</tr>
</table>
</div>
<%}%>
</div>
 
/impl/src/web/public/portals/alunos/contactosLinks.jsp
13,4 → 13,5
topNav.addNavPlace(startLink + "/contactosGabineteComunicacao.html"+Globals.PORTAL_ROLE_VIEW_STUDENT, "portal.contactos.gabinete.comunicacao");
topNav.addNavPlace(startLink + "/contactosReprografia.html"+Globals.PORTAL_ROLE_VIEW_STUDENT, "portal.contactos.reprografia");
topNav.addNavPlace(startLink + "/contactosDocentesContactos.html"+Globals.PORTAL_ROLE_VIEW_STUDENT, "portal.contactos.docentes");
topNav.addNavPlace(startLink + "/associacaoEstudantes.html"+Globals.PORTAL_ROLE_VIEW_STUDENT, "portal.contactos.associacao.estudantes");
%>
/impl/src/web/public/portals/alunos/accaoSocialLinks.jsp
13,4 → 13,5
topNav.addNavPlace(startLink + "/accaoSocialDesportoCultura.html"+Globals.PORTAL_ROLE_VIEW_STUDENT, "portal.accao.social.desporto.cultura");
topNav.addNavPlace(startLink + "/accaoSocialGaap.html"+Globals.PORTAL_ROLE_VIEW_STUDENT, "portal.accao.social.gapp");
topNav.addNavPlace(startLink + "/accaoSocialInformacoes.html"+Globals.PORTAL_ROLE_VIEW_STUDENT, "portal.accao.social.informacoes");
topNav.addNavPlace(startLink + "/cantinas"+Globals.PORTAL_ROLE_VIEW_STUDENT, "portal.accao.social.cantinas");
%>
/impl/src/web/public/announcements/announcementsPortalLeft.jsp
18,7 → 18,7
<%
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{};
Object[] args = new Object[]{request.getParameter("role"), Globals.ANNOUNCEMENT_TYPE_BOTTOM_FLASH_NEWS};
Object[] args = new Object[]{request.getParameter("role"), Globals.ANNOUNCEMENT_TYPE_TOP_FLASH_NEWS};
List<AnnouncementView> announcementViews = (List<AnnouncementView>) sm.execute(RequestUtils.getRequester(request), "LoadRoleTypeMaxAnnouncements", args, names);
request.setAttribute("Announcements", announcementViews);
%>
31,7 → 31,7
<td>
<div class="portalAnnouncementTop">
<div class="imageAnnouncementTop">
<img src="<%=request.getContextPath()%>/imgs/destaque_2_1.jpg"/>
<%if(item.getSmallImage() != null){%><img alt="<%=item.getTitle()%>" src="<%=request.getContextPath()%>/imageStream/<%=item.getSmallImage().getId()%>"><%}%>
</div>
<div class="portalAnnouncement">
<logic:empty name="item" property="url">
44,11 → 44,9
</logic:notEmpty>
</div>
</div>
 
</td>
 
</tr>
</logic:iterate>
</logic:present>
</table>
</div>
</div>
/impl/src/web/public/announcements/getFlashNews.jsp
20,18 → 20,18
Object[] arguments = new Object[]{};
AnnouncementView announcementView = (AnnouncementView) sm.execute(RequestUtils.getRequester(request), "LoadTopFlashNewsIterate", arguments, names);
%>
<tr>
<td>
<div id="textNewsTop">
<div class="titleNewsTop">
<table class="container">
<tr>
<td class="textContainer">
<h2>
<html:link action="/loadAnnouncement?id=<%=announcementView.getId()%>&dispatch=load"><%=announcementView.getTitle()%></html:link>
</div>
<div class="descriptionNewsTop">
</h2>
<p>
<html:link action="/loadAnnouncement?id=<%=announcementView.getId()%>&dispatch=load"><%=announcementView.getTextSummary()%></html:link>
</div>
</div>
</td>
<td class="imageNewsTop">
<%if(announcementView.getBigImage() != null){%><img alt="<%=announcementView.getTitle()%>" src="<%=request.getContextPath()%>/imageStream/<%=announcementView.getBigImage().getId()%>"><%}%>
</td>
</tr>
</p>
</td>
<td class="imageContainer">
<%if(announcementView.getBigImage() != null){%><img alt="<%=announcementView.getTitle()%>" src="<%=request.getContextPath()%>/imageStream/<%=announcementView.getBigImage().getId()%>"><%}%>
</td>
</tr>
</table>
/impl/src/web/public/announcements/announcements.jsp
15,36 → 15,24
request.setAttribute("Announcements", announcementViews);
%>
 
<div class="lastNews">
<div class="header">
<h1><bean:message key="announcements"/></h1>
<div id="lastNews">
<h1><bean:message key="announcements"/></h1>
<div class="linkLeftMenu">
<logic:present name="Announcements">
<ul>
<logic:iterate id="item" name="Announcements" type="pt.estgp.estgweb.domain.views.AnnouncementView">
<logic:equal value="news" name="item" property="type">
<li>
<logic:empty name="item" property="url">
<h2><html:link action="/loadAnnouncement?id=${item.id}&dispatch=load">${item.title}</html:link></h2>
</logic:empty>
<logic:notEmpty name="item" property="url">
<h2><html:link href="${item.url}">${item.title}</html:link></h2>
</logic:notEmpty>
</li>
</logic:equal>
</logic:iterate>
</ul>
</logic:present>
</div>
 
<table class="lastNewsBlock">
<tr>
<td>
<logic:present name="Announcements">
<div class="listClean">
<ul>
<logic:iterate id="item" name="Announcements" type="pt.estgp.estgweb.domain.views.AnnouncementView">
<li>
<logic:empty name="item" property="url">
<logic:equal value="news" name="item" property="type">
<div class="titleLastNews"><html:link action="/loadAnnouncement?id=${item.id}&dispatch=load">${item.title}</html:link></div>
</logic:equal>
</logic:empty>
<logic:notEmpty name="item" property="url">
<logic:equal value="news" name="item" property="type">
<div class="titleLastNews"><html:link href="${item.url}">${item.title}</html:link></div>
</logic:equal>
</logic:notEmpty>
</li>
</logic:iterate>
</ul>
</div>
</logic:present>
</td>
</tr>
 
</table>
</div>
/impl/gen/java/pt/estgp/estgweb/domain/dao/impl/TesteDao.java
New file
0,0 → 1,39
package pt.estgp.estgweb.domain.dao.impl;
// Generated 9/Abr/2008 17:13:21 by Hibernate Tools 3.2.0.b9
 
 
import org.apache.log4j.Logger;
 
/**
* Home object for domain model class Teste.
* @author Jorge Machado - Hibernate Tools
*/
 
import jomm.dao.IDomainObjectDao;
import jomm.dao.impl.AbstractDao;
import pt.estgp.estgweb.domain.Teste;
 
 
public class TesteDao extends AbstractDao<Teste> {
//public class TesteDao extends AbstractDao implements IDomainObjectDao {
 
private static final Logger log = Logger.getLogger(TesteDao.class);
 
protected static TesteDao myInstance = null;
 
protected TesteDao(){
super();
}
 
public static TesteDao getInstance() {
if (myInstance == null)
myInstance = new TesteDao();
return myInstance;
}
 
protected Class getReferenceClass() {
return Teste.class;
}
}
 
 
/impl/gen/java/pt/estgp/estgweb/domain/Teste.java
New file
0,0 → 1,69
package pt.estgp.estgweb.domain;
// Generated 9/Abr/2008 17:13:19 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
 
/**
* Teste generated by hbm2java
*/
public abstract class Teste extends pt.estgp.estgweb.domain.DomainObject implements java.io.Serializable {
 
 
private long id;
private Date updateDate;
private Date saveDate;
private String name;
private String morada;
 
public Teste() {
}
 
public Teste(Date saveDate, String name, String morada) {
this.saveDate = saveDate;
this.name = name;
this.morada = morada;
}
public long getId() {
return this.id;
}
public void setId(long id) {
this.id = id;
}
public Date getUpdateDate() {
return this.updateDate;
}
public void setUpdateDate(Date updateDate) {
this.updateDate = updateDate;
}
public Date getSaveDate() {
return this.saveDate;
}
public void setSaveDate(Date saveDate) {
this.saveDate = saveDate;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public String getMorada() {
return this.morada;
}
public void setMorada(String morada) {
this.morada = morada;
}
 
 
 
 
}
 
 
/impl/build.xml
1,4 → 1,4
<?xml version="1.0"?>
<?xml version="1.0" encoding="utf-8"?>
<project name="estgweb" basedir="." default="help">