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