/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"> |