Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 79 → Rev 96

/impl/conf/language/MessageResourcesEvents.properties
3,4 → 3,4
# EVENTS MESSAGE RESOURCES
#
################################################################################
 
module.Events=Eventos
/impl/conf/language/MessageResourcesCommon.properties
New file
0,0 → 1,20
################################################################################
#
# ANNOUNCEMENTS MESSAGE RESOURCES
#
################################################################################
search=Pesquisar
search.form=Formulário de Pesquisa
search.results=Resultados da Pesquisa
search.next=Próxima Página
search.previous=Página Anterior
search.see.more=ver mais
search.type.phrase=Frase Exacta
search.type.any=Algumas Palavras
search.type.all=Todas as Palavras
 
search.no.results=Lamentamos mas não foram encontrados quaisquer resultados para a busca
search.no.results.suggest=Sugestões
search.no.results.suggest.1=Será que está a escolher mal as palavras?
search.no.results.suggest.2=Será que deu um erro ortográfico?
search.no.results.suggest.3=Será que está a usar demasiadas palavras chave?
/impl/conf/language/MessageResourcesAnnouncements.properties
3,6 → 3,7
# ANNOUNCEMENTS MESSAGE RESOURCES
#
################################################################################
module.Announcements=Anúncios
 
announcement.title=Titulo
announcement.text=Texto
/impl/conf/language/MessageResources.properties
89,7 → 89,8
fail.timer=Lamentamos o incomodo, mas a acção que tentou efectuar não pode ser executada nesta data.
fail.authenticate=Falhou a autênticação
 
 
#palavras comuns
at=a
#Menus
site.title=Escola Superior de Tecnologia e Gestão
administration=Administração
220,6 → 221,7
submit=Entrar
confirm=Confirmar
add=Adicionar
remove=Remover
yes=Sim
no=Não
 
239,5 → 241,5
 
 
 
module.Proxy=Proxy
 
 
/impl/conf/language/MessageResourcesBlog.properties
3,7 → 3,7
# ANNOUNCEMENTS MESSAGE RESOURCES
#
################################################################################
 
module.Blogs=Blogs
blog.title=Titulo
blog.description=Descrição
blog.image=Imagem
11,4 → 11,6
blog.created.success=Blog criado com sucesso
blog.edited.success=Blog alterado com sucesso
blog.status=Válido
submit.blog=Criar um Blog
blog.owner=Criado por
 
/impl/conf/WEB-INF/struts/struts-blog.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.blog.BlogForm" name="BlogForm"/>
<form-bean type="pt.estgp.estgweb.web.form.blogs.BlogForm" name="BlogForm"/>
</form-beans>
 
<global-exceptions>
24,22 → 24,23
<!--Authentication-->
<action path="/startSubmitBlog" forward="/loadBlog.do?dispatch=start"/>
<action path="/submitBlog"
type="pt.estgp.estgweb.web.controllers.blog.BlogController"
type="pt.estgp.estgweb.web.controllers.blogs.BlogsController"
name="BlogForm"
scope="request"
parameter="dispatch"
validate="false"
input="page.blog">
<forward name="success" path="page.welcome"/>
input="page.submit.blog">
<forward name="success" path="page.load.blog"/>
</action>
<action path="/loadBlog"
type="pt.estgp.estgweb.web.controllers.blog.BlogController"
type="pt.estgp.estgweb.web.controllers.blogs.BlogsController"
name="BlogForm"
scope="request"
parameter="dispatch"
validate="false"
input="page.blog">
input="page.welcome">
<forward name="success" path="page.load.blog"/>
<forward name="submit" path="page.submit.blog"/>
</action>
</action-mappings>
</struts-config>
/impl/conf/WEB-INF/struts/struts-courseunits.xml
20,7 → 20,10
 
 
<action-mappings>
<action path="/startTeste2" forward="page.separators.home"/>
 
 
</action-mappings>
</struts-config>
/impl/conf/WEB-INF/struts/struts-default.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>
 
142,7 → 142,8
/WEB-INF/struts/tiles-processworkflow.xml,
/WEB-INF/struts/tiles-searchusers.xml,
/WEB-INF/struts/tiles-urlstat.xml,
/WEB-INF/struts/tiles-blog.xml"/>
/WEB-INF/struts/tiles-blog.xml,
/WEB-INF/struts/tiles-commons.xml"/>
</plug-in>
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
/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>
/impl/conf/WEB-INF/struts/tiles-commons.xml
New file
0,0 → 1,31
<?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">-->
 
<tiles-definitions>
 
<definition name="page.search.form" extends="base.layout1">
<put name="title" value="Search Results"/>
<put name="topnav" value="/public/search/topnavSearchForm.jsp"/>
<put name="body" value="/public/search/searchForm.jsp"/>
</definition>
 
<definition name="page.search.results" extends="base.layout1">
<put name="title" value="Search Results"/>
<put name="topnav" value="/public/search/topnavSearchResults.jsp"/>
<put name="body" value="/public/search/searchResults.jsp"/>
</definition>
<definition name="page.search.noresults" extends="base.layout1">
<put name="title" value="0 Results Found"/>
<put name="topnav" value="/public/search/topnavSearchResults.jsp"/>
<put name="body" value="/public/search/noresults.jsp"/>
</definition>
<definition name="page.search.module" extends="base.empty">
<put name="body" value="/public/search/searchResultsModule.jsp"/>
</definition>
 
 
</tiles-definitions>
/impl/conf/WEB-INF/struts/tiles-announcements.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>
/impl/conf/WEB-INF/struts/struts-urlstat.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/struts/tiles-blog.xml
1,21 → 1,21
<?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>
 
<definition name="page.blog" extends="base.layout1">
<definition name="page.submit.blog" extends="base.layout1">
<put name="title" value="Create a Blog"/>
<put name="body" value="/admin/blog/submitBlog.jsp"/>
<put name="topnav" value="/admin/blogs/topnavCreateBlog.jsp"/>
<put name="body" value="/admin/blogs/submitBlog.jsp"/>
</definition>
 
<definition name="page.load.blog" extends="base.layout1">
<put name="title" value="Create a Blog"/>
<put name="body" value="/admin/blog/submitBlog.jsp"/>
<put name="body" value="/public/blogs/blog.jsp"/>
</definition>
 
</tiles-definitions>
/impl/conf/WEB-INF/struts/tiles-courseunits.xml
7,7 → 7,13
<tiles-definitions>
 
<definition name="page.load.courseunits" extends="base.layout1">
<definition name="base.separators" extends="base.definition" path="/layout/layoutintranet.jsp">
<put name="separators" value="/layout/separators.jsp" />
</definition>
<definition name="page.separators.home" extends="base.separators">
<put name="body" value="/user/home.jsp" />
</definition>
 
 
 
</tiles-definitions>
/impl/conf/WEB-INF/struts/tiles-default.xml
1,13 → 1,16
<?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>
 
<!-- Templates Globais Tiles Definition -->
<definition name="base.empty" path="/layout/emptyLayout.jsp">
</definition>
 
<definition name="base.definition" path="/layout/siteLayout.jsp">
<put name="title" value="x"/>
<put name="announcements" value="/layout/topnavempty.jsp"/>
/impl/conf/WEB-INF/struts/struts-processworkflow.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/struts/struts-commons.xml
New file
0,0 → 1,37
<?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">-->
 
<struts-config>
 
<form-beans>
<form-bean type="pt.estgp.estgweb.web.form.commons.SearchForm" name="SearchForm"/>
</form-beans>
 
<global-exceptions>
 
</global-exceptions>
 
<global-forwards>
 
</global-forwards>
 
 
<action-mappings>
<action path="/startSearch" name="SearchForm" scope="request" forward="page.search.form"/>
<action path="/search"
type="pt.estgp.estgweb.web.controllers.commons.CommonsController"
name="SearchForm"
scope="request"
parameter="dispatch"
input="page.search.form"
validate="false">
<forward name="searchResults" path="page.search.results"/>
<forward name="searchModule" path="page.search.module"/>
<forward name="noresults" path="page.search.noresults"/>
</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>
 
40,6 → 40,8
validate="false">
<forward name="success" path="page.welcome"/>
<forward name="load" path="page.load.announcement"/>
<forward name="submit" path="page.submit.announcement"/>
 
</action>
</action-mappings>
 
/impl/conf/WEB-INF/web.xml
75,7 → 75,8
/WEB-INF/struts/struts-processworkflow.xml,
/WEB-INF/struts/struts-searchusers.xml,
/WEB-INF/struts/struts-urlstat.xml,
/WEB-INF/struts/struts-blog.xml
/WEB-INF/struts/struts-blog.xml,
/WEB-INF/struts/struts-commons.xml
</param-value>
</init-param>
<init-param>
/impl/conf/app.properties
130,8 → 130,13
urlstat.chart.year.months=MMM-yy
urlstat.chart.two.years.months=MMM-yy
 
#########################################################################
# Common Services
#
search.max.results=2
search.best.fragments.max.fragment.size=80
search.best.fragments.max.fragments=3
 
 
 
 
 
/impl/conf/berserk/sd.xml
179,7 → 179,7
<!--BLOGS-->
<service>
<name>CreateBlog</name>
<implementationClass>pt.estgp.estgweb.services.blog.CreateBlogService</implementationClass>
<implementationClass>pt.estgp.estgweb.services.blogs.CreateBlogService</implementationClass>
<description>Create a Blog</description>
<isTransactional>true</isTransactional>
<filterChains>
188,5 → 188,40
<chain name="AuthenticatedUsers"/>
</filterChains>
</service>
<service>
<name>LoadBlog</name>
<implementationClass>pt.estgp.estgweb.services.blogs.LoadBlogService</implementationClass>
<description>Load a Blog</description>
<isTransactional>true</isTransactional>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
</filterChains>
</service>
 
 
<!--CommonServices-->
<service>
<name>AnnouncementsCommonServices</name>
<implementationClass>pt.estgp.estgweb.services.announcements.AnnouncementsCommonServices</implementationClass>
<description>Common Services For Announcements</description>
<defaultMethod>search</defaultMethod>
<isTransactional>true</isTransactional>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
</filterChains>
</service>
<service>
<name>BlogsCommonServices</name>
<implementationClass>pt.estgp.estgweb.services.blogs.BlogsCommonServices</implementationClass>
<description>Common Services For Blogs</description>
<isTransactional>true</isTransactional>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
</filterChains>
</service>
 
 
</serviceDefinitions>
/impl/src/java/jomm/utils/TextToHTMLEnconder.java
New file
0,0 → 1,78
package jomm.utils;
 
/**
* User: Jorge Machado machadofisher@gmail.com
* Date: 8/Mai/2007
* Time: 17:38:50
* To change this template use File | Settings | File Templates.
*/
public class TextToHTMLEnconder
{
public String encodeText(String originalText)
{
if(originalText==null)
return null;
 
return escapeHTML(originalText);
}
 
public static final String escapeHTML(String s)
{
StringBuffer sb = new StringBuffer();
int n = s.length();
for (int i = 0; i < n; i++)
{
char c = s.charAt(i);
switch (c)
{
case '<': sb.append("&lt;"); break;
case '>': sb.append("&gt;"); break;
case '&': sb.append("&amp;"); break;
case '"': sb.append("&quot;"); break;
case 'à': sb.append("&agrave;");break;
case 'À': sb.append("&Agrave;");break;
case 'â': sb.append("&acirc;");break;
case 'Â': sb.append("&Acirc;");break;
case 'ä': sb.append("&auml;");break;
case 'Ä': sb.append("&Auml;");break;
case 'å': sb.append("&aring;");break;
case 'Å': sb.append("&Aring;");break;
case 'æ': sb.append("&aelig;");break;
case 'Æ': sb.append("&AElig;");break;
case 'ç': sb.append("&ccedil;");break;
case 'Ç': sb.append("&Ccedil;");break;
case 'é': sb.append("&eacute;");break;
case 'É': sb.append("&Eacute;");break;
case 'è': sb.append("&egrave;");break;
case 'È': sb.append("&Egrave;");break;
case 'ê': sb.append("&ecirc;");break;
case 'Ê': sb.append("&Ecirc;");break;
case 'ë': sb.append("&euml;");break;
case 'Ë': sb.append("&Euml;");break;
case 'ï': sb.append("&iuml;");break;
case 'Ï': sb.append("&Iuml;");break;
case 'ô': sb.append("&ocirc;");break;
case 'Ô': sb.append("&Ocirc;");break;
case 'ö': sb.append("&ouml;");break;
case 'Ö': sb.append("&Ouml;");break;
case 'ø': sb.append("&oslash;");break;
case 'Ø': sb.append("&Oslash;");break;
case 'ß': sb.append("&szlig;");break;
case 'ù': sb.append("&ugrave;");break;
case 'Ù': sb.append("&Ugrave;");break;
case 'û': sb.append("&ucirc;");break;
case 'Û': sb.append("&Ucirc;");break;
case 'ü': sb.append("&uuml;");break;
case 'Ü': sb.append("&Uuml;");break;
case '®': sb.append("&reg;");break;
case '©': sb.append("&copy;");break;
case '€': sb.append("&euro;"); break;
// be carefull with this one (non-breaking whitee space)
case ' ': sb.append("&nbsp;");break;
 
default: sb.append(c); break;
}
}
return sb.toString();
}
}
/impl/src/java/jomm/ir/lucene/DiacriticFilter.java
New file
0,0 → 1,65
package jomm.ir.lucene;
 
import org.apache.lucene.analysis.TokenFilter;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.Token;
 
import java.io.IOException;
 
/**
* @author Jorge Machado
* @date 25/Abr/2008
* @time 14:55:22
* @see jomm.ir
*/
public final class DiacriticFilter extends TokenFilter {
public DiacriticFilter(TokenStream in) {
super(in);
}
 
public final Token next() throws IOException {
Token t = input.next();
 
if (t == null)
return null;
 
String r = "";
 
String value = t.termText();
 
for (int j=0 ; j < value.length() ; j++) {
if ((value.charAt(j) == 'á') ||
(value.charAt(j) == 'â') ||
(value.charAt(j) == 'ã')) {
r= r + "a" ; continue ;
}
if ((value.charAt(j) == 'é') ||
(value.charAt(j) == 'ê')) {
r= r + "e" ; continue ;
}
if (value.charAt(j) == 'í') {
r= r + "i" ; continue ;
}
if ((value.charAt(j) == 'ó') ||
(value.charAt(j) == 'ô') ||
(value.charAt(j) == 'õ')) {
r= r + "o" ; continue ;
}
if ((value.charAt(j) == 'ú') ||
(value.charAt(j) == 'ü')) {
r= r + "u" ; continue ;
}
if (value.charAt(j) == 'ç') {
r= r + "c" ; continue ;
}
if (value.charAt(j) == 'ñ') {
r= r + "n" ; continue ;
}
 
 
r= r+ value.charAt(j) ;
}
t.setTermText(r);
return t;
}
}
/impl/src/java/jomm/ir/lucene/BrazilianExtendedAnalyzer.java
New file
0,0 → 1,157
package jomm.ir.lucene;
 
/**
* @author Jorge Machado
* @date 25/Abr/2008
* @time 14:55:22
* @see jomm.ir
*/
 
import org.apache.log4j.Logger;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.LowerCaseFilter;
import org.apache.lucene.analysis.StopFilter;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.standard.StandardFilter;
import org.apache.lucene.analysis.standard.StandardTokenizer;
 
import java.io.Reader;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.Set;
 
import jomm.ir.lucene.DiacriticFilter;
 
/**
* Analyzer for brazilian language. Supports an external list of stopwords (words that
* will not be indexed at all) and an external list of exclusions (word that will
* not be stemmed, but indexed).
*
* @author Jo�o Kramer
*/
public class BrazilianExtendedAnalyzer extends Analyzer
{
 
private static final Logger logger = Logger.getLogger(BrazilianExtendedAnalyzer.class);
 
/**
* List of typical german stopwords.
*/
public final static String[] BRAZILIAN_STOP_WORDS = {
"a","ainda","alem","ambas","ambos","antes",
"ao","aonde","aos","apos","aquele","aqueles",
"as","assim","com","como","contra","contudo",
"cuja","cujas","cujo","cujos","da","das","de",
"dela","dele","deles","demais","depois","desde",
"desta","deste","dispoe","dispoem","diversa",
"diversas","diversos","do","dos","durante","e",
"ela","elas","ele","eles","em","entao","entre",
"essa","essas","esse","esses","esta","estas",
"este","estes","ha","isso","isto","logo","mais",
"mas","mediante","menos","mesma","mesmas","mesmo",
"mesmos","na","nas","nao","nas","nem","nesse","neste",
"nos","o","os","ou","outra","outras","outro","outros",
"pelas","pelas","pelo","pelos","perante","pois",
"porque","portanto","proprio","propios","quais","qual",
"qualquer","quando","quanto","que","quem","quer","se",
"seja","sem","sendo","seu","seus","sob","sobre","sua",
"suas","tal","tambem","teu","teus","toda","todas","todo",
"todos","tua","tuas","tudo","um","uma","umas","uns"};
 
public static final String[] ENGLISH_STOP_WORDS = {
"I","a","about","and","an","are","as","at","be","but",
"by","com","de","en","for","from","how","if","into","in",
"is","it","la","of","on","or","no","not","that","their","these",
"they","then","there","they","s","such","t","the","this","to",
"was","we","what","when","where","who","will","with","und",
"the","www"
};
 
public static final String[] BRAZILIAN_AND_ENGLISH_STOP_WORDS = {
"a","ainda","alem","ambas","ambos","antes",
"ao","aonde","aos","apos","aquele","aqueles",
"as","assim","com","como","contra","contudo",
"cuja","cujas","cujo","cujos","da","das","de",
"dela","dele","deles","demais","depois","desde",
"desta","deste","dispoe","dispoem","diversa",
"diversas","diversos","do","dos","durante","e",
"ela","elas","ele","eles","em","entao","entre",
"essa","essas","esse","esses","esta","estas",
"este","estes","ha","isso","isto","logo","mais",
"mas","mediante","menos","mesma","mesmas","mesmo",
"mesmos","na","nas","nao","nas","nem","nesse","neste",
"nos","o","os","ou","outra","outras","outro","outros",
"pelas","pelas","pelo","pelos","perante","pois",
"porque","portanto","proprio","propios","quais","qual",
"qualquer","quando","quanto","que","quem","quer","se",
"seja","sem","sendo","seu","seus","sob","sobre","sua",
"suas","tal","tambem","teu","teus","toda","todas","todo",
"todos","tua","tuas","tudo","um","uma","umas","uns",
 
"I","a","about","and","an","are","as","at","be","but",
"by","com","de","en","for","from","how","if","into","in",
"is","it","la","of","on","or","no","not","that","their","these",
"they","then","there","they","s","such","t","the","this","to",
"was","we","what","when","where","who","will","with","und",
"the","www"
};
 
 
/**
* Contains the stopwords used with the StopFilter.
*/
protected Set stoptable = new HashSet();
/**
* Contains words that should be indexed but not stemmed.
*/
 
 
/**
* Builds an analyzer with the default stop words ({@link #BRAZILIAN_STOP_WORDS}).
*/
 
public BrazilianExtendedAnalyzer()
{
stoptable = StopFilter.makeStopSet(BRAZILIAN_AND_ENGLISH_STOP_WORDS);
}
 
/**
* Builds an analyzer with the given stop words.
*/
public BrazilianExtendedAnalyzer( String[] stopwords ) {
stoptable = StopFilter.makeStopSet( stopwords );
}
 
/**
* Builds an analyzer with the given stop words.
*/
public BrazilianExtendedAnalyzer( Hashtable stopwords ) {
stoptable = new HashSet(stopwords.keySet());
}
 
 
 
/**
* Creates a TokenStream which tokenizes all the text in the provided Reader.
*
* @return A TokenStream build from a StandardTokenizer filtered with
* StandardFilter, StopFilter, GermanStemFilter and LowerCaseFilter.
*/
public final TokenStream tokenStream(String fieldName, Reader reader)
{
TokenStream result = new StandardTokenizer( reader );
result = new StandardFilter( result );
result = new LowerCaseFilter( result );
result = new DiacriticFilter(result);
result = new StopFilter( result, stoptable );
return result;
}
 
 
public static void main(String [] args){
 
 
}
 
}
 
/impl/src/java/jomm/ir/lucene/HighlightFormatter.java
New file
0,0 → 1,29
package jomm.ir.lucene;
 
 
/**
* @author Jorge Machado
* @date 25/Abr/2008
* @time 14:55:22
* @see jomm.ir
*/
 
import org.apache.lucene.search.highlight.Formatter;
import org.apache.lucene.search.highlight.TokenGroup;
 
public class HighlightFormatter implements Formatter
{
public String highlightTerm(String originalText, TokenGroup group)
{
if(group.getTotalScore()<=0)
{
return originalText;
}
return highlightTerm(originalText);
}
 
public static String highlightTerm(String originalText) {
 
return "<b><i>" + originalText + "</i></b>";
}
}
/impl/src/java/jomm/ir/lucene/LuceneUtils.java
New file
0,0 → 1,98
package jomm.ir.lucene;
 
import org.apache.log4j.Logger;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.highlight.Highlighter;
import org.apache.lucene.search.highlight.QueryScorer;
import org.apache.lucene.search.highlight.SimpleFragmenter;
 
import java.io.StringReader;
 
/**
* Created by IntelliJ IDEA.
* User: User
* DateMonthYearArticles: 26/Jan/2005
* Time: 12:08:10
* To change this template use File | Settings | File Templates.
*/
public class LuceneUtils
{
 
 
private static Logger logger = Logger.getLogger(LuceneUtils.class);
 
private static Analyzer analyzer = (Analyzer) new BrazilianExtendedAnalyzer();
 
 
public static Query getQuery(String queryStr, String field, Analyzer analyzer) throws ParseException
{
try
{
QueryParser parser;
if(field == null)
parser = new QueryParser("contents",analyzer);
else
parser = new QueryParser(field,analyzer);
return parser.parse(queryStr);
}
catch(ParseException e)
{
logger.error("Bad query: " + queryStr);
throw e;
}
}
 
 
public static LuceceTextToHTMLEncoder textToHTMLEnconder = new LuceceTextToHTMLEncoder()
{
public String encodeText(String textToEncode)
{
if(textToEncode != null)
{
return super.encodeText(textToEncode).replaceAll("&nbsp;"," ");
}
return null;
}
};
 
public static HighlightFormatter highlightFormatter = new HighlightFormatter();
 
public static String highlight(String text, String queryStr) throws Exception
{
return doStandardHighlights(text,queryStr,10000,1);
}
public static String doStandardHighlights(String text, String queryStr, int fragmentSize, int maxfragments) throws Exception
{
if(text != null)
{
 
Query query = getQuery(queryStr,null,analyzer);
Highlighter highlighter = new Highlighter(highlightFormatter,textToHTMLEnconder,new QueryScorer(query));
highlighter.setTextFragmenter(new SimpleFragmenter(fragmentSize));
 
String fragmentSeparator = " ... ";
TokenStream tokenStream = analyzer.tokenStream(null,new StringReader(text));
 
String result =
highlighter.getBestFragments(
tokenStream,
text,
maxfragments,
fragmentSeparator);
if(result.startsWith(")") || result.startsWith("]") || result.startsWith(",") || result.startsWith(";") || result.startsWith("."))
result = result.substring(1);
return result;
}
return null;
}
 
public static void main(String [] args) throws Exception
{
System.out.println(LuceneUtils.highlight("eu sou o jorge machado e amo muito a leila o amor da minha vida que eu mais amo que tudo\n e tudo o que eu mais amo é ela e mais ninguém amo como ela","ela é o amor da vida ninguém"));
}
}
/impl/src/java/jomm/ir/lucene/LuceceTextToHTMLEncoder.java
New file
0,0 → 1,18
package jomm.ir.lucene;
 
/**
* @author Jorge Machado
* @date 25/Abr/2008
* @time 14:23:27
* @see jomm.ir.lucene
*/
import org.apache.lucene.search.highlight.Encoder;
import jomm.utils.TextToHTMLEnconder;
 
/**
* Just need to extend TextToHtmlEncoder to implement Encoder Interface
*/
public class LuceceTextToHTMLEncoder extends TextToHTMLEnconder implements Encoder
{
 
}
/impl/src/java/pt/estgp/estgweb/Globals.java
10,10 → 10,14
* @time 12:51:32
* @see pt.estgp.estgweb
*/
public class Globals
{
public class Globals {
 
public static final String ALL_ROLE = ConfigProperties.getProperty("user.super");;
 
public static final int SEARCH_MAX_RESULTS = ConfigProperties.getIntProperty("search.max.results");
public static final int SEARCH_BEST_FRAGMENTS_MAX_FRAGMENT_SIZE = ConfigProperties.getIntProperty("search.best.fragments.max.fragment.size");
public static final int SEARCH_BEST_FRAGMENTS_MAX_FRAGMENTS = ConfigProperties.getIntProperty("search.best.fragments.max.fragments");
 
public static final String ALL_ROLE = ConfigProperties.getProperty("user.super");
public static final String ACTUAL_RELATIVE_PATH = "ACTUAL_RELATIVE_PATH";
public static final String ADMIN_ROLE = ConfigProperties.getProperty("user.admin");
public static final String SUPER_USER_ROLE = ConfigProperties.getProperty("user.super");
25,10 → 29,10
public static final String ANNOUNCEMENT_TYPE_NEWS = "news";
public static final String ANNOUNCEMENT_TYPE_TOP_FLASH_NEWS = "top.flash.news";
public static final String ANNOUNCEMENT_TYPE_BOTTOM_FLASH_NEWS = "bottom.flash.news";
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");
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");
public static List<String> USER_ROLES = ConfigProperties.getListValues("user.role");
 
}
/impl/src/java/pt/estgp/estgweb/services/blogs/BlogsCommonServices.java
New file
0,0 → 1,46
package pt.estgp.estgweb.services.blogs;
 
import pt.utl.ist.berserk.logic.serviceManager.IService;
import pt.estgp.estgweb.services.common.IModuleCommonServices;
import pt.estgp.estgweb.services.common.SearchTypeEnum;
import pt.estgp.estgweb.services.common.IToDoCat;
import pt.estgp.estgweb.services.common.ISearchResults;
import pt.estgp.estgweb.services.announcements.AnnouncementsCommonServices;
import pt.estgp.estgweb.domain.UserSession;
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 BlogsCommonServices implements IService, IModuleCommonServices
{
private static final Logger logger = Logger.getLogger(BlogsCommonServices.class);
 
 
public int countSearch(String search, SearchTypeEnum searchType, UserSession userSession) {
return 0; //To change body of implemented methods use File | Settings | File Templates.
}
 
public ISearchResults search(String search, SearchTypeEnum searchType, int page, int maxResults, UserSession userSession) {
return null; //To change body of implemented methods use File | Settings | File Templates.
}
 
public int countToDo(UserSession userSession) {
return 0; //To change body of implemented methods use File | Settings | File Templates.
}
 
public IToDoCat getToDo(UserSession userSession) {
return null; //To change body of implemented methods use File | Settings | File Templates.
}
}
/impl/src/java/pt/estgp/estgweb/services/blogs/LoadBlogService.java
New file
0,0 → 1,34
package pt.estgp.estgweb.services.blogs;
 
import pt.utl.ist.berserk.logic.serviceManager.IService;
import pt.estgp.estgweb.domain.views.BlogView;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.services.expceptions.ServiceException;
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 LoadBlogService implements IService
{
 
private static final Logger logger = Logger.getLogger(LoadBlogService.class);
 
public BlogView run(Long id, UserSession userSession) throws ServiceException
{
DaoFactory.getBlogDaoImpl().get(id);
return new BlogView(DaoFactory.getBlogDaoImpl().get(id));
}
}
/impl/src/java/pt/estgp/estgweb/services/blogs/CreateBlogService.java
New file
0,0 → 1,41
package pt.estgp.estgweb.services.blogs;
 
import pt.utl.ist.berserk.logic.serviceManager.IService;
import pt.estgp.estgweb.services.expceptions.ServiceException;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.Blog;
import pt.estgp.estgweb.domain.views.BlogView;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.Globals;
import org.apache.log4j.Logger;
 
import java.util.Date;
 
/*
* @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 CreateBlogService implements IService
{
private static final Logger logger = Logger.getLogger(CreateBlogService.class);
 
public BlogView run(Blog b, UserSession userSession) throws ServiceException
{
if(b.getTargetRoles() == null || b.getTargetRoles().length() == 0)
b.setTargetRoles(Globals.ALL_ROLE);
b.setOwner(userSession.getUser());
b.setSaveDate(new Date());
DaoFactory.getBlogDaoImpl().save(b);
return new BlogView(b);
}
}
/impl/src/java/pt/estgp/estgweb/services/common/ISearchResults.java
New file
0,0 → 1,25
package pt.estgp.estgweb.services.common;
 
import java.util.List;
 
/**
* @author Jorge Machado
* @date 24/Abr/2008
* @time 14:57:52
* @see pt.estgp.estgweb.services.common
*/
public interface ISearchResults
{
public ModuleEnum getModule();
public List<IResult> getResults();
public int getTotalResults();
public int getPage();
public int getPage2Screen();
public boolean getHasNextPage();
public boolean getHasPreviousPage();
public int getNextPage();
public int getPreviousPage();
public int getMaxResultsPage();
public String getQuery();
 
}
/impl/src/java/pt/estgp/estgweb/services/common/impl/CommonSearchResults.java
New file
0,0 → 1,45
package pt.estgp.estgweb.services.common.impl;
 
import pt.estgp.estgweb.services.common.ICommonSearchResults;
import pt.estgp.estgweb.services.common.ISearchResults;
 
import java.util.List;
 
/**
* @author Jorge Machado
* @date 24/Abr/2008
* @time 15:51:32
* @see pt.estgp.estgweb.services.common.impl
*/
public class CommonSearchResults implements ICommonSearchResults
{
 
private List<ISearchResults> results;
private int totalResults = 0;
 
public List<ISearchResults> getSearchResults()
{
return results;
}
 
public int getTotalResults()
{
return totalResults;
}
 
public void setResults(List<ISearchResults> results)
{
this.results = results;
}
 
public void setTotalResults(int totalResults)
{
this.totalResults = totalResults;
}
 
public void addMoreResults(int totalResults)
{
this.totalResults += totalResults;
}
}
/impl/src/java/pt/estgp/estgweb/services/common/impl/DefaultToDoCat.java
New file
0,0 → 1,32
package pt.estgp.estgweb.services.common.impl;
 
import pt.estgp.estgweb.services.common.IToDoCat;
 
/**
* @author Jorge Machado
* @date 24/Abr/2008
* @time 16:16:52
* @see pt.estgp.estgweb.services.common.impl
*/
public class DefaultToDoCat implements IToDoCat
{
private String url;
private int totalToDo;
 
 
public String getUrl() {
return url;
}
 
public void setUrl(String url) {
this.url = url;
}
 
public int getTotalToDo() {
return totalToDo;
}
 
public void setTotalToDo(int totalToDo) {
this.totalToDo = totalToDo;
}
}
/impl/src/java/pt/estgp/estgweb/services/common/impl/DefaultResult.java
New file
0,0 → 1,92
package pt.estgp.estgweb.services.common.impl;
 
import pt.estgp.estgweb.services.common.IResult;
 
/**
* @author Jorge Machado
* @date 24/Abr/2008
* @time 16:13:08
* @see pt.estgp.estgweb.services.common.impl
*/
public class DefaultResult implements IResult
{
 
private String title;
private String subTitle;
private String bestFragments;
private String text;
private String url;
private boolean titleKey = false;
private boolean subTitleKey = false;
private boolean textKey = false;
 
 
 
public DefaultResult() {
}
 
public void setTitle(String title) {
this.title = title;
}
 
public void setUrl(String url) {
this.url = url;
}
 
public void setText(String text) {
this.text = text;
}
 
public void setBestFragments(String bestFragments) {
this.bestFragments = bestFragments;
}
 
public String getTitle() {
return title;
}
 
public void setSubTitle(String subTitle) {
this.subTitle = subTitle;
}
 
public String getSubTitle() {
return subTitle;
}
 
public String getBestFragments() {
return bestFragments;
}
 
public String getText() {
return text;
}
 
public String getUrl() {
return url;
}
 
 
public boolean isTitleKey() {
return titleKey;
}
 
public void setTitleKey(boolean titleKey) {
this.titleKey = titleKey;
}
 
public boolean isTextKey() {
return textKey;
}
 
public void setTextKey(boolean textKey) {
this.textKey = textKey;
}
 
public boolean isSubTitleKey() {
return subTitleKey;
}
 
public void setSubTitleKey(boolean subTitleKey) {
this.subTitleKey = subTitleKey;
}
}
/impl/src/java/pt/estgp/estgweb/services/common/impl/DefaultSearchResults.java
New file
0,0 → 1,120
package pt.estgp.estgweb.services.common.impl;
 
import pt.estgp.estgweb.services.common.ISearchResults;
import pt.estgp.estgweb.services.common.ModuleEnum;
import pt.estgp.estgweb.services.common.IResult;
 
import java.util.List;
import java.util.ArrayList;
 
/**
* @author Jorge Machado
* @date 24/Abr/2008
* @time 16:15:32
* @see pt.estgp.estgweb.services.common.impl
*/
public class DefaultSearchResults implements ISearchResults
{
 
private ModuleEnum module;
private List<IResult> results;
private int totalResults;
private int page;
private int maxResultsPage;
private String query;
private String searchType;
 
 
public ModuleEnum getModule() {
return module;
}
 
public void setModule(ModuleEnum module) {
this.module = module;
}
 
public List<IResult> getResults() {
return results;
}
 
public void setResults(List<IResult> results) {
this.results = results;
}
 
public int getTotalResults() {
return totalResults;
}
public void setTotalResults(int totalResults) {
this.totalResults = totalResults;
}
 
 
public int getMaxResultsPage() {
return maxResultsPage;
}
 
public void setMaxResultsPage(int maxResultsPage) {
this.maxResultsPage = maxResultsPage;
}
 
public void addResult(IResult result)
{
if(results == null)
results = new ArrayList<IResult>();
results.add(result);
}
 
 
public int getPage() {
return page;
}
public int getPage2Screen() {
return page + 1;
}
 
public boolean getHasNextPage()
{
int size = 0;
if(results != null)
size = results.size();
return page*maxResultsPage + size < totalResults;
}
 
public boolean getHasPreviousPage()
{
return page > 0;
}
 
public int getNextPage()
{
return page + 1;
}
 
public int getPreviousPage()
{
return page - 1;
}
 
public void setPage(int page) {
this.page = page;
}
 
 
public String getQuery() {
return query;
}
 
public void setQuery(String query) {
this.query = query;
}
 
public String getSearchType() {
return searchType;
}
 
public void setSearchType(String searchType) {
this.searchType = searchType;
}
}
/impl/src/java/pt/estgp/estgweb/services/common/IToDoCat.java
New file
0,0 → 1,13
package pt.estgp.estgweb.services.common;
 
/**
* @author Jorge Machado
* @date 24/Abr/2008
* @time 15:00:05
* @see pt.estgp.estgweb.services.common
*/
public interface IToDoCat
{
public String getUrl();
public int getTotalToDo();
}
/impl/src/java/pt/estgp/estgweb/services/common/CommonServicesManager.java
New file
0,0 → 1,263
package pt.estgp.estgweb.services.common;
 
import pt.estgp.estgweb.web.utils.RequestUtils;
import pt.estgp.estgweb.web.exceptions.NotAuthorizedException;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.services.common.impl.CommonSearchResults;
import pt.estgp.estgweb.services.common.impl.DefaultSearchResults;
import pt.estgp.estgweb.services.common.impl.DefaultResult;
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager;
import pt.utl.ist.berserk.logic.filterManager.exceptions.*;
 
import java.util.List;
import java.util.ArrayList;
 
import org.apache.log4j.Logger;
 
import javax.servlet.http.HttpServletRequest;
 
import jomm.ir.lucene.LuceneUtils;
 
/**
* @author Jorge Machado
* @date 24/Abr/2008
* @time 14:55:22
* @see pt.estgp.estgweb.services.common
*/
public class CommonServicesManager {
 
private static final int SEARCH_FRAGMENT_SIZE = Globals.SEARCH_BEST_FRAGMENTS_MAX_FRAGMENT_SIZE;
private static final int SEARCH_MAX_FRAGMENTS = Globals.SEARCH_BEST_FRAGMENTS_MAX_FRAGMENTS;
private static final int SEARCH_MAX_RESULTS = Globals.SEARCH_MAX_RESULTS;
 
private static final Logger logger = Logger.getLogger(CommonServicesManager.class);
 
private static CommonServicesManager ourInstance = new CommonServicesManager();
 
public static CommonServicesManager getInstance() {
return ourInstance;
}
 
private CommonServicesManager() {
}
 
/**
* @param request asking
* @param query to execute
* @param searchType see SearchTypeEnum
* @return Cluster of Results for each Module with total module results, only return modules with results
* @throws Throwable on notAuthorized or internal error
*/
public ICommonSearchResults search(HttpServletRequest request, String query, SearchTypeEnum searchType) throws Throwable {
return search(RequestUtils.getRequester(request), query, searchType);
}
 
/**
* @param requester asking
* @param query to execute
* @param searchType see SearchTypeEnum
* @return Cluster of Results for each Module with total module results, only return modules with results
* @throws Throwable on notAuthorized or internal error
*/
public ICommonSearchResults search(String requester, String query, SearchTypeEnum searchType) throws Throwable {
 
if(searchType == null)
searchType = SearchTypeEnum.AllWords;
CommonSearchResults commonSearchResults = new CommonSearchResults();
List<ISearchResults> results = new ArrayList<ISearchResults>();
 
for (ModuleEnum module : ModuleEnum.values()) {
if (module.getServiceName() != null) {
ISearchResults iSearchResults = search(requester, query, searchType, module, 0);
if (iSearchResults.getTotalResults() > 0) {
results.add(iSearchResults);
commonSearchResults.addMoreResults(iSearchResults.getTotalResults());
}
}
}
commonSearchResults.setResults(results);
return commonSearchResults;
}
 
/**
* The service called inside implements method
* <p/>
* public ISearchResults search(String search, SearchTypeEnum searchType, int page, int maxResults, UserSession userSession);
*
* @param request asking
* @param query to execute
* @param searchType see SearchTypeEnum
* @param moduleKey to search in
* @param page of start result
* @return searchResults
* @throws Throwable on not authorized and internal error
*/
 
public ISearchResults search(HttpServletRequest request, String query, SearchTypeEnum searchType, String moduleKey, int page) throws Throwable {
return search(RequestUtils.getRequester(request), query, searchType, ModuleEnum.parse(moduleKey), page);
}
 
/**
* The service called inside implements method
* <p/>
* public ISearchResults search(String search, SearchTypeEnum searchType, int page, int maxResults, UserSession userSession);
*
* @param requester asking
* @param query to execute
* @param searchType see SearchTypeEnum
* @param moduleKey to search in
* @param page of start result
* @return searchResults
* @throws Throwable on not authorized and internal error
*/
 
public ISearchResults search(String requester, String query, SearchTypeEnum searchType, String moduleKey, int page) throws Throwable {
return search(requester, query, searchType, ModuleEnum.parse(moduleKey), page);
}
 
/**
* The service called inside implements method
* <p/>
* public ISearchResults search(String search, SearchTypeEnum searchType, int page, int maxResults, UserSession userSession);
*
* @param requester asking
* @param query to execute
* @param searchType see SearchTypeEnum
* @param moduleKey to search in
* @param page of start result
* @return searchResults
* @throws Throwable on not authorized and internal error
*/
public ISearchResults search(String requester, String query, SearchTypeEnum searchType, ModuleEnum moduleKey, int page) throws Throwable {
IServiceManager sm;
try {
sm = ServiceManager.getInstance();
String[] names = new String[]{};
Object[] args = new Object[]{query, searchType, page, SEARCH_MAX_RESULTS};
 
DefaultSearchResults searchResults = (DefaultSearchResults) sm.execute(requester, moduleKey.getServiceName(), "search", args, names);
searchResults.setPage(page);
searchResults.setMaxResultsPage(SEARCH_MAX_RESULTS);
searchResults.setQuery(query.replace("'"," "));
searchResults.setSearchType(searchType.getMessageKey());
if(searchResults.getTotalResults() > 0)
{
for(IResult result: searchResults.getResults())
{
DefaultResult defaultResult = (DefaultResult) result;
defaultResult.setBestFragments(LuceneUtils.doStandardHighlights(defaultResult.getText(),query,SEARCH_FRAGMENT_SIZE,SEARCH_MAX_FRAGMENTS));
if(!defaultResult.isTitleKey())
{
String title = defaultResult.getTitle();
defaultResult.setTitle(LuceneUtils.highlight(defaultResult.getTitle(),query));
if(defaultResult.getTitle() == null || defaultResult.getTitle().length() == 0)
defaultResult.setTitle(title);
}
if(!defaultResult.isSubTitleKey())
{
String subTitle = defaultResult.getSubTitle();
defaultResult.setSubTitle(LuceneUtils.highlight(defaultResult.getSubTitle(),query));
if(defaultResult.getSubTitle() == null || defaultResult.getSubTitle().length() == 0)
defaultResult.setSubTitle(subTitle);
}
String text = defaultResult.getText();
defaultResult.setText(LuceneUtils.highlight(defaultResult.getText(),query));
if(defaultResult.getText() == null || defaultResult.getText().length() == 0)
defaultResult.setText(text);
}
}
return searchResults;
}
catch (FilterRetrieveException e) {
logger.error(e, e);
throw new NotAuthorizedException(e.toString());
}
catch (Throwable e) {
logger.error(e, e);
throw e;
}
}
 
public List<IToDoCat> getToDoCats(String requester) throws Throwable {
List<IToDoCat> toDoCats = new ArrayList<IToDoCat>();
 
for (ModuleEnum module : ModuleEnum.values()) {
if (module.getServiceName() != null) {
IToDoCat toDoCat = getToDoCats(requester, module);
if (toDoCat != null) {
toDoCats.add(toDoCat);
 
}
}
}
return toDoCats;
}
 
public IToDoCat getToDoCats(HttpServletRequest request, String moduleKey) throws Throwable {
return getToDoCats(RequestUtils.getRequester(request), ModuleEnum.parse(moduleKey));
}
 
public IToDoCat getToDoCats(HttpServletRequest request, ModuleEnum module) throws Throwable {
return getToDoCats(RequestUtils.getRequester(request), module);
}
 
/**
*
* @param requester asking
* @param module to search
* @return Number of ToDos in given module
* @throws Throwable on Error or NotAuthorized Exception
*/
public IToDoCat getToDoCats(String requester, ModuleEnum module) throws Throwable {
IServiceManager sm;
try {
sm = ServiceManager.getInstance();
String[] names = new String[]{};
Object[] args = new Object[]{};
return (IToDoCat) sm.execute(requester, module.getServiceName(), "getToDo", args, names);
}
catch (FilterRetrieveException e) {
logger.error(e, e);
throw new NotAuthorizedException(e.toString());
}
catch (Throwable e) {
logger.error(e, e);
throw e;
}
}
 
 
public static void main(String[] args) throws Throwable
{
ICommonSearchResults commonSearchResults = new CommonServicesManager().search("18D0D23A7C07FF478CE8DAFEBA58D37A","teste",SearchTypeEnum.AllWords);
for(ISearchResults searchResults: commonSearchResults.getSearchResults())
{
System.out.println("-----------------------------------------------------");
System.out.println("Module" + searchResults.getModule().getMessageKey());
for(IResult result: searchResults.getResults())
{
System.out.println("");
System.out.println("\ttitle:" +result.getTitle());
System.out.println("\tsubTitle:" +result.getSubTitle());
System.out.println("\ttext:" +result.getText());
System.out.println("\turl:" + result.getUrl());
System.out.println("\tbestFragments:" + result.getBestFragments());
 
}
System.out.println("NEXT PAGE TEST>>>>>>>>>>>>>>>>>>>");
ISearchResults searchResults2 = new CommonServicesManager().search("18D0D23A7C07FF478CE8DAFEBA58D37A","teste",SearchTypeEnum.AllWords,searchResults.getModule(),1);
for(IResult result2: searchResults2.getResults())
{
System.out.println("");
System.out.println("\ttitle:" +result2.getTitle());
System.out.println("\tsubTitle:" +result2.getSubTitle());
System.out.println("\ttext:" +result2.getText());
System.out.println("\turl:" + result2.getUrl());
System.out.println("\tbestFragments:" + result2.getBestFragments());
}
 
}
}
 
}
/impl/src/java/pt/estgp/estgweb/services/common/IResult.java
New file
0,0 → 1,19
package pt.estgp.estgweb.services.common;
 
/**
* @author Jorge Machado
* @date 24/Abr/2008
* @time 14:58:03
* @see pt.estgp.estgweb.services.common
*/
public interface IResult
{
public String getTitle();
public boolean isTitleKey();
public String getSubTitle();
public boolean isSubTitleKey();
public String getBestFragments();
public String getText();
public boolean isTextKey();
public String getUrl();
}
/impl/src/java/pt/estgp/estgweb/services/common/ICommonSearchResults.java
New file
0,0 → 1,15
package pt.estgp.estgweb.services.common;
 
import java.util.List;
 
/**
* @author Jorge Machado
* @date 24/Abr/2008
* @time 14:56:54
* @see pt.estgp.estgweb.services.common
*/
public interface ICommonSearchResults
{
public List<ISearchResults> getSearchResults();
public int getTotalResults();
}
/impl/src/java/pt/estgp/estgweb/services/common/ModuleEnum.java
New file
0,0 → 1,46
package pt.estgp.estgweb.services.common;
 
/**
* @author Jorge Machado
* @date 24/Abr/2008
* @time 15:00:27
* @see pt.estgp.estgweb.services.common
*/
public enum ModuleEnum
{
 
Announcements("module.Announcements","AnnouncementsCommonServices"),
Events("module.Events",null),
Blogs("module.Blogs",null),
Proxy("module.Proxy",null);
 
String messageKey;
String serviceName;
 
 
private ModuleEnum(String messageKey, String serviceName)
{
this.messageKey = messageKey;
this.serviceName = serviceName;
}
 
public static ModuleEnum parse(String messageKey)
{
for(ModuleEnum module: values())
{
if(messageKey.equals(module.getMessageKey()))
return module;
}
return null;
}
 
public String getMessageKey()
{
return messageKey;
}
 
public String getServiceName()
{
return serviceName;
}
}
/impl/src/java/pt/estgp/estgweb/services/common/IModuleCommonServices.java
New file
0,0 → 1,20
package pt.estgp.estgweb.services.common;
 
import pt.estgp.estgweb.domain.UserSession;
 
/**
* @author Jorge Machado
* @date 24/Abr/2008
* @time 14:59:16
* @see pt.estgp.estgweb.services.common
*/
public interface IModuleCommonServices
{
public int countSearch(String search, SearchTypeEnum searchType, UserSession userSession);
public ISearchResults search(String search, SearchTypeEnum searchType, int page, int maxResults, UserSession userSession);
 
public int countToDo(UserSession userSession);
public IToDoCat getToDo(UserSession userSession);
 
}
/impl/src/java/pt/estgp/estgweb/services/common/SearchTypeEnum.java
New file
0,0 → 1,37
package pt.estgp.estgweb.services.common;
 
/**
* @author Jorge Machado
* @date 24/Abr/2008
* @time 15:00:50
* @see pt.estgp.estgweb.services.common
*/
public enum SearchTypeEnum
{
ExactPhrase("search.type.phrase"),
AnyWord("search.type.any"),
AllWords("search.type.all");
 
String messageKey;
 
 
private SearchTypeEnum(String messageKey)
{
this.messageKey = messageKey;
}
 
public static SearchTypeEnum parse(String messageKey)
{
for(SearchTypeEnum searchTypeEnum: values())
{
if(messageKey.equals(searchTypeEnum.getMessageKey()))
return searchTypeEnum;
}
return null;
}
 
public String getMessageKey()
{
return messageKey;
}
}
/impl/src/java/pt/estgp/estgweb/services/announcements/CreateAnnouncementService.java
3,16 → 3,25
import pt.utl.ist.berserk.logic.serviceManager.IService;
import pt.estgp.estgweb.domain.Announcement;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.DomainObjectFactory;
import pt.estgp.estgweb.domain.Image;
import pt.estgp.estgweb.domain.views.AnnouncementView;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.domain.dao.impl.ImageDaoImpl;
import pt.estgp.estgweb.utils.ConfigProperties;
import pt.estgp.estgweb.utils.RoleManager;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.web.form.announcements.AnnouncementsForm;
 
import java.util.Date;
import java.util.List;
import java.io.InputStream;
import java.io.ByteArrayOutputStream;
import java.io.Serializable;
 
import org.apache.log4j.Logger;
import org.apache.struts.upload.FormFile;
import jomm.dao.impl.AbstractDao;
 
/*
* @author Goncalo Luiz gedl [AT] rnl [DOT] ist [DOT] utl [DOT] pt
35,19 → 44,86
 
private static final String ALL_ROLE = Globals.ALL_ROLE;
 
public AnnouncementView run(Announcement announcement, UserSession userSession)
public AnnouncementView run(AnnouncementView announcementView, Image imageBig, Image imageSmall, UserSession userSession)
{
if(announcement.getTargetRoles() == null || announcement.getTargetRoles().length() == 0)
announcement.setTargetRoles(ALL_ROLE);
announcement.setOwner(userSession.getUser());
announcement.setSaveDate(new Date());
Announcement a = null;
 
if(announcementView.getId() <= 0)
{
a = DomainObjectFactory.createAnnouncementImpl();
announcementView.persistViewInObject(a);
a.setOwner(userSession.getUser());
a.setSaveDate(new Date());
a.setBigImage(imageBig);
a.setSmallImage(imageSmall);
if(a.getTargetRoles() == null || a.getTargetRoles().length() == 0)
a.setTargetRoles(ALL_ROLE);
}
else
{
a= DaoFactory.getAnnouncementDaoImpl().get(announcementView.getSerializable());
 
if(imageBig!=null)
{
try
{
DaoFactory.getImageDaoImpl().delete(a.getBigImage().getId());
}
catch(Exception e)
{
logger.info("Announcement:" + announcementView.getId() + "do not have imageBig!");
}
announcementView.setBigImage(imageBig);
}
else
{
try
{
imageBig= new ImageDaoImpl().get(a.getBigImage().getId());
announcementView.setBigImage(imageBig);
}
catch(Exception e)
{
logger.info("ImageBig form announcement:" + announcementView.getId() + "do not exist!");
}
}
 
if(imageSmall!=null)
{
try
{
DaoFactory.getImageDaoImpl().delete(a.getSmallImage().getId());
}
catch(Exception e)
{
logger.info("Announcement:" + announcementView.getId() + "do not have smallBig!");
}
announcementView.setSmallImage(imageSmall);
}
else
{
try
{
imageSmall= new ImageDaoImpl().get(a.getSmallImage().getId());
announcementView.setSmallImage(imageSmall);
}
catch(Exception e)
{
logger.info("ImageSmall form announcement:" + announcementView.getId() + "do not exist!");
}
}
announcementView.persistViewInObject(a);
if(announcementView.getTargetRoles() == null || announcementView.getTargetRoles().size() == 0)
a.setTargetRoles(ALL_ROLE);
}
 
 
 
if(RoleManager.hasRole(userSession.getUser(),Globals.AUTOMATIC_VALIDATION_ROLES))
announcement.setStatus(true);
a.setStatus(true);
else
{
String[] userRoles=announcement.getChoosedOwnerRole().split(",");
String[] userRoles=a.getChoosedOwnerRole().split(",");
Boolean validation=false;
 
for(String role: userRoles)
60,9 → 136,9
String userAutoValitation=ConfigProperties.getProperty(validationTargets);
String[] userAutoValitationRoles=userAutoValitation.split(",");
int validTargetRoles=0;
if(announcement.getTargetRoles().contains(","))
if(a.getTargetRoles().contains(","))
{
String[] targetRolesAnnouncementSplited=announcement.getTargetRoles().split(",");
String[] targetRolesAnnouncementSplited=a.getTargetRoles().split(",");
 
//Percorre os targets todos a quem se destina
for(String target: targetRolesAnnouncementSplited)
70,7 → 146,7
//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
//Se o target a quem se destina constar na lista dos validation targets então incrementa
//o validTargetRoles
if(target.equals(userTargetRoles))
{
87,14 → 163,14
String[] userAutoValitationTypes=userAutoTypes.split(",");
for(String types: userAutoValitationTypes)
{
if(types.equals(announcement.getType()))
if(types.equals(a.getType()))
validation=true;
}
}
}
else
{
String targetRolesAnnouncement=announcement.getTargetRoles();
String targetRolesAnnouncement=a.getTargetRoles();
//Percorre todos os validation targets
for(String userTargetRoles: userAutoValitationRoles)
{
110,7 → 186,7
String[] userAutoValitationTypes=userAutoTypes.split(",");
for(String types: userAutoValitationTypes)
{
if(types.equals(announcement.getType()))
if(types.equals(a.getType()))
validation=true;
}
}
119,11 → 195,19
catch(Exception e){}
}
}
announcement.setStatus(validation);
a.setStatus(validation);
}
 
DaoFactory.getAnnouncementDaoImpl().save(announcement);
logger.info("Creating announcement:" + announcement.getId());
return new AnnouncementView(announcement);
if(announcementView.getId() <= 0)
{
DaoFactory.getAnnouncementDaoImpl().save(a);
logger.info("Creating announcement:" + a.getId());
return new AnnouncementView(a);
}
else
{
logger.info("Updating announcement:" + a.getId());
return new AnnouncementView(a);
}
}
}
/impl/src/java/pt/estgp/estgweb/services/announcements/AnnouncementsCommonServices.java
New file
0,0 → 1,94
package pt.estgp.estgweb.services.announcements;
 
import pt.utl.ist.berserk.logic.serviceManager.IService;
import pt.estgp.estgweb.domain.views.AnnouncementView;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.Announcement;
import pt.estgp.estgweb.domain.UserImpl;
import pt.estgp.estgweb.domain.UserSessionImpl;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.services.common.*;
import pt.estgp.estgweb.services.common.impl.DefaultSearchResults;
import pt.estgp.estgweb.services.common.impl.DefaultResult;
import pt.estgp.estgweb.Globals;
import org.apache.log4j.Logger;
 
import java.io.Serializable;
import java.util.List;
import java.util.ArrayList;
 
import jomm.dao.impl.AbstractDao;
 
/*
* @author Goncalo Luiz gedl [AT] rnl [DOT] ist [DOT] utl [DOT] pt
*
*
* Created at 17/Out/2003 , 23:45:24
*
*/
/**
* @author Jorge Machado
* <p/>
* <p/>
* Created at 17/Out/2003 , 23:45:24
*/
public class AnnouncementsCommonServices implements IService, IModuleCommonServices {
private static final Logger logger = Logger.getLogger(AnnouncementsCommonServices.class);
 
public int countSearch(String search, SearchTypeEnum searchType, UserSession userSession) {
return 0; //To change body of implemented methods use File | Settings | File Templates.
}
 
public ISearchResults search(String search, SearchTypeEnum searchType, int page, int maxResults, UserSession userSession) {
DefaultSearchResults searchResults = new DefaultSearchResults();
searchResults.setModule(ModuleEnum.Announcements);
List<String> roles;
if (userSession == null || userSession.getUser() == null || ((UserImpl) userSession.getUser()).getRolesList() == null || ((UserImpl) userSession.getUser()).getRolesList().size() == 0) {
roles = new ArrayList<String>();
roles.add(Globals.ALL_ROLE);
}
else
roles = ((UserImpl) userSession.getUser()).getRolesList();
 
searchResults.setTotalResults(DaoFactory.getAnnouncementDaoImpl().countAnnouncements(search, searchType, roles, null));
if (searchResults.getTotalResults() > 0) {
List<Announcement> announcements = DaoFactory.getAnnouncementDaoImpl().searchAnnouncements(search, searchType, maxResults, page, roles, null);
if (announcements == null)
return searchResults;
for (Announcement a : announcements) {
DefaultResult defaultResult = new DefaultResult();
defaultResult.setTitle(a.getTitle());
defaultResult.setSubTitle("announcements.type." + a.getType());
defaultResult.setSubTitleKey(true);
defaultResult.setText(a.getText());
defaultResult.setUrl("/loadAnnouncement.do?id=" + a.getId() + "&dispatch=load");
searchResults.addResult(defaultResult);
}
}
return searchResults;
}
 
public int countToDo(UserSession userSession) {
return 0; //To change body of implemented methods use File | Settings | File Templates.
}
 
public IToDoCat getToDo(UserSession userSession) {
return null; //To change body of implemented methods use File | Settings | File Templates.
}
 
public static void main(String[] args) {
AbstractDao.getCurrentSession().beginTransaction();
UserSession sess = new UserSessionImpl();
sess.setUser(new UserImpl());
sess.getUser().setRoles("all");
ISearchResults searchResults = new AnnouncementsCommonServices().search("teste", SearchTypeEnum.AllWords, 0, 10, sess);
for (IResult result : searchResults.getResults()) {
System.out.println("title:" + result.getTitle());
System.out.println("subTitle:" + result.getSubTitle());
System.out.println("text:" + result.getText());
System.out.println("url" + result.getUrl());
System.out.println("bestFragments" + result.getBestFragments());
}
AbstractDao.commit();
}
}
/impl/src/java/pt/estgp/estgweb/domain/UserImpl.java
59,17 → 59,14
*/
public List<String> getOwnerRoles()
{
if(getRoles() == null)
return null;
String[] roles = getRoles().split(",");
List<String> l = new ArrayList<String>();
for(String role: roles)
{
l.add(role);
}
return l;
return getRolesList();
}
 
public List<String> getRolesList()
{
return RoleManager.getRolesFromSerial(getRoles());
}
 
public Serializable getSerializable()
{
return getId();
/impl/src/java/pt/estgp/estgweb/domain/UserSessionImpl.java
53,6 → 53,7
sessionObject = DomainObjectFactory.createSessionObjectImpl();
SessionObjectId sessionObjectId = DomainObjectFactory.createSessionObjectIdImpl();
sessionObjectId.setKeyId(key);
sessionObject.setSaveDate(new Date());
sessionObjectId.setUserSession(this);
sessionObject.setId(sessionObjectId);
getObjects().add(sessionObject);
/impl/src/java/pt/estgp/estgweb/domain/views/AnnouncementView.java
34,6 → 34,7
private Date expireDate;
private Integer counter;
private boolean status;
private long ownerID;
 
public AnnouncementView()
{}
41,6 → 42,7
public AnnouncementView(Announcement announcement)
{
 
super(announcement);
this.title = announcement.getTitle();
this.text = announcement.getText();
this.bigImage = announcement.getBigImage();
54,6 → 56,7
this.startDate = announcement.getStartDate();
this.expireDate = announcement.getExpireDate();
this.choosedOwnerRole = announcement.getChoosedOwnerRole();
this.ownerID=announcement.getOwner().getId();
}
 
public void persistViewInObject(Announcement announcement)
187,6 → 190,10
}
 
 
public long getOwnerID() {
return ownerID;
}
 
public Integer getCounter() {
return counter;
}
/impl/src/java/pt/estgp/estgweb/domain/views/DomainObjectView.java
3,6 → 3,9
import pt.estgp.estgweb.domain.DomainObject;
 
import java.io.Serializable;
import java.util.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
 
/**
* @author Jorge Machado
15,10 → 18,28
public abstract Class getReferenceClass();
public abstract Serializable getSerializable();
 
private Date saveDate;
DateFormat df= new SimpleDateFormat("yyyy/MM/dd");
 
public String getFragment(int maxSize, String text)
{
if(text.length() > maxSize)
return text.substring(0,text.substring(0, maxSize).lastIndexOf(' ')) + "...";
return text;
}
 
public DomainObjectView()
{}
public DomainObjectView(DomainObject obj)
{
this.saveDate = obj.getSaveDate();
}
 
public String getFormatedSaveDate()
{
if(saveDate == null)
return null;
return df.format(saveDate);
}
}
/impl/src/java/pt/estgp/estgweb/domain/views/BlogView.java
2,11 → 2,14
 
import pt.estgp.estgweb.domain.Blog;
import pt.estgp.estgweb.domain.Image;
import pt.estgp.estgweb.domain.User;
import pt.estgp.estgweb.domain.GenericUser;
import pt.estgp.estgweb.utils.ConfigProperties;
import pt.estgp.estgweb.utils.RoleManager;
 
import java.io.Serializable;
import java.util.List;
import java.util.Date;
 
/**
* @author Jorge Machado
25,7 → 28,7
private String description;
private List<String> targetRoles;
private Image image;
private long ownerId;
private GenericUser owner;
private boolean status;
 
public BlogView()
33,13 → 36,14
 
public BlogView(Blog blog)
{
super(blog);
this.title = blog.getTitle();
this.description = blog.getDescription();
this.image = blog.getImage();
this.targetRoles = RoleManager.getRolesFromSerial(blog.getTargetRoles());
this.status=blog.isStatus();
this.id = blog.getId();
this.ownerId = blog.getOwner().getId();
this.owner = blog.getOwner();
}
 
public void persistViewInObject(Blog blog)
60,6 → 64,11
this.id = id;
}
 
public GenericUser getOwner()
{
return owner;
}
 
public String getTitle() {
return title;
}
92,10 → 101,6
this.image = image;
}
 
public long getOwnerId() {
return ownerId;
}
 
public boolean isStatus() {
return status;
}
123,4 → 128,12
{
return id;
}
 
public String getOwnerEmail()
{
if(owner instanceof User)
return ((User)owner).getEmail();
else
return null;
}
}
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/AnnouncementDaoImpl.java
3,6 → 3,8
import pt.estgp.estgweb.domain.Announcement;
import pt.estgp.estgweb.domain.User;
import pt.estgp.estgweb.domain.GenericUser;
import pt.estgp.estgweb.services.common.ISearchResults;
import pt.estgp.estgweb.services.common.SearchTypeEnum;
 
import java.util.List;
import java.util.ArrayList;
22,115 → 24,109
* @time 2:51:06
* @see pt.estgp.estgweb.domain.dao.impl
*/
public class AnnouncementDaoImpl extends AnnouncementDao
{
public static AnnouncementDaoImpl getInstance()
{
public class AnnouncementDaoImpl extends AnnouncementDao {
public static AnnouncementDaoImpl getInstance() {
if (myInstance == null)
myInstance = new AnnouncementDaoImpl();
return (AnnouncementDaoImpl) myInstance;
}
 
public List<Announcement> findAnnouncements(int maxAnnouncements,List<String> roles,String subTarget)
{
if(roles == null)
{
public List<Announcement> findAnnouncements(int maxAnnouncements, List<String> roles, String subTarget) {
if (roles == null) {
roles = new ArrayList<String>();
roles.add("all");
}
Criteria criteria = createCriteria();
Criterion co = null;
for(String role: roles)
{
Criterion cor = like("targetRoles","%" + role + "%");
if(co == null)
for (String role : roles) {
Criterion cor = like("targetRoles", "%" + role + "%");
if (co == null)
co = cor;
else
co = or(co,cor);
co = or(co, cor);
}
Criterion coSubTargets=null;
Criterion coSubTargets = null;
 
if(subTarget==null)
{
coSubTargets=isNull("subTargets");
if (subTarget == null) {
coSubTargets = isNull("subTargets");
}
else
{
coSubTargets =eq("subTargets",subTarget);
else {
coSubTargets = eq("subTargets", subTarget);
}
MyCalendar cNow = new MyCalendar();
MyCalendar calendarWithOutTime = new MyCalendar(cNow.getYear(),cNow.getMonth(),cNow.getDay());
MyCalendar calendarWithOutTime = new MyCalendar(cNow.getYear(), cNow.getMonth(), cNow.getDay());
Date now = calendarWithOutTime.getTime();
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))
.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))
.add(coSubTargets)
.setMaxResults(maxAnnouncements)
.addOrder(Order.desc("saveDate"));
return criteria.list();
}
 
public List<Announcement> findAnnouncements(int maxAnnouncements,List<String> roles,String type,String subTarget)
{
return findAnnouncements(0,maxAnnouncements,roles, type,subTarget);
public List<Announcement> findAnnouncements(int maxAnnouncements, List<String> roles, String type, String subTarget) {
return findAnnouncements(0, maxAnnouncements, roles, type, subTarget);
}
public List<Announcement> findAnnouncements(int startPage, int maxAnnouncements,List<String> roles,String type,String subTarget)
{
Criteria criteria = createMaxAnnouncementsRolesTypeCriteria(maxAnnouncements, roles,type,subTarget);
return criteria.setFirstResult(maxAnnouncements*startPage).list();
 
public List<Announcement> findAnnouncements(int startPage, int maxAnnouncements, List<String> roles, String type, String subTarget) {
Criteria criteria = createMaxAnnouncementsRolesTypeCriteria(maxAnnouncements, roles, type, subTarget);
return criteria.setFirstResult(maxAnnouncements * startPage).list();
}
 
public int countAnnouncements(int maxAnnouncements,List<String> roles,String type,String subTarget)
{
Criteria criteria = createMaxAnnouncementsRolesTypeCriteria(Integer.MAX_VALUE, roles,type,subTarget);
public int countAnnouncements(int maxAnnouncements, List<String> roles, String type, String subTarget) {
Criteria criteria = createMaxAnnouncementsRolesTypeCriteria(Integer.MAX_VALUE, roles, type, subTarget);
return criteria.list().size();
}
 
private Criteria createMaxAnnouncementsRolesTypeCriteria(int maxAnnouncements,List<String> roles,String type,String subTarget)
{
if(roles == null)
{
private Criteria createMaxAnnouncementsRolesTypeCriteria(int maxAnnouncements, List<String> roles, String type, String subTarget) {
return createMaxAnnouncementsPageRolesTypeCriteria(0, maxAnnouncements, roles, type, subTarget);
}
 
private Criteria createMaxAnnouncementsPageRolesTypeCriteria(int page, int maxAnnouncements, List<String> roles, String type, String subTarget) {
return createRolesTypeCriteria(roles, type, subTarget)
.setFirstResult(page * maxAnnouncements)
.setMaxResults(maxAnnouncements);
}
 
private Criteria createRolesTypeCriteria(List<String> roles, String type, String subTarget) {
if (roles == null) {
roles = new ArrayList<String>();
roles.add("all");
}
Criteria criteria = createCriteria();
Criterion coRole = null;
for(String role: roles)
{
Criterion cor = like("targetRoles","%" + role + "%");
if(coRole == null)
for (String role : roles) {
Criterion cor = like("targetRoles", "%" + role + "%");
if (coRole == null)
coRole = cor;
else
coRole = or(coRole,cor);
coRole = or(coRole, cor);
}
Criterion coSubTargets=null;
Criterion coSubTargets = null;
 
if(subTarget==null)
{
coSubTargets=isNull("subTargets");
if (subTarget == null) {
coSubTargets = isNull("subTargets");
}
else
{
coSubTargets =eq("subTargets",subTarget);
else {
coSubTargets = eq("subTargets", subTarget);
}
Criterion coType=eq("type",type);
if (type != null)
criteria.add(eq("type", type));
MyCalendar cNow = new MyCalendar();
MyCalendar calendarWithOutTime = new MyCalendar(cNow.getYear(),cNow.getMonth(),cNow.getDay());
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(eq("status",true))
.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))
.add(coSubTargets)
.setMaxResults(maxAnnouncements)
.addOrder(Order.desc("saveDate"));
return criteria;
}
 
 
/* public static void main(String[] args)
/* public static void main(String[] args)
{
AbstractDao.getCurrentSession().beginTransaction();
List<String> roles = new ArrayList<String>();
150,4 → 146,47
}
AbstractDao.getCurrentSession().beginTransaction().commit();
}*/
 
public List<Announcement> searchAnnouncements(String query, SearchTypeEnum searchTypeEnum, int maxAnnouncements, int page, List<String> roles, String subTarget) {
 
Criterion c = createSearchQuery(query, searchTypeEnum);
Criteria criteria = createMaxAnnouncementsPageRolesTypeCriteria(page, maxAnnouncements, roles, null, null);
criteria.add(c);
return criteria.list();
}
 
public int countAnnouncements(String query, SearchTypeEnum searchTypeEnum, List<String> roles, String subTarget) {
 
Criterion c = createSearchQuery(query, searchTypeEnum);
Criteria criteria = createRolesTypeCriteria(roles, null, null);
criteria.add(c);
return criteria.list().size();
}
 
public Criterion createSearchQuery(String query, SearchTypeEnum searchTypeEnum) {
Criterion c = null;
if (searchTypeEnum == SearchTypeEnum.ExactPhrase)
c = or(like("text", "%" + query + "%"), like("title", "%" + query + "%"));
else if (searchTypeEnum == SearchTypeEnum.AllWords) {
String[] fields = query.split(" ");
for (String field : fields) {
if (c == null)
c = or(like("text", "%" + field + "%"), like("title", "%" + field + "%"));
else
c = and(c, or(like("text", "%" + field + "%"), like("title", "%" + field + "%")));
}
 
}
else {
String[] fields = query.split(" ");
for (String field : fields) {
if (c == null)
c = or(like("text", "%" + field + "%"), like("title", "%" + field + "%"));
else
c = or(c, or(like("text", "%" + field + "%"), like("title", "%" + field + "%")));
}
}
return c;
}
 
}
/impl/src/java/pt/estgp/estgweb/domain/DomainObject.java
22,6 → 22,10
 
 
public void setSaveDate(Date d){}
public Date getSaveDate()
{
return null;
}
 
/**
* can be override in proper classes
/impl/src/java/pt/estgp/estgweb/web/form/AddRolesForm.java
1,8 → 1,6
package pt.estgp.estgweb.web.form;
 
import pt.estgp.estgweb.domain.views.BlogView;
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.web.form.blog.BlogForm;
 
import java.util.List;
 
10,7 → 8,7
* @author Jorge Machado
* @date 21/Abr/2008
* @time 14:28:59
* @see pt.estgp.estgweb.web.form.blog
* @see pt.estgp.estgweb.web.form.blogs
*/
public class AddRolesForm extends ApplicationForm
{
/impl/src/java/pt/estgp/estgweb/web/form/blogs/BlogForm.java
New file
0,0 → 1,36
package pt.estgp.estgweb.web.form.blogs;
 
import pt.estgp.estgweb.domain.views.BlogView;
import pt.estgp.estgweb.web.form.AddRolesForm;
 
import org.apache.struts.upload.FormFile;
 
/**
* @author Jorge Machado
* @date 21/Abr/2008
* @time 14:28:59
* @see pt.estgp.estgweb.web.form.blogs
*/
public class BlogForm extends AddRolesForm
{
private BlogView blogView = new BlogView();
 
private FormFile image;
 
public BlogView getBlogView() {
return blogView;
}
 
public void setBlogView(BlogView blogView) {
this.blogView = blogView;
}
 
public FormFile getImage() {
return image;
}
 
public void setImage(FormFile image) {
this.image = image;
}
}
/impl/src/java/pt/estgp/estgweb/web/form/commons/SearchForm.java
New file
0,0 → 1,35
package pt.estgp.estgweb.web.form.commons;
 
import pt.estgp.estgweb.web.form.AddRolesForm;
import pt.estgp.estgweb.web.form.ApplicationForm;
import pt.estgp.estgweb.domain.views.BlogView;
import pt.estgp.estgweb.services.common.SearchTypeEnum;
import org.apache.struts.upload.FormFile;
 
/**
* @author Jorge Machado
* @date 21/Abr/2008
* @time 14:28:59
* @see pt.estgp.estgweb.web.form.blogs
*/
public class SearchForm extends ApplicationForm {
 
private String query;
private String searchType = SearchTypeEnum.AllWords.getMessageKey();
 
public String getQuery() {
return query;
}
 
public void setQuery(String query) {
this.query = query;
}
 
public String getSearchType() {
return searchType;
}
 
public void setSearchType(String searchType) {
this.searchType = searchType;
}
}
/impl/src/java/pt/estgp/estgweb/web/form/announcements/AnnouncementsForm.java
166,8 → 166,9
{
roles = new ArrayList<String>();
roles.add(targetRolesStr);
announcementView.setTargetRoles(roles);
 
}
announcementView.setTargetRoles(roles);
}
catch (Throwable throwable)
{
/impl/src/java/pt/estgp/estgweb/web/controllers/AddRolesController.java
4,7 → 4,6
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import pt.estgp.estgweb.web.form.announcements.AnnouncementsForm;
import pt.estgp.estgweb.web.form.AddRolesForm;
import pt.estgp.estgweb.web.UserSessionProxy;
import pt.estgp.estgweb.domain.UserSessionImpl;
42,7 → 41,7
UserSessionImpl sess = (UserSessionImpl) UserSessionProxy.loadUserSession(request);
sess.remove(TARGET_ROLES_KEY);
sess.serialize(request);
return mapping.getInputForward();
return mapping.findForward("submit");
}
catch(FilterChainFailedException e)
{
63,7 → 62,7
{
try
{
AddRolesForm addRolesForm = (AnnouncementsForm) form;
AddRolesForm addRolesForm = (AddRolesForm) form;
UserSessionImpl sess = (UserSessionImpl) UserSessionProxy.loadUserSession(request);
List<String> l = (List<String>) sess.get(TARGET_ROLES_KEY);
if(l == null)
/impl/src/java/pt/estgp/estgweb/web/controllers/blogs/BlogsController.java
New file
0,0 → 1,111
package pt.estgp.estgweb.web.controllers.blogs;
 
import pt.estgp.estgweb.web.controllers.AddRolesController;
import pt.estgp.estgweb.web.utils.RequestUtils;
import pt.estgp.estgweb.web.form.blogs.BlogForm;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.views.BlogView;
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.exceptions.FilterChainFailedException;
import org.apache.log4j.Logger;
import org.apache.struts.action.*;
import org.apache.struts.upload.FormFile;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.io.InputStream;
import java.io.ByteArrayOutputStream;
import java.util.Date;
 
/**
* @author Jorge Machado
* @date 26/Fev/2008
* @time 18:01:54
* @see pt.estgp.estgweb.web
*/
public class BlogsController extends AddRolesController {
 
private static final Logger logger = Logger.getLogger(BlogsController.class);
 
public ActionForward save(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Throwable, ServletException {
try {
BlogForm blogForm = (BlogForm) form;
if (blogForm.getBlogView().getId() <= 0) {
Blog blog = DomainObjectFactory.createBlogImpl();
blogForm.getBlogView().persistViewInObject(blog);
IServiceManager sm = ServiceManager.getInstance();
 
if (blogForm.getImage().getFileSize() != 0) {
FormFile image = blogForm.getImage();
InputStream stream = image.getInputStream();
ByteArrayOutputStream b = new ByteArrayOutputStream();
int readedBytes;
byte[] buf = new byte[1024];
while ((readedBytes = stream.read(buf)) > 0) {
b.write(buf, 0, readedBytes);
}
b.close();
Image i = DomainObjectFactory.createImageImpl();
i.setImage(b.toByteArray());
i.setContentType(image.getContentType());
i.setSize(image.getFileSize());
i.setDescription(blog.getTitle());
i.setName(image.getFileName());
i.setSaveDate(new Date());
blog.setImage(i);
}
String[] names = new String[]{"object"};
Object[] args = new Object[]{blog};
BlogView bV = (BlogView) sm.execute(RequestUtils.getRequester(request), "CreateBlog", args, names);
addMessage(request, "blog.created.success", "" + bV.getId());
request.setAttribute("BlogView", bV);
return mapping.findForward("success");
} else {
BlogView bV = blogForm.getBlogView();
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{"object"};
Object[] args = new Object[]{bV};
bV = (BlogView) sm.execute(RequestUtils.getRequester(request), "EditBlog", args, names);
addMessage(request, "blog.edited.success", "" + bV.getId());
return mapping.findForward("success");
}
}
catch (FilterChainFailedException e) {
return mapping.findForward("error401");
}
catch (Throwable e) {
logger.error(e, e);
throw e;
}
}
 
public ActionForward load(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Throwable, ServletException {
try
{
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{"serializable"};
Object[] args = new Object[]{Long.parseLong(request.getParameter("id"))};
BlogView bV = (BlogView) sm.execute(RequestUtils.getRequester(request), "LoadBlog", args, names);
request.setAttribute("BlogView", bV);
return mapping.findForward("success");
}
catch (FilterChainFailedException e) {
return mapping.findForward("error401");
}
catch (Throwable e) {
logger.error(e, e);
throw e;
}
 
}
}
/impl/src/java/pt/estgp/estgweb/web/controllers/ApplicationController.java
8,6 → 8,10
import pt.estgp.estgweb.web.UserSessionProxy;
import pt.estgp.estgweb.web.utils.RequestUtils;
import pt.estgp.estgweb.domain.UserSessionImpl;
import pt.estgp.estgweb.services.common.ICommonSearchResults;
import pt.estgp.estgweb.services.common.CommonServicesManager;
import pt.estgp.estgweb.services.common.SearchTypeEnum;
import pt.utl.ist.berserk.logic.serviceManager.exceptions.FilterChainFailedException;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
30,6 → 34,14
 
private static final Logger logger = Logger.getLogger(ApplicationController.class);
 
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException {
logger.fatal("ATENTION YOU ARE USING A CONTROLLER EXTENDING FROM ApplicationController that does not implement execute Method, probably you want to extend from ApplicationDispatchController instead ApplicationController");
return mapping.findForward("error500");
}
public ActionMessages getMessages(HttpServletRequest request)
{
ActionMessages actionMessages = super.getMessages(request);
/impl/src/java/pt/estgp/estgweb/web/controllers/commons/CommonsController.java
New file
0,0 → 1,85
package pt.estgp.estgweb.web.controllers.commons;
 
import pt.estgp.estgweb.web.controllers.AddRolesController;
import pt.estgp.estgweb.web.controllers.ApplicationController;
import pt.estgp.estgweb.web.controllers.ApplicationDispatchController;
import pt.estgp.estgweb.web.controllers.blogs.BlogsController;
import pt.estgp.estgweb.web.form.blogs.BlogForm;
import pt.estgp.estgweb.web.utils.RequestUtils;
import pt.estgp.estgweb.domain.Blog;
import pt.estgp.estgweb.domain.DomainObjectFactory;
import pt.estgp.estgweb.domain.Image;
import pt.estgp.estgweb.domain.views.BlogView;
import pt.estgp.estgweb.services.common.CommonServicesManager;
import pt.estgp.estgweb.services.common.SearchTypeEnum;
import pt.estgp.estgweb.services.common.ICommonSearchResults;
import pt.estgp.estgweb.services.common.ISearchResults;
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.exceptions.FilterChainFailedException;
import org.apache.log4j.Logger;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import org.apache.struts.upload.FormFile;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.io.InputStream;
import java.io.ByteArrayOutputStream;
import java.util.Date;
 
/**
* @author Jorge Machado
* @date 26/Fev/2008
* @time 18:01:54
* @see pt.estgp.estgweb.web
*/
public class CommonsController extends ApplicationDispatchController {
 
private static final Logger logger = Logger.getLogger(CommonsController.class);
 
public ActionForward search(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Throwable, ServletException {
try
{
ICommonSearchResults commonSearchResults = CommonServicesManager.getInstance().search(request,request.getParameter("query"), SearchTypeEnum.parse(request.getParameter("searchType")));
if(commonSearchResults.getTotalResults() == 0)
return mapping.findForward("noresults");
request.setAttribute("ICommonSearchResults",commonSearchResults);
return mapping.findForward("searchResults");
}
catch (FilterChainFailedException e) {
return mapping.findForward("error401");
}
catch (Throwable e) {
logger.error(e, e);
throw e;
}
}
 
 
public ActionForward searchModule(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Throwable, ServletException {
try
{
ISearchResults searchResults = CommonServicesManager.getInstance().search(request,request.getParameter("query"), SearchTypeEnum.parse(request.getParameter("searchType")),request.getParameter("module"),Integer.parseInt(request.getParameter("page")));
request.setAttribute("ISearchResults",searchResults);
return mapping.findForward("searchModule");
}
catch (FilterChainFailedException e) {
return mapping.findForward("error401");
}
catch (Throwable e) {
logger.error(e, e);
throw e;
}
}
}
/impl/src/java/pt/estgp/estgweb/web/controllers/announcements/AnnouncementsController.java
13,6 → 13,7
import pt.estgp.estgweb.domain.Announcement;
import pt.estgp.estgweb.domain.DomainObjectFactory;
import pt.estgp.estgweb.domain.Image;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.domain.views.AnnouncementView;
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager;
34,9 → 35,9
public class AnnouncementsController extends AddRolesController {
 
private static final Logger logger = Logger.getLogger(AnnouncementsController.class);
 
private static final String TARGET_ROLES_KEY = AddRolesForm.TARGET_ROLES_KEY;
 
public ActionForward save(ActionMapping mapping,
ActionForm form ,
HttpServletRequest request,
45,7 → 46,71
{
try
{
AnnouncementsForm announcementsForm = (AnnouncementsForm) form;
Image i2=null;
Image i=null;
AnnouncementsForm announcementForm = (AnnouncementsForm) form;
AnnouncementView view = announcementForm.getAnnouncementView();
String finalUrl="";
if(!announcementForm.getUrl().equals(""))
{
finalUrl=announcementForm.getUrlProtocol()+announcementForm.getUrl();
view.setUrl(finalUrl);
}
else
{
view.setUrl(null);
}
 
if(announcementForm.getBigImage().getFileSize()!= 0)
{
FormFile bigImage = announcementForm.getBigImage();
InputStream stream = bigImage.getInputStream();
ByteArrayOutputStream b = new ByteArrayOutputStream();
int readedBytes;
byte[] buf = new byte[1024];
while((readedBytes = stream.read(buf)) > 0)
{
b.write(buf,0,readedBytes);
}
b.close();
i = DomainObjectFactory.createImageImpl();
i.setImage(b.toByteArray());
i.setContentType(bigImage.getContentType());
i.setSize(bigImage.getFileSize());
i.setDescription(view.getTitle());
i.setName(bigImage.getFileName());
i.setSaveDate(new Date());
 
}
 
if(announcementForm.getSmallImage().getFileSize()!= 0)
{
FormFile smallImage = announcementForm.getSmallImage();
InputStream stream2 = smallImage.getInputStream();
ByteArrayOutputStream b2 = new ByteArrayOutputStream();
int readedBytes2;
byte[] buf2 = new byte[1024];
while((readedBytes2 = stream2.read(buf2)) > 0)
{
b2.write(buf2,0,readedBytes2);
}
b2.close();
i2 = DomainObjectFactory.createImageImpl();
i2.setImage(b2.toByteArray());
i2.setDescription(view.getTitle());
i2.setContentType(smallImage.getContentType());
i2.setSize(smallImage.getFileSize());
i2.setName(smallImage.getFileName());
i2.setSaveDate(new Date());
}
 
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{"object"};
Object[] args = new Object[]{view,i, i2};
AnnouncementView aV = (AnnouncementView) sm.execute(RequestUtils.getRequester(request),"CreateAnnouncement",args,names);
addMessage(request,"announcement.edited.success","" + aV.getId());
return mapping.findForward("success");
/*AnnouncementsForm announcementsForm = (AnnouncementsForm) form;
if(announcementsForm.getAnnouncementView().getId() <= 0)
{
Announcement a = DomainObjectFactory.createAnnouncementImpl();
115,14 → 180,15
}
else
{
 
AnnouncementView a = announcementsForm.getAnnouncementView();
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{"object"};
Object[] args = new Object[]{a};
AnnouncementView aV = (AnnouncementView) sm.execute(RequestUtils.getRequester(request),"EditAnnouncement",args,names);
AnnouncementView aV = (AnnouncementView) sm.execute(RequestUtils.getRequester(request),"CreateAnnouncement",args,names);
addMessage(request,"announcement.edited.success","" + aV.getId());
return mapping.findForward("success");
}
} */
}
catch(FilterChainFailedException e)
{
/impl/src/java/pt/estgp/estgweb/examples/DBInit.java
24,12 → 24,14
AbstractDao.getCurrentSession().beginTransaction();
UserImpl user = DomainObjectFactory.createUserImpl();
user.setUsername("super");
user.setName("super user");
user.setRoles("all,admin");
user.setPassword(BytesUtils.getMD5("1"));
DaoFactory.getUserDaoImpl().save(user);
UserImpl userStudent = DomainObjectFactory.createUserImpl();
userStudent.setUsername("student");
userStudent.setRoles("student");
userStudent.setName("student user");
userStudent.setPassword(BytesUtils.getMD5("1"));
DaoFactory.getUserDaoImpl().save(userStudent);
AnnouncementImpl announcement = DomainObjectFactory.createAnnouncementImpl();
/impl/src/web/admin/blogs/submitBlog.jsp
New file
0,0 → 1,100
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %>
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %>
<%@ taglib uri="/WEB-INF/tlds/estgweb.tld" prefix="estgweb" %>
<jsp:useBean id="BlogForm" type="pt.estgp.estgweb.web.form.blogs.BlogForm" scope="request"/>
<jsp:useBean id="UserSession" type="pt.estgp.estgweb.domain.UserSession" scope="request"/>
<html:messages id="messages"/>
<html:errors/>
<html:form action="/submitBlog" enctype="multipart/form-data">
<html:hidden property="role"/>
<html:hidden property="blogView.id"/>
<input type="hidden" name="dispatch" value="addRole">
<table class="form">
 
<estgweb:isAdmin>
<tr>
<th>
<bean:message key="blog.status"/>
</th>
<td>
<html:select property="blogView.status">
<html:option value="true"><bean:message key="yes"/></html:option>
<html:option value="false"><bean:message key="no"/></html:option>
</html:select>
</td>
</tr>
</estgweb:isAdmin>
<tr>
<th>
<bean:message key="blog.target.roles"/>
</th>
<td>
<html:select property="targetRolesStr">
<estgweb:isAdmin>
<logic:present name="BlogForm" property="targetRoles">
<logic:iterate id="item" name="BlogForm" property="targetRoles">
<jomm:option itemName="item" comparableObjectName="BlogForm" comparableObjectProperty="targetRolesStr">
<jomm:message patternMessage="user.role.{0}" name0="item"/>
</jomm:option>
</logic:iterate>
<input type="button" value="<bean:message key="add"/>" onclick="set(this.form,'addRole');this.form.submit()">
</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>
 
 
<logic:present name="BlogForm" property="selectedRoles">
<logic:notEmpty name="BlogForm" property="selectedRoles">
<ul>
<logic:iterate id="item" name="BlogForm" property="selectedRoles">
<li><jomm:message patternMessage="user.role.{0}" name0="item"/> <a href="BlogForm.role.value='${item}';set(BlogForm,'removeRole');BlogForm.submit();"/></li>
</logic:iterate>
</ul>
</logic:notEmpty>
</logic:present>
</td>
</tr>
 
<tr>
<th>
<bean:message key="blog.title"/>
</th>
<td>
<html:text property="blogView.title" maxlength="250"/>
</td>
</tr>
<tr>
<th>
<bean:message key="blog.image"/>
</th>
<td>
<html:file property="image"/>
</td>
</tr>
 
<tr>
<th>
<bean:message key="blog.description"/>
</th>
<td>
<html:textarea property="blogView.description"/>
</td>
</tr>
<tr class="buttons">
<td colspan="2">
<input type="button" onclick="set(this.form,'save');this.form.submit()" value="<bean:message key="confirm"/>"/>
</td>
</tr>
</table>
</html:form>
/impl/src/web/admin/blogs/topnavCreateBlog.jsp
New file
0,0 → 1,10
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@ page import="jomm.web.utils.NavPlaceServer" %>
<%@ page import="jomm.web.utils.TopNav" %>
<%
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request);
topNav.addNavPlace("/Welcome.do", "Home");
topNav.addNavPlace(null, "submit.blog");
%>
<jsp:include page="/layout/topnav.jsp"/>
/impl/src/web/admin/announcements/submitAnnouncement.jsp
15,6 → 15,7
<html:hidden property="announcementView.id"/>
 
<input type="hidden" name="dispatch" value="addRole">
<input type="hidden" name="dispatch" value="removeRole">
<table class="form">
 
<estgweb:isAdmin>
94,7 → 95,7
<logic:notEmpty name="AnnouncementsForm" property="selectedRoles">
<ul>
<logic:iterate id="item" name="AnnouncementsForm" property="selectedRoles">
<li><jomm:message patternMessage="user.role.{0}" name0="item"/> <a href="AnnouncementForm.role.value='${item}';set(AnnouncementsForm,'removeRole');AnnouncementForm.submit();"/></li>
<li><a href="AnnouncementForm.role.value='${item}';set(AnnouncementsForm,'removeRole');AnnouncementForm.submit();"><jomm:message patternMessage="user.role.{0}" name0="item"/></a></li>
</logic:iterate>
</ul>
</logic:notEmpty>
117,7 → 118,7
<bean:message key="announcement.startDate"/>
</th>
<td>
<html:text styleClass="date" property="startDate" styleId="startDate" readonly="true"/> <a href="#" onClick="cal.select(getObjectById('startDate'),'anchor1','yyyy/MM/dd'); return false;" name="anchor1" id="anchor1">Escolha a Data</A>
<html:text styleClass="date" property="startDate" styleId="startDate" readonly="true"/> <a href="#" onClick="cal.select(getObjectById('startDate'),'anchor1','yyyy/MM/dd'); return false;" name="anchor1" id="anchor1">Escolha a Data</A> <a href="#" onClick=""><bean:message key="remove"/></A>
</td>
</tr>
<tr>
125,7 → 126,7
<bean:message key="announcement.expireDate"/>
</th>
<td>
<html:text styleClass="date" property="expireDate" styleId="expireDate" readonly="true"/> <a href="#" onClick="cal.select(getObjectById('expireDate'),'anchor2','yyyy/MM/dd'); return false;" name="anchor2" id="anchor2">Escolha a Data</A>
<html:text styleClass="date" property="expireDate" styleId="expireDate" readonly="true"/> <a href="#" onClick="cal.select(getObjectById('expireDate'),'anchor2','yyyy/MM/dd'); return false;" name="anchor2" id="anchor2">Escolha a Data</A> <a href="#" onClick=""><bean:message key="remove"/></A>
</td>
</tr>
</estgweb:isAdmin>
/impl/src/web/css/style.css
1,21 → 1,83
#searchResults li h1 {
 
/*********** Site Struture *************/
BODY *, .contentPortal, .contentPortal p, .contentPortal li
background-color: lightblue;
border-bottom: blueviolet 1px solid;
margin-bottom: 10px;
}
 
#searchResults
{
FONT-FAMILY: "Lucida Grande","Trebuchet MS","bitstream vera sans",Verdana,Arial,Helvetica,sans-serif;
FONT-SIZE:0.98em;
padding-left:10px;
}
 
#body
#searchResults li a
{
width:950px;
cursor:pointer;
}
 
#searchresults div.result {
 
margin-left: 20px;
border-bottom: 1px solid #8ec73f;
margin-bottom: 15px;
padding-bottom: 0;
}
 
#searchResults li .module
{
position:absolute;
visibility:hidden;
}
#searchResults li .module .result h2 {
 
 
color: black;
padding-top: 0;
margin-top: 10px;
cursor: pointer;
padding-bottom: 0;
}
 
#searchResults li .module .result p {
margin-top: 5px;
cursor: pointer;
margin-bottom: 0;
padding-bottom: 2px;
padding-top: 0;
}
 
 
 
 
/*********** Site Struture *************/
BODY *, .contentPortal, .contentPortal p, .contentPortal li {
FONT-FAMILY: "bitstream vera sans", Verdana, Arial, Helvetica, sans-serif;
FONT-SIZE: 1em;
}
 
.pFooter {
background-color: #8EC73F;
font-size: 0.7em;
border-top: 1px solid #cccccc;
border-bottom: 1px solid #cccccc;
text-align: right;
clear: both;
 
}
 
.pFooter a {
font-style: italic;
}
 
#body {
width: 950px;
margin-left: auto;
margin-right: auto;
}
 
#pageStructure
{
border-collapse :collapse ;
#pageStructure {
border-collapse: collapse;
LEFT: 0;
WIDTH: 100%;
}
26,43 → 88,37
WIDTH: 100%
} */
 
TD#leftPage
{
TD#leftPage {
VERTICAL-ALIGN: top;
WIDTH: 160px;
text-align:left;
text-align: left;
}
 
#leftPagePosition
{
#leftPagePosition {
CLEAR: left;
LEFT: 0;
FLOAT: left;
PADDING-TOP: 43px;
}
 
TD.rightPage,TD.rightPagePortal
{
TD.rightPage, TD.rightPagePortal {
VERTICAL-ALIGN: top;
WIDTH: 160px;
}
 
.rightPagePosition
{
.rightPagePosition {
CLEAR: left;
LEFT: 0;
FLOAT: left;
PADDING-BOTTOM: 20px;
}
 
#footer
{
#footer {
HEIGHT: 50px;
PADDING-TOP: 5px;
}
 
#footerStructure TABLE
{
#footerStructure TABLE {
BORDER-RIGHT: 0;
BORDER-TOP: 0;
RIGHT: 0;
75,407 → 131,371
TOP: 0;
border-spacing: 0
}
#footerStructure TABLE TD
{
 
#footerStructure TABLE TD {
VERTICAL-ALIGN: top
}
 
/****************************Text Size*************************************************/
 
h1
{
font-size:1.2em;
h1 {
font-size: 1.2em;
}
h2
{
font-size:1em;
 
h2 {
font-size: 1em;
}
 
/*************************************************************************************/
 
/*****************************Portal Page Template************************************/
.portal
{
.portal {
}
.portalContent
{
padding-left:10px;
 
.portalContent {
padding-left: 10px;
}
 
td.column
{
vertical-align:top;
td.column {
vertical-align: top;
}
 
.portalContent
{
padding-left:10px;
padding-right:10px;
.portalContent {
padding-left: 10px;
padding-right: 10px;
}
 
.navLeftMenu h2
{
font-size:0.9em;
.navLeftMenu h2 {
font-size: 0.9em;
}
.navLeftMenu
{
font-size:0.7em;
 
.navLeftMenu {
font-size: 0.7em;
}
 
.block P,.navLeftMenu h2
{
background-color:#ededed;
padding-left:10px;
margin:0;
.block P, .navLeftMenu h2 {
background-color: #ededed;
padding-left: 10px;
margin: 0;
 
}
 
.block UL
{
.block UL {
LIST-STYLE-TYPE: none;
padding-left:10px;
padding-left: 10px;
}
 
.block a:link
{
color:#4d4d4d;
text-decoration:none;
.block a:link {
color: #4d4d4d;
text-decoration: none;
}
 
.block a:visited
{
color:#4d4d4d;
text-decoration:none;
.block a:visited {
color: #4d4d4d;
text-decoration: none;
}
 
.block a:hover,.linkUnderlineGrayToGreen a:hover
{
color:#8EC73F;
text-decoration:underline;
.block a:hover, .linkUnderlineGrayToGreen a:hover {
color: #8EC73F;
text-decoration: underline;
}
 
.portalLeftAnnouncements table
{
table-layout:fixed;
width:180px;
padding-top:10px;
font-size:0.8em;
.portalLeftAnnouncements table {
table-layout: fixed;
width: 180px;
padding-top: 10px;
font-size: 0.8em;
}
 
.portalRightAnnouncements table
{
table-layout:fixed;
width:250px;
font-size:0.8em;
.portalRightAnnouncements table {
table-layout: fixed;
width: 250px;
font-size: 0.8em;
}
 
.portalAnnouncement a:link,.portalAnnouncement a:visited
{
margin:0;
.portalAnnouncement a:link, .portalAnnouncement a:visited {
margin: 0;
}
 
.portalAnnouncementTitle a
{
color:#000000;
.portalAnnouncementTitle a {
color: #000000;
}
 
.portalAnnouncement a
{
text-decoration :none;
.portalAnnouncement a {
text-decoration: none;
}
 
.portalAnnouncementText a:link,.portalAnnouncementText a:visited
{
color:#4d4d4d;
.portalAnnouncementText a:link, .portalAnnouncementText a:visited {
color: #4d4d4d;
}
 
.navleftMenu
{
width:180px;
padding-left:10px;
.navleftMenu {
width: 180px;
padding-left: 10px;
}
 
#portalMenu li.selected a
{
color:#8EC73F;
#portalMenu li.selected a {
color: #8EC73F;
}
 
/**********************************************************************************/
 
/****************************** Standard Page Template ***************************/
.contentPortal h1
{
background-color:#8EC73F;
color:#FFFFFF;
font-size:1.2em;
.contentPortal h1 {
background-color: #8EC73F;
color: #FFFFFF;
font-size: 1.2em;
}
 
.contentPortal h2
{
font-size:1em;
.contentPortal h2 {
font-size: 1em;
}
 
.contentPortal
{
font-size:0.75em;
.contentPortal {
font-size: 0.75em;
}
 
.contentPortal p
{
margin:0;
color:#4d4d4d;
.contentPortal p {
margin: 0;
color: #4d4d4d;
}
 
.section
{
margin-bottom:10px;
.section {
margin-bottom: 10px;
}
 
.contentPortal li a:link,.contentPortal a:visited,.contentPortal li
{
color:#4d4d4d;
.contentPortal li a:link, .contentPortal a:visited, .contentPortal li {
color: #4d4d4d;
}
.contentPortal li a:hover
{
color:#8EC73F;
 
.contentPortal li a:hover {
color: #8EC73F;
}
 
.listClean UL /*Lista sem nada*/
{
LIST-STYLE-TYPE: none;
padding:0;
padding: 0;
}
 
.listCircleWhite UL/*Lista circulo branco*/
.listCircleWhite UL /*Lista circulo branco*/
{
LIST-STYLE-TYPE: circle;
}
 
.listDecimal UL/*Lista decimal*/
.listDecimal UL /*Lista decimal*/
{
LIST-STYLE-TYPE: decimal;
}
 
.listDisc UL/*Lista circulo preto*/
.listDisc UL /*Lista circulo preto*/
{
LIST-STYLE-TYPE: disc;
}
 
.listSquare UL/*Lista quadrado preto*/
.listSquare UL /*Lista quadrado preto*/
{
LIST-STYLE-TYPE: square;
}
 
.portalLeftAnnouncements img
{
height:133px;
width:177px;
.portalLeftAnnouncements img {
height: 133px;
width: 177px;
}
 
/*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
{
margin-bottom:1px;
color:#FFFFFF;
background-color:#8EC73F;
padding-left:10px;
.content h1, #lastnews h1 {
margin-bottom: 1px;
color: #FFFFFF;
background-color: #8EC73F;
padding-left: 10px;
}
 
/*********************************************************************************/
/******************************* Index Page***************************************/
#flashTopNews * td, #flashCenterNews * td, #flashBottomNews * td
{
vertical-align:top;
#flashTopNews * td, #flashCenterNews * td, #flashBottomNews * td {
vertical-align: top;
}
 
/*FlashTopNews*/
#flashTopNews
{
padding:0;
margin:0;
#flashTopNews {
padding: 0;
margin: 0;
}
#flashTopNews .container
{
background-color:#4d4d4d;
height:100px;
width:100%;
margin:0;
 
#flashTopNews .container {
background-color: #4d4d4d;
height: 100px;
width: 100%;
margin: 0;
}
#flashTopNews .container .textContainer
{
margin:0;
text-align :justify;
 
#flashTopNews .container .textContainer {
margin: 0;
text-align: justify;
}
#flashTopNews .container .imageContainer
{
margin:0;
text-align :right;
text-decoration:none;
 
#flashTopNews .container .imageContainer {
margin: 0;
text-align: right;
text-decoration: none;
}
#flashTopNews img
{
height:167px;
width:341px;
 
#flashTopNews img {
height: 167px;
width: 341px;
}
#flashTopNews * td
{
vertical-align:top;
 
#flashTopNews * td {
vertical-align: top;
}
#flashTopNews .container .textContainer h2
{
margin:0;
margin-top:1px;
 
#flashTopNews .container .textContainer h2 {
margin: 0;
margin-top: 1px;
}
#flashTopNews .container .textContainer p
{
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 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;
 
#flashTopNews p a:link, #flashTopNews p a:visited {
color: #FFFFFF;
text-decoration: none;
}
 
/*FlashCenterNews*/
#flashCenterNews
{
margin-top:2px;
#flashCenterNews {
margin-top: 2px;
border-top-style: dotted;
border-top-color:gray;
border-top-color: gray;
}
#flashCenterNews .container
{
width:100%;
margin:0;
 
#flashCenterNews .container {
width: 100%;
margin: 0;
}
#flashCenterNews .textContainer
{
padding-top :10px;
 
#flashCenterNews .textContainer {
padding-top: 10px;
}
#flashCenterNews h2 a:link,#flashCenterNews h2 a:visited
{
color:#8EC73F;
font-weight:bold;
text-decoration:none;
 
#flashCenterNews h2 a:link, #flashCenterNews h2 a:visited {
color: #8EC73F;
font-weight: bold;
text-decoration: none;
}
#flashCenterNews p a:link, #flashCenterNews p a:visited
{
color:#4d4d4d;
text-decoration:none;
 
#flashCenterNews p a:link, #flashCenterNews p a:visited {
color: #4d4d4d;
text-decoration: none;
}
#flashCenterNews img,#flashCenterNews td.imageContainer
{
width:133px;
height:133px;
 
#flashCenterNews img, #flashCenterNews td.imageContainer {
width: 133px;
height: 133px;
}
 
 
 
/*FlashBottomNews*/
#flashBottomNews img
{
width:100px;
height:100px;
#flashBottomNews img {
width: 100px;
height: 100px;
}
 
#flashBottomNews h2 a:link,#flashBottomNews h2 a:visited
{
color:#8EC73F;
font-weight:bold;
#flashBottomNews h2 a:link, #flashBottomNews h2 a:visited {
color: #8EC73F;
font-weight: bold;
}
 
#flashBottomNews p a:link,#flashBottomNews p a:visited
{
color:#4d4d4d;
#flashBottomNews p a:link, #flashBottomNews p a:visited {
color: #4d4d4d;
}
 
/*Last News Block*/
#lastnews
{
font-size:0.8em;
#lastnews {
font-size: 0.8em;
}
 
#lastnews ul
{
#lastnews ul {
list-style: none;
width:160px;
width: 160px;
LIST-STYLE-TYPE: none;
padding:0;
margin:0;
padding: 0;
margin: 0;
}
#lastnews li
{
margin:0;
padding:0;
 
#lastnews li {
margin: 0;
padding: 0;
}
#lastnews li h2
{
padding:0;
padding-left:2px;
margin:1px;
 
#lastnews li h2 {
padding: 0;
padding-left: 2px;
margin: 1px;
}
#lastnews li h2 a,.linkLeftMenu a
{
text-decoration:none;
 
#lastnews li h2 a, .linkLeftMenu a {
text-decoration: none;
}
#lastnews li h2 a:link,.linkLeftMenu a:link
{
color:#4d4d4d;
 
#lastnews li h2 a:link, .linkLeftMenu a:link {
color: #4d4d4d;
}
#lastnews li h2 a:visited,.linkLeftMenu a:visited
{
color:#4d4d4d;
 
#lastnews li h2 a:visited, .linkLeftMenu a:visited {
color: #4d4d4d;
}
#lastnews li h2 a:hover,.linkLeftMenu a:hover
{
color:#8EC73F;
 
#lastnews li h2 a:hover, .linkLeftMenu a:hover {
color: #8EC73F;
}
 
/**/
 
/*LEFT MENUS*/
#leftMenuModule h2
{
#leftMenuModule h2 {
MARGIN: 0;
color:#8EC73F;
color: #8EC73F;
}
#leftMenuModule UL
{
 
#leftMenuModule UL {
MARGIN: 0;
WIDTH: 155px;
}
 
/*********************************************************************************/
 
/****************** topnav **********************/
 
#topnav
{
color:#FFFFFF;
text-decoration:none;
#topnav {
color: #FFFFFF;
text-decoration: none;
BACKGROUND-COLOR: #8EC73F;
FONT: 11px/20px "bitstream vera sans", "Lucida Grande", "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif
FONT: 11px / 20px "bitstream vera sans", "Lucida Grande", "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif
}
 
#topnav LI A:hover
{
COLOR:#4d4d4d;
#topnav LI A:hover {
COLOR: #4d4d4d;
BACKGROUND-COLOR: #FFFFFF
}
#topnav LI A
{
color:#FFFFFF;
text-decoration:none;
 
#topnav LI A {
color: #FFFFFF;
text-decoration: none;
}
 
#topnav UL
{
#topnav UL {
PADDING-RIGHT: 0;
PADDING-LEFT: 0;
PADDING-BOTTOM: 10px;
486,8 → 506,7
LIST-STYLE-TYPE: none
}
 
#topnav LI
{
#topnav LI {
PADDING-RIGHT: 0;
DISPLAY: inline;
PADDING-LEFT: 0;
495,37 → 514,48
MARGIN: 0;
PADDING-TOP: 0;
}
 
/*****************************************************************************************/
 
/************************************** Content Structure ********************************/
.contentPortal
{
padding-left:10px;
padding-top:10px;
.contentPortal {
padding-left: 10px;
padding-top: 10px;
}
 
.content h2
.content h2 {
font-size: 1em;
}
#pageStructure .content
{
font-size:1em;
border: 0;
}
.content .imageAnnouncement img
{
width:341px;
height:167px;
}
 
.content
{
font-size:0.8em;
border: 1px solid #8ec73f ;
}
 
.content a:link,.content a:visited
{
color:#4d4d4d;
 
 
.content {
font-size: 0.8em;
}
 
.content a:hover
{
color:#8EC73F
.content a:link, .content a:visited {
color: #4d4d4d;
}
 
.content,.contentPortal
{
.content a:hover {
color: #8EC73F
}
 
.content, .contentPortal {
LEFT: 0;
RIGHT: 0;
WIDTH: 100%;
533,28 → 563,24
VERTICAL-ALIGN: top;
}
 
.contentPortal
{
.contentPortal {
border-left: #8EC73F solid 2px;
border-top: #8EC73F solid 2px;
border-bottom: #8EC73F solid 2px;
}
 
.rightPagePortal
{
background-color:#ededed;
.rightPagePortal {
background-color: #ededed;
border-right: #8EC73F solid 2px;
border-top: #8EC73F solid 2px;
border-bottom: #8EC73F solid 2px;
}
 
 
/*****************************************************************************************/
 
/************************************* Footer Modules ***********************************/
 
#license UL
{
#license UL {
COLOR: #4D4D4D;
PADDING-RIGHT: 0;
PADDING-LEFT: 0;
564,158 → 590,142
LIST-STYLE-TYPE: none;
}
 
#footer #organizations
{
#footer #organizations {
}
 
#footer #sponsors
{
#footer #sponsors {
}
 
#footer a:link,#footer a:visited
{
color:#4d4d4d;
#footer a:link, #footer a:visited {
color: #4d4d4d;
}
#footer a:hover
{
color:#8EC73F;
 
#footer a:hover {
color: #8EC73F;
}
 
/**************************************************************************************/
 
/******************************** Bar Module Color ************************************/
TD #topBar
{
font-weight:bold;
color:white;
background-color:#8EC73F;
padding-left:10px;
TD #topBar {
font-weight: bold;
color: white;
background-color: #8EC73F;
padding-left: 10px;
FONT-SIZE: 18px
}
 
/**************************************************************************************/
 
/******************************** Background Color ************************************/
/*Gray background*/
#backOne
{
background-color:#4D4D4D;
#backOne {
background-color: #4D4D4D;
}
 
/**************************************************************************************/
 
/*************************Staff Links Structure***************************************/
.staffLinks P
{
font-weight :bold;
.staffLinks P {
font-weight: bold;
}
 
/*************************************************************************************/
form , .boxHorizontal
{
margin:0;
padding:3px;
border:0px #793B0D solid ;
background-color:#FFFFFF;
 
form, .boxHorizontal {
margin: 0;
padding: 3px;
border: 0px #793B0D solid;
background-color: #FFFFFF;
}
.boxHorizontal
{
padding-top:33px;
padding-left:180px;
 
.boxHorizontal {
padding-top: 33px;
padding-left: 180px;
}
 
.form th, .boxHorizontal th
{
margin:0;
padding-left:10px;
padding-top:3px;
padding-bottom:3px;
padding-right:15px;
color:#4d4d4d;
.form th, .boxHorizontal th {
margin: 0;
padding-left: 10px;
padding-top: 3px;
padding-bottom: 3px;
padding-right: 15px;
color: #4d4d4d;
background-color: #FFFFFF;
border: 0px solid #793B0D;
font-size:0.86em;
font-weight:bold;
font-family:Helvetica,sans-serif;
text-align:left;
font-size: 0.86em;
font-weight: bold;
font-family: Helvetica, sans-serif;
text-align: left;
}
 
.form td, .boxHorizontal td
{
margin:0;
padding-left:10px;
padding-top:3px;
padding-bottom:3px;
padding-right:15px;
color:#793B0D;
.form td, .boxHorizontal td {
margin: 0;
padding-left: 10px;
padding-top: 3px;
padding-bottom: 3px;
padding-right: 15px;
color: #793B0D;
background-color: #FFFFFF;
border: 0px solid #793B0D;
font-size:0.8em;
font-family:Helvetica,sans-serif;
vertical-align:middle;
border: 0 solid #793B0D;
font-size: 0.8em;
font-family: Helvetica, sans-serif;
vertical-align: middle;
}
 
.form .buttons td, .boxHorizontal .buttons td
{
text-align:center;
.form .buttons td, .boxHorizontal .buttons td {
text-align: left;
background-color: #FFFFFF;
}
 
.form textarea, .boxHorizontal textarea
{
width:600px;
height:300px;
.form textarea, .boxHorizontal textarea {
width: 600px;
height: 300px;
 
}
 
.form input[type="text"], .form input[type="password"]
{
width:600px;
.form input[type="text"], .form input[type="password"] {
width: 600px;
}
.form input.date
{
width:100px;
 
.form input.date {
width: 100px;
}
 
 
 
 
/* PAGE LAYOUTS */
 
.seccao, .seccao p
{
padding:30px;
font-size:0.95em;
.seccao, .seccao p {
padding: 10px;
font-size: 0.95em;
font-family: Helvetica, sans-serif;
}
.seccao p
{
padding:4px;
 
.seccao p {
padding: 4px;
}
.seccao h1
{
font-size:1.1em;
font-weight:bold;
font-family:Helvetica,sans-serif;
color:red;
 
.seccao h1 {
font-size: 1.1em;
font-weight: bold;
font-family: Helvetica, sans-serif;
color: red;
}
 
.seccao .seccao h1
{
font-size:1em;
font-weight:bold;
font-family: Helvetica,sans-serif;
color:red;
.seccao .seccao h1 {
font-size: 1em;
font-weight: bold;
font-family: Helvetica, sans-serif;
color: red;
}
 
 
/*Butões*/
 
input[type="text"] , input[type="password"]
{
input[type="text"], input[type="password"] {
FONT-SIZE: 0.8em;
FONT-FAMILY:Helvetica;
FONT-FAMILY: Helvetica;
}
 
input[type="button"], input[type="submit"]
{
input[type="button"], input[type="submit"] {
color: #4d4d4d;
border-top-width: 1px;
border-right-width: 1px;
725,7 → 735,7
border-right-style: solid;
border-bottom-style: solid;
border-left-style: solid;
border-top-color:#4d4d4d;
border-top-color: #4d4d4d;
border-right-color: #4d4d4d;
border-bottom-color: #4d4d4d;
border-left-color: #4d4d4d;
735,8 → 745,7
background-attachment: scroll;
}
 
input[type="button"]:hover, input[type="submit"]:hover
{
input[type="button"]:hover, input[type="submit"]:hover {
background-color: #8EC73F;
background-image: none;
background-repeat: repeat;
746,97 → 755,126
}
 
/*Errors and Warnings*/
.statusOK
{
.statusOK {
padding: 2px;
list-style-type: none;
color: green;
background-color: #FFEEDD;
}
 
.statusERROR
{
color:red;
.statusERROR {
color: red;
}
 
.statusWARNING
{
.statusWARNING {
padding: 2px;
list-style-type: none;
color: yellow;
background-color: black;
}
.requiredField{
 
.requiredField {
color: red;
}
 
.statusSearch{
color:lightblue;
.statusSearch {
color: lightblue;
}
 
/********************************************** Navigation Menu ********************************/
ul.menubar{
ul.menubar {
margin: 0px;
padding: 0px;
background-color: #FFFFFF; /* IE6 Bug */
font-size: 100%;
 
}
.submenu
{
FONT-FAMILY: "Lucida Grande","Trebuchet MS","bitstream vera sans",Verdana,Arial,Helvetica,sans-serif;
font-size:0.8em;
 
.submenu {
FONT-FAMILY: "Lucida Grande", "Trebuchet MS", "bitstream vera sans", Verdana, Arial, Helvetica, sans-serif;
font-size: 0.8em;
}
 
.menu
{
FONT-FAMILY: "Lucida Grande","Trebuchet MS","bitstream vera sans",Verdana,Arial,Helvetica,sans-serif;
font-size:0.8em;
.menu {
FONT-FAMILY: "Lucida Grande", "Trebuchet MS", "bitstream vera sans", Verdana, Arial, Helvetica, sans-serif;
font-size: 0.8em;
}
 
ul.menubar .submenu{
margin: 0px;
padding: 0px;
ul.menubar .submenu {
margin: 0;
padding: 0;
list-style: none;
background-color: #FFFFFF;
float:left;
float: left;
}
 
ul.menubar ul.menu{
ul.menubar ul.menu {
display: none;
position: absolute;
margin: 0px;
margin: 0;
}
 
ul.menubar a{
ul.menubar a {
 
display:block;
display: block;
text-decoration: none;
color: #4D4D4D;
padding-left:5px;
padding-right:5px;
padding-top:2px;
padding-bottom:2px;
padding-left: 5px;
padding-right: 5px;
padding-top: 2px;
padding-bottom: 2px;
}
 
ul.menubar a:hover{
display:block;
ul.menubar a:hover {
display: block;
text-decoration: none;
color: #4D4D4D;
padding-left:5px;
padding-right:5px;
padding-top:2px;
padding-bottom:2px;
padding-left: 5px;
padding-right: 5px;
padding-top: 2px;
padding-bottom: 2px;
}
 
.menuTop
 
 
#menuTop
{
width:100%;
}
#menuTop td.searchTab form
{
text-align:right;
}
#menuTop td.searchTab form table td
{
vertical-align:middle;
}
 
#menuTop td.searchTab input[type="text"]
{
width:200px;
}
 
.menu a:hover{
 
display:block;
#menuTop form td,#menuTop form th
{
font-size: 0.85em;
}
#menuTop td.searchTab
{
float:right;
text-align:left;
}
#menuTop td
{
vertical-align:top;
}
 
 
 
.menu a:hover {
 
display: block;
/* border-left: none;
border-right: none;
border-top: none;
844,7 → 882,7
 
}
 
ul.menu, ul.menu ul{
ul.menu, ul.menu ul {
margin: 0;
padding: 2px;
/* border-left: 1px solid #ccc;
854,27 → 892,25
background-color: #FFFFFF; /* IE6 Bug */
}
 
ul.menu li{
ul.menu li {
position: relative;
list-style: none;
/*border: 0px;*/
opacity:0.9;
list-style: none; /*border: 0px;*/
opacity: 0.9;
background-color: #4D4D4D;
width:250px;
width: 250px;
}
 
ul.menu li a{
ul.menu li a {
display: block;
text-decoration: none;
/* border-bottom: 0px;*/
text-decoration: none; /* border-bottom: 0px;*/
/*color: #4D4D4D;*/
/* background-color: #FFFFFF; */
color: #4d4d4d;
background-color: #CCCCCC;
padding-left:2px;
padding-right:2px;
padding-top:2px;
padding-bottom:2px;
padding-left: 2px;
padding-right: 2px;
padding-top: 2px;
padding-bottom: 2px;
}
 
/*
888,10 → 924,9
padding-right:2px;
}
*/
.shadow UL
{
background :transparent;
width:250px;
.shadow UL {
background: transparent;
width: 250px;
color: inherit;
}
 
902,27 → 937,34
} */
 
/* Fix IE. Hide from IE Mac \*/
* html ul.menu li { float: left; height: 1%; }
* html ul.menu li a { height: 1%; }
* html ul.menu li {
float: left;
height: 1%;
}
 
* html ul.menu li a {
height: 1%;
}
 
/* End */
 
ul.menu ul{
ul.menu ul {
position: absolute;
display: none;
left: 149px; /* Set 1px less than menu width */
top: 0px;
}
 
ul.menu li.submenu ul
{
ul.menu li.submenu ul {
display: none;
} /* Hide sub-menus initially */
}
 
ul.menu li a:hover
{
/* Hide sub-menus initially */
 
ul.menu li a:hover {
background-color: #8EC73F;
color: #FFFFFF;
text-decoration :underline;
text-decoration: underline;
}
 
/***********************************************************************************************/
/impl/src/web/css/intranet.css
New file
0,0 → 1,75
/* --- Main Navigation --- */
 
#body,#page
{
width:950px;
margin-left: auto;
margin-right: auto;
}
 
#testeTop {
border-bottom: 10px solid #ebe6d6;
}
 
#testeTop ul {
margin: 0;
padding: 0;
}
#testeTop ul li {
margin: 0;
padding: 0;
}
#testeTop ul li span {
margin: 0;
padding: 0;
}
#testeTop {
float: left;
width: 100%;
font-size: 11px;
padding-top: 0.5em;
}
#testeTop ul {
margin: 0;
margin-left: 200px;
list-style: none;
}
#testeTop li {
float: left;
padding: 0;
font-family: Tahoma, Verdana, Sans-Serif;
margin: 0;
}
#testeTop ul li {
margin-right: 2px;
}
#testeTop li a {
float: left;
font-size: 100%;
font-weight: normal;
text-decoration: none;
white-space: nowrap;
}
#testeTop li a span {
float: left;
padding: 0.4em 8px;
cursor: pointer; /* IE6 tweak */
}
 
 
 
#testeTop { border-top: 4px solid #31C70F; background: #5fC73F url(../images/0grad01.gif) bottom repeat-x; }
#testeTop li a { display: block; background: #11a71F url(../images/0corner_left_01.gif) top left repeat-x;}
#testeTop li a span { background: url(../images/0corner_right_01.gif) top right no-repeat; }
#testeTop ul li.selected a { background: #ebe6d6 url(../images/0corner_left_span_01.gif) top left no-repeat; }
#testeTop ul li.selected a span { background: url(../images/0corner_right_span_01.gif) top right no-repeat; }
#testeTop ul li.selected a:hover { background: #ebe6d6 url(../images/0corner_left_span_01.gif) top left no-repeat; color: #000; }
#testeTop ul li.selected a:hover span { background: url(../images/0corner_right_span_01.gif) top right no-repeat; color: #000; }
#testeTop li a:hover { background: #23C71F url(../images/0corner_left_light_01.gif) top left repeat-x; }
#testeTop li a:hover span { background: url(../images/0corner_right_light_01.gif) top right no-repeat; }
 
 
#testeTop a, #testeTop a:visited, #testeTop a:hover
{
COLOR:BLACK;
}
/impl/src/web/js/functions.js
30,4 → 30,4
f = fso.GetFile(path);
 
return(new Date(f.DateLastModified).getDate());
}
}
/impl/src/web/js/ajax.js
86,6 → 86,22
}
}
 
function hide(id,showId)
{
getObjectById(id).style.visibility='hidden';
getObjectById(id).style.position='absolute';
getObjectById(showId).style.visibility='visible';
getObjectById(showId).style.position='relative';
}
function show(id,hideId)
{
getObjectById(id).style.visibility='visible';
getObjectById(id).style.position='relative';
getObjectById(hideId).style.visibility='hidden';
getObjectById(hideId).style.position='absolute';
 
}
 
/**
* Creates a new XmlHttpObject
* @author Jorge Machado
158,7 → 174,25
}
 
 
/***************************************************
Search
***************************************************/
var xmlHttpSearch;
var searchResultsDiv;
 
function searchCall(div,query,searchType,page,module,action)
{
searchResultsDiv = div;
xmlHttpSearch=GetXmlHttpObject(stateChangedSearchCall);
startRequest(xmlHttpSearch,"dispatch=searchModule&query=" + query + "&searchType=" + searchType + "&page=" + page + "&module=" + module,"",stateChangedSearchCall,"",action);
}
function stateChangedSearchCall()
{
if (xmlHttpSearch.readyState==4 || xmlHttpSearch.readyState=="complete")
{
getObjectById(searchResultsDiv).innerHTML=xmlHttpSearch.responseText;
}
}
 
 
 
172,3 → 206,6
 
 
 
 
 
 
/impl/src/web/layout/ajaxLayout.jsp
File deleted
/impl/src/web/layout/emptyLayout.jsp
New file
0,0 → 1,4
<%@page pageEncoding="UTF-8" contentType="text/html"%>
<%@ taglib uri="/WEB-INF/tlds/struts-tiles.tld" prefix="tiles" %>
<tiles:insert attribute="body" />
 
/impl/src/web/layout/layout1.jsp
12,46 → 12,52
<script type="text/javascript">
function horizontal() {
 
var navItems = document.getElementById("menu_dropdown").getElementsByTagName("li");
var navItems = document.getElementById("menu_dropdown").getElementsByTagName("li");
 
for (var i=0; i< navItems.length; i++) {
if(navItems[i].className == "submenu")
{
if(navItems[i].getElementsByTagName('ul')[0] != null)
{
navItems[i].onmouseover=function() {
this.getElementsByTagName('ul')[0].style.display="block";}
navItems[i].onmouseout=function() {this.getElementsByTagName('ul')[0].style.display="none";}
}
}
}
for (var i=0; i< navItems.length; i++) {
if(navItems[i].className == "submenu")
{
if(navItems[i].getElementsByTagName('ul')[0] != null)
{
navItems[i].onmouseover=function() {
this.getElementsByTagName('ul')[0].style.display="block";}
navItems[i].onmouseout=function() {this.getElementsByTagName('ul')[0].style.display="none";}
}
}
}
 
}
</script>
</head>
<body class="small" marginwidth="0" marginheight="0" bgcolor="#ffffff" topmargin="0" leftmargin="0" onload="horizontal();">
<div id="body">
<div id="header">
<tiles:insert attribute="header"/>
</div>
<table class="pageDefault">
<tr>
<td colspan="2"><tiles:insert attribute="navigationTop"/></td>
</tr>
<tr>
<td id="leftPage">
<tiles:insert attribute="navigation" />
</td>
<td class="content">
<tiles:insert attribute="topnav"/>
<tiles:insert attribute="body" />
</td>
</tr>
</table>
<div id="footer">
<tiles:insert attribute="footer"/>
</div>
</div>
<table width="100%">
<tr>
<td align="center">
<div id="body">
<div id="header">
<tiles:insert attribute="header"/>
</div>
<table class="pageDefault">
<tr>
<td colspan="2"><tiles:insert attribute="navigationTop"/></td>
</tr>
<tr>
<td id="leftPage">
<tiles:insert attribute="navigation" />
</td>
<td class="content">
<tiles:insert attribute="topnav"/>
<tiles:insert attribute="body" />
</td>
</tr>
</table>
<div id="footer">
<tiles:insert attribute="footer"/>
</div>
</div>
</td>
</tr>
</table>
</body>
</html:html>
 
/impl/src/web/layout/layout2.jsp
12,43 → 12,49
<script type="text/javascript">
function horizontal() {
 
var navItems = document.getElementById("menu_dropdown").getElementsByTagName("li");
var navItems = document.getElementById("menu_dropdown").getElementsByTagName("li");
 
for (var i=0; i< navItems.length; i++) {
if(navItems[i].className == "submenu")
{
if(navItems[i].getElementsByTagName('ul')[0] != null)
{
navItems[i].onmouseover=function() {
this.getElementsByTagName('ul')[0].style.display="block";}
navItems[i].onmouseout=function() {this.getElementsByTagName('ul')[0].style.display="none";}
}
}
}
for (var i=0; i< navItems.length; i++) {
if(navItems[i].className == "submenu")
{
if(navItems[i].getElementsByTagName('ul')[0] != null)
{
navItems[i].onmouseover=function() {
this.getElementsByTagName('ul')[0].style.display="block";}
navItems[i].onmouseout=function() {this.getElementsByTagName('ul')[0].style.display="none";}
}
}
}
 
}
</script>
</head>
<body class="small" marginwidth="0" marginheight="0" bgcolor="#ffffff" topmargin="0" leftmargin="0" onload="horizontal();">
<div id="body">
<div id="header">
<tiles:insert attribute="header"/>
</div>
<table id="page">
<tr>
<td><tiles:insert attribute="navigationTop"/></td>
</tr>
<tr>
<td class="content">
<tiles:insert attribute="topnav"/>
<tiles:insert attribute="body" />
</td>
</tr>
</table>
<div id="footer">
<tiles:insert attribute="footer"/>
</div>
</div>
<table width="100%">
<tr>
<td align="center">
<div id="body">
<div id="header">
<tiles:insert attribute="header"/>
</div>
<table id="page">
<tr>
<td><tiles:insert attribute="navigationTop"/></td>
</tr>
<tr>
<td class="content">
<tiles:insert attribute="topnav"/>
<tiles:insert attribute="body" />
</td>
</tr>
</table>
<div id="footer">
<tiles:insert attribute="footer"/>
</div>
</div>
</td>
</tr>
</table>
</body>
</html:html>
 
/impl/src/web/layout/layoutPortal.jsp
32,6 → 32,9
 
 
<body class="small" marginwidth="0" marginheight="0" bgcolor="#ffffff" topmargin="0" leftmargin="0" onload="horizontal();">
<table width="100%">
<tr>
<td align="center">
<div id="body">
<div id="header">
<tiles:insert attribute="header"/>
62,6 → 65,9
<tiles:insert attribute="footer"/>
</div>
</div>
</td>
</tr>
</table>
</body>
</html:html>
 
/impl/src/web/layout/layout3.jsp
12,46 → 12,52
<script type="text/javascript">
function horizontal() {
 
var navItems = document.getElementById("menu_dropdown").getElementsByTagName("li");
var navItems = document.getElementById("menu_dropdown").getElementsByTagName("li");
 
for (var i=0; i< navItems.length; i++) {
if(navItems[i].className == "submenu")
{
if(navItems[i].getElementsByTagName('ul')[0] != null)
{
navItems[i].onmouseover=function() {
this.getElementsByTagName('ul')[0].style.display="block";}
navItems[i].onmouseout=function() {this.getElementsByTagName('ul')[0].style.display="none";}
}
}
}
for (var i=0; i< navItems.length; i++) {
if(navItems[i].className == "submenu")
{
if(navItems[i].getElementsByTagName('ul')[0] != null)
{
navItems[i].onmouseover=function() {
this.getElementsByTagName('ul')[0].style.display="block";}
navItems[i].onmouseout=function() {this.getElementsByTagName('ul')[0].style.display="none";}
}
}
}
 
}
</script>
</head>
<body class="small" marginwidth="0" marginheight="0" bgcolor="#ffffff" topmargin="0" leftmargin="0" onload="horizontal();">
<div id="body">
<div id="header">
<tiles:insert attribute="header"/>
</div>
<table id="page">
<tr>
<td colspan="2"><tiles:insert attribute="navigationTop"/></td>
</tr>
<tr>
<td class="content">
<tiles:insert attribute="topnav"/>
<tiles:insert attribute="body" />
</td>
<td class="rightPage">
<tiles:insert attribute="navigation" />
</td>
</tr>
</table>
<div id="footer">
<tiles:insert attribute="footer"/>
</div>
</div>
<table width="100%">
<tr>
<td align="center">
<div id="body">
<div id="header">
<tiles:insert attribute="header"/>
</div>
<table id="page">
<tr>
<td colspan="2"><tiles:insert attribute="navigationTop"/></td>
</tr>
<tr>
<td class="content">
<tiles:insert attribute="topnav"/>
<tiles:insert attribute="body" />
</td>
<td class="rightPage">
<tiles:insert attribute="navigation" />
</td>
</tr>
</table>
<div id="footer">
<tiles:insert attribute="footer"/>
</div>
</div>
</td>
</tr>
</table>
</body>
</html:html>
 
/impl/src/web/layout/layout4.jsp
31,6 → 31,9
 
 
<body class="small" marginwidth="0" marginheight="0" bgcolor="#ffffff" topmargin="0" leftmargin="0" onload="horizontal();">
<table width="100%">
<tr>
<td align="center">
<div id="body">
<div id="header">
<tiles:insert attribute="header"/>
56,6 → 59,9
<tiles:insert attribute="footer"/>
</div>
</div>
</td>
</tr>
</table>
</body>
</html:html>
 
/impl/src/web/layout/navigationLeft.jsp
22,6 → 22,9
<li>
<html:link action="/startSubmitAnnouncement"><bean:message key="submit.announcement"/></html:link>
</li>
<li>
<html:link action="/startSubmitBlog"><bean:message key="submit.blog"/></html:link>
</li>
 
<!--OTHER PLACES-->
<h2><bean:message key="Others"/></h2>
/impl/src/web/layout/navigationTop.jsp
6,73 → 6,118
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %>
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/tlds/struts-tiles.tld" prefix="tiles" %>
<%@ taglib uri="/WEB-INF/tlds/estgweb.tld" prefix="estgweb" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %>
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/tlds/struts-tiles.tld" prefix="tiles" %>
<%@ taglib uri="/WEB-INF/tlds/estgweb.tld" prefix="estgweb" %>
 
<div class="menuTop">
<table id="menuTop" cellpadding="0" cellspacing="0">
<tr>
<td>
<ul id="menu_dropdown" class="menubar">
<li class="submenu"><a href="#">Apresentação</a>
<div class="shadow ">
<ul class="menu">
<li><a href="#">Mensagem do Presidente</a></li>
<li><a href="#">A ESTG e a sua missão</a></li>
<li><a href="#">História</a></li>
<li><a href="#">Localização</a></li>
<li><a href="#">Factos e números</a></li>
<li><a href="#">A ESTG em Fotografias</a></li>
</ul>
</div>
</li>
<li class="submenu"><a href="#">Organização</a>
<div class="shadow ">
<ul class="menu">
<li><a href="#">Assembleia de Representantes</a></li>
<li><a href="#">Conselho Directivo</a></li>
<li><a href="#">Conselho Ciêntifico</a></li>
<li><a href="#">Conselho Pedagógico</a></li>
</ul>
</div>
</li>
<li class="submenu"><a href="#">Áreas</a>
<div class="shadow ">
<ul class="menu">
<li><a href="#">Engenharias</a></li>
<li><a href="#">Ciências Empresariais</a></li>
<li><a href="#">Ciências Humanas</a></li>
<li><a href="#">Design</a></li>
</ul>
</div>
</li>
<li class="submenu"><a href="#">Ensino</a>
<div class="shadow ">
<ul class="menu">
<li><a href="#">Cursos</a></li>
<li><a href="#">Mestrados</a></li>
<li><a href="#">Pós Graduações</a></li>
<li><a href="#">Cet´s</a></li>
<li><a href="#">Formação TIC</a></li>
<li><a href="#">Formação CTOC</a></li>
<li><a href="#">Acções de Formação de Curta Duração</a></li>
</ul>
</div>
</li>
<li class="submenu"><a href="#">I&D</a>
<div class="shadow ">
<ul class="menu">
<li><a href="#">OTIC-INOVAA</a></li>
<li><a href="#">POLIEMPRIENDE</a></li>
<li><a href="#">Gab. Empreendedorismo</a></li>
<li><a href="#">SGQ</a></li>
<li><a href="#">Protocolos com o Exterior</a></li>
<li><a href="#">LAQI Lab. Anal. Qui. e Industriais</a></li>
</ul>
</div>
</li>
<li class="submenu"><a href="#">Apresentação</a>
 
<div class="shadow ">
<ul class="menu">
<li><a href="#">Mensagem do Presidente</a></li>
<li><a href="#">A ESTG e a sua missão</a></li>
<li><a href="#">História</a></li>
<li><a href="#">Localização</a></li>
<li><a href="#">Factos e números</a></li>
<li><a href="#">A ESTG em Fotografias</a></li>
</ul>
</div>
</li>
<li class="submenu"><a href="#">Organização</a>
 
<div class="shadow ">
<ul class="menu">
<li><a href="#">Assembleia de Representantes</a></li>
<li><a href="#">Conselho Directivo</a></li>
<li><a href="#">Conselho Ciêntifico</a></li>
<li><a href="#">Conselho Pedagógico</a></li>
</ul>
</div>
</li>
<li class="submenu"><a href="#">Áreas</a>
 
<div class="shadow ">
<ul class="menu">
<li><a href="#">Engenharias</a></li>
<li><a href="#">Ciências Empresariais</a></li>
<li><a href="#">Ciências Humanas</a></li>
<li><a href="#">Design</a></li>
</ul>
</div>
</li>
<li class="submenu"><a href="#">Ensino</a>
 
<div class="shadow ">
<ul class="menu">
<li><a href="#">Cursos</a></li>
<li><a href="#">Mestrados</a></li>
<li><a href="#">Pós Graduações</a></li>
<li><a href="#">Cet´s</a></li>
<li><a href="#">Formação TIC</a></li>
<li><a href="#">Formação CTOC</a></li>
<li><a href="#">Acções de Formação de Curta Duração</a></li>
</ul>
</div>
</li>
<li class="submenu"><a href="#">I&D</a>
 
<div class="shadow ">
<ul class="menu">
<li><a href="#">OTIC-INOVAA</a></li>
<li><a href="#">POLIEMPRIENDE</a></li>
<li><a href="#">Gab. Empreendedorismo</a></li>
<li><a href="#">SGQ</a></li>
<li><a href="#">Protocolos com o Exterior</a></li>
<li><a href="#">LAQI Lab. Anal. Qui. e Industriais</a></li>
</ul>
</div>
</li>
</ul>
<estgweb:pageUrlStat><img src="<%=request.getContextPath()%>/imgs/grafico.gif" style="border:0;"></estgweb:pageUrlStat>
<estgweb:pageUrlStat><img src="<%=request.getContextPath()%>/imgs/grafico.gif" style="border:0;">
</estgweb:pageUrlStat>
</td>
<td class="searchTab">
<html:form action="/search">
<input type="hidden" name="dispatch" value="search">
<table>
 
<tr>
<td>
<bean:message key="search"/>
</td>
<td>
<html:text styleClass="small" property="query" value=""/>
</td>
<td>
<input type="button" onclick="set(this.form,'search');this.form.submit()" value="<bean:message key="search"/>">
</td>
 
</tr>
<tr>
<td nowrap="nowrap" colspan="3">
<table>
<tr>
<td><html:radio property="searchType" value="search.type.all"/></td>
<td><bean:message key="search.type.all"/></td>
<td><html:radio property="searchType" value="search.type.any"/></td>
<td><bean:message key="search.type.any"/></td>
<td><html:radio property="searchType" value="search.type.phrase"/></td>
<td><bean:message key="search.type.phrase"/></td>
</tr>
</table>
</td>
</tr>
</table>
</html:form>
</td>
</tr>
</table>
</div>
 
/impl/src/web/layout/layoutintranet.jsp
New file
0,0 → 1,57
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %>
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/tlds/struts-tiles.tld" prefix="tiles" %>
<html:html locale="true">
<head>
<title><bean:message key="site.title"/> - <tiles:getAsString name="title"/></title>
<link type="text/css" rel="stylesheet" href="<%=request.getContextPath()%>/css/intranet.css"/>
<jsp:include page="/layout/scripts.jsp"/>
 
<script type="text/javascript">
function horizontal() {
 
var navItems = document.getElementById("menu_dropdown").getElementsByTagName("li");
 
for (var i=0; i< navItems.length; i++) {
if(navItems[i].className == "submenu")
{
if(navItems[i].getElementsByTagName('ul')[0] != null)
{
navItems[i].onmouseover=function() {
this.getElementsByTagName('ul')[0].style.display="block";}
navItems[i].onmouseout=function() {this.getElementsByTagName('ul')[0].style.display="none";}
}
}
}
 
}
</script>
</head>
<body class="small" marginwidth="0" marginheight="0" bgcolor="#ffffff" topmargin="0" leftmargin="0" onload="horizontal();">
<div id="body">
<div id="header">
<tiles:insert attribute="header"/>
</div>
<table id="page">
<tr>
<td><tiles:insert attribute="navigationTop"/></td>
</tr>
<tr>
<td class="content">
<tiles:insert attribute="topnav"/>
<tiles:insert attribute="separators"/>
<tiles:insert attribute="body" />
</td>
</tr>
</table>
<div id="footer">
<tiles:insert attribute="footer"/>
</div>
</div>
</body>
</html:html>
 
/impl/src/web/layout/separators.jsp
New file
0,0 → 1,46
<%--
Created by IntelliJ IDEA.
User: Susana Monteiro
Date: 23/Abr/2008
Time: 15:05:50
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<div id="testeTop">
<%
int sep = Integer.parseInt(request.getParameter("separator"));
String sep1 = "";
String sep2 = "";
String sep3 = "";
 
String link1 = "href=\"" + request.getContextPath() + "/startTeste2.do?separator=1\"";
String link2 = "href=\"" + request.getContextPath() + "/startTeste2.do?separator=2\"";
String link3 = "href=\"" + request.getContextPath() + "/startTeste2.do?separator=3\"";
 
if(sep == 1)
{
sep1 ="class=\"selected\"";
link1 = "";
}
else if(sep == 2)
{
sep2 ="class=\"selected\"";
link2 = "";
}
else if(sep == 3)
{
link3 = "";
sep3 ="class=\"selected\"";
}
%>
<div id="separators">
<ul>
 
<li <%=sep1%>>
<a <%=link1%>><span> Home </span></a>
</li>
<li <%=sep2%>> <a <%=link2%>> <span>Cadeiras</span> </a></li>
<li <%=sep3%>> <a <%=link3%>><span>Perfil</span> </a></li>
</ul>
</div>
</div>
/impl/src/web/public/search/searchResults.jsp
New file
0,0 → 1,66
<%@ page import="pt.estgp.estgweb.services.common.*" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %>
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/tlds/struts-tiles.tld" prefix="tiles" %>
 
 
<div id="searchResults" class="listClean">
 
<ul>
 
<logic:iterate id="searchResults" name="ICommonSearchResults" property="searchResults"
type="pt.estgp.estgweb.services.common.ISearchResults">
<li>
<h2>
<bean:message key="${searchResults.module.messageKey}"/>
<b>(${searchResults.totalResults})</b> <a id="${searchResults.module.messageKey}SeeMore"
href="javascript:show('${searchResults.module.messageKey}','${searchResults.module.messageKey}SeeMore')">ver
mais</a></h2>
 
<div class="module" id="<%=searchResults.getModule().getMessageKey()%>">
<div id="${searchResults.module.messageKey}Results">
<logic:iterate id="result" name="searchResults" property="results"
type="pt.estgp.estgweb.services.common.IResult">
<div class="result">
<h2><a href="<%=request.getContextPath()%>${result.url}">${result.title}</a>
<logic:notEmpty name="result" property="subTitle">
(
<logic:equal value="true" name="result" property="subTitleKey">
<bean:message key="${result.subTitle}"/>
</logic:equal>
<logic:notEqual value="true" name="result" property="subTitleKey">
${result.subTitle}
</logic:notEqual>
)
</logic:notEmpty>
</h2>
 
<p>${result.bestFragments} ...</p>
</div>
</logic:iterate>
Pages:
<logic:equal value="true" name="searchResults" property="hasPreviousPage">
<a href="javascript:searchCall('${ISearchResults.module.messageKey}Results','${ISearchResults.query}','${ISearchResults.searchType}','${ISearchResults.previousPage}','${ISearchResults.module.messageKey}','<%=request.getContextPath()%>/search.do')">&lt; previous</a>
</logic:equal>
${searchResults.page2Screen}
<logic:equal value="true" name="searchResults" property="hasNextPage">
<a href="javascript:searchCall('${searchResults.module.messageKey}Results','${searchResults.query}','${searchResults.searchType}','${searchResults.nextPage}','${searchResults.module.messageKey}','<%=request.getContextPath()%>/search.do')">next &gt;</a>
</logic:equal>
</div>
<h3>
<a href="javascript:hide('${searchResults.module.messageKey}','${searchResults.module.messageKey}SeeMore')">Fechar</a>
</h3>
</div>
</li>
</logic:iterate>
<li>
<h2>TESTE DE APARENCIA NAO TA FEITO Eventos <b>(4)</b> <a href="javascript:show('${searchResults.module.messageKey}')">ver mais</a></h2>
</li>
<li>
<h2>TESTE DE APARENCIA NAO TA FEITO Pessoas <b>(42)</b> <a href="javascript:show('${searchResults.module.messageKey}')">ver mais</a></h2>
</li>
</ul>
</div>
/impl/src/web/public/search/searchForm.jsp
New file
0,0 → 1,51
<%@ page import="pt.estgp.estgweb.web.form.commons.SearchForm" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %>
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/tlds/struts-tiles.tld" prefix="tiles" %>
 
<html:errors/>
<%
String query = request.getParameter("query");
String searchType = request.getParameter("searchType");
SearchForm searchForm = new SearchForm();
searchForm.setQuery(query);
searchForm.setSearchType(searchType);
request.setAttribute("SearchForm", searchForm);
 
%>
 
<html:form action="/search">
<input type="hidden" name="dispatch" value="search">
<table>
 
<tr>
<td>
<bean:message key="search"/>
</td>
<td>
<html:text size="100%" styleClass="small" property="query" value=""/>
</td>
<td>
<input type="button" onclick="set(this.form,'search');this.form.submit()" value="<bean:message key="search"/>">
</td>
 
</tr>
<tr>
<td nowrap="nowrap" colspan="3">
<table>
<tr>
<td><html:radio property="searchType" value="search.type.all"/></td>
<td><bean:message key="search.type.all"/></td>
<td><html:radio property="searchType" value="search.type.any"/></td>
<td><bean:message key="search.type.any"/></td>
<td><html:radio property="searchType" value="search.type.phrase"/></td>
<td><bean:message key="search.type.phrase"/></td>
</tr>
</table>
</td>
</tr>
</table>
</html:form>
/impl/src/web/public/search/searchResultsModule.jsp
New file
0,0 → 1,37
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="pt.estgp.estgweb.services.common.*" %>
<%@ page import="pt.estgp.estgweb.services.common.*" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %>
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/tlds/struts-tiles.tld" prefix="tiles" %>
<logic:iterate id="result" name="ISearchResults" property="results"
type="pt.estgp.estgweb.services.common.IResult">
<div class="result">
<h2><a href="<%=request.getContextPath()%>${result.url}">${result.title}</a>
<logic:notEmpty name="result" property="subTitle">
(
<logic:equal value="true" name="result" property="subTitleKey">
<bean:message key="${result.subTitle}"/>
</logic:equal>
<logic:notEqual value="true" name="result" property="subTitleKey">
${result.subTitle}
</logic:notEqual>
)
</logic:notEmpty>
</h2>
 
<p>${result.bestFragments} ...</p>
</div>
</logic:iterate>
Pages:
<logic:equal value="true" name="ISearchResults" property="hasPreviousPage">
<a href="javascript:searchCall('${ISearchResults.module.messageKey}Results','${ISearchResults.query}','${ISearchResults.searchType}','${ISearchResults.previousPage}','${ISearchResults.module.messageKey}','<%=request.getContextPath()%>/search.do')">&lt; previous</a>
</logic:equal>
${ISearchResults.page2Screen}
<logic:equal value="true" name="ISearchResults" property="hasNextPage">
<a href="javascript:searchCall('${ISearchResults.module.messageKey}Results','${ISearchResults.query}','${ISearchResults.searchType}','${ISearchResults.nextPage}','${ISearchResults.module.messageKey}','<%=request.getContextPath()%>/search.do')">next &gt;</a>
</logic:equal>
 
 
/impl/src/web/public/search/noresults.jsp
New file
0,0 → 1,21
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %>
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/tlds/struts-tiles.tld" prefix="tiles" %>
<div class="seccao">
<bean:message key="search.no.results"/>
<b>
<%=request.getParameter("query")%>
</b>
<br/>
<bean:message key="search.no.results.suggest"/>:<br/>
<ul>
<li><bean:message key="search.no.results.suggest.1"/></li>
<li><bean:message key="search.no.results.suggest.2"/></li>
<li><bean:message key="search.no.results.suggest.3"/></li>
</ul>
</div>
 
<jsp:include page="/public/search/searchForm.jsp"/>
/impl/src/web/public/search/topnavSearchResults.jsp
New file
0,0 → 1,11
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@page import="jomm.web.utils.NavPlaceServer"%>
<%@ page import="jomm.web.utils.TopNav" %>
<%
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request);
topNav.addNavPlace("/Welcome.do", "Home");
topNav.addNavPlace("/startSearch.do?query=" + request.getParameter("query") + "&searchType=" +request.getParameter("searchType"), "search.form");
topNav.addNavPlace(null, "search.results");
%>
<jsp:include page="/layout/topnav.jsp"/>
/impl/src/web/public/search/topnavSearchForm.jsp
New file
0,0 → 1,12
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
<%@page import="java.util.*"%>
<%@ page import="jomm.web.utils.NavPlace" %>
<%@ page import="jomm.web.utils.NavPlaceServer" %>
<%@ page import="jomm.web.utils.TopNav" %>
<%
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request);
topNav.addNavPlace("/Welcome.do", "Home");
topNav.addNavPlace(null, "search.form");
%>
<jsp:include page="/layout/topnav.jsp"/>
/impl/src/web/public/blogs/blog.jsp
New file
0,0 → 1,30
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %>
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %>
<%@ taglib uri="/WEB-INF/tlds/estgweb.tld" prefix="estgweb" %>
<jsp:useBean id="BlogView" type="pt.estgp.estgweb.domain.views.BlogView" scope="request"/>
 
<div class="seccao">
 
<h1><bean:write name="BlogView" property="title"/></h1>
 
<p>
<%
if(BlogView.getImage() != null)
{
%>
<img align="left" alt="<%=BlogView.getTitle()%>" src="<%=request.getContextPath()%>/imageStream/<%=BlogView.getImage().getId()%>">
<%
}
%>
${BlogView.description}
</p>
 
<p class="pFooter">
<bean:message key="blog.owner"/> <a href="mailto:${BlogView.ownerEmail}">${BlogView.owner.name}</a> <bean:message key="at"/> ${BlogView.formatedSaveDate}
</p>
</div>
 
/impl/src/web/public/announcements/loadAnnouncement.jsp
7,32 → 7,34
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %>
<jsp:useBean id="Announcement" type="pt.estgp.estgweb.domain.views.AnnouncementView" scope="request"/>
 
<div class="pageSection">
<div class="sectionTitle">
<h2>${Announcement.title}</h2>
<div class="seccao">
<h2>${Announcement.title}</h2>
<p>
<%
if(Announcement.getBigImage() != null)
{
%>
<div class="imageAnnouncement">
<img align="left" alt="<%=Announcement.getTitle()%>" src="<%=request.getContextPath()%>/imageStream/<%=Announcement.getBigImage().getId()%>">
</div>
<div class="pageText">
<%
if(Announcement.getBigImage() != null)
{
%>
<img align="left" alt="<%=Announcement.getTitle()%>" src="<%=request.getContextPath()%>/imageStream/<%=Announcement.getBigImage().getId()%>">
<%
}
else if(Announcement.getSmallImage() != null)
{
%>
<%
}
else if(Announcement.getSmallImage() != null)
{
%>
<div class="imageAnnouncement">
<img align="left" alt="<%=Announcement.getTitle()%>" src="<%=request.getContextPath()%>/imageStream/<%=Announcement.getSmallImage().getId()%>">
<%
}
%>
${Announcement.text}
<%
if(Announcement.getUrl()!=null)
{
%>
<html:link href="${Announcement.url}">Ver +</html:link>
<%
</div>
<%
}
%>
${Announcement.text}
<%
if(Announcement.getUrl()!=null)
{
%>
<html:link href="${Announcement.url}">Ver +</html:link>
<%
}%>
</div>
</p>
</div>
/impl/src/web/user/index.jsp
New file
0,0 → 1,12
 
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ 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" %>
<%@ taglib uri="/WEB-INF/tlds/estgweb.tld" prefix="estgweb" %>
<estgweb:hasRole role="teacher">
 
 
</estgweb:hasRole>
/impl/src/web/user/home.jsp
New file
0,0 → 1,8
<%--
Created by IntelliJ IDEA.
User: Susana Monteiro
Date: 23/Abr/2008
Time: 15:10:16
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
/impl/gen/java/pt/estgp/estgweb/domain/Course.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 22/Abr/2008 19:12:49 by Hibernate Tools 3.2.0.b9
// Generated 23/Abr/2008 18:42:25 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 22/Abr/2008 19:12:49 by Hibernate Tools 3.2.0.b9
// Generated 23/Abr/2008 18:42:25 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 22/Abr/2008 19:12:49 by Hibernate Tools 3.2.0.b9
// Generated 23/Abr/2008 18:42:25 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 22/Abr/2008 19:12:49 by Hibernate Tools 3.2.0.b9
// Generated 23/Abr/2008 18:42:25 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 22/Abr/2008 19:12:49 by Hibernate Tools 3.2.0.b9
// Generated 23/Abr/2008 18:42:25 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 22/Abr/2008 19:12:49 by Hibernate Tools 3.2.0.b9
// Generated 23/Abr/2008 18:42:25 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 22/Abr/2008 19:12:49 by Hibernate Tools 3.2.0.b9
// Generated 23/Abr/2008 18:42:25 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 22/Abr/2008 19:12:49 by Hibernate Tools 3.2.0.b9
// Generated 23/Abr/2008 18:42:25 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 22/Abr/2008 19:12:49 by Hibernate Tools 3.2.0.b9
// Generated 23/Abr/2008 18:42:25 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 22/Abr/2008 19:12:49 by Hibernate Tools 3.2.0.b9
// Generated 23/Abr/2008 18:42:25 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/impl/gen/java/pt/estgp/estgweb/domain/dao/impl/GenericUserDao.java
1,5 → 1,5
package pt.estgp.estgweb.domain.dao.impl;
// Generated 21/Abr/2008 15:54:30 by Hibernate Tools 3.2.0.b9
// Generated 23/Abr/2008 18:42:27 by Hibernate Tools 3.2.0.b9
 
 
import org.apache.log4j.Logger;
/impl/gen/java/pt/estgp/estgweb/domain/dao/impl/UserDao.java
1,5 → 1,5
package pt.estgp.estgweb.domain.dao.impl;
// Generated 21/Abr/2008 15:54:30 by Hibernate Tools 3.2.0.b9
// Generated 23/Abr/2008 18:42:27 by Hibernate Tools 3.2.0.b9
 
 
import org.apache.log4j.Logger;
/impl/gen/java/pt/estgp/estgweb/domain/dao/impl/UrlStatYearDao.java
1,5 → 1,5
package pt.estgp.estgweb.domain.dao.impl;
// Generated 21/Abr/2008 15:54:30 by Hibernate Tools 3.2.0.b9
// Generated 23/Abr/2008 18:42:27 by Hibernate Tools 3.2.0.b9
 
 
import org.apache.log4j.Logger;
/impl/gen/java/pt/estgp/estgweb/domain/dao/impl/UrlStatMonthIdDao.java
1,5 → 1,5
package pt.estgp.estgweb.domain.dao.impl;
// Generated 21/Abr/2008 15:54:30 by Hibernate Tools 3.2.0.b9
// Generated 23/Abr/2008 18:42:27 by Hibernate Tools 3.2.0.b9
 
 
import org.apache.log4j.Logger;
/impl/gen/java/pt/estgp/estgweb/domain/dao/impl/UserSessionDao.java
1,5 → 1,5
package pt.estgp.estgweb.domain.dao.impl;
// Generated 21/Abr/2008 15:54:30 by Hibernate Tools 3.2.0.b9
// Generated 23/Abr/2008 18:42:27 by Hibernate Tools 3.2.0.b9
 
 
import org.apache.log4j.Logger;
/impl/gen/java/pt/estgp/estgweb/domain/dao/impl/ImageDao.java
1,5 → 1,5
package pt.estgp.estgweb.domain.dao.impl;
// Generated 21/Abr/2008 15:54:30 by Hibernate Tools 3.2.0.b9
// Generated 23/Abr/2008 18:42:27 by Hibernate Tools 3.2.0.b9
 
 
import org.apache.log4j.Logger;
/impl/gen/java/pt/estgp/estgweb/domain/dao/impl/BlogDao.java
1,5 → 1,5
package pt.estgp.estgweb.domain.dao.impl;
// Generated 21/Abr/2008 15:54:30 by Hibernate Tools 3.2.0.b9
// Generated 23/Abr/2008 18:42:27 by Hibernate Tools 3.2.0.b9
 
 
import org.apache.log4j.Logger;
/impl/gen/java/pt/estgp/estgweb/domain/dao/impl/TesteDao.java
1,5 → 1,5
package pt.estgp.estgweb.domain.dao.impl;
// Generated 21/Abr/2008 15:54:30 by Hibernate Tools 3.2.0.b9
// Generated 23/Abr/2008 18:42:27 by Hibernate Tools 3.2.0.b9
 
 
import org.apache.log4j.Logger;
/impl/gen/java/pt/estgp/estgweb/domain/dao/impl/SessionObjectIdDao.java
1,5 → 1,5
package pt.estgp.estgweb.domain.dao.impl;
// Generated 21/Abr/2008 15:54:30 by Hibernate Tools 3.2.0.b9
// Generated 23/Abr/2008 18:42:27 by Hibernate Tools 3.2.0.b9
 
 
import org.apache.log4j.Logger;
/impl/gen/java/pt/estgp/estgweb/domain/dao/impl/BlogPostDao.java
1,5 → 1,5
package pt.estgp.estgweb.domain.dao.impl;
// Generated 21/Abr/2008 15:54:30 by Hibernate Tools 3.2.0.b9
// Generated 23/Abr/2008 18:42:27 by Hibernate Tools 3.2.0.b9
 
 
import org.apache.log4j.Logger;
/impl/gen/java/pt/estgp/estgweb/domain/dao/impl/AnnouncementDao.java
1,5 → 1,5
package pt.estgp.estgweb.domain.dao.impl;
// Generated 21/Abr/2008 15:54:30 by Hibernate Tools 3.2.0.b9
// Generated 23/Abr/2008 18:42:27 by Hibernate Tools 3.2.0.b9
 
 
import org.apache.log4j.Logger;
/impl/gen/java/pt/estgp/estgweb/domain/dao/impl/UrlStatYearIdDao.java
1,5 → 1,5
package pt.estgp.estgweb.domain.dao.impl;
// Generated 21/Abr/2008 15:54:30 by Hibernate Tools 3.2.0.b9
// Generated 23/Abr/2008 18:42:27 by Hibernate Tools 3.2.0.b9
 
 
import org.apache.log4j.Logger;
/impl/gen/java/pt/estgp/estgweb/domain/dao/impl/CourseUserAssociationDao.java
1,5 → 1,5
package pt.estgp.estgweb.domain.dao.impl;
// Generated 21/Abr/2008 15:54:30 by Hibernate Tools 3.2.0.b9
// Generated 23/Abr/2008 18:42:27 by Hibernate Tools 3.2.0.b9
 
 
import org.apache.log4j.Logger;
/impl/gen/java/pt/estgp/estgweb/domain/dao/impl/GroupDao.java
1,5 → 1,5
package pt.estgp.estgweb.domain.dao.impl;
// Generated 21/Abr/2008 15:54:30 by Hibernate Tools 3.2.0.b9
// Generated 23/Abr/2008 18:42:27 by Hibernate Tools 3.2.0.b9
 
 
import org.apache.log4j.Logger;
/impl/gen/java/pt/estgp/estgweb/domain/dao/impl/UrlStatDayDao.java
1,5 → 1,5
package pt.estgp.estgweb.domain.dao.impl;
// Generated 21/Abr/2008 15:54:30 by Hibernate Tools 3.2.0.b9
// Generated 23/Abr/2008 18:42:27 by Hibernate Tools 3.2.0.b9
 
 
import org.apache.log4j.Logger;
/impl/gen/java/pt/estgp/estgweb/domain/dao/impl/UrlStatDao.java
1,5 → 1,5
package pt.estgp.estgweb.domain.dao.impl;
// Generated 21/Abr/2008 15:54:30 by Hibernate Tools 3.2.0.b9
// Generated 23/Abr/2008 18:42:27 by Hibernate Tools 3.2.0.b9
 
 
import org.apache.log4j.Logger;
/impl/gen/java/pt/estgp/estgweb/domain/dao/impl/CourseDao.java
1,5 → 1,5
package pt.estgp.estgweb.domain.dao.impl;
// Generated 21/Abr/2008 15:54:30 by Hibernate Tools 3.2.0.b9
// Generated 23/Abr/2008 18:42:27 by Hibernate Tools 3.2.0.b9
 
 
import org.apache.log4j.Logger;
/impl/gen/java/pt/estgp/estgweb/domain/dao/impl/UrlStatMonthDao.java
1,5 → 1,5
package pt.estgp.estgweb.domain.dao.impl;
// Generated 21/Abr/2008 15:54:30 by Hibernate Tools 3.2.0.b9
// Generated 23/Abr/2008 18:42:27 by Hibernate Tools 3.2.0.b9
 
 
import org.apache.log4j.Logger;
/impl/gen/java/pt/estgp/estgweb/domain/dao/impl/UrlStatDayIdDao.java
1,5 → 1,5
package pt.estgp.estgweb.domain.dao.impl;
// Generated 21/Abr/2008 15:54:30 by Hibernate Tools 3.2.0.b9
// Generated 23/Abr/2008 18:42:27 by Hibernate Tools 3.2.0.b9
 
 
import org.apache.log4j.Logger;
/impl/gen/java/pt/estgp/estgweb/domain/dao/impl/SessionObjectDao.java
1,5 → 1,5
package pt.estgp.estgweb.domain.dao.impl;
// Generated 21/Abr/2008 15:54:30 by Hibernate Tools 3.2.0.b9
// Generated 23/Abr/2008 18:42:27 by Hibernate Tools 3.2.0.b9
 
 
import org.apache.log4j.Logger;
/impl/gen/java/pt/estgp/estgweb/domain/Blog.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 22/Abr/2008 19:12:49 by Hibernate Tools 3.2.0.b9
// Generated 23/Abr/2008 18:42:25 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/impl/gen/java/pt/estgp/estgweb/domain/Teste.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 22/Abr/2008 19:12:49 by Hibernate Tools 3.2.0.b9
// Generated 23/Abr/2008 18:42:25 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/impl/gen/java/pt/estgp/estgweb/domain/SessionObjectId.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 22/Abr/2008 19:12:49 by Hibernate Tools 3.2.0.b9
// Generated 23/Abr/2008 18:42:25 by Hibernate Tools 3.2.0.b9
 
 
 
/impl/gen/java/pt/estgp/estgweb/domain/BlogPost.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 22/Abr/2008 19:12:49 by Hibernate Tools 3.2.0.b9
// Generated 23/Abr/2008 18:42:25 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/impl/gen/java/pt/estgp/estgweb/domain/Announcement.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 22/Abr/2008 19:12:49 by Hibernate Tools 3.2.0.b9
// Generated 23/Abr/2008 18:42:25 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 22/Abr/2008 19:12:49 by Hibernate Tools 3.2.0.b9
// Generated 23/Abr/2008 18:42:25 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 22/Abr/2008 19:12:49 by Hibernate Tools 3.2.0.b9
// Generated 23/Abr/2008 18:42:25 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/impl/gen/java/pt/estgp/estgweb/domain/CourseUserAssociation.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 22/Abr/2008 19:12:49 by Hibernate Tools 3.2.0.b9
// Generated 23/Abr/2008 18:42:25 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 22/Abr/2008 19:12:49 by Hibernate Tools 3.2.0.b9
// Generated 23/Abr/2008 18:42:25 by Hibernate Tools 3.2.0.b9
 
 
 
/impl/gen/java/pt/estgp/estgweb/domain/UrlStat.java
1,5 → 1,5
package pt.estgp.estgweb.domain;
// Generated 22/Abr/2008 19:12:49 by Hibernate Tools 3.2.0.b9
// Generated 23/Abr/2008 18:42:25 by Hibernate Tools 3.2.0.b9
 
 
import java.util.Date;
/impl/build.xml
60,6 → 60,9
<fileset dir="${common.lib.dir}/jfreechart">
<include name="**/*.jar"/>
</fileset>
<fileset dir="${common.lib.dir}/lucene">
<include name="**/*.jar"/>
</fileset>
</path>
 
 
255,6 → 258,9
<fileset dir="${common.lib.dir}/jfreechart">
<include name="**/*.jar"/>
</fileset>
<fileset dir="${common.lib.dir}/lucene">
<include name="**/*.jar"/>
</fileset>
</copy>
<copy file="${dist.dir}/estgweb.jar" todir="${build.dir.war}/WEB-INF/lib"/>
<copy todir="${build.dir.war}/WEB-INF" overwrite="true">
/impl
Property changes:
Added: svn:ignore
+ local.properties
/common/mysql/mysql-connector-java-3.0.15-ga-bin.jar
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/common/mysql/mysql-connector-java-5.1.6-bin.jar
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+ application/octet-stream
/common/lucene/lucene-highlighter-2.2.0.jar
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+ application/octet-stream
/common/lucene/lucene-similarity-2.2.0.jar
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+ application/octet-stream
/common/lucene/lucene-core-2.2.0.jar
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+ application/octet-stream