Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 198 → Rev 202

/impl/conf/language/MessageResourcesIntranet.properties
10,8 → 10,8
intranet.my.blogs=Os Meus Blogs
intranet.course.units.announcements=Anúncios da Minhas Unidades Curriculares
 
intranet.separator.service.zone.back=Voltar ao meu HOTSPOT
intranet.separator.service.zone=HOTSPOT
intranet.separator.service.zone.back=Voltar aos Serviços
intranet.separator.service.zone=Serviços
intranet.separator.home=Home
intranet.separator.course.units=Unidades Curriculares
intranet.separator.profile=Perfil
21,4 → 21,6
 
intranet.my.blog.posts=Os Meus Posts
 
intranet.course.unit.announcements=Os anúncios das minhas Unidades
course.unit.announcements.zero.announcements=Zero anúncios
 
/impl/conf/language/MessageResourcesBlog.properties
12,6 → 12,7
blog.status.valid=Válido
blog.status.not.valid=Por validar
blog.title=Titulo
blog.name=Nome do Blog (será usado como prefixo do sitio WEB)
blog.description=Descrição
blog.image=Imagem
blog.target.roles=Pessoas a quem destina
28,3 → 29,19
blog.post.created.success=Post adicionado com sucesso
 
blog.old.months=Meses Anteriores
blog.confirm.delete=Tem a certeza que deseja apagar o Blog Selecionado? Todos os Posts serão apagados do Sistema.
blog.deleted.success=Blog apagado com sucesso.
blog.deleted.fail=O Blog não foi apagado, contacte a administração.
blog.add.post=Adicionar POST
blog.delete.post=Apagar POST
blog.confirm.delete.post=Tem a certeza que deseja apagar o POST Selecionado?
blog.post.deleted.success=POST apagado com sucesso.
blog.post.deleted.fail=O POST não foi apagado, contacte a administração.
 
blog.name.already.exist=O nome que atribuiu ao blog já existe
blog.bad.name=O nome que escolheu par o blog não é válido. Por favor escolha um nome contendo apenas os seguintes caracteres: de 'a' a 'z', de 'A' a 'Z', de '0' a '9' , '-' ou '_'
 
 
 
 
 
/impl/conf/WEB-INF/struts/struts-blog.xml
25,6 → 25,7
<action path="/startLoadBlogMonth" forward="/blogsController.do?dispatch=loadMonth"/>
<action path="/startLoadBlog" forward="/blogsController.do?dispatch=load"/>
<action path="/startLoadBlogByName" forward="/blogsController.do?dispatch=loadByName"/>
<action path="/startEditBlog" forward="/blogsController.do?dispatch=edit"/>
<action path="/startDeleteBlog" forward="/blogsController.do?dispatch=delete"/>
<action path="/startSubmitBlog" forward="/blogsController.do?dispatch=start"/>
/impl/conf/WEB-INF/struts/tiles-blog.xml
26,42 → 26,35
</definition>
 
 
<definition name="page.submit.blog.from.home" extends="base.separators">
<definition name="page.submit.blog.from.home" extends="page.separators.home">
<put name="title" value="Submit Blog"/>
<put name="separator" value="1" type="string"/>
<put name="topnav" value="/user/home/topnavCreateBlog.jsp"/>
<put name="body" value="/admin/blogs/submitBlog.jsp"/>
</definition>
<definition name="page.submit.blog.from.serviceZone" extends="base.separators">
<definition name="page.submit.blog.from.serviceZone" extends="page.separators.serviceZone">
<put name="title" value="Submit Blog"/>
<put name="separator" value="4" type="string"/>
<put name="topnav" value="/user/serviceZone/topnavCreateBlog.jsp"/>
<put name="body" value="/admin/blogs/submitBlog.jsp"/>
</definition>
<definition name="page.load.blog.from.home" extends="base.separators">
<definition name="page.load.blog.from.home" extends="page.separators.home">
<put name="title" value="Load Blog"/>
<put name="separator" value="1" type="string"/>
<put name="topnav" value="/user/home/topnavLoadBlog.jsp"/>
<put name="body" value="/public/blogs/blog.jsp"/>
</definition>
<definition name="page.load.blog.month.from.home" extends="base.separators">
<definition name="page.load.blog.month.from.home" extends="page.separators.home">
<put name="title" value="Load Blog"/>
<put name="separator" value="1" type="string"/>
<put name="topnav" value="/user/home/topnavLoadBlogMonth.jsp"/>
<put name="body" value="/public/blogs/blog.jsp"/>
</definition>
<definition name="page.load.blog.from.serviceZone" extends="base.separators">
<definition name="page.load.blog.from.serviceZone" extends="page.separators.serviceZone">
<put name="title" value="Load Blog"/>
<put name="separator" value="4" type="string"/>
<put name="topnav" value="/user/serviceZone/topnavLoadBlog.jsp"/>
<put name="body" value="/public/blogs/blog.jsp"/>
</definition>
<definition name="page.load.blog.month.from.serviceZone" extends="base.separators">
<definition name="page.load.blog.month.from.serviceZone" extends="page.separators.serviceZone">
<put name="title" value="Load Blog"/>
<put name="separator" value="4" type="string"/>
<put name="topnav" value="/user/serviceZone/topnavLoadBlogMonth.jsp"/>
<put name="body" value="/public/blogs/blog.jsp"/>
</definition>
 
 
</tiles-definitions>
/impl/conf/WEB-INF/tlds/baco.tld
71,6 → 71,20
</attribute>
</tag>
<tag>
<name>canLoad</name>
<tagclass>pt.estgp.estgweb.web.tags.CanLoadTag</tagclass>
<attribute>
<name>name</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>property</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
</tag>
<tag>
<name>isAuthenticated</name>
<tagclass>pt.estgp.estgweb.web.tags.IsAuthenticatedTag</tagclass>
</tag>
/impl/conf/WEB-INF/web.xml
170,6 → 170,14
<servlet-name>BlogServlet</servlet-name>
<url-pattern>/blog/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>BlogServlet</servlet-name>
<url-pattern>/blogger/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>BlogServlet</servlet-name>
<url-pattern>/blogspot/*</url-pattern>
</servlet-mapping>
 
<!--START FILES-->
<welcome-file-list>
197,6 → 205,10
<location>/error500.do</location>
</error-page>
<error-page>
<exception-type>pt.estgp.estgweb.filters.exceptions.NotFoundException</exception-type>
<location>/error404.do</location>
</error-page>
<error-page>
<exception-type>java.io.FileNotFoundException</exception-type>
<location>/error404.do</location>
</error-page>
/impl/conf/berserk/sd.xml
133,8 → 133,10
<chain name="Logger"/>
<chain name="Session"/>
<!--<chain name="Admins"/>-->
<chain name="ExistAnnouncement"/>
<chain name="InternalAnnouncement"/>
<chain name="TargetRolesAnnouncement"/>
<chain name="CanLoadAnnouncement"/>
</filterChains>
</service>
<service>
227,6 → 229,51
</filterChains>
</service>
<service>
<name>CheckBlogName</name>
<implementationClass>pt.estgp.estgweb.services.blogs.CheckBlogNameService</implementationClass>
<description>Check if a name is good and if already exists for a Blog</description>
<isTransactional>true</isTransactional>
<filterChains>
</filterChains>
</service>
<service>
<name>EditBlog</name>
<implementationClass>pt.estgp.estgweb.services.blogs.CreateBlogService</implementationClass>
<description>Edit a Blog</description>
<isTransactional>true</isTransactional>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
<!--<chain name="Admins"/>-->
<chain name="OwnersEdit"/>
<!--<chain name="OwnersEditOnlyIfNotValid"/>-->
<!--<chain name="ContextObjectTimer"/>-->
<!--<chain name="ContextStaticTimerExample"/>-->
</filterChains>
</service>
<service>
<name>DeleteBlog</name>
<implementationClass>pt.estgp.estgweb.services.blogs.DeleteBlogService</implementationClass>
<description>Delete an Blog</description>
<isTransactional>true</isTransactional>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
<chain name="OwnersLoadBlog"/>
</filterChains>
</service>
<service>
<name>DeleteBlogPost</name>
<implementationClass>pt.estgp.estgweb.services.blogs.DeleteBlogPostService</implementationClass>
<description>Delete a Post</description>
<isTransactional>true</isTransactional>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
<chain name="OwnerBlogPost"/>
</filterChains>
</service>
<service>
<name>CreateBlogPost</name>
<implementationClass>pt.estgp.estgweb.services.blogs.CreateBlogPostService</implementationClass>
<description>Create a Blog Post</description>
247,9 → 294,35
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
<chain name="ExistBlog"/>
<chain name="InternalBlog"/>
<chain name="TargetRolesBlog"/>
<chain name="CanLoadBlog"/>
</filterChains>
</service>
<service>
<name>LoadBlogIdByName</name>
<implementationClass>pt.estgp.estgweb.services.blogs.LoadBlogService</implementationClass>
<description>Load a Blog</description>
<isTransactional>true</isTransactional>
<defaultMethod>loadIdByName</defaultMethod>
<filterChains>
</filterChains>
</service>
<service>
<name>LoadEditBlog</name>
<implementationClass>pt.estgp.estgweb.services.blogs.LoadBlogService</implementationClass>
<description>Load an Announcement view</description>
<isTransactional>true</isTransactional>
<defaultMethod>loadIndex</defaultMethod>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
<!--<chain name="Admins"/>-->
<chain name="OwnersLoadBlog"/>
</filterChains>
</service>
<service>
<name>LoadBlogByDate</name>
<implementationClass>pt.estgp.estgweb.services.blogs.LoadBlogService</implementationClass>
<description>Load a Blog in a specfied month and year</description>
258,6 → 331,9
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
<chain name="InternalBlog"/>
<chain name="TargetRolesBlog"/>
<chain name="CanLoadBlog"/>
</filterChains>
</service>
<service>
293,32 → 369,9
<chain name="AuthenticatedUsers"/>
</filterChains>
</service>
<service>
<name>LoadBlogPostsByDate</name>
<implementationClass>pt.estgp.estgweb.services.blogs.LoadBlogPostsService</implementationClass>
<description>Load BlogPosts in a given month</description>
<isTransactional>true</isTransactional>
<defaultMethod>loadByDate</defaultMethod>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
<!--<chain name="TargetUsers"/>-->
</filterChains>
</service>
<service>
<name>LoadLastBlogPosts</name>
<implementationClass>pt.estgp.estgweb.services.blogs.LoadBlogPostsService</implementationClass>
<description>Load last Blog Posts</description>
<isTransactional>true</isTransactional>
<defaultMethod>loadLastPosts</defaultMethod>
<filterChains>
<chain name="Logger"/>
<chain name="Session"/>
<!--<chain name="TargetUsers"/>-->
</filterChains>
</service>
 
 
 
<!--CommonServices-->
<service>
<name>CommonServicesSearch</name>
524,4 → 577,40
</filterChains>
</service>
 
<!--Course Units-->
<service>
<name>LoadTeachedUnits</name>
<implementationClass>pt.estgp.estgweb.services.courseunits.LoadTeachedUnitsService</implementationClass>
<description>Load teacher units</description>
<isTransactional>true</isTransactional>
<filterChains>
</filterChains>
</service>
<service>
<name>LoadSubscribedUnits</name>
<implementationClass>pt.estgp.estgweb.services.courseunits.LoadSubscribedUnitsService</implementationClass>
<description>Load student units</description>
<isTransactional>true</isTransactional>
<filterChains>
</filterChains>
</service>
<service>
<name>LoadSubscribedUnitsAnnouncements</name>
<implementationClass>pt.estgp.estgweb.services.courseunits.LoadSubscribedUnitsAnnouncementsService</implementationClass>
<description>Load student units</description>
<isTransactional>true</isTransactional>
<filterChains>
<chain name="Session"/>
</filterChains>
</service>
<service>
<name>LoadTeachedUnitsAnnouncements</name>
<implementationClass>pt.estgp.estgweb.services.courseunits.LoadTeachedUnitsAnnouncementsService</implementationClass>
<description>Load student units</description>
<isTransactional>true</isTransactional>
<filterChains>
<chain name="Session"/>
</filterChains>
</service>
 
</serviceDefinitions>
/impl/conf/berserk/fd.xml
12,6 → 12,12
<isTransactional>false</isTransactional>
</filter>
<filter>
<name>ExistObject</name>
<implementationClass>pt.estgp.estgweb.filters.filters.ExistLoadClass</implementationClass>
<description>Checks if the object exist if not throws NotFoundException</description>
<isTransactional>false</isTransactional>
</filter>
<filter>
<name>TargetRoleUsersClass</name>
<implementationClass>pt.estgp.estgweb.filters.filters.TargetRoleUsersClass</implementationClass>
<description>Checks if the object contains contains target roles from user</description>
48,6 → 54,12
<isTransactional>false</isTransactional>
</filter>
<filter>
<name>CanLoadClass</name>
<implementationClass>pt.estgp.estgweb.filters.filters.CanLoadClass</implementationClass>
<description>Checks if the requester can specificly Load a specified object looking inside object specific grants</description>
<isTransactional>false</isTransactional>
</filter>
<filter>
<name>ContextStaticTimer</name>
<implementationClass>pt.estgp.estgweb.filters.filters.ContextStaticTimer</implementationClass>
<description>Checks if the now time is between start and end date</description>
/impl/conf/berserk/fcd.xml
91,6 → 91,20
<invocationTiming>1</invocationTiming>
<filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
</filterChain>
<filterChain>
<name>CanLoadAnnouncement</name>
<expression>CanLoadClass("serializable","pt.estgp.estgweb.domain.AnnouncementImpl")</expression>
<description>Owner of an object Control Chain</description>
<invocationTiming>1</invocationTiming>
<filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
</filterChain>
<filterChain>
<name>ExistAnnouncement</name>
<expression>ExistObject("serializable","pt.estgp.estgweb.domain.AnnouncementImpl")</expression>
<description>Not Found Control</description>
<invocationTiming>1</invocationTiming>
<filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
</filterChain>
 
 
 
114,6 → 128,48
<invocationTiming>1</invocationTiming>
<filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
</filterChain>
<filterChain>
<name>CanLoadBlog</name>
<expression>CanLoadClass("serializable","pt.estgp.estgweb.domain.BlogImpl")</expression>
<description>Owner of an object Control Chain</description>
<invocationTiming>1</invocationTiming>
<filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
</filterChain>
<filterChain>
<name>InternalBlog</name>
<expression>InternalObject("serializable","pt.estgp.estgweb.domain.BlogImpl")</expression>
<description>Check if the object is internal</description>
<invocationTiming>1</invocationTiming>
<filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
</filterChain>
<filterChain>
<name>TargetRolesBlog</name>
<expression>TargetRoleUsersClass("serializable","pt.estgp.estgweb.domain.BlogImpl") || OwnerUsersClass("serializable","pt.estgp.estgweb.domain.BlogImpl")</expression>
<description>Owner of an object Control Chain</description>
<invocationTiming>1</invocationTiming>
<filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
</filterChain>
<filterChain>
<name>OwnersLoadBlog</name>
<expression>OwnerUsersClass("serializable","pt.estgp.estgweb.domain.BlogImpl")</expression>
<description>Owner of an object Control Chain</description>
<invocationTiming>1</invocationTiming>
<filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
</filterChain>
<filterChain>
<name>OwnerBlogPost</name>
<expression>OwnerUsersClass("serializable","pt.estgp.estgweb.domain.BlogPostImpl")</expression>
<description>Owner of an object Control Chain</description>
<invocationTiming>1</invocationTiming>
<filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
</filterChain>
<filterChain>
<name>ExistBlog</name>
<expression>ExistObject("serializable","pt.estgp.estgweb.domain.BlogImpl")</expression>
<description>Not Found Control</description>
<invocationTiming>1</invocationTiming>
<filterClass>pt.estgp.estgweb.filters.chains.LoadControlFilter</filterClass>
</filterChain>
 
 
 
124,6 → 180,7
 
 
 
 
<filterChain>
<name>ContextStaticTimerExample</name>
<expression>ContextStaticTimer("2008-03-1 12:00:00","2008-03-2 19:56:00")</expression>
/impl/src/java/jomm/utils/StringsUtils.java
13,14 → 13,14
if (textOriginal == null)
return null;
String text = textOriginal.trim();
if(text.length() == 0)
if (text.length() == 0)
return text;
if (text.length() > size)
if(text.substring(0, size).lastIndexOf(' ')>=0)
if (text.substring(0, size).lastIndexOf(' ') >= 0)
return text.substring(0, text.substring(0, size).lastIndexOf(' ')) + "...";
else
return
text.substring(0,size) + "...";
text.substring(0, size) + "...";
return text;
}
 
54,4 → 54,27
}
return finalFormatedText.toString();
}
 
public static boolean checkLetters09AZazHiffenUnderScore(String candidate)
{
if (candidate == null)
return false;
candidate = candidate.trim();
for (int i = 0; i < candidate.length(); i++)
{
char c = candidate.charAt(i);
if (
(c >= '0' && c <= '9') ||
(c >= 'a' && c <= 'z') ||
(c >= 'A' && c <= 'Z') ||
(c == '-') ||
(c == '_'))
{
 
}
else
return false;
}
return true;
}
}
/impl/src/java/pt/estgp/estgweb/services/courseunits/LoadTeachedUnitsAnnouncementsService.java
New file
0,0 → 1,48
package pt.estgp.estgweb.services.courseunits;
 
import pt.utl.ist.berserk.logic.serviceManager.IService;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.views.AnnouncementView;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.services.courseunits.impl.DefaultCourseUnitAnnouncements;
 
import java.util.List;
import java.util.ArrayList;
import java.util.Set;
 
/**
* @author Jorge Machado
* @date 2/Jun/2008
* @see pt.estgp.estgweb.services.courseunits
*/
public class LoadTeachedUnitsAnnouncementsService implements IService
{
public List<ICourseUnitAnnouncements> run(UserSession userSession)
{
List<ICourseUnitAnnouncements> courseUnitAnnouncementsLst = new ArrayList<ICourseUnitAnnouncements>();
if(!(userSession.getUser() instanceof Teacher))
return courseUnitAnnouncementsLst;
 
Teacher t = DaoFactory.getTeacherDaoImpl().load(userSession.getUser().getId());
Set<CourseUnit> units = t.getTeachedUnits();
if(units == null)
return courseUnitAnnouncementsLst;
for(CourseUnit c: units)
{
if(c.getAnnouncements() != null && c.getAnnouncements().size()>0)
{
DefaultCourseUnitAnnouncements courseUnitAnnouncements = new DefaultCourseUnitAnnouncements();
courseUnitAnnouncements.setCourseUnit(c);
List<AnnouncementView> announcementViews = new ArrayList<AnnouncementView>();
for(Announcement a :c.getAnnouncements())
{
AnnouncementView aV = new AnnouncementView(a);
announcementViews.add(aV);
}
courseUnitAnnouncements.setAnnouncements(announcementViews);
courseUnitAnnouncementsLst.add(courseUnitAnnouncements);
}
}
return courseUnitAnnouncementsLst;
}
}
/impl/src/java/pt/estgp/estgweb/services/courseunits/LoadTeachedUnitsService.java
New file
0,0 → 1,27
package pt.estgp.estgweb.services.courseunits;
 
import pt.utl.ist.berserk.logic.serviceManager.IService;
import pt.estgp.estgweb.domain.CourseUnit;
import pt.estgp.estgweb.domain.Teacher;
import pt.estgp.estgweb.domain.dao.DaoFactory;
 
import java.util.Set;
 
/**
* @author Jorge Machado
* @date 2/Jun/2008
* @see pt.estgp.estgweb.services.courseunits
*/
public class LoadTeachedUnitsService implements IService
{
public Set<CourseUnit> run(long teacherId)
{
Teacher t = DaoFactory.getTeacherDaoImpl().load(teacherId);
Set<CourseUnit> units = t.getTeachedUnits();
for(CourseUnit c: units)
{
c.getName();
}
return units;
}
}
/impl/src/java/pt/estgp/estgweb/services/courseunits/impl/DefaultCourseUnitAnnouncements.java
New file
0,0 → 1,40
package pt.estgp.estgweb.services.courseunits.impl;
 
import pt.estgp.estgweb.domain.CourseUnit;
import pt.estgp.estgweb.domain.views.AnnouncementView;
import pt.estgp.estgweb.services.courseunits.ICourseUnitAnnouncements;
 
import java.util.List;
 
/**
* @author Jorge Machado
* @date 2/Jun/2008
* @see pt.estgp.estgweb.services.courseunits.impl
*/
public class DefaultCourseUnitAnnouncements implements ICourseUnitAnnouncements
{
 
private CourseUnit courseUnit;
private List<AnnouncementView> announcements;
 
 
public CourseUnit getCourseUnit()
{
return courseUnit;
}
 
public void setCourseUnit(CourseUnit courseUnit)
{
this.courseUnit = courseUnit;
}
 
public List<AnnouncementView> getAnnouncements()
{
return announcements;
}
 
public void setAnnouncements(List<AnnouncementView> announcements)
{
this.announcements = announcements;
}
}
/impl/src/java/pt/estgp/estgweb/services/courseunits/ICourseUnitAnnouncements.java
New file
0,0 → 1,17
package pt.estgp.estgweb.services.courseunits;
 
import pt.estgp.estgweb.domain.CourseUnit;
import pt.estgp.estgweb.domain.views.AnnouncementView;
 
import java.util.List;
 
/**
* @author Jorge Machado
* @date 2/Jun/2008
* @see pt.estgp.estgweb.services.courseunits
*/
public interface ICourseUnitAnnouncements
{
public CourseUnit getCourseUnit();
public List<AnnouncementView> getAnnouncements();
}
/impl/src/java/pt/estgp/estgweb/services/courseunits/LoadSubscribedUnitsAnnouncementsService.java
New file
0,0 → 1,51
package pt.estgp.estgweb.services.courseunits;
 
import pt.utl.ist.berserk.logic.serviceManager.IService;
import pt.estgp.estgweb.domain.CourseUnit;
import pt.estgp.estgweb.domain.Student;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.Announcement;
import pt.estgp.estgweb.domain.views.AnnouncementView;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.services.courseunits.impl.DefaultCourseUnitAnnouncements;
 
import java.util.Set;
import java.util.List;
import java.util.ArrayList;
 
/**
* @author Jorge Machado
* @date 2/Jun/2008
* @see pt.estgp.estgweb.services.courseunits
*/
public class LoadSubscribedUnitsAnnouncementsService implements IService
{
public List<ICourseUnitAnnouncements> run(UserSession userSession)
{
List<ICourseUnitAnnouncements> courseUnitAnnouncementsLst = new ArrayList<ICourseUnitAnnouncements>();
if(!(userSession.getUser() instanceof Student))
return courseUnitAnnouncementsLst;
 
Student t = DaoFactory.getStudentDaoImpl().load(userSession.getUser().getId());
Set<CourseUnit> units = t.getSubscribedUnits();
if(units == null)
return courseUnitAnnouncementsLst;
for(CourseUnit c: units)
{
if(c.getAnnouncements() != null && c.getAnnouncements().size()>0)
{
DefaultCourseUnitAnnouncements courseUnitAnnouncements = new DefaultCourseUnitAnnouncements();
courseUnitAnnouncements.setCourseUnit(c);
List<AnnouncementView> announcementViews = new ArrayList<AnnouncementView>();
for(Announcement a :c.getAnnouncements())
{
AnnouncementView aV = new AnnouncementView(a);
announcementViews.add(aV);
}
courseUnitAnnouncements.setAnnouncements(announcementViews);
courseUnitAnnouncementsLst.add(courseUnitAnnouncements);
}
}
return courseUnitAnnouncementsLst;
}
}
/impl/src/java/pt/estgp/estgweb/services/courseunits/LoadSubscribedUnitsService.java
New file
0,0 → 1,27
package pt.estgp.estgweb.services.courseunits;
 
import pt.estgp.estgweb.domain.CourseUnit;
import pt.estgp.estgweb.domain.Student;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.utl.ist.berserk.logic.serviceManager.IService;
 
import java.util.Set;
 
/**
* @author Jorge Machado
* @date 2/Jun/2008
* @see pt.estgp.estgweb.services.courseunits
*/
public class LoadSubscribedUnitsService implements IService
{
public Set<CourseUnit> run(long studentId)
{
Student t = DaoFactory.getStudentDaoImpl().load(studentId);
Set<CourseUnit> units = t.getSubscribedUnits();
for(CourseUnit c: units)
{
c.getName();
}
return units;
}
}
/impl/src/java/pt/estgp/estgweb/services/blogs/CheckBlogNameService.java
New file
0,0 → 1,27
package pt.estgp.estgweb.services.blogs;
 
import jomm.utils.StringsUtils;
import pt.estgp.estgweb.domain.BlogImpl;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.services.expceptions.ServiceException;
import pt.utl.ist.berserk.logic.serviceManager.IService;
 
import java.util.List;
 
/**
* @author Jorge Machado
* @date 2/Jun/2008
* @time 11:03:00
* @see pt.estgp.estgweb.web
*/
public class CheckBlogNameService implements IService
{
public boolean run(String name, long blogId) throws ServiceException
{
if(!StringsUtils.checkLetters09AZazHiffenUnderScore(name))
return false;
List<BlogImpl> bs = DaoFactory.getBlogDaoImpl().findByName(name);
return bs.size() <= 0 || bs.get(0).getId() == blogId;
}
}
/impl/src/java/pt/estgp/estgweb/services/blogs/LoadBlogService.java
5,6 → 5,7
import pt.estgp.estgweb.domain.views.BlogPostView;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.Blog;
import pt.estgp.estgweb.domain.BlogImpl;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.services.expceptions.ServiceException;
import org.apache.log4j.Logger;
90,4 → 91,14
}
return monthIds;
}
 
public Long loadIdByName(String name) throws ServiceException
{
List<BlogImpl> blogs = DaoFactory.getBlogDaoImpl().findByName(name);
if(blogs.size() == 0)
return null;
 
else
return blogs.get(0).getId();
}
}
/impl/src/java/pt/estgp/estgweb/services/blogs/DeleteBlogService.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.announcements.DeleteAnnouncementService;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import org.apache.log4j.Logger;
 
import java.io.Serializable;
 
/*
* @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 DeleteBlogService implements IService
{
 
private static final Logger logger = Logger.getLogger(DeleteBlogService.class);
 
 
 
public Boolean run(Serializable id, UserSession userSession)
{
try
{
logger.info("Deleting blog:" + id + " user:" + userSession.getUser().getUsername());
DaoFactory.getBlogDaoImpl().delete(id);
return true;
}
catch(Exception e)
{
logger.error("Can't delete blog:"+id +""+e);
return false;
}
}
}
/impl/src/java/pt/estgp/estgweb/services/blogs/CreateBlogService.java
4,6 → 4,7
import pt.estgp.estgweb.services.expceptions.ServiceException;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.Blog;
import pt.estgp.estgweb.domain.DomainObjectFactory;
import pt.estgp.estgweb.domain.views.BlogView;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.Globals;
29,13 → 30,23
{
private static final Logger logger = Logger.getLogger(CreateBlogService.class);
 
public BlogView run(Blog b, UserSession userSession) throws ServiceException
public BlogView run(BlogView bV, UserSession userSession) throws ServiceException
{
Blog b;
if(bV.getId() <= 0)
{
b = DomainObjectFactory.createBlogImpl();
b.setOwner(userSession.getUser());
b.setSaveDate(new Date());
DaoFactory.getBlogDaoImpl().save(b);
}
else
{
b = DaoFactory.getBlogDaoImpl().get(bV.getSerializable());
}
bV.persistViewInObject(b);
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/blogs/DeleteBlogPostService.java
New file
0,0 → 1,45
package pt.estgp.estgweb.services.blogs;
 
import pt.utl.ist.berserk.logic.serviceManager.IService;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.dao.DaoFactory;
import org.apache.log4j.Logger;
 
import java.io.Serializable;
 
/*
* @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 DeleteBlogPostService implements IService
{
 
private static final Logger logger = Logger.getLogger(DeleteBlogPostService.class);
 
 
 
public Boolean run(Serializable id, UserSession userSession)
{
try
{
logger.info("Deleting blog post:" + id + " user:" + userSession.getUser().getUsername());
DaoFactory.getBlogPostDaoImpl().delete(id);
return true;
}
catch(Exception e)
{
logger.error("Can't delete blog post:"+id +""+e);
return false;
}
}
}
/impl/src/java/pt/estgp/estgweb/services/blogs/LoadBlogPostsService.java
55,4 → 55,6
}
return bPV;
}
 
}
/impl/src/java/pt/estgp/estgweb/services/announcements/DeleteAnnouncementService.java
34,13 → 34,13
{
try
{
logger.info("Deleting announcement:" + id);
logger.info("Deleting announcement:" + id+ " user:" + userSession.getUser().getUsername());
DaoFactory.getAnnouncementDaoImpl().delete(id);
return true;
}
catch(Exception e)
{
logger.error("Can´t delete announcement:"+id +""+e);
logger.error("Can't delete announcement:"+id +""+e);
return false;
}
}
/impl/src/java/pt/estgp/estgweb/domain/StudentImpl.java
1,8 → 1,14
package pt.estgp.estgweb.domain;
 
import pt.estgp.estgweb.utils.RoleManager;
import pt.estgp.estgweb.Globals;
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager;
 
import java.util.Set;
import java.util.HashSet;
 
import org.apache.log4j.Logger;
 
/**
* @author Jorge Machado
* @date 28/Fev/2008
14,16 → 20,73
 
public static final String STUDENT_ROLE = Globals.STUDENT_ROLE;
 
public static final Logger logger = Logger.getLogger(StudentImpl.class);
 
private Set<CourseUnit> subscribedUnitsView = null;
private Set<CourseUnitAnnouncementImpl> courseUnitAnnouncementsView = null;
 
public String getManagedRole() {
return STUDENT_ROLE;
}
 
public Set<CourseUnit> getSubscribedUnitsView()
{
if(subscribedUnitsView == null)
{
try
{
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{"serializable"};
Object[] args = new Object[]{getId()};
subscribedUnitsView = (Set<CourseUnit>) sm.execute(null, "LoadSubscribedUnits", args, names);
if(subscribedUnitsView == null)
subscribedUnitsView = new HashSet<CourseUnit>();
}
catch (Throwable e)
{
logger.error(e,e);
}
}
return subscribedUnitsView;
}
 
 
public Set<CourseUnitAnnouncementImpl> getCourseUnitAnnouncementsView()
{
if(courseUnitAnnouncementsView == null)
{
try
{
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{"serializable"};
Object[] args = new Object[]{getId()};
courseUnitAnnouncementsView = (Set<CourseUnitAnnouncementImpl>) sm.execute(null, "LoadSubscribedUnitsAnnouncements", args, names);
if(courseUnitAnnouncementsView == null)
courseUnitAnnouncementsView = new HashSet<CourseUnitAnnouncementImpl>();
}
catch (Throwable e)
{
logger.error(e,e);
}
}
return courseUnitAnnouncementsView;
}
 
public boolean hasCourseUnit(CourseUnit courseUnit)
{
if(getSubscribedUnits() == null)
return hasCourseUnit(courseUnit,false);
}
 
public boolean hasCourseUnit(CourseUnit courseUnit, boolean transaction)
{
Set<CourseUnit> cUnits;
if(transaction)
cUnits = getSubscribedUnits();
else
cUnits = getSubscribedUnitsView();
if(cUnits == null)
return false;
for(CourseUnit c: getSubscribedUnits())
for(CourseUnit c: cUnits)
{
if(c.getId() == courseUnit.getId())
return true;
/impl/src/java/pt/estgp/estgweb/domain/AnnouncementImpl.java
15,7 → 15,7
* @time 10:27:25
* @see pt.estgp.estgweb.domain
*/
public class AnnouncementImpl extends Announcement implements IOwned, IContextTimerObject, ITargetRoles, IInternal, IValid
public class AnnouncementImpl extends Announcement implements IOwned, IContextTimerObject, ITargetRoles, IInternal, IValid, ICanLoad
{
 
private static final Logger logger = Logger.getLogger(AnnouncementImpl.class);
72,4 → 72,14
{
return isStatus();
}
 
public boolean canLoad(GenericUserImpl u)
{
return true;
}
 
public boolean canLoadInOpenTransaction(GenericUserImpl u)
{
return true;
}
}
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/CourseUnitDaoImpl.java
16,7 → 16,8
{
 
 
private CourseUnitDaoImpl() {
private CourseUnitDaoImpl()
{
}
 
public static CourseUnitDaoImpl getInstance()
28,23 → 29,26
 
public List<CourseUnit> loadBySigesCode(String sigesCode)
{
return createCriteria().add(eq("code",sigesCode)).list();
return createCriteria().add(eq("code", sigesCode)).list();
}
 
public CourseUnit loadBySigesCodeUnique(String sigesCode)
{
return (CourseUnit) createCriteria().add(eq("code",sigesCode)).uniqueResult();
return (CourseUnit) createCriteria().add(eq("code", sigesCode)).uniqueResult();
}
 
public CourseUnit loadBySigesCodeUnique(String sigesCode,String courseCode)
{
return (CourseUnit) createCriteria().add(eq("code",sigesCode)).add(eq("courseCode",courseCode)).uniqueResult();
}
public CourseUnit loadBySigesCodeUnique(String sigesCode, String courseCode)
{
return (CourseUnit) createCriteria().add(eq("code", sigesCode)).add(eq("courseCode", courseCode)).uniqueResult();
}
 
public CourseUnit loadBySigesCodeUnique(String sigesCode,String courseCode,String semestre)
{
return (CourseUnit) createCriteria().add(eq("code",sigesCode)).add(eq("courseCode",courseCode)).add(eq("semestre",semestre)).uniqueResult();
}
public CourseUnit loadBySigesCodeUnique(String sigesCode, String courseCode, String semestre)
{
return (CourseUnit) createCriteria().add(eq("code", sigesCode)).add(eq("courseCode", courseCode)).add(eq("semestre", semestre)).uniqueResult();
}
 
 
 
 
}
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/BlogDaoImpl.java
65,4 → 65,9
.addOrder(Order.desc("title"));
return criteria.list();
}
 
public List<BlogImpl> findByName(String name)
{
return createCriteria().add(eq("name", name)).list();
}
}
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/StudentDaoImpl.java
1,8 → 1,11
package pt.estgp.estgweb.domain.dao.impl;
 
import pt.estgp.estgweb.domain.Student;
import pt.estgp.estgweb.domain.CourseUnit;
import static org.hibernate.criterion.Restrictions.*;
 
import java.util.Set;
 
/**
* @author Jorge Machado
* @date 28/Fev/2008
24,6 → 27,4
{
return (Student) createCriteria().add(eq("sigesCode",sigesCode)).uniqueResult();
}
 
 
}
/impl/src/java/pt/estgp/estgweb/domain/CourseUnitAnnouncementImpl.java
New file
0,0 → 1,47
package pt.estgp.estgweb.domain;
 
/**
* @author Jorge Machado
* @date 2/Jun/2008
* @see pt.estgp.estgweb.domain
*/
public class CourseUnitAnnouncementImpl extends CourseUnitAnnouncement
{
 
public boolean belongsUnit(GenericUserImpl user)
{
return belongsUnit(user,false);
}
/**
* Check if user associated in some way with the course unit
*
* @param user to check
* @return true if can add post
*/
public boolean belongsUnit(GenericUserImpl user, boolean transaction)
{
if(user == null)
return false;
if(user instanceof Teacher)
{
return ((TeacherImpl)user).hasCourseUnit(getCourseUnit(),transaction);
}
else if(user instanceof Student)
{
return ((StudentImpl)user).hasCourseUnit(getCourseUnit(),transaction);
}
return false;
}
 
 
public boolean canLoad(GenericUserImpl user)
{
return !isCourseUnitInternal() || belongsUnit(user);
}
 
public boolean canLoadInOpenTransaction(GenericUserImpl user)
{
return !isCourseUnitInternal() || belongsUnit(user,true);
}
 
}
/impl/src/java/pt/estgp/estgweb/domain/TeacherImpl.java
1,7 → 1,16
package pt.estgp.estgweb.domain;
 
import pt.estgp.estgweb.Globals;
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.exceptions.ServiceManagerException;
import pt.utl.ist.berserk.logic.filterManager.exceptions.*;
 
import java.util.Set;
import java.util.HashSet;
 
import org.apache.log4j.Logger;
 
/**
* @author Jorge Machado
* @date 28/Fev/2008
13,16 → 22,50
 
public static final String TEACHER_ROLE = Globals.TEACHER_ROLE;
 
public static final Logger logger = Logger.getLogger(TeacherImpl.class);
 
private Set<CourseUnit> teachedUnitsView = null;
 
public String getManagedRole() {
return TEACHER_ROLE;
}
 
public Set<CourseUnit> getTeachedUnitsView()
{
if(teachedUnitsView == null)
{
try
{
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{"serializable"};
Object[] args = new Object[]{getId()};
teachedUnitsView = (Set<CourseUnit>) sm.execute(null, "LoadTeachedUnits", args, names);
if(teachedUnitsView == null)
teachedUnitsView = new HashSet<CourseUnit>();
}
catch (Throwable e)
{
logger.error(e,e);
}
}
return teachedUnitsView;
}
 
public boolean hasCourseUnit(CourseUnit courseUnit)
{
if(getTeachedUnits() == null)
return hasCourseUnit(courseUnit,false);
}
 
public boolean hasCourseUnit(CourseUnit courseUnit, boolean transaction)
{
Set<CourseUnit> cUnits;
if(transaction)
cUnits = getTeachedUnits();
else
cUnits = getTeachedUnitsView();
if(cUnits == null)
return false;
for(CourseUnit c: getTeachedUnits())
for(CourseUnit c: cUnits)
{
if(c.getId() == courseUnit.getId())
return true;
/impl/src/java/pt/estgp/estgweb/domain/BlogImpl.java
14,7 → 14,7
* @time 14:37:50
* @see pt.estgp.estgweb.domain
*/
public class BlogImpl extends Blog implements IAddContents, IOwned, IInternal, ITargetRoles
public class BlogImpl extends Blog implements IAddContents, IOwned, IInternal, ITargetRoles, IValid, ICanLoad
{
 
private static final Logger logger = Logger.getLogger(BlogImpl.class);
65,4 → 65,20
{
return getId();
}
 
public boolean isValid()
{
return isStatus();
}
 
 
public boolean canLoad(GenericUserImpl u)
{
return true;
}
 
public boolean canLoadInOpenTransaction(GenericUserImpl u)
{
return true;
}
}
/impl/src/java/pt/estgp/estgweb/domain/ICanLoad.java
New file
0,0 → 1,15
package pt.estgp.estgweb.domain;
 
/**
* @author Jorge Machado
* @date 2/Mar/2008
* @time 10:28:05
* @see pt.estgp.estgweb.domain
*/
public interface ICanLoad
{
 
public boolean canLoad(GenericUserImpl u);
public boolean canLoadInOpenTransaction(GenericUserImpl u);
 
}
/impl/src/java/pt/estgp/estgweb/domain/BlogPostImpl.java
9,16 → 9,47
* @time 14:38:08
* @see pt.estgp.estgweb.domain
*/
public class BlogPostImpl extends BlogPost
public class BlogPostImpl extends BlogPost implements IOwned, IValid, IInternal, ICanLoad
{
public Serializable getSerializable()
{
return getId();
}
 
/*Not Implemented*/
/**
* Not implemeted
* @return null
*/
public List<String> getOwnerRoles()
{
return null;
}
 
/**
* Not implemented
*/
public String getChoosedOwnerRole()
{
return null;
}
 
public boolean isValid()
{
return isStatus();
}
 
public boolean isInternal()
{
return getBlog().isInternal();
}
 
public boolean canLoad(GenericUserImpl u)
{
return true;
}
 
public boolean canLoadInOpenTransaction(GenericUserImpl u)
{
return true;
}
}
/impl/src/java/pt/estgp/estgweb/domain/views/BlogPostView.java
14,7 → 14,7
* @time 19:34:49
* @see pt.estgp.estgweb.domain.views
*/
public class BlogPostView extends DomainObjectView implements IOwned
public class BlogPostView extends DomainObjectView implements IOwned, IInternal, IValid, ICanLoad
{
 
private static final Logger logger = Logger.getLogger(BlogPostView.class);
29,6 → 29,7
private boolean status;
private BlogPost blogPost;
private long blogId;
private boolean internal;
 
public BlogPostView()
{
45,6 → 46,7
this.id = blogPost.getId();
this.owner = blogPost.getOwner();
this.blogId = blogPost.getBlog().getId();
this.internal = blogPost.getBlog().isInternal();
}
 
public void persistViewInObject(BlogPost blogPost)
177,4 → 179,24
else
return null;
}
 
public boolean isInternal()
{
return internal;
}
 
public boolean isValid()
{
return status;
}
 
public boolean canLoad(GenericUserImpl u)
{
return ((BlogPostImpl)blogPost).canLoad(u);
}
 
public boolean canLoadInOpenTransaction(GenericUserImpl u)
{
return ((BlogPostImpl)blogPost).canLoadInOpenTransaction(u);
}
}
/impl/src/java/pt/estgp/estgweb/domain/views/AnnouncementView.java
19,7 → 19,7
* @time 19:34:49
* @see pt.estgp.estgweb.domain.views
*/
public class AnnouncementView extends DomainObjectView implements IOwned, IContextTimerObject, ITargetRoles, IInternal, IValid
public class AnnouncementView extends DomainObjectView implements IOwned, IContextTimerObject, ITargetRoles, IInternal, IValid, ICanLoad
{
 
private static Logger logger = Logger.getLogger(AnnouncementView.class);
356,4 → 356,14
{
return isStatus();
}
 
public boolean canLoad(GenericUserImpl u)
{
return ((AnnouncementImpl)announcement).canLoad(u);
}
 
public boolean canLoadInOpenTransaction(GenericUserImpl u)
{
return ((AnnouncementImpl)announcement).canLoadInOpenTransaction(u);
}
}
/impl/src/java/pt/estgp/estgweb/domain/views/BlogView.java
14,7 → 14,7
* @time 19:34:49
* @see pt.estgp.estgweb.domain.views
*/
public class BlogView extends DomainObjectView implements IAddContents, IOwned, IInternal, ITargetRoles
public class BlogView extends DomainObjectView implements IAddContents, IOwned, IInternal, ITargetRoles, IValid, ICanLoad
{
 
private static final Logger logger = Logger.getLogger(BlogView.class);
23,6 → 23,7
 
private long id;
private String title;
private String name;
private String description;
private List<String> targetRoles;
private Image image;
51,18 → 52,32
this.status = blog.isStatus();
this.id = blog.getId();
this.owner = blog.getOwner();
this.name = blog.getName();
}
 
public void persistViewInObject(Blog blog)
{
blog.setTitle(title);
blog.setName(name);
blog.setDescription(description);
blog.setTargetRoles(RoleManager.getSerialRoles(targetRoles));
blog.setImage(image);
if(image != null)
blog.setImage(image);
blog.setStatus(status);
blog.setInternal(internal);
}
 
 
public String getName()
{
return name;
}
 
public void setName(String name)
{
this.name = name;
}
 
public int getMonth()
{
return month;
241,6 → 256,16
return getTargetRoles();
}
 
public boolean isValid()
{
return status;
}
 
public boolean canLoad(GenericUserImpl u)
{
return ((BlogImpl)blog).canLoad(u);
}
 
public static class MonthPosts
{
private int count;
/impl/src/java/pt/estgp/estgweb/domain/CourseUnitBlogImpl.java
8,24 → 8,40
*/
public class CourseUnitBlogImpl extends CourseUnitBlog
{
public boolean canAddPost(GenericUserImpl user)
{
return canAddPost(user,false);
}
/**
* Check if user has any target role and if is associated in some way with blog course unit
*
* @param user to check
* @return true if can add post
*/
public boolean canAddPost(UserImpl user)
public boolean canAddPost(GenericUserImpl user, boolean transaction)
{
if(!super.canAddPost(user))
return false;
if(user == null)
return false;
if(user instanceof Teacher)
{
return ((TeacherImpl)user).hasCourseUnit(getCourseUnit());
return ((TeacherImpl)user).hasCourseUnit(getCourseUnit(),transaction);
}
else if(user instanceof Student)
{
return ((StudentImpl)user).hasCourseUnit(getCourseUnit());
return ((StudentImpl)user).hasCourseUnit(getCourseUnit(),transaction);
}
return false;
}
 
public boolean canLoad(GenericUserImpl user)
{
return !isCourseUnitInternal() || canAddPost(user);
}
 
public boolean canLoadInOpenTransaction(GenericUserImpl user)
{
return !isCourseUnitInternal() || canAddPost(user,true);
}
}
/impl/src/java/pt/estgp/estgweb/domain/DomainObjectFactory.java
13,6 → 13,11
return new AnnouncementImpl();
}
 
public static CourseUnitAnnouncementImpl createCourseUnitAnnouncementImpl()
{
return new CourseUnitAnnouncementImpl();
}
 
public static CourseImpl createCourseImpl()
{
return new CourseImpl();
93,6 → 98,11
return new BlogPostImpl();
}
 
public static CourseUnitBlogPostImpl createCourseUnitBlogPostImpl()
{
return new CourseUnitBlogPostImpl();
}
 
public static CourseUnitImpl createCourseUnitImpl()
{
return new CourseUnitImpl();
/impl/src/java/pt/estgp/estgweb/domain/CourseUnitBlogPostImpl.java
New file
0,0 → 1,29
package pt.estgp.estgweb.domain;
 
import org.apache.log4j.Logger;
 
/**
* @author Jorge Machado
* @date 2/Jun/2008
* @see pt.estgp.estgweb.domain
*/
public class CourseUnitBlogPostImpl extends CourseUnitBlogPost
{
private static final Logger logger = Logger.getLogger(CourseUnitBlogPostImpl.class);
 
 
public boolean canLoad(GenericUserImpl u)
{
if(!isCourseUnitInternal())
return true;
if(getBlog() instanceof CourseUnitBlog)
{
return ((CourseUnitBlogImpl)getBlog()).canLoad(u);
}
else
{
logger.fatal("ATENTION CourseUnitBlogPostImpl:" + getId() + " belongs to Blog: " + getBlog().getId() + " that is not form class: CourseUnitBlog");
return false;
}
}
}
/impl/src/java/pt/estgp/estgweb/filters/exceptions/NotFoundException.java
New file
0,0 → 1,15
package pt.estgp.estgweb.filters.exceptions;
 
import pt.utl.ist.berserk.logic.filterManager.exceptions.FilterException;
 
public class NotFoundException extends FilterException
{
public NotFoundException()
{
super();
}
public NotFoundException(String msg)
{
super(msg);
}
}
/impl/src/java/pt/estgp/estgweb/filters/filters/ExistLoadClass.java
New file
0,0 → 1,36
package pt.estgp.estgweb.filters.filters;
 
import pt.estgp.estgweb.filters.chains.LoadControlFilter;
import pt.estgp.estgweb.filters.filters.utils.LoadObjectFromParameters;
import pt.estgp.estgweb.filters.exceptions.AccessDeniedOperationException;
import pt.estgp.estgweb.filters.exceptions.NotFoundException;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.ICanLoad;
import pt.estgp.estgweb.domain.DomainObject;
import pt.estgp.estgweb.Globals;
import pt.utl.ist.berserk.ServiceRequest;
import pt.utl.ist.berserk.ServiceResponse;
import pt.utl.ist.berserk.logic.filterManager.FilterParameters;
import pt.utl.ist.berserk.logic.filterManager.exceptions.FilterException;
import org.apache.log4j.Logger;
import org.hibernate.HibernateException;
 
import java.io.Serializable;
 
public class ExistLoadClass extends LoadControlFilter
{
private static final Logger logger = Logger.getLogger(ExistLoadClass.class);
 
public void execute(ServiceRequest request, ServiceResponse response, FilterParameters filterParameters) throws FilterException, Exception
{
try
{
DomainObject obj = (DomainObject) LoadObjectFromParameters.loadObjectFromClassName((String) filterParameters.getParameter(1),filterParameters,request.getServiceParameters());
obj.getSaveDate();
}
catch(HibernateException ex)
{
throw new NotFoundException(ex.toString());
}
}
}
/impl/src/java/pt/estgp/estgweb/filters/filters/CanLoadClass.java
New file
0,0 → 1,41
package pt.estgp.estgweb.filters.filters;
 
import pt.estgp.estgweb.filters.chains.LoadControlFilter;
import pt.estgp.estgweb.filters.exceptions.NeedAuthenticationException;
import pt.estgp.estgweb.filters.exceptions.AccessDeniedOperationException;
import pt.estgp.estgweb.filters.filters.utils.LoadObjectFromParameters;
import pt.estgp.estgweb.domain.UserSession;
import pt.estgp.estgweb.domain.IAddContents;
import pt.estgp.estgweb.domain.ICanLoad;
import pt.estgp.estgweb.Globals;
import pt.utl.ist.berserk.ServiceRequest;
import pt.utl.ist.berserk.ServiceResponse;
import pt.utl.ist.berserk.logic.filterManager.FilterParameters;
import pt.utl.ist.berserk.logic.filterManager.exceptions.FilterException;
import org.apache.log4j.Logger;
 
public class CanLoadClass extends LoadControlFilter
{
private static final Logger logger = Logger.getLogger(CanLoadClass.class);
 
public void execute(ServiceRequest request, ServiceResponse response, FilterParameters filterParameters) throws FilterException, Exception
{
 
UserSession userSession = (UserSession) request.getServiceParameters().getParameter(Globals.USER_SESSION_KEY);
 
if(userSession.getUser() != null && userSession.getUser().isSuperuser())
return;
 
ICanLoad iCanLoad = (ICanLoad) LoadObjectFromParameters.loadObjectFromClassName((String) filterParameters.getParameter(1),filterParameters,request.getServiceParameters());
 
if(!iCanLoad.canLoadInOpenTransaction(userSession.getUser()))
{
if(userSession.getUser() != null)
logger.warn(userSession.getUser().getUsername() + ": try access restricted area");
else
logger.warn(userSession.getIpAddress() + ": try access restricted area");
 
throw new AccessDeniedOperationException("fail.owner");
}
}
}
/impl/src/java/pt/estgp/estgweb/web/form/blogs/BlogForm.java
6,7 → 6,12
import pt.estgp.estgweb.web.form.AddRolesForm;
import pt.estgp.estgweb.web.UserSessionProxy;
import pt.estgp.estgweb.web.utils.DatesUtils;
import pt.estgp.estgweb.web.utils.RequestUtils;
import pt.estgp.estgweb.Globals;
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager;
import pt.utl.ist.berserk.logic.serviceManager.exceptions.ServiceManagerException;
import pt.utl.ist.berserk.logic.filterManager.exceptions.*;
 
import org.apache.struts.upload.FormFile;
import org.apache.struts.action.ActionErrors;
15,6 → 20,8
import java.util.List;
import java.util.ArrayList;
 
import jomm.utils.StringsUtils;
 
/**
* @author Jorge Machado
* @date 21/Abr/2008
24,29 → 31,33
public class BlogForm extends AddRolesForm
{
private static final Logger logger = Logger.getLogger(BlogForm.class);
 
private BlogView blogView = new BlogView();
 
private BlogPostView blogPostView = new BlogPostView();
 
private FormFile image;
 
public BlogView getBlogView() {
public BlogView getBlogView()
{
return blogView;
}
 
public void setBlogView(BlogView blogView) {
public void setBlogView(BlogView blogView)
{
this.blogView = blogView;
}
 
public FormFile getImage() {
public FormFile getImage()
{
return image;
}
 
public void setImage(FormFile image) {
public void setImage(FormFile image)
{
this.image = image;
}
 
public BlogPostView getBlogPostView()
{
return blogPostView;
59,14 → 70,14
 
public ActionErrors validate(org.apache.struts.action.ActionMapping actionMapping, javax.servlet.http.HttpServletRequest httpServletRequest)
{
if(httpServletRequest.getParameter("dispatch").equals("save"))
if (httpServletRequest.getParameter("dispatch").equals("save"))
{
UserSessionImpl userSession = null;
try
{
userSession = (UserSessionImpl) UserSessionProxy.loadUserSessionFromRequest(httpServletRequest);
List<String> roles = (List<String>) userSession.get(TARGET_ROLES_KEY);
if(roles == null || roles.size() == 0)
if (roles == null || roles.size() == 0)
{
roles = new ArrayList<String>();
roles.add(targetRolesStr);
75,31 → 86,53
}
catch (Throwable throwable)
{
logger.error(throwable,throwable);
logger.error(throwable, throwable);
}
}
if(httpServletRequest.getParameter("dispatch").equals("addRole") || httpServletRequest.getParameter("dispatch").equals("removeRole"))
if (httpServletRequest.getParameter("dispatch").equals("addRole") || httpServletRequest.getParameter("dispatch").equals("removeRole"))
return null;
ActionErrors errors = new ActionErrors();
if(image.getFileSize() != 0 && image.getFileSize()>(Globals.MAX_BIGMAGE_FILE_SIZE_BYTES))
addMessage(errors,httpServletRequest,"blog.exceed.image.max.size");
if(blogView.getTitle() == null || blogView.getTitle().trim().length() == 0)
addMessageWithKeys(errors,httpServletRequest,"errors.required","blog.title");
if(blogView.getDescription() == null || blogView.getDescription().trim().length() == 0)
addMessageWithKeys(errors,httpServletRequest,"errors.required","blog.description");
if (image.getFileSize() != 0 && image.getFileSize() > (Globals.MAX_BIGMAGE_FILE_SIZE_BYTES))
addMessage(errors, httpServletRequest, "blog.exceed.image.max.size");
if (blogView.getTitle() == null || blogView.getTitle().trim().length() == 0)
addMessageWithKeys(errors, httpServletRequest, "errors.required", "blog.title");
if (blogView.getDescription() == null || blogView.getDescription().trim().length() == 0)
addMessageWithKeys(errors, httpServletRequest, "errors.required", "blog.description");
if(blogView.getName()!=null)
blogView.setName(blogView.getName().trim());
if(blogView.getName() == null || !StringsUtils.checkLetters09AZazHiffenUnderScore(blogView.getName()))
addMessage(errors, httpServletRequest, "blog.bad.name");
else
{
IServiceManager sm;
try
{
sm = ServiceManager.getInstance();
String[] names = new String[]{"serializable"};
Object[] args = new Object[]{blogView.getName(),blogView.getId()};
Boolean b = (Boolean) sm.execute(null, "CheckBlogName", args, names);
if (!b)
addMessage(errors, httpServletRequest, "blog.name.already.exist");
}
catch (Throwable e)
{
logger.error(e,e);
addMessage(errors, httpServletRequest, "error.500");
}
 
}
return errors;
}
 
public ActionErrors validatePost(org.apache.struts.action.ActionMapping actionMapping, javax.servlet.http.HttpServletRequest httpServletRequest)
{
ActionErrors errors = new ActionErrors();
if(image!=null && image.getFileSize() != 0 && image.getFileSize()>(Globals.MAX_BIGMAGE_FILE_SIZE_BYTES))
addMessage(errors,httpServletRequest,"blog.exceed.image.max.size");
if(blogPostView.getTitle() == null || blogPostView.getTitle().trim().length() == 0)
addMessageWithKeys(errors,httpServletRequest,"errors.required","blogpost.title");
if(blogPostView.getText() == null || blogPostView.getText().trim().length() == 0)
addMessageWithKeys(errors,httpServletRequest,"errors.required","blogpost.text");
if (image != null && image.getFileSize() != 0 && image.getFileSize() > (Globals.MAX_BIGMAGE_FILE_SIZE_BYTES))
addMessage(errors, httpServletRequest, "blog.exceed.image.max.size");
if (blogPostView.getTitle() == null || blogPostView.getTitle().trim().length() == 0)
addMessageWithKeys(errors, httpServletRequest, "errors.required", "blogpost.title");
if (blogPostView.getText() == null || blogPostView.getText().trim().length() == 0)
addMessageWithKeys(errors, httpServletRequest, "errors.required", "blogpost.text");
 
return errors;
}
/impl/src/java/pt/estgp/estgweb/web/controllers/AddRolesController.java
29,7 → 29,7
 
private static final Logger logger = Logger.getLogger(AddRolesController.class);
 
private static final String TARGET_ROLES_KEY = AddRolesForm.TARGET_ROLES_KEY;
protected static final String TARGET_ROLES_KEY = AddRolesForm.TARGET_ROLES_KEY;
 
public ActionForward start(ActionMapping mapping,
ActionForm form ,
/impl/src/java/pt/estgp/estgweb/web/controllers/blogs/BlogServlet.java
17,8 → 17,8
import jomm.dao.impl.AbstractDao;
 
/**
* @author Fabio
* @date 4/Abr/2008
* @author Jorge Machado
* @date 1/Jun/2008
* @time 11:03:00
* @see pt.estgp.estgweb.web
*/
32,22 → 32,22
throws ServletException, IOException
{
 
String imageRequired = request.getPathInfo();
imageRequired = imageRequired.substring(1);
String identifier = request.getPathInfo();
identifier = identifier.substring(1);
 
long id;
String name;
try
{
id = Long.parseLong(imageRequired.trim());
id = Long.parseLong(identifier.trim());
request.getRequestDispatcher("/startLoadBlog.do?id=" + id).forward(request, response);
}
catch (NumberFormatException e)
{
response.sendError(404);
return;
name = identifier;
request.getRequestDispatcher("/startLoadBlogByName.do?name=" + name).forward(request, response);
}
 
request.getRequestDispatcher("/startLoadBlog.do?id=" + id).forward(request, response);
 
}
 
}
/impl/src/java/pt/estgp/estgweb/web/controllers/blogs/BlogsController.java
4,26 → 4,28
import pt.estgp.estgweb.web.utils.RequestUtils;
import pt.estgp.estgweb.web.utils.DomainUtils;
import pt.estgp.estgweb.web.form.blogs.BlogForm;
import pt.estgp.estgweb.web.UserSessionProxy;
import pt.estgp.estgweb.web.exceptions.NoCookiesException;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.views.BlogView;
import pt.estgp.estgweb.domain.views.BlogPostView;
import pt.estgp.estgweb.filters.exceptions.NotFoundException;
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 pt.utl.ist.berserk.logic.serviceManager.exceptions.ServiceManagerException;
import pt.utl.ist.berserk.logic.serviceManager.exceptions.ExecutedFilterException;
import pt.utl.ist.berserk.logic.filterManager.exceptions.*;
import org.apache.log4j.Logger;
import org.apache.struts.action.*;
import org.apache.struts.upload.FormFile;
import org.hibernate.ObjectNotFoundException;
 
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;
import java.util.List;
import java.io.Serializable;
 
import jomm.utils.StreamsUtils;
 
/**
* @author Jorge Machado
* @date 26/Fev/2008
35,6 → 37,129
 
private static final Logger logger = Logger.getLogger(BlogsController.class);
 
 
/**
* Load and forward a blog
* @param id
* @param mapping
* @param request
* @param response
* @return
* @throws Throwable
* @throws InvalidFilterException
* @throws ServiceManagerException
* @throws InvalidFilterExpressionException
* @throws IncompatibleFilterException
* @throws FilterRetrieveException
* @throws NoCookiesException
*/
private ActionForward loadBlogAndForward(long id, ActionMapping mapping, HttpServletRequest request, HttpServletResponse response)
throws Throwable, InvalidFilterException, ServiceManagerException, InvalidFilterExpressionException, IncompatibleFilterException, FilterRetrieveException, NoCookiesException
{
BlogView bV = loadBlogView(id, mapping, request, response);
request.setAttribute("BlogView", bV);
return mapping.findForward("load");
}
 
/**
* Load and forward a blog given a name
* @param name
* @param mapping
* @param request
* @param response
* @return
* @throws Throwable
* @throws InvalidFilterException
* @throws ServiceManagerException
* @throws InvalidFilterExpressionException
* @throws IncompatibleFilterException
* @throws FilterRetrieveException
* @throws NoCookiesException
*/
 
private ActionForward loadBlogAndForward(String name, ActionMapping mapping, HttpServletRequest request, HttpServletResponse response)
throws Throwable, InvalidFilterException, ServiceManagerException, InvalidFilterExpressionException, IncompatibleFilterException, FilterRetrieveException, NoCookiesException
{
BlogView bV = loadBlogView(name, mapping, request, response);
request.setAttribute("BlogView", bV);
return mapping.findForward("load");
}
 
/**
* Load a Blog View
* @param id
* @param mapping
* @param request
* @param response
* @return
* @throws Throwable
* @throws InvalidFilterException
* @throws ServiceManagerException
* @throws InvalidFilterExpressionException
* @throws IncompatibleFilterException
* @throws FilterRetrieveException
* @throws NoCookiesException
*/
private BlogView loadBlogView(long id, ActionMapping mapping, HttpServletRequest request, HttpServletResponse response)
throws Throwable, InvalidFilterException, ServiceManagerException, InvalidFilterExpressionException, IncompatibleFilterException, FilterRetrieveException, NoCookiesException
{
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{"serializable"};
Object[] args = new Object[]{id};
try
{
BlogView bV = (BlogView) sm.execute(RequestUtils.getRequester(request, response), "LoadBlog", args, names);
return bV;
}
catch (ExecutedFilterException e)
{
if (e.getCause() instanceof ObjectNotFoundException)
{
throw new NotFoundException(e.getCause().toString());
}
throw e;
}
}
 
/**
* Load a BlogView given a name
* @param name
* @param mapping
* @param request
* @param response
* @return
* @throws Throwable
* @throws InvalidFilterException
* @throws ServiceManagerException
* @throws InvalidFilterExpressionException
* @throws IncompatibleFilterException
* @throws FilterRetrieveException
* @throws NoCookiesException
*/
private BlogView loadBlogView(String name, ActionMapping mapping, HttpServletRequest request, HttpServletResponse response)
throws Throwable, InvalidFilterException, ServiceManagerException, InvalidFilterExpressionException, IncompatibleFilterException, FilterRetrieveException, NoCookiesException
{
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{};
Object[] args = new Object[]{name};
//First will load ID and only than will call load Service to pass trought access filters with ID serializable available
Long id = (Long) sm.execute(RequestUtils.getRequester(request, response), "LoadBlogIdByName", args, names);
if (id == null)
throw new NotFoundException("blog:" + name + " not found");
return loadBlogView(id, mapping, request, response);
}
 
 
/**
* Save or update a blog from a blogView
* @param mapping
* @param form
* @param request
* @param response
* @return
* @throws Throwable
* @throws ServletException
*/
public ActionForward save(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
44,41 → 169,36
try
{
BlogForm blogForm = (BlogForm) form;
ActionErrors errors = blogForm.validate(mapping,request);
if(!errors.isEmpty())
ActionErrors errors = blogForm.validate(mapping, request);
if (!errors.isEmpty())
{
saveErrors(request,errors);
saveErrors(request, errors);
return mapping.findForward("submit");
}
if (blogForm.getBlogView().getId() <= 0)
 
IServiceManager sm = ServiceManager.getInstance();
if (blogForm.getImage() != null && blogForm.getImage().getFileSize() != 0)
{
Blog blog = DomainObjectFactory.createBlogImpl();
blogForm.getBlogView().persistViewInObject(blog);
IServiceManager sm = ServiceManager.getInstance();
 
if (blogForm.getImage() != null && blogForm.getImage().getFileSize() != 0)
{
FormFile image = blogForm.getImage();
Image i = DomainUtils.getNewImage(image,blog.getTitle());
blog.setImage(i);
}
String[] names = new String[]{"object"};
Object[] args = new Object[]{blog};
BlogView bV = (BlogView) sm.execute(RequestUtils.getRequester(request, response), "CreateBlog", args, names);
FormFile image = blogForm.getImage();
Image i = DomainUtils.getNewImage(image, blogForm.getBlogView().getTitle());
blogForm.getBlogView().setImage(i);
}
String[] names = new String[]{"object"};
Object[] args = new Object[]{blogForm.getBlogView()};
BlogView bV = blogForm.getBlogView();
if (bV.getId() <= 0)
{
bV = (BlogView) sm.execute(RequestUtils.getRequester(request, response), "CreateBlog", args, names);
addMessage(request, "blog.created.success", "" + bV.getId());
request.setAttribute("BlogView", bV);
return mapping.findForward("load");
}
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, response), "EditBlog", args, names);
addMessage(request, "blog.edited.success", "" + bV.getId());
return mapping.findForward("load");
}
request.setAttribute("BlogView", bV);
return mapping.findForward("load");
 
}
catch (FilterChainFailedException e)
{
99,17 → 219,16
{
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, response), "LoadBlog", args, names);
request.setAttribute("BlogView", bV);
return mapping.findForward("load");
return loadBlogAndForward(Long.parseLong(request.getParameter("id")), mapping, request, response);
}
catch (FilterChainFailedException e)
{
return mapping.findForward("error401");
}
catch (NotFoundException e)
{
return mapping.findForward("error404");
}
catch (Throwable e)
{
logger.error(e, e);
117,6 → 236,31
}
}
 
public ActionForward loadByName(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
try
{
return loadBlogAndForward(request.getParameter("name"), mapping, request, response);
}
catch (FilterChainFailedException e)
{
return mapping.findForward("error401");
}
catch (NotFoundException e)
{
return mapping.findForward("error404");
}
catch (Throwable e)
{
logger.error(e, e);
return mapping.findForward("error500");
}
}
 
public ActionForward addPost(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
125,10 → 269,7
{
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, response), "LoadBlog", args, names);
BlogView bV = loadBlogView(Long.parseLong(request.getParameter("id")), mapping, request, response);
request.setAttribute("BlogView", bV);
BlogForm blogForm = (BlogForm) form;
blogForm.setBlogView(bV);
147,6 → 288,7
return mapping.findForward("error500");
}
}
 
public ActionForward savePost(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
156,14 → 298,11
try
{
BlogForm blogForm = (BlogForm) form;
ActionErrors errors = blogForm.validatePost(mapping,request);
if(!errors.isEmpty())
ActionErrors errors = blogForm.validatePost(mapping, request);
if (!errors.isEmpty())
{
saveErrors(request,errors);
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{"serializable"};
Object[] args = new Object[]{blogForm.getBlogView().getId()};
BlogView bV = (BlogView) sm.execute(RequestUtils.getRequester(request, response), "LoadBlog", args, names);
saveErrors(request, errors);
BlogView bV = loadBlogView(blogForm.getBlogView().getId(), mapping, request, response);
request.setAttribute("BlogView", bV);
request.setAttribute("BlogPostView", blogForm.getBlogPostView());
return mapping.findForward("load");
177,20 → 316,15
if (blogForm.getImage() != null && blogForm.getImage().getFileSize() != 0)
{
FormFile image = blogForm.getImage();
Image i = DomainUtils.getNewImage(image,bPV.getTitle());
Image i = DomainUtils.getNewImage(image, bPV.getTitle());
bPV.setImage(i);
}
String[] names = new String[]{"object","serializable"};
Object[] args = new Object[]{bPV,blogForm.getBlogView().getId()};
String[] names = new String[]{"object", "serializable"};
Object[] args = new Object[]{bPV, blogForm.getBlogView().getId()};
bPV = (BlogPostView) sm.execute(RequestUtils.getRequester(request, response), "CreateBlogPost", args, names);
addMessage(request, "blog.post.created.success", "" + bPV.getId());
 
 
names = new String[]{"serializable"};
args = new Object[]{blogForm.getBlogView().getId()};
BlogView bV = (BlogView) sm.execute(RequestUtils.getRequester(request, response), "LoadBlog", args, names);
request.setAttribute("BlogView", bV);
return mapping.findForward("load");
return loadBlogAndForward(blogForm.getBlogView().getId(), mapping, request, response);
}
else
{
215,9 → 349,9
}
 
public ActionForward loadMonth(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
{
try
227,7 → 361,7
long blodId = Long.parseLong(request.getParameter("id"));
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{"serializable"};
Object[] args = new Object[]{blodId,month,year};
Object[] args = new Object[]{blodId, month, year};
BlogView bV = (BlogView) sm.execute(RequestUtils.getRequester(request, response), "LoadBlogByDate", args, names);
request.setAttribute("BlogView", bV);
return mapping.findForward("loadMonth");
242,4 → 376,106
return mapping.findForward("error500");
}
}
 
 
public ActionForward edit(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Throwable, ServletException
{
try
{
UserSessionImpl sess = (UserSessionImpl) UserSessionProxy.loadUserSession(request, response);
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{"serializable"};
Object[] args = new Object[]{new Long(request.getParameter("id"))};
BlogView bV = (BlogView) sm.execute(RequestUtils.getRequester(request, response), "LoadEditBlog", args, names);
BlogForm blogForm = (BlogForm) form;
blogForm.setBlogView(bV);
blogForm.setSelectedRoles(bV.getTargetRoles());
sess.put(TARGET_ROLES_KEY, (Serializable) bV.getTargetRoles());
sess.serialize(request, response);
return mapping.findForward("submit");
}
catch (FilterChainFailedException e)
{
return mapping.findForward("error401");
}
catch (Throwable e)
{
logger.error(e, e);
throw e;
}
}
 
public ActionForward delete(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[]{new Long(request.getParameter("id"))};
Boolean status = (Boolean) sm.execute(RequestUtils.getRequester(request, response), "DeleteBlog", args, names);
if (status)
{
addMessage(request, "blog.deleted.success", "" + request.getParameter("id"));
}
else
{
addMessage(request, "blog.deleted.fail", "" + request.getParameter("id"));
}
return mapping.getInputForward();
}
catch (FilterChainFailedException e)
{
return mapping.findForward("error401");
}
catch (Throwable e)
{
logger.error(e, e);
throw e;
}
 
}
 
public ActionForward deletePost(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[]{new Long(request.getParameter("id"))};
Boolean status = (Boolean) sm.execute(RequestUtils.getRequester(request, response), "DeleteBlogPost", args, names);
if (status)
{
addMessage(request, "blog.post.deleted.success", "" + request.getParameter("id"));
}
else
{
addMessage(request, "blog.post.deleted.fail", "" + request.getParameter("id"));
}
return loadBlogAndForward(new Long(request.getParameter("blogId")), mapping, request, response);
}
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
38,7 → 38,6
 
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,
/impl/src/java/pt/estgp/estgweb/web/tags/CanLoadTag.java
New file
0,0 → 1,81
package pt.estgp.estgweb.web.tags;
 
import org.apache.log4j.Logger;
import org.apache.struts.util.RequestUtils;
 
import javax.servlet.jsp.tagext.BodyTagSupport;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
 
import pt.estgp.estgweb.domain.UserSessionImpl;
import pt.estgp.estgweb.domain.IAddContents;
import pt.estgp.estgweb.domain.ICanLoad;
 
public class CanLoadTag extends BodyTagSupport
{
 
private static final Logger logger = Logger.getLogger(CanLoadTag.class);
 
private String name;
 
private String property;
 
public String getName()
{
return name;
}
 
public void setName(String name)
{
this.name = name;
}
 
public String getProperty()
{
return property;
}
 
public void setProperty(String property)
{
this.property = property;
}
 
public int doStartTag() throws JspException
{
if (go())
{
return EVAL_BODY_TAG;
}
else
return SKIP_BODY;
}
 
public boolean go() throws JspException
{
UserSessionImpl userSession = (UserSessionImpl) pageContext.getRequest().getAttribute(pt.estgp.estgweb.Globals.USER_SESSION_KEY);
ICanLoad iCanLoad = (ICanLoad) RequestUtils.lookup(pageContext, name, property, null);
return iCanLoad != null && (iCanLoad.canLoad(userSession.getUser()));
}
 
public int doEndTag() throws JspException
{
if (go())
{
String toPage = bodyContent.getString().trim();
JspWriter writer = pageContext.getOut();
try
{
writer.write(toPage);
}
catch (Exception e)
{
logger.error(e, e);
throw new JspException(e);
}
}
// Continue processing this page
return EVAL_PAGE;
}
 
 
}
/impl/src/doc/layouts/NavegacaoModulos.doc
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Property changes:
Added: svn:mime-type
+ application/octet-stream
/impl/src/hbm/pt/estgp/estgweb/domain/GenericUser.hbm.xml
74,7 → 74,7
<property name="employerName" type="string"/>
<property name="unitCheck" type="boolean"/>
<set name="teachedUnits" lazy="true" order-by="courseUnitId">
<key column="studentId"/>
<key column="teacherId"/>
<many-to-many class="pt.estgp.estgweb.domain.CourseUnit" column="courseUnitId"/>
</set>
<subclass name="pt.estgp.estgweb.domain.TeacherImpl" discriminator-value="TeacherImpl"/>
/impl/src/hbm/pt/estgp/estgweb/domain/Blog.hbm.xml
13,6 → 13,7
<discriminator column="discrimitator"/>
<timestamp name="updateDate" unsaved-value="null"/>
<property name="saveDate" type="timestamp"/>
<property name="name" type="string" unique="true" index="nameIndex"/>
<property name="title" type="string"/>
<property name="description" type="text"/>
<property name="targetRoles" type="string"/>
20,14 → 21,18
<property name="status" type="boolean" />
<many-to-one name="image" column="image" class="pt.estgp.estgweb.domain.Image" lazy="no-proxy" outer-join="false" cascade="all"/>
<many-to-one name="owner" class="pt.estgp.estgweb.domain.GenericUser" lazy="false" outer-join="true"/>
<set name="posts" cascade="delete" lazy="true">
<key column="blog"/>
<one-to-many class="pt.estgp.estgweb.domain.BlogPost"/>
</set>
<subclass name="pt.estgp.estgweb.domain.BlogImpl" discriminator-value="BlogImpl">
<subclass name="pt.estgp.estgweb.domain.CourseUnitBlog">
<meta attribute="extends">pt.estgp.estgweb.domain.BlogImpl</meta>
<meta attribute="scope-class">public abstract</meta>
<property name="courseUnitInternal" type="boolean" />
<many-to-one name="courseUnit" class="pt.estgp.estgweb.domain.CourseUnit" lazy="proxy" outer-join="false"/>
<subclass name="pt.estgp.estgweb.domain.CourseUnitBlogImpl" discriminator-value="CourseUnitBlogImpl"/>
</subclass>
</subclass>
 
</class>
</hibernate-mapping>
/impl/src/hbm/pt/estgp/estgweb/domain/BlogPost.hbm.xml
23,6 → 23,13
<many-to-one name="image" column="image" class="pt.estgp.estgweb.domain.Image" lazy="no-proxy" outer-join="false" cascade="all" />
<many-to-one name="owner" class="pt.estgp.estgweb.domain.GenericUser" lazy="proxy" outer-join="false"/>
<many-to-one name="blog" class="pt.estgp.estgweb.domain.Blog" lazy="false" outer-join="true"/>
<subclass name="pt.estgp.estgweb.domain.BlogPostImpl" discriminator-value="BlogPostImpl"/>
<subclass name="pt.estgp.estgweb.domain.BlogPostImpl" discriminator-value="BlogPostImpl">
<subclass name="pt.estgp.estgweb.domain.CourseUnitBlogPost">
<meta attribute="extends">pt.estgp.estgweb.domain.BlogPostImpl</meta>
<meta attribute="scope-class">public abstract</meta>
<property name="courseUnitInternal" type="boolean" />
<subclass name="pt.estgp.estgweb.domain.CourseUnitBlogPostImpl" discriminator-value="CourseUnitBlogPostImpl"/>
</subclass>
</subclass>
</class>
</hibernate-mapping>
/impl/src/hbm/pt/estgp/estgweb/domain/Announcement.hbm.xml
32,6 → 32,14
<many-to-one name="bigImage" column="bigImage" class="pt.estgp.estgweb.domain.Image" lazy="no-proxy" outer-join="false" cascade="all" />
<many-to-one name="smallImage" column="smallImage" class="pt.estgp.estgweb.domain.Image" lazy="no-proxy" outer-join="false" cascade="all"/>
<many-to-one name="owner" class="pt.estgp.estgweb.domain.GenericUser" lazy="false" outer-join="true"/>
<subclass name="pt.estgp.estgweb.domain.AnnouncementImpl" discriminator-value="AnnouncementImpl"/>
<subclass name="pt.estgp.estgweb.domain.AnnouncementImpl" discriminator-value="AnnouncementImpl">
<subclass name="pt.estgp.estgweb.domain.CourseUnitAnnouncement">
<meta attribute="extends">pt.estgp.estgweb.domain.AnnouncementImpl</meta>
<meta attribute="scope-class">public abstract</meta>
<property name="courseUnitInternal" type="boolean" />
<many-to-one name="courseUnit" class="pt.estgp.estgweb.domain.CourseUnit" lazy="false" outer-join="true"/>
<subclass name="pt.estgp.estgweb.domain.CourseUnitAnnouncementImpl" discriminator-value="CourseUnitAnnouncementImpl"/>
</subclass>
</subclass>
</class>
</hibernate-mapping>
/impl/src/hbm/pt/estgp/estgweb/domain/CourseUnit.hbm.xml
30,6 → 30,10
<key column="courseUnitId"/>
<many-to-many class="pt.estgp.estgweb.domain.StudentImpl" column="studentId"/>
</set>
<set name="announcements" cascade="delete" lazy="true" order-by="saveDate desc">
<key column="courseUnit"/>
<one-to-many class="pt.estgp.estgweb.domain.CourseUnitAnnouncement" />
</set>
<subclass name="pt.estgp.estgweb.domain.CourseUnitImpl" discriminator-value="CourseUnitImpl"/>
</class>
</hibernate-mapping>
/impl/src/web/admin/blogs/submitBlog.jsp
116,9 → 116,16
</logic:present>
</td>
</tr>
 
<tr>
<th>
<bean:message key="blog.name"/>
</th>
<td>
<html:text property="blogView.name" maxlength="250"/>
</td>
</tr>
<tr>
<th>
<bean:message key="blog.title"/>
</th>
<td>
/impl/src/web/js/functions.js
57,3 → 57,17
}
 
}
 
function confirmAction(msg,form,actionOk)
{
if(confirm(msg))
{
set(form,actionOk);
form.submit();
}
}
 
function confirmLink(msg)
{
return confirm(msg);
}
/impl/src/web/layout/navigationLeft.jsp
13,28 → 13,28
 
<%-- USER MENUS--%>
 
<baco:isAuthenticated>
<%--<baco:isAuthenticated>--%>
<%----%>
 
<div class="linkMenuBlock">
<div class="linkMenuBlockTitle">
<bean:message key="Others"/>
</div>
<!--<div class="linkMenuBlock">-->
<!--<div class="linkMenuBlockTitle">-->
<%--<bean:message key="Others"/>--%>
<!--</div>-->
 
<div class="linkLeftMenu">
<div class="listClean">
<!--OTHER PLACES-->
<ul>
<li>
<html:link action="/user/startCourses">
<bean:message key="courses"/>
</html:link>
</li>
</ul>
</div>
</div>
</div>
</baco:isAuthenticated>
<!--<div class="linkLeftMenu">-->
<!--<div class="listClean">-->
<!--<!--OTHER PLACES-->
<!--<ul>-->
<!--<li>-->
<%--<html:link action="/user/startCourses">--%>
<%--<bean:message key="courses"/>--%>
<%--</html:link>--%>
<!--</li>-->
<!--</ul>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
<%--</baco:isAuthenticated>--%>
</div>
 
 
/impl/src/web/layout/navigationLeftAdmin.jsp
28,7 → 28,7
<baco:isAuthenticated>
<li>
<html:link action="/user/home">
INTRANET (<bean:write name="UserSession" property="user.name"/>)
INTRANET (<bean:write name="UserSession" property="user.username"/>)
</html:link>
</li>
<li>
/impl/src/web/layout/separators.jsp
71,14 → 71,6
<ul>
<li <%=sep0%>><a <%=link0%>><span><bean:message key="intranet.separator.welcome.home"/></span></a></li>
<li <%=sep1%>><a <%=link1%>><span><bean:message key="intranet.separator.home"/></span></a></li>
<%
if (userSession != null && userSession.getUser() != null && (userSession.getUser().hasRole(Globals.STUDENT_ROLE) || userSession.getUser().hasRole(Globals.TEACHER_ROLE)))
{
%>
<li <%=sep2%>><a <%=link2%>> <span><bean:message key="intranet.separator.course.units"/></span> </a></li>
<%
}
%>
<li <%=sep3%>><a <%=link3%>><span><bean:message key="intranet.separator.profile"/></span></a></li>
<li <%=sep4%>><a <%=link4%>><span><bean:message key="intranet.separator.service.zone"/></span></a></li>
<li <%=sep5%>><a <%=link5%>><span><bean:message key="intranet.separator.ionline"/></span></a></li>
/impl/src/web/public/blogs/blog.jsp
1,4 → 1,5
<%@ page import="pt.estgp.estgweb.Globals" %>
<%@ page import="jomm.utils.MessageResources" %>
<%@ 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" %>
7,6 → 8,7
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %>
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
<jsp:useBean id="BlogView" type="pt.estgp.estgweb.domain.views.BlogView" scope="request"/>
 
<%
String fromAction = "";
String from = "";
21,6 → 23,7
request.setAttribute("user", user);
request.setAttribute("fromAction", fromAction);
%>
 
<html:errors/>
<jomm:messages/>
<div class="blog">
29,7 → 32,22
<h1>
<bean:write name="BlogView" property="title"/>
</h1>
<baco:canManage name="BlogView">
 
<%
String confirmDelete = MessageResources.getMessage(request,"blog.confirm.delete");
request.setAttribute("confirmDelete",confirmDelete);
%>
<!--valid="false">-->
<html:link action="${user}/startEditBlog${fromAction}?id=${BlogView.id}">
<bean:message key="edit"/>
</html:link>
 
<html:link onclick="return confirm('${confirmDelete}')" action="${user}/startDeleteBlog${fromAction}?id=${BlogView.id}">
<bean:message key="delete"/>
</html:link>
</baco:canManage>
 
<table>
<tr>
<td valign="top">
55,8 → 73,7
<div class="toolsContainer">
<div class="tools">
<baco:canAddContent name="BlogView">
<a href="<%=request.getContextPath()%>${user}/startAddPost${fromAction}.do?id=<%=BlogView.getImage().getId()%>">Adicionar
POST</a>
<a href="<%=request.getContextPath()%>${user}/startAddPost${fromAction}.do?id=<%=BlogView.getId()%>"><bean:message key="blog.add.post"/></a>
</baco:canAddContent>
</div>
</div>
107,41 → 124,50
<tr>
<td class="postsContainer">
<logic:notEmpty name="BlogView" property="lastPosts">
<%
String confirmDeletePost = MessageResources.getMessage(request,"blog.confirm.delete.post");
request.setAttribute("confirmDeletePost",confirmDeletePost);
%>
<logic:notEqual value="0" name="BlogView" property="month">
 
<h2><bean:message key="month.${BlogView.month}.year" arg0="${BlogView.year}"/></h2>
</logic:notEqual>
<table class="posts">
<logic:iterate id="post" name="BlogView" property="lastPosts"
type="pt.estgp.estgweb.domain.views.BlogPostView">
 
<tr>
<td colspan="2" class="title">
${post.title}
</td>
</tr>
<tr>
<td valign="top">
${post.text}
</td>
<td valign="top">
<%
if (post.getImage() != null)
{
%>
<div class="imageBlog">
<img align="left" alt="<%=BlogView.getTitle()%>"
src="<%=request.getContextPath()%>/imageStream/<%=post.getImage().getId()%>">
</div>
<%
}
%>
</td>
</tr>
<tr>
<td colspan="2" class="pFooter">
Posted by: ${post.ownerUsername} AT ${post.formatedSaveDate}
</td>
</tr>
<baco:canLoad name="post">
<tr>
<td colspan="2" class="title">
${post.title}
<baco:canManage name="post">
<a onclick="return confirm('${confirmDeletePost}')" href="<%=request.getContextPath()%>${user}/startDeletePost${fromAction}.do?id=${post.id}&blogId=${BlogView.id}"><bean:message key="blog.delete.post"/></a>
</baco:canManage>
</td>
</tr>
<tr>
<td valign="top">
${post.text}
</td>
<td valign="top">
<%
if (post.getImage() != null)
{
%>
<div class="imageBlog">
<img align="left" alt="<%=BlogView.getTitle()%>"
src="<%=request.getContextPath()%>/imageStream/<%=post.getImage().getId()%>">
</div>
<%
}
%>
</td>
</tr>
<tr>
<td colspan="2" class="pFooter">
Posted by: ${post.ownerUsername} AT ${post.formatedSaveDate}
</td>
</tr>
</baco:canLoad>
</logic:iterate>
</table>
</logic:notEmpty>
175,8 → 201,13
</table>
 
<div class="pFooter">
<a href="<%=request.getContextPath()%>/blog/<%=BlogView.getId()%>"><%=Globals.SITE_URL%>
/blog/<%=BlogView.getId()%>
<%
String identifier = "" + BlogView.getId();
if(BlogView.getName() != null && BlogView.getName().length() > 0)
identifier = BlogView.getName();
%>
<a href="<%=request.getContextPath()%>/blog/<%=identifier%>">
<%=Globals.SITE_URL + "/blog/" + identifier%>
</a>
<bean:message key="blog.owner"/>
<a href="mailto:${BlogView.ownerEmail}">${BlogView.owner.name}</a>
/impl/src/web/public/announcements/announcementsPortalRight.jsp
36,22 → 36,23
%>
 
<div class="portalRightAnnouncements">
<logic:present name="Announcements">
<logic:notEmpty name="Announcements">
<table>
<baco:isAuthenticated>
 
<table>
<baco:isAuthenticated>
<tr>
<td colspan="2" class="remindersContainer">
<jsp:include page="/user/reminders/reminders.jsp"/>
</td>
</tr>
<tr>
<td colspan="2" class="messagesContainer"><jsp:include page="/user/pop/messagesContainer.jsp"/></td>
</tr>
</baco:isAuthenticated>
<logic:present name="Announcements">
<logic:notEmpty name="Announcements">
<tr>
<td colspan="2" class="remindersContainer">
<jsp:include page="/user/reminders/reminders.jsp"/>
</td>
</tr>
<tr>
<td colspan="2" class="messagesContainer"><jsp:include page="/user/pop/messagesContainer.jsp"/></td>
</tr>
</baco:isAuthenticated>
<tr>
<td colspan="2">
<h1><bean:message key="announcements"/></h1>
<h1><bean:message key="announcements"/></h1>
</td>
</tr>
<logic:iterate id="item" name="Announcements" type="pt.estgp.estgweb.domain.views.AnnouncementView">
106,7 → 107,7
 
</tr>
</logic:iterate>
</table>
</logic:notEmpty>
</logic:present>
</logic:notEmpty>
</logic:present>
</table>
</div>
/impl/src/web/user/home.jsp
63,7 → 63,6
<%--</table> --%>
</td>
<td id="rightPagePortal">
 
<jsp:include page="/public/announcements/announcementsPortalRight.jsp?role=all&from=Home"/>
</td>
</tr>
/impl/src/web/user/home/student.jsp
1,66 → 1,59
<%--
Created by IntelliJ IDEA.
User: Jorge
Date: 29/Mai/2008
Time: 20:13:53
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/baco.tld" prefix="baco" %>
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %>
<jsp:useBean id="UserSession" type="pt.estgp.estgweb.domain.UserSession" scope="request"/>
<div class="portal">
<table class="columnTable" width="100%">
<tbody>
<tr>
<td class="column">
<div class="block">
<p>As minhas Unidades Curriculares</p>
<ul>
<li>
<a href="#">Projecto</a>
</li>
</ul>
</div>
</td>
<td class="column">
<div class="block">
<p>Os Anuncios das Minhas Unidades</p>
<ul>
<li>
<a href="#">O trabalho de TLV foi adiado uma semana porque as tintas não estavam boas</a>
</li>
</ul>
</div>
<div class="block">
<p>Os meus Afazeres</p>
<ul>
<li>
<a href="#">Inquerito de Docentes e Unidades (6)</a>
</li>
</ul>
</div>
</td>
<td class="column">
<div class="block">
<p>Ficheiros Úteis</p>
<ul>
<li>
<a href="#">Modelo de comunicação interna</a>
</li>
<li>
<a href="#">Justificação de Presença</a>
</li>
<li>
<a href="#">Justificação de Faltas</a>
</li>
<li>
<a href="#">Modelo de Bolsa</a>
</li>
<li>
<a href="#">Modelo de Bolsa</a>
</li>
</ul>
</div>
</td>
</tr>
</tbody>
</table>
<table class="columnTable" width="100%">
<tbody>
<tr>
<td class="column">
<div class="block">
<p>As minhas Unidades Curriculares</p>
<ul>
<logic:present name="UserSession" property="user.subscribedUnitsView">
<logic:notEmpty name="UserSession" property="user.subscribedUnitsView">
<logic:iterate id="unit" name="UserSession" property="user.subscribedUnitsView" type="pt.estgp.estgweb.domain.CourseUnit">
<li>
<a href="#">${unit.name}</a>
</li>
</logic:iterate>
</logic:notEmpty>
</logic:present>
</ul>
</div>
</td>
<td class="column">
<jsp:include page="/user/home/courseUnitsAnnouncements.jsp"/>
<jsp:include page="/user/home/todos.jsp"/>
</td>
<td class="column">
<div class="block">
<p>Ficheiros Úteis</p>
<ul>
<li>
<a href="#">Modelo de comunicação interna</a>
</li>
<li>
<a href="#">Justificação de Presença</a>
</li>
<li>
<a href="#">Justificação de Faltas</a>
</li>
<li>
<a href="#">Modelo de Bolsa</a>
</li>
<li>
<a href="#">Modelo de Bolsa</a>
</li>
</ul>
</div>
</td>
</tr>
</tbody>
</table>
</div>
/impl/src/web/user/home/todos.jsp
New file
0,0 → 1,89
<%@ page import="pt.estgp.estgweb.services.common.IToDoCat" %>
<%@ page import="java.util.List" %>
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.IServiceManager" %>
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.ServiceManager" %>
<%@ page import="pt.estgp.estgweb.web.utils.RequestUtils" %>
<%@ page import="jomm.utils.MessageResources" %>
<%@ page import="pt.estgp.estgweb.services.common.IToDo" %>
<%@ 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/baco.tld" prefix="baco" %>
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %>
<%--
Created by IntelliJ IDEA.
User: Jorge
Date: 2/Jun/2008
Time: 16:01:47
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
 
<%
 
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{};
Object[] args = new Object[]{};
 
List<IToDoCat> todos = (List<IToDoCat>) sm.execute(RequestUtils.getRequester(request, response), "CommonServicesGetAllTodosCat", args, names);
%>
 
<div class="block">
<p>
<bean:message key="intranet.todo"/>
</p>
<%
if (todos == null || todos.size() == 0)
{
%>
<div class="zerofound">
<bean:message key="todo.zero.todos"/>
</div>
<%
}
else
{
%>
<ul>
<%
for (IToDoCat toDoCat : todos)
{
%>
<li>
<p>
<%=MessageResources.getMessage(request, toDoCat.getDescription())%> (<%=toDoCat.getTotalToDo()%>)
</p>
<ul>
<%
for (IToDo todo : toDoCat.getAllToDos())
{
if (todo.getUrl() != null)
{
%>
<li>
<a href="<%=request.getContextPath() + todo.getUrl()%>"><%=todo.getLabelInsideCat(request)%></a>
</li>
<%
}
else
{
%>
<li>
<%=todo.getLabelInsideCat(request)%>
</li>
<%
}
}
%>
</ul>
</li>
<%
}
%>
</ul>
<%
}
%>
</div>
/impl/src/web/user/home/courseUnitsAnnouncements.jsp
New file
0,0 → 1,87
<%@ page import="pt.estgp.estgweb.services.common.IToDoCat" %>
<%@ page import="java.util.List" %>
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.IServiceManager" %>
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.ServiceManager" %>
<%@ page import="pt.estgp.estgweb.web.utils.RequestUtils" %>
<%@ page import="jomm.utils.MessageResources" %>
<%@ page import="pt.estgp.estgweb.services.common.IToDo" %>
<%@ page import="pt.estgp.estgweb.domain.Student" %>
<%@ page import="pt.estgp.estgweb.domain.Teacher" %>
<%@ page import="pt.estgp.estgweb.services.courseunits.ICourseUnitAnnouncements" %>
<%@ page import="pt.estgp.estgweb.domain.CourseUnitAnnouncement" %>
<%@ page import="pt.estgp.estgweb.domain.views.AnnouncementView" %>
<%@ 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/baco.tld" prefix="baco" %>
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<jsp:useBean id="UserSession" type="pt.estgp.estgweb.domain.UserSession" scope="request"/>
 
<%
 
List<ICourseUnitAnnouncements> iCourseUnitAnnouncementsList = null;
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{};
Object[] args = new Object[]{};
 
if (UserSession.getUser() instanceof Student)
{
iCourseUnitAnnouncementsList = (List<ICourseUnitAnnouncements>) sm.execute(RequestUtils.getRequester(request, response), "LoadSubscribedUnitsAnnouncements", args, names);
}
else if (UserSession.getUser() instanceof Teacher)
{
iCourseUnitAnnouncementsList = (List<ICourseUnitAnnouncements>) sm.execute(RequestUtils.getRequester(request, response), "LoadTeachedUnitsAnnouncements", args, names);
}
request.setAttribute("ICourseUnitAnnouncementsList",iCourseUnitAnnouncementsList);
%>
 
 
<div class="block">
<p>
<bean:message key="intranet.course.unit.announcements"/>
</p>
<%
if (iCourseUnitAnnouncementsList == null || iCourseUnitAnnouncementsList.size() == 0)
{
%>
<div class="zerofound">
<bean:message key="course.unit.announcements.zero.announcements"/>
</div>
<%
}
else
{
%>
<ul>
<%
for (ICourseUnitAnnouncements iCourseUnitAnnouncements : iCourseUnitAnnouncementsList)
{
%>
<li>
<p>
<%=iCourseUnitAnnouncements.getCourseUnit().getName()%> (<%=iCourseUnitAnnouncements.getAnnouncements().size()%>)
</p>
<ul>
<%
for (AnnouncementView courseUnitAnnouncement : iCourseUnitAnnouncements.getAnnouncements())
{
%>
<li>
<a href="<%=request.getContextPath()%>/user/startLoadAnnouncementFromHome.do?id=<%=courseUnitAnnouncement.getId()%>"><%=courseUnitAnnouncement.getTitle()%></a>
</li>
<%
}
%>
</ul>
</li>
<%
}
%>
</ul>
<%
}
%>
</div>
/impl/src/web/user/serviceZone/serviceZone.jsp
2,8 → 2,6
<%@ page import="pt.estgp.estgweb.domain.views.AnnouncementView" %>
<%@ page import="pt.estgp.estgweb.domain.views.BlogPostView" %>
<%@ page import="pt.estgp.estgweb.domain.views.BlogView" %>
<%@ page import="pt.estgp.estgweb.services.common.IToDo" %>
<%@ page import="pt.estgp.estgweb.services.common.IToDoCat" %>
<%@ page import="pt.estgp.estgweb.web.utils.RequestUtils" %>
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.IServiceManager" %>
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.ServiceManager" %>
34,8 → 32,9
List<BlogPostView> ownerBlogPosts = (List<BlogPostView>) sm.execute(RequestUtils.getRequester(request, response), "LoadOwnerBlogPosts", args, names);
request.setAttribute("OwnerBlogPosts", ownerBlogPosts);
 
List<IToDoCat> todos = (List<IToDoCat>) sm.execute(RequestUtils.getRequester(request, response), "CommonServicesGetAllTodosCat", args, names);
 
 
 
%>
<jomm:messages/>
<html:errors/>
89,65 → 88,6
</baco:isAdmin>
</ul>
</div>
<div class="block">
<div class="head">
<bean:message key="intranet.todo"/>
</div>
<%
 
 
if(todos == null || todos.size() == 0)
{
 
 
%>
<div class="zerofound">
<bean:message key="todo.zero.todos"/>
</div>
<%
 
 
}
else
{
 
 
%>
<div class="tree">
<%
for (IToDoCat toDoCat : todos)
{
%>
<div class="node">
<%=MessageResources.getMessage(request, toDoCat.getDescription())%> (<%=toDoCat.getTotalToDo()%>)
<%
for (IToDo todo : toDoCat.getAllToDos())
{
if (todo.getUrl() != null)
{
%>
<div class="node">
<a href="<%=request.getContextPath() + todo.getUrl()%>"><%=todo.getLabelInsideCat(request)%>
</a>
</div>
<%
}
else
{
%>
<div class="node">
<%=todo.getLabelInsideCat(request)%>
</div>
<%
}
}
%>
</div>
<%
}
}
%>
</div>
</td>
<td class="column">
<div class="block">
366,21 → 306,6
%>
</div>
</td>
<td class="column">
<div class="block">
<div class="head">
<bean:message key="intranet.course.units.announcements"/>
</div>
<ul>
<li>
<a href="#">Projecto de ATSI entregar até dia 7</a>
</li>
<li>
<a href="#">Projecto de PWEM padrão para programar</a>
</li>
</ul>
</div>
</td>
</tr>
</tbody>
</table>