/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/conf/language/MessageResourcesAnnouncements.properties |
---|
26,4 → 26,7 |
announcement.protocol.error.http=http |
announcement.protocol.error.https=https |
announcement.protocol.error.ftp=ftp |
announcement.protocol.error.ftp=ftp |
announcements.loading=carregando anúncio... |
/impl/conf/language/MessageResources.properties |
---|
72,13 → 72,15 |
user.role.worker=Funcionário |
user.role.invited=Convidado |
user.role.services=Serviços |
user.role.administrativeCouncil=Concelho Administrativo |
user.role.administrativeCouncil=Concelho Directivo |
user.role.representativeCouncil=Concelho de Representantes |
user.role.scientificCouncil=Concelho Científico |
user.role.erasmusCouncil=Concelho Erasmus |
user.role.pedagogicCouncil=Concelho Pedagógico |
user.role.courseCoordinator=Coordenador |
user.role.futureStudent=Futuros Alunos |
user.role.oldStudent=Antigos Alunos |
user.role.sudentAssociation=Associação de Estudantes |
#Filter Errors |
171,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/WEB-INF/web.xml |
---|
111,6 → 111,10 |
<servlet-name>tmpStream</servlet-name> |
<servlet-class>pt.estgp.estgweb.web.TmpStream</servlet-class> |
</servlet> |
<servlet> |
<servlet-name>imageStream</servlet-name> |
<servlet-class>pt.estgp.estgweb.web.ImageStream</servlet-class> |
</servlet> |
<!--MAPPINGS--> |
<servlet-mapping> |
137,6 → 141,10 |
<servlet-name>tmpStream</servlet-name> |
<url-pattern>/tmpStream/*</url-pattern> |
</servlet-mapping> |
<servlet-mapping> |
<servlet-name>imageStream</servlet-name> |
<url-pattern>/imageStream/*</url-pattern> |
</servlet-mapping> |
<!--START FILES--> |
<welcome-file-list> |
/impl/conf/app.properties |
---|
42,7 → 42,10 |
user.role.16=pedagogicCouncil |
user.role.17=erasmusCouncil |
user.role.18=courseCoordinator |
user.role.19=sudentAssociation |
user.role.20=representativeCouncil |
######################################################################### |
# |
# Modules |
52,21 → 55,38 |
######################################################################### |
# Announcements |
# |
announcements.text.summary.size=250 |
announcements.automatic.validation.role.1=all |
announcements.automatic.validation.role.2=admin |
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 |
announcements.type.2=bottom.flash.news |
#role images for announcements |
announcement.default.img=/imgs/rolesIcons/estg.gif |
role.admin.img=/imgs/rolesIcons/ae.gif |
announcement.default.img=/imgs/rolesIcons/nd.gif |
role.admin.img=/imgs/rolesIcons/estg.gif |
role.sudentAssociation.img=/imgs/rolesIcons/ae.gif |
role.administrativeCouncil.img=/imgs/rolesIcons/c_directivo.gif |
role.scientificCouncil.img=/imgs/rolesIcons/c_cientifico.gif |
role.representativeCouncil.img=/imgs/rolesIcons/ass_repre.gif |
role.teacher.eg.img=/imgs/rolesIcons/ne.gif |
role.teacher.dg.img=/imgs/rolesIcons/ngm.gif |
role.services.img=/imgs/rolesIcons/secretaria.gif |
######################################################################### |
# Link Analysis |
# |
83,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 |
---|
152,5 → 152,27 |
<chain name="Logger"/> |
</filterChains> |
</service> |
<service> |
<name>LoadTopFlashNewsIterate</name> |
<implementationClass>pt.estgp.estgweb.services.announcements.LoadTopFlashNewsIterateService</implementationClass> |
<description>Load an Announcement one flash News</description> |
<isTransactional>true</isTransactional> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
</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/LoadTopFlashNewsIterateService.java |
---|
New file |
0,0 → 1,70 |
package pt.estgp.estgweb.services.announcements; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager; |
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager; |
import pt.estgp.estgweb.utils.ConfigProperties; |
import pt.estgp.estgweb.domain.views.AnnouncementView; |
import pt.estgp.estgweb.domain.Announcement; |
import pt.estgp.estgweb.domain.UserSession; |
import pt.estgp.estgweb.domain.UserSessionImpl; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.Globals; |
import org.apache.log4j.Logger; |
import java.util.List; |
import java.util.ArrayList; |
/** |
* Created by IntelliJ IDEA. |
* User: Fabio |
* Date: 28/Mar/2008 |
* Time: 11:42:28 |
* To change this template use File | Settings | File Templates. |
*/ |
public class LoadTopFlashNewsIterateService implements IService |
{ |
private static final String flashNewsIterator = "flashNewsIterator"; |
private static final Logger logger = Logger.getLogger(LoadTopFlashNewsIterateService.class); |
public AnnouncementView run(UserSession sess) |
{ |
Integer iterator = (Integer) ((UserSessionImpl)sess).get(flashNewsIterator); |
if(iterator == null) |
iterator = 0; |
int size = DaoFactory.getAnnouncementDaoImpl().countAnnouncements(1,null,Globals.ANNOUNCEMENT_TYPE_TOP_FLASH_NEWS); |
iterator = iterator % size; |
List<Announcement> announcements = DaoFactory.getAnnouncementDaoImpl().findAnnouncements(iterator, 1,null,Globals.ANNOUNCEMENT_TYPE_TOP_FLASH_NEWS); |
iterator++; |
((UserSessionImpl)sess).put(flashNewsIterator,iterator); |
if(announcements == null) |
return null; |
logger.info("Loading announcement top flash iterator"); |
if(announcements.size() > 0) |
{ |
AnnouncementView announcementView = new AnnouncementView(announcements.get(0)); |
return announcementView; |
} |
return null; |
} |
//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 |
//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(); |
String[] names = new String[]{}; |
Object[] arguments = new Object[]{}; |
AnnouncementView announcementView = (AnnouncementView) sm.execute("testecookie", "LoadTopFlashNewsIterate",arguments,names); |
System.out.println("-->"+announcementView.getTitle()); |
} |
} |
/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/UserSessionImpl.java |
---|
55,13 → 55,13 |
sessionObjectId.setKeyId(key); |
sessionObjectId.setUserSession(this); |
sessionObject.setId(sessionObjectId); |
getObjects().add(sessionObject); |
} |
ByteArrayOutputStream os = new ByteArrayOutputStream(); |
XMLEncoder xenc = new XMLEncoder(os); |
xenc.writeObject(obj); |
xenc.close(); |
sessionObject.setXmlObject(os.toString()); |
getObjects().add(sessionObject); |
} |
/** |
/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/views/AnnouncementView.java |
---|
4,6 → 4,7 |
import pt.estgp.estgweb.domain.Image; |
import pt.estgp.estgweb.domain.AnnouncementImpl; |
import pt.estgp.estgweb.utils.RoleManager; |
import pt.estgp.estgweb.utils.ConfigProperties; |
import java.util.List; |
import java.util.Date; |
17,6 → 18,8 |
*/ |
public class AnnouncementView extends DomainObjectView |
{ |
public static final int TEXT_SUMMARY_SIZE = ConfigProperties.getIntProperty("announcements.text.summary.size"); |
private long id; |
private String title; |
private String text; |
190,4 → 193,11 |
public void setCounter(Integer counter) { |
this.counter = counter; |
} |
public String getTextSummary() |
{ |
if(getText().length() > TEXT_SUMMARY_SIZE) |
return getText().substring(0,getText().substring(0,TEXT_SUMMARY_SIZE).lastIndexOf(' ')) + "..."; |
return getText(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/AnnouncementDaoImpl.java |
---|
54,36 → 54,29 |
criteria.add(co) |
.add(or(or(lt("startDate",now),eq("startDate",now)),isNull("startDate"))) |
.add(or(or(gt("expireDate",now),eq("expireDate",now)),isNull("expireDate"))) |
.add(eq("status",true)) |
.setMaxResults(maxAnnouncements) |
.addOrder(Order.desc("saveDate")); |
return criteria.list(); |
} |
/*public List<Announcement> findAnnouncements(int maxAnnouncements,String targetRole,String type) |
public List<Announcement> findAnnouncements(int maxAnnouncements,List<String> roles,String type) |
{ |
if(targetRole == null) |
{ |
targetRole="all"; |
} |
Criteria criteria = createCriteria(); |
Criterion coRole = like("targetRoles","%" + targetRole + "%"); |
Criterion coType=eq("type",type) ; |
return findAnnouncements(0,maxAnnouncements,roles, type); |
} |
public List<Announcement> findAnnouncements(int startPage, int maxAnnouncements,List<String> roles,String type) |
{ |
Criteria criteria = createMaxAnnouncementsRolesTypeCriteria(maxAnnouncements, roles,type); |
return criteria.setFirstResult(maxAnnouncements*startPage).list(); |
} |
public int countAnnouncements(int maxAnnouncements,List<String> roles,String type) |
{ |
Criteria criteria = createMaxAnnouncementsRolesTypeCriteria(Integer.MAX_VALUE, roles,type); |
return criteria.list().size(); |
} |
MyCalendar cNow = new MyCalendar(); |
MyCalendar calendarWithOutTime = new MyCalendar(cNow.getYear(),cNow.getMonth(),cNow.getDay()); |
Date now = calendarWithOutTime.getTime(); |
criteria.add(coRole) |
.add(coType) |
.add(or(or(lt("startDate",now),eq("startDate",now)),isNull("startDate"))) |
.add(or(or(gt("expireDate",now),eq("expireDate",now)),isNull("expireDate"))) |
.add(like("targetRoles","%" + targetRole + "%")) |
.setMaxResults(maxAnnouncements) |
.addOrder(Order.desc("saveDate")); |
return criteria.list(); |
}*/ |
public List<Announcement> findAnnouncements(int maxAnnouncements,List<String> roles,String type) |
private Criteria createMaxAnnouncementsRolesTypeCriteria(int maxAnnouncements,List<String> roles,String type) |
{ |
if(roles == null) |
{ |
108,11 → 101,13 |
.add(coType) |
.add(or(or(lt("startDate",now),eq("startDate",now)),isNull("startDate"))) |
.add(or(or(gt("expireDate",now),eq("expireDate",now)),isNull("expireDate"))) |
.add(eq("status",true)) |
.setMaxResults(maxAnnouncements) |
.addOrder(Order.desc("saveDate")); |
return criteria.list(); |
return criteria; |
} |
public static void main(String[] args) |
{ |
AbstractDao.getCurrentSession().beginTransaction(); |
127,7 → 122,7 |
GenericUser us = a.getOwner(); |
List<String> userRoles=us.getOwnerRoles(); |
for(String role:userRoles){ |
System.out.println("--->"+role); |
System.out.println("--->"+role); |
} |
System.out.println(a.getSaveDate() + ":" + a.getTitle() + " " + a.getOwner().getName() ); |
} |
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/ImageDaoImpl.java |
---|
1,5 → 1,14 |
package pt.estgp.estgweb.domain.dao.impl; |
import org.hibernate.Criteria; |
import org.hibernate.criterion.Criterion; |
import static org.hibernate.criterion.Restrictions.*; |
import pt.estgp.estgweb.domain.Image; |
import java.util.List; |
import jomm.dao.impl.AbstractDao; |
/** |
* @author Jorge Machado |
* @date 28/Fev/2008 |
/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 abstract 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/form/announcements/AnnouncementsForm.java |
---|
1,21 → 1,18 |
package pt.estgp.estgweb.web.form.announcements; |
import org.apache.struts.action.ActionForm; |
import org.apache.log4j.Logger; |
import org.apache.struts.action.ActionErrors; |
import org.apache.struts.action.ActionMessages; |
import org.apache.struts.action.ActionMessage; |
import org.apache.struts.upload.FormFile; |
import pt.estgp.estgweb.domain.UserSessionImpl; |
import pt.estgp.estgweb.domain.views.AnnouncementView; |
import pt.estgp.estgweb.domain.Image; |
import pt.estgp.estgweb.domain.DomainObjectFactory; |
import pt.estgp.estgweb.utils.ConfigProperties; |
import pt.estgp.estgweb.web.UserSessionProxy; |
import pt.estgp.estgweb.web.form.ApplicationForm; |
import pt.estgp.estgweb.web.utils.DatesUtils; |
import java.util.ArrayList; |
import java.util.List; |
import jomm.utils.MessageResources; |
/** |
* @author Jorge Machado |
* @date 28/Fev/2008 |
25,6 → 22,9 |
public class AnnouncementsForm extends ApplicationForm |
{ |
private static final Logger logger = Logger.getLogger(AnnouncementsForm.class); |
private static final String TARGET_ROLES_KEY = "targetRoles"; |
private AnnouncementView announcementView; |
private String role; |
38,9 → 38,9 |
private String targetPrioritiesStr; |
private Integer counter; |
private List<String> selectedRoles; |
private static List<String> targetRoles = ConfigProperties.getListValues("user.role"); |
private static List<String> announcementTypes = ConfigProperties.getListValues("announcements.type"); |
private static List<String> targetPriorities = ConfigProperties.getListValues("announcements.priority"); |
188,15 → 188,34 |
public ActionErrors validate(org.apache.struts.action.ActionMapping actionMapping, javax.servlet.http.HttpServletRequest httpServletRequest) |
{ |
UserSessionImpl userSession = null; |
try |
{ |
userSession = (UserSessionImpl) UserSessionProxy.loadUserSessionFromRequest(httpServletRequest); |
List<String> roles = (List<String>) userSession.get(TARGET_ROLES_KEY); |
if(roles == null || roles.size() == 0) |
{ |
roles = new ArrayList<String>(); |
roles.add(targetRolesStr); |
announcementView.setTargetRoles(roles); |
} |
} |
catch (Throwable throwable) |
{ |
logger.error(throwable,throwable); |
} |
if(httpServletRequest.getParameter("dispatch").equals("addRole") || httpServletRequest.getParameter("dispatch").equals("removeRole")) |
return null; |
ActionErrors errors = new ActionErrors(); |
if(url.contains("http://")) |
addMessageWithKeys(errors,httpServletRequest,"errors.notrequired","announcement.protocol.error.http","announcement.linkAnnouncement"); |
addMessageWithKeys(errors,httpServletRequest,"errors.notrequired","announcement.protocol.error.http","announcement.linkAnnouncement"); |
if(url.contains("https://")) |
addMessageWithKeys(errors,httpServletRequest,"errors.notrequired","announcement.protocol.error.https","announcement.linkAnnouncement"); |
addMessageWithKeys(errors,httpServletRequest,"errors.notrequired","announcement.protocol.error.https","announcement.linkAnnouncement"); |
if(url.contains("ftp://")) |
addMessageWithKeys(errors,httpServletRequest,"errors.notrequired","announcement.protocol.error.ftp","announcement.linkAnnouncement"); |
addMessageWithKeys(errors,httpServletRequest,"errors.notrequired","announcement.protocol.error.ftp","announcement.linkAnnouncement"); |
if(announcementView.getTitle() == null || announcementView.getTitle().trim().length() == 0) |
addMessageWithKeys(errors,httpServletRequest,"errors.required","announcement.title"); |
if(announcementView.getText() == null || announcementView.getText().trim().length() == 0) |
/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/controllers/announcements/AnnouncementsController.java |
---|
38,7 → 38,7 |
{ |
private static final Logger logger = Logger.getLogger(AnnouncementsController.class); |
private static final String TARGET_ROLES_KEY = "targetRoles"; |
public ActionForward save(ActionMapping mapping, |
54,10 → 54,6 |
if(announcementsForm.getAnnouncementView().getId() <= 0) |
{ |
Announcement a = DomainObjectFactory.createAnnouncementImpl(); |
UserSessionImpl userSession = null; |
userSession = (UserSessionImpl) request.getAttribute(Globals.USER_SESSION_KEY); |
List<String> roles = (List<String>) userSession.get(TARGET_ROLES_KEY); |
announcementsForm.getAnnouncementView().setTargetRoles(roles); |
announcementsForm.getAnnouncementView().persistViewInObject(a); |
IServiceManager sm = ServiceManager.getInstance(); |
75,6 → 71,8 |
b.close(); |
Image i = DomainObjectFactory.createImageImpl(); |
i.setImage(b.toByteArray()); |
i.setContentType(bigImage.getContentType()); |
i.setSize(bigImage.getFileSize()); |
i.setDescription(a.getTitle()); |
i.setName(bigImage.getFileName()); |
i.setSaveDate(new Date()); |
96,6 → 94,8 |
Image i2 = DomainObjectFactory.createImageImpl(); |
i2.setImage(b2.toByteArray()); |
i2.setDescription(a.getTitle()); |
i2.setContentType(smallImage.getContentType()); |
i2.setSize(smallImage.getFileSize()); |
i2.setName(smallImage.getFileName()); |
i2.setSaveDate(new Date()); |
a.setSmallImage(i2); |
120,10 → 120,7 |
} |
else |
{ |
UserSessionImpl userSession = (UserSessionImpl) request.getAttribute(Globals.USER_SESSION_KEY); |
List<String> roles = (List<String>) userSession.get(TARGET_ROLES_KEY); |
AnnouncementView a = announcementsForm.getAnnouncementView(); |
a.setTargetRoles(roles); |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{"object"}; |
Object[] args = new Object[]{a}; |
/impl/src/java/pt/estgp/estgweb/web/filters/UserSessionFilter.java |
---|
43,7 → 43,9 |
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) |
throws IOException, ServletException |
{ |
HttpServletRequest hrequest = (HttpServletRequest) request; |
if(((HttpServletRequest)request).getServletPath().indexOf("errorNoCookies.do")>=0 || !hrequest.isRequestedSessionIdFromCookie()) |
chain.doFilter(request,response); |
try |
/impl/src/java/pt/estgp/estgweb/web/ImageStream.java |
---|
New file |
0,0 → 1,54 |
package pt.estgp.estgweb.web; |
import pt.estgp.estgweb.domain.Image; |
import pt.estgp.estgweb.domain.dao.impl.ImageDaoImpl; |
import java.io.*; |
import javax.servlet.*; |
import javax.servlet.http.*; |
import jomm.dao.impl.AbstractDao; |
import org.apache.log4j.Logger; |
/** |
* @author Fabio |
* @date 4/Abr/2008 |
* @time 11:03:00 |
* @see pt.estgp.estgweb.web |
*/ |
public class ImageStream extends HttpServlet |
{ |
private static final Logger logger = Logger.getLogger(ImageStream.class); |
public void doGet (HttpServletRequest request, HttpServletResponse response) |
throws ServletException, IOException |
{ |
String imageRequarired = request.getPathInfo(); |
imageRequarired=imageRequarired.substring(1); |
long id=Long.parseLong(imageRequarired.trim()); |
AbstractDao.getCurrentSession().beginTransaction(); |
Image image = new ImageDaoImpl().get(id); |
try { |
response.setContentType(image.getContentType()); |
byte[] imagemStream = image.getImage(); |
response.setContentLength(imagemStream.length); |
OutputStream out = response.getOutputStream(); |
if(imagemStream!=null) |
out.write(imagemStream); |
else |
logger.warn("Image "+image.getId()+" has 0 bytes"); |
out.flush(); |
out.close(); |
} |
catch (Exception e1) |
{ |
e1.printStackTrace(); |
} |
AbstractDao.getCurrentSession().getTransaction().commit(); |
} |
} |
/impl/src/hbm/pt/estgp/estgweb/domain/Image.hbm.xml |
---|
14,6 → 14,8 |
<timestamp name="updateDate" unsaved-value="null"/> |
<property name="saveDate" type="timestamp"/> |
<property name="name" type="string"/> |
<property name="contentType" type="string"/> |
<property name="size" type="int"/> |
<property name="description" type="text"/> |
<property name="image" type="binary" length="4194304"/> |
<subclass name="pt.estgp.estgweb.domain.ImageImpl" discriminator-value="ImageImpl"/> |
/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/imgs/rolesIcons/estg.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/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/admin/announcements/submitAnnouncement.jsp |
---|
77,17 → 77,19 |
<jomm:message patternMessage="user.role.{0}" name0="item"/> |
</jomm:option> |
</logic:iterate> |
<input type="button" value="<bean:message key="add"/>" onclick="set(this.form,'addRole');this.form.submit()"> |
</logic:present> |
</estgweb:isAdmin> |
<estgweb:isNotAdmin> |
<html:option value="all"><bean:message key="user.role.all"/></html:option> |
<html:option value="student"><bean:message key="user.role.student"/></html:option> |
<html:option value="oldStudent"><bean:message key="user.role.oldStudent"/></html:option> |
<html:option value="futureStudent"><bean:message key="user.role.futureStudent"/></html:option> |
<html:option value="teacher"><bean:message key="user.role.teacher"/></html:option> |
</estgweb:isNotAdmin> |
</html:select> |
<input type="button" value="<bean:message key="add"/>" onclick="set(this.form,'addRole');this.form.submit()"> |
<logic:present name="AnnouncementsForm" property="selectedRoles"> |
<logic:notEmpty name="AnnouncementsForm" property="selectedRoles"> |
<ul> |
/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 |
83,11 → 83,11 |
h1 |
{ |
font-size:14pt; |
font-size:1.2em; |
} |
h2 |
{ |
font-size:12pt; |
font-size:1em; |
} |
/*************************************************************************************/ |
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,100 → 281,180 |
color:#4d4d4d; |
text-decoration:none; |
} |
/*********************************************************************************/ |
/******************************* Index Page***************************************/ |
.indexPage Table |
.portalLeftAnnouncements img |
{ |
width:100%; |
border-collapse: collapse; |
height:133px; |
} |
.header |
/*PASSA PARA AQUI TUDO O QUE SEJA DE BLOCOS E VAMOS LIMPAR TUDO */ |
/*Isto tem de ser generico o H1 jáe um header nao necessita da classe .header para nada*/ |
/*Block Titles*/ |
.content h1, #lastnews h1 |
{ |
color:#FFFFFF; |
background-color:#8EC73F; |
padding-left:10px; |
margin-bottom:1px; |
color:#FFFFFF; |
background-color:#8EC73F; |
padding-left:10px; |
} |
.flashTopNews |
/*********************************************************************************/ |
/******************************* Index Page***************************************/ |
#flashTopNews * td, #flashCenterNews * td, #flashBottomNews * td |
{ |
text-align :right; |
vertical-align:top; |
} |
.flashTopNews tr |
/*FlashTopNews*/ |
#flashTopNews |
{ |
padding:0; |
margin:0; |
} |
#flashTopNews .container |
{ |
background-color:#4d4d4d; |
height:100px; |
width:100%; |
margin:0; |
} |
.flashTopNews td,.flashCenterNews td,.flashBottomNews td |
#flashTopNews .container .textContainer |
{ |
margin:0; |
text-align :justify; |
} |
#flashTopNews .container .imageContainer |
{ |
margin:0; |
text-align :right; |
text-decoration:none; |
} |
#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; |
} |
.titleNewsCenter,.descriptionNewsCenter,.descriptionNewsBottom,.linkLeftMenu 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; |
500,7 → 580,7 |
/*************************Staff Links Structure***************************************/ |
.staffLinks P |
{ |
font-weight :bold; |
font-weight :bold; |
} |
/*************************************************************************************/ |
667,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 |
719,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; |
} |
/* |
777,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 \*/ |
788,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,121 → 1,161 |
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; |
} |
} |
/** |
* Creates a new XmlHttpObject |
* @author Jorge Machado |
* @date April 2008 |
* |
* params: |
* @handler target xmlHttpObject function |
*/ |
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; |
} |
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) |
{ |
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; |
} |
} |
/** |
* |
* Application Methods Examples |
* |
* |
*/ |
/*************************************************** |
TopFlashNews |
***************************************************/ |
var xmlHttpTopFlashNews; |
var getFlashNewsTimeout; |
var getFlashNewsJsp; |
function getImportState() |
function getFlashNews(jsp,timeout) |
{ |
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); |
getFlashNewsJsp = jsp; |
getFlashNewsTimeout = timeout; |
getFlashNewsTimeoutCall(); |
} |
function stateChangedGetImportState() |
function getFlashNewsTimeoutCall() |
{ |
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") |
{ |
var html = xmlHttp.responseText; |
getObjectById("importState").innerHTML=html; |
if(!(getObjectById("importStateStatus") != null && getObjectById("importStateStatus").value == 'STOPPED')) |
{ |
setTimeout(getImportState,5000); |
} |
} |
xmlHttpTopFlashNews=GetXmlHttpObject(stateChangedGetFlashNews); |
startRequest(xmlHttpTopFlashNews,"","flashTopNews",stateChangedGetFlashNews,"",getFlashNewsJsp) |
} |
function stateChangedGetFlashNews() |
{ |
if (xmlHttpTopFlashNews.readyState==4 || xmlHttpTopFlashNews.readyState=="complete") |
{ |
getObjectById("flashTopNews").innerHTML=xmlHttpTopFlashNews.responseText; |
setTimeout(getFlashNewsTimeoutCall,getFlashNewsTimeout); |
} |
} |
/impl/src/web/public/index.jsp |
---|
23,117 → 23,109 |
<jomm:messages/> |
<html:errors/> |
<div class="indexPage" > |
<script type="text/javascript"> |
<!-- |
getFlashNews('<%=request.getContextPath()%>/public/announcements/getFlashNews.jsp',<%=Globals.ANNOUNCEMENT_TYPE_TOP_FLASH_NEWS_TIMEOUT%>); |
--> |
</script> |
<div class="header"> |
<h1> <bean:message key="mainAnnouncements"/></h1> |
</div> |
<div class="indexPage"> |
<table class="flashTopNews"> |
<tr> |
<td> |
<div class="textNewsTop"> |
<logic:present name="Announcements"> |
<logic:iterate id="item" name="Announcements" type="pt.estgp.estgweb.domain.views.AnnouncementView"> |
<logic:equal value="top.flash.news" name="item" property="type"> |
<%if (topAnnouncements <= Globals.NUMBER_ANNOUNCEMENT_TYPE_TOP_FLASH_NEWS_INDEX) { |
%> |
<div class="titleNewsTop"> |
<html:link action="/loadAnnouncement?id=${item.id}&dispatch=load">${item.title}</html:link> |
</div> |
<div class="descriptionNewsTop"> |
<html:link action="/loadAnnouncement?id=${item.id}&dispatch=load" >${item.text}</html:link> |
</div> |
<% |
} |
topAnnouncements++; |
%> |
</logic:equal> |
</logic:iterate> |
</logic:present> |
</div> |
</td> |
<td class="imageNewsTop"> |
<img src="<%=request.getContextPath()%>/imgs/destaque_1.jpg"/> |
</td> |
</tr> |
</table> |
<h1><bean:message key="mainAnnouncements"/></h1> |
<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> |
<div id="flashTopNews"> |
<table class="container"> |
<tr> |
<td class="textContainer"> |
<bean:message key="announcements.loading"/> |
</td> |
<td class="imageContainer"> |
</td> |
</tr> |
</table> |
</div> |
<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"/> |
<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) |
{ |
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> |
<% |
} |
else{ |
} |
bottomAnnouncements++; |
%> |
</logic:equal> |
</logic:iterate> |
<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> |
<%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/student.jsp |
---|
12,16 → 12,12 |
<jsp:include page="../blocoPortal.jsp"/> |
<jsp:include page="contactosLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
</td> |
<td class="column"> |
<jsp:include page="mobilidadeLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
<jsp:include page="accaoSocialLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
</td> |
<td class="column"> |
<jsp:include page="orgaosLinks.jsp"/> |
/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/portals/Docentes/teacher.jsp |
---|
4,25 → 4,27 |
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %> |
<div class="portal"> |
<div class="portalContent"> |
<table class="columnTable"> |
<table class="columnTable" width="100%"> |
<tbody> |
<tr> |
<td class="column" width="50%"> |
<jsp:include page="servicosLinks.jsp"/> |
<td class="column"> |
<jsp:include page="institutoPolitecnicoLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
<jsp:include page="informacaoAcademicaLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
<jsp:include page="contactosLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
<jsp:include page="informacaoAcademicaLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
</td> |
<td class="column" width="50%"> |
<td class="column"> |
<jsp:include page="mobilidadeLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
<jsp:include page="accaoSocialLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
<jsp:include page="orgaosLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
<jsp:include page="institutoPolitecnicoLinks.jsp"/> |
</td> |
<td class="column"> |
<jsp:include page="servicosLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
</td> |
</tr> |
/impl/src/web/public/portals/antigosAlunos/oldStudent.jsp |
---|
4,22 → 4,24 |
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %> |
<div class="portal"> |
<div class="portalContent"> |
<table class="columnTable"> |
<table class="columnTable" width="100%"> |
<tbody> |
<tr> |
<td class="column" width="50%"> |
<td class="column"> |
<jsp:include page="estgLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
<jsp:include page="servicosLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
<jsp:include page="actividadesLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
</td> |
<td class="column" width="50%"> |
<td class="column"> |
<jsp:include page="formacaoPosGraduadaLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
<jsp:include page="institutoPolitecnicoLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
</td> |
<td class="column"> |
<jsp:include page="actividadesLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
<jsp:include page="contactosLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
</td> |
/impl/src/web/public/portals/futurosAlunos/futureStudent.jsp |
---|
4,28 → 4,32 |
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %> |
<div class="portal"> |
<div class="portalContent"> |
<table class="columnTable"> |
<table class="columnTable" width="100%"> |
<tbody> |
<tr> |
<td class="column" width="50%"> |
<td class="column"> |
<jsp:include page="estgLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
<jsp:include page="servicosLinks.jsp"/> |
<jsp:include page="informacaoAcademicaLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
<jsp:include page="contactosLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
</td> |
<td class="column"> |
<jsp:include page="institutoPolitecnicoLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
<jsp:include page="orgaosLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
<jsp:include page="accaoSocialLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
</td> |
<td class="column" width="50%"> |
<jsp:include page="informacaoAcademicaLinks.jsp"/> |
<td class="column"> |
<jsp:include page="servicosLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
<jsp:include page="mobilidadeLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
<jsp:include page="accaoSocialLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
<jsp:include page="orgaosLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
</td> |
</tr> |
</tbody> |
/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 |
---|
New file |
0,0 → 1,37 |
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.IServiceManager" %> |
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.ServiceManager" %> |
<%@ page import="pt.estgp.estgweb.domain.views.AnnouncementView" %> |
<%@ page import="java.util.List" %> |
<%@page import="pt.estgp.estgweb.Globals" %> |
<%@ page import="pt.estgp.estgweb.web.utils.RequestUtils" %> |
<%@ page import="java.util.ArrayList" %> |
<%@ page contentType="text/html;charset=UTF-8" language="java" %> |
<%@ taglib uri="/WEB-INF/tlds/estgweb.tld" prefix="estgweb" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %> |
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %> |
<% |
//String iterator = request.getParameter("iterator"); |
IServiceManager sm = ServiceManager.getInstance(); |
// String[] names = new String[]{"iterator"}; |
String[] names = new String[]{}; |
//Object[] arguments = new Object[]{Integer.parseInt(iterator)}; |
Object[] arguments = new Object[]{}; |
AnnouncementView announcementView = (AnnouncementView) sm.execute(RequestUtils.getRequester(request), "LoadTopFlashNewsIterate", arguments, names); |
%> |
<table class="container"> |
<tr> |
<td class="textContainer"> |
<h2> |
<html:link action="/loadAnnouncement?id=<%=announcementView.getId()%>&dispatch=load"><%=announcementView.getTitle()%></html:link> |
</h2> |
<p> |
<html:link action="/loadAnnouncement?id=<%=announcementView.getId()%>&dispatch=load"><%=announcementView.getTextSummary()%></html:link> |
</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/Course.java |
---|
1,5 → 1,5 |
package pt.estgp.estgweb.domain; |
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9 |
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9 |
import java.util.Date; |
/impl/gen/java/pt/estgp/estgweb/domain/UrlStatMonth.java |
---|
1,5 → 1,5 |
package pt.estgp.estgweb.domain; |
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9 |
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9 |
import java.util.Date; |
/impl/gen/java/pt/estgp/estgweb/domain/UrlStatDayId.java |
---|
1,5 → 1,5 |
package pt.estgp.estgweb.domain; |
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9 |
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9 |
/impl/gen/java/pt/estgp/estgweb/domain/SessionObject.java |
---|
1,5 → 1,5 |
package pt.estgp.estgweb.domain; |
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9 |
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9 |
import java.util.Date; |
/impl/gen/java/pt/estgp/estgweb/domain/GenericUser.java |
---|
1,5 → 1,5 |
package pt.estgp.estgweb.domain; |
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9 |
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9 |
import java.util.Date; |
/impl/gen/java/pt/estgp/estgweb/domain/User.java |
---|
1,5 → 1,5 |
package pt.estgp.estgweb.domain; |
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9 |
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9 |
import java.util.Date; |
/impl/gen/java/pt/estgp/estgweb/domain/UrlStatYear.java |
---|
1,5 → 1,5 |
package pt.estgp.estgweb.domain; |
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9 |
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9 |
import java.util.Date; |
/impl/gen/java/pt/estgp/estgweb/domain/UrlStatMonthId.java |
---|
1,5 → 1,5 |
package pt.estgp.estgweb.domain; |
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9 |
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9 |
/impl/gen/java/pt/estgp/estgweb/domain/UserSession.java |
---|
1,5 → 1,5 |
package pt.estgp.estgweb.domain; |
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9 |
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9 |
import java.util.Date; |
/impl/gen/java/pt/estgp/estgweb/domain/Image.java |
---|
1,5 → 1,5 |
package pt.estgp.estgweb.domain; |
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9 |
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9 |
import java.util.Date; |
14,15 → 14,19 |
private Date updateDate; |
private Date saveDate; |
private String name; |
private String contentType; |
private int size; |
private String description; |
private byte[] image; |
public Image() { |
} |
public Image(Date saveDate, String name, String description, byte[] image) { |
public Image(Date saveDate, String name, String contentType, int size, String description, byte[] image) { |
this.saveDate = saveDate; |
this.name = name; |
this.contentType = contentType; |
this.size = size; |
this.description = description; |
this.image = image; |
} |
55,6 → 59,20 |
public void setName(String name) { |
this.name = name; |
} |
public String getContentType() { |
return this.contentType; |
} |
public void setContentType(String contentType) { |
this.contentType = contentType; |
} |
public int getSize() { |
return this.size; |
} |
public void setSize(int size) { |
this.size = size; |
} |
public String getDescription() { |
return this.description; |
} |
/impl/gen/java/pt/estgp/estgweb/domain/SessionObjectId.java |
---|
1,5 → 1,5 |
package pt.estgp.estgweb.domain; |
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9 |
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9 |
/impl/gen/java/pt/estgp/estgweb/domain/Announcement.java |
---|
1,5 → 1,5 |
package pt.estgp.estgweb.domain; |
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9 |
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9 |
import java.util.Date; |
/impl/gen/java/pt/estgp/estgweb/domain/Group.java |
---|
1,5 → 1,5 |
package pt.estgp.estgweb.domain; |
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9 |
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9 |
import java.util.Date; |
/impl/gen/java/pt/estgp/estgweb/domain/UrlStatDay.java |
---|
1,5 → 1,5 |
package pt.estgp.estgweb.domain; |
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9 |
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9 |
import java.util.Date; |
/impl/gen/java/pt/estgp/estgweb/domain/UrlStatYearId.java |
---|
1,5 → 1,5 |
package pt.estgp.estgweb.domain; |
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9 |
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9 |
/impl/gen/java/pt/estgp/estgweb/domain/CourseUserAssociation.java |
---|
1,5 → 1,5 |
package pt.estgp.estgweb.domain; |
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9 |
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9 |
import java.util.Date; |
/impl/gen/java/pt/estgp/estgweb/domain/UrlStat.java |
---|
1,5 → 1,5 |
package pt.estgp.estgweb.domain; |
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9 |
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9 |
import java.util.Date; |
/impl/build.properties |
---|
25,6 → 25,8 |
tomcat.username=admin |
tomcat.password=admin |
service.url=${tomcat.url}${tomcat.context.path} |
#IF is ROOT use Nothing |
#example for ROOT: |
# tomcat.context.path.install=/ |
/impl/build.xml |
---|
1,4 → 1,4 |
<?xml version="1.0"?> |
<?xml version="1.0" encoding="utf-8"?> |
<project name="estgweb" basedir="." default="help"> |
276,6 → 276,9 |
<include name="**/*"/> |
</fileset> |
</copy> |
<replace file="${build.dir.war}/js/ajax.js"> |
<replacefilter token="@server.base.url@" value="${service.url}"/> |
</replace> |
</target> |
<target name="war" depends="build.war"> |