/impl/conf/language/MessageResourcesAnnouncements.properties |
---|
17,6 → 17,7 |
announcement.target.roles=Pessoas a quem destina |
announcement.created.success=Anúncio criado com sucesso |
announcement.edited.success=Anúncio alterado com sucesso |
announcement.status=Válido |
announcements.type.news=Notícias |
25,4 → 26,6 |
announcement.protocol.error.http=http |
announcement.protocol.error.https=https |
announcement.protocol.error.ftp=ftp |
announcement.protocol.error.ftp=ftp |
announcements.loading=carregando anúncio... |
/impl/conf/language/MessageResources.properties |
---|
72,13 → 72,15 |
user.role.worker=Funcionário |
user.role.invited=Convidado |
user.role.services=Serviços |
user.role.administrativeCouncil=Concelho Administrativo |
user.role.administrativeCouncil=Concelho Directivo |
user.role.representativeCouncil=Concelho de Representantes |
user.role.scientificCouncil=Concelho Científico |
user.role.erasmusCouncil=Concelho Erasmus |
user.role.pedagogicCouncil=Concelho Pedagógico |
user.role.courseCoordinator=Coordenador |
user.role.futureStudent=Futuros Alunos |
user.role.oldStudent=Antigos Alunos |
user.role.sudentAssociation=Associação de Estudantes |
#Filter Errors |
211,6 → 213,8 |
submit=Entrar |
confirm=Confirmar |
add=Adicionar |
yes=Sim |
no=Não |
#Cursos |
/impl/conf/WEB-INF/tlds/estgweb.tld |
---|
31,8 → 31,8 |
<tagclass>pt.estgp.estgweb.web.tags.IsAdminTag</tagclass> |
</tag> |
<tag> |
<name>isAdmin</name> |
<tagclass>pt.estgp.estgweb.web.tags.IsAdminTag</tagclass> |
<name>isNotAdmin</name> |
<tagclass>pt.estgp.estgweb.web.tags.IsNotAdminTag</tagclass> |
</tag> |
<tag> |
<name>pageUrlStat</name> |
/impl/conf/WEB-INF/web.xml |
---|
111,6 → 111,10 |
<servlet-name>tmpStream</servlet-name> |
<servlet-class>pt.estgp.estgweb.web.TmpStream</servlet-class> |
</servlet> |
<servlet> |
<servlet-name>imageStream</servlet-name> |
<servlet-class>pt.estgp.estgweb.web.ImageStream</servlet-class> |
</servlet> |
<!--MAPPINGS--> |
<servlet-mapping> |
137,6 → 141,10 |
<servlet-name>tmpStream</servlet-name> |
<url-pattern>/tmpStream/*</url-pattern> |
</servlet-mapping> |
<servlet-mapping> |
<servlet-name>imageStream</servlet-name> |
<url-pattern>/imageStream/*</url-pattern> |
</servlet-mapping> |
<!--START FILES--> |
<welcome-file-list> |
/impl/conf/app.properties |
---|
1,5 → 1,5 |
tmp.dir=@tmp.dir@ |
use.ldap=false |
use.ldap=true |
system.language=pt |
#Session Settings |
user.session.timeout.minutes=15 |
42,7 → 42,10 |
user.role.16=pedagogicCouncil |
user.role.17=erasmusCouncil |
user.role.18=courseCoordinator |
user.role.19=sudentAssociation |
user.role.20=representativeCouncil |
######################################################################### |
# |
# Modules |
52,21 → 55,32 |
######################################################################### |
# Announcements |
# |
announcements.text.summary.size=250 |
announcements.automatic.validation.role.1=all |
announcements.automatic.validation.role.2=admin |
announcements.automatic.validation.role.3=ci |
announcements.automatic.validation.role.4=administrativeCouncil |
announcements.max.visible=10 |
announcements.top.flash.news.timeout.miliseconds=7000 |
announcements.type.0=news |
announcements.type.1=top.flash.news |
announcements.type.2=bottom.flash.news |
#role images for announcements |
announcement.default.img=/imgs/rolesIcons/estg.gif |
role.admin.img=/imgs/rolesIcons/ae.gif |
announcement.default.img=/imgs/rolesIcons/nd.gif |
role.admin.img=/imgs/rolesIcons/estg.gif |
role.sudentAssociation.img=/imgs/rolesIcons/ae.gif |
role.administrativeCouncil.img=/imgs/rolesIcons/c_directivo.gif |
role.scientificCouncil.img=/imgs/rolesIcons/c_cientifico.gif |
role.representativeCouncil.img=/imgs/rolesIcons/ass_repre.gif |
role.teacher.eg.img=/imgs/rolesIcons/ne.gif |
role.teacher.dg.img=/imgs/rolesIcons/ngm.gif |
role.services.img=/imgs/rolesIcons/secretaria.gif |
######################################################################### |
# Link Analysis |
# |
/impl/conf/berserk/sd.xml |
---|
152,5 → 152,15 |
<chain name="Logger"/> |
</filterChains> |
</service> |
<service> |
<name>LoadTopFlashNewsIterate</name> |
<implementationClass>pt.estgp.estgweb.services.announcements.LoadTopFlashNewsIterateService</implementationClass> |
<description>Load an Announcement one flash News</description> |
<isTransactional>true</isTransactional> |
<filterChains> |
<chain name="Logger"/> |
<chain name="Session"/> |
</filterChains> |
</service> |
</serviceDefinitions> |
/impl/src/java/jomm/dao/impl/AbstractDao.java |
---|
397,7 → 397,8 |
* using the current value of the identifier property if the assigned |
* generator is used.) |
*/ |
public final Serializable save(CLAZZ obj) { |
public Serializable save(CLAZZ obj) |
{ |
try { |
return (Serializable) getCurrentSession().save(obj); |
} |
/impl/src/java/pt/estgp/estgweb/Globals.java |
---|
27,5 → 27,6 |
public static final int NUMBER_ANNOUNCEMENT_TYPE_NEW_INDEX=5; |
public static final int NUMBER_ANNOUNCEMENT_TYPE_TOP_FLASH_NEWS_INDEX=1; |
public static final int NUMBER_ANNOUNCEMENT_TYPE_BOTTOM_FLASH_NEWS_INDEX=2; |
public static final int ANNOUNCEMENT_TYPE_TOP_FLASH_NEWS_TIMEOUT=ConfigProperties.getIntProperty("announcements.top.flash.news.timeout.miliseconds"); |
} |
/impl/src/java/pt/estgp/estgweb/services/announcements/LoadTopFlashNewsIterateService.java |
---|
New file |
0,0 → 1,70 |
package pt.estgp.estgweb.services.announcements; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import pt.utl.ist.berserk.logic.serviceManager.IServiceManager; |
import pt.utl.ist.berserk.logic.serviceManager.ServiceManager; |
import pt.estgp.estgweb.utils.ConfigProperties; |
import pt.estgp.estgweb.domain.views.AnnouncementView; |
import pt.estgp.estgweb.domain.Announcement; |
import pt.estgp.estgweb.domain.UserSession; |
import pt.estgp.estgweb.domain.UserSessionImpl; |
import pt.estgp.estgweb.domain.dao.DaoFactory; |
import pt.estgp.estgweb.Globals; |
import org.apache.log4j.Logger; |
import java.util.List; |
import java.util.ArrayList; |
/** |
* Created by IntelliJ IDEA. |
* User: Fabio |
* Date: 28/Mar/2008 |
* Time: 11:42:28 |
* To change this template use File | Settings | File Templates. |
*/ |
public class LoadTopFlashNewsIterateService implements IService |
{ |
private static final String flashNewsIterator = "flashNewsIterator"; |
private static final Logger logger = Logger.getLogger(LoadTopFlashNewsIterateService.class); |
public AnnouncementView run(UserSession sess) |
{ |
Integer iterator = (Integer) ((UserSessionImpl)sess).get(flashNewsIterator); |
if(iterator == null) |
iterator = 0; |
int size = DaoFactory.getAnnouncementDaoImpl().countAnnouncements(1,null,Globals.ANNOUNCEMENT_TYPE_TOP_FLASH_NEWS); |
iterator = iterator % size; |
List<Announcement> announcements = DaoFactory.getAnnouncementDaoImpl().findAnnouncements(iterator, 1,null,Globals.ANNOUNCEMENT_TYPE_TOP_FLASH_NEWS); |
iterator++; |
((UserSessionImpl)sess).put(flashNewsIterator,iterator); |
if(announcements == null) |
return null; |
logger.info("Loading announcement top flash iterator"); |
if(announcements.size() > 0) |
{ |
AnnouncementView announcementView = new AnnouncementView(announcements.get(0)); |
return announcementView; |
} |
return null; |
} |
//tens de ter cuidado com o nome que metes no servico, tavas a meter LoadRoleTypeMaxAnnouncements e no XML estava LoadRoleTypeMaxAnnouncementsService, o nome nao tem de ser igual a classe mas convem, por norma eu tenho tirado a palavra service do nome do servico |
//ou seja esta LoadRoleTypeMaxAnnouncements para a classe LoadRoleTypeMaxAnnouncementsService logo no sm.execute tem de estar LoadRoleTypeMaxAnnouncements |
//mudei a propriedade log.file build.properties para log.file=${data.dir}/estgweb.log assim já não dá o erro do log |
//adicionei as libs jsp-api.jar da pasta tomcat/common/lib para não te falhar os imports nas TAGS aqui no Intellij |
//adiciona sempre todos os jars da common aqui no Intellij faltava-te o activation.jar do jaxb e era preciso para o MimeTypeGuesser |
public static void main(String[] args) throws Throwable { |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{}; |
Object[] arguments = new Object[]{}; |
AnnouncementView announcementView = (AnnouncementView) sm.execute("testecookie", "LoadTopFlashNewsIterate",arguments,names); |
System.out.println("-->"+announcementView.getTitle()); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/UserSessionImpl.java |
---|
55,13 → 55,13 |
sessionObjectId.setKeyId(key); |
sessionObjectId.setUserSession(this); |
sessionObject.setId(sessionObjectId); |
getObjects().add(sessionObject); |
} |
ByteArrayOutputStream os = new ByteArrayOutputStream(); |
XMLEncoder xenc = new XMLEncoder(os); |
xenc.writeObject(obj); |
xenc.close(); |
sessionObject.setXmlObject(os.toString()); |
getObjects().add(sessionObject); |
} |
/** |
/impl/src/java/pt/estgp/estgweb/domain/views/AnnouncementView.java |
---|
4,6 → 4,7 |
import pt.estgp.estgweb.domain.Image; |
import pt.estgp.estgweb.domain.AnnouncementImpl; |
import pt.estgp.estgweb.utils.RoleManager; |
import pt.estgp.estgweb.utils.ConfigProperties; |
import java.util.List; |
import java.util.Date; |
17,6 → 18,8 |
*/ |
public class AnnouncementView extends DomainObjectView |
{ |
public static final int TEXT_SUMMARY_SIZE = ConfigProperties.getIntProperty("announcements.text.summary.size"); |
private long id; |
private String title; |
private String text; |
190,4 → 193,11 |
public void setCounter(Integer counter) { |
this.counter = counter; |
} |
public String getTextSummary() |
{ |
if(getText().length() > TEXT_SUMMARY_SIZE) |
return getText().substring(0,getText().substring(0,TEXT_SUMMARY_SIZE).lastIndexOf(' ')) + "..."; |
return getText(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/AnnouncementDaoImpl.java |
---|
54,36 → 54,29 |
criteria.add(co) |
.add(or(or(lt("startDate",now),eq("startDate",now)),isNull("startDate"))) |
.add(or(or(gt("expireDate",now),eq("expireDate",now)),isNull("expireDate"))) |
.add(eq("status",true)) |
.setMaxResults(maxAnnouncements) |
.addOrder(Order.desc("saveDate")); |
return criteria.list(); |
} |
/*public List<Announcement> findAnnouncements(int maxAnnouncements,String targetRole,String type) |
public List<Announcement> findAnnouncements(int maxAnnouncements,List<String> roles,String type) |
{ |
if(targetRole == null) |
{ |
targetRole="all"; |
} |
Criteria criteria = createCriteria(); |
Criterion coRole = like("targetRoles","%" + targetRole + "%"); |
Criterion coType=eq("type",type) ; |
return findAnnouncements(0,maxAnnouncements,roles, type); |
} |
public List<Announcement> findAnnouncements(int startPage, int maxAnnouncements,List<String> roles,String type) |
{ |
Criteria criteria = createMaxAnnouncementsRolesTypeCriteria(maxAnnouncements, roles,type); |
return criteria.setFirstResult(maxAnnouncements*startPage).list(); |
} |
public int countAnnouncements(int maxAnnouncements,List<String> roles,String type) |
{ |
Criteria criteria = createMaxAnnouncementsRolesTypeCriteria(Integer.MAX_VALUE, roles,type); |
return criteria.list().size(); |
} |
MyCalendar cNow = new MyCalendar(); |
MyCalendar calendarWithOutTime = new MyCalendar(cNow.getYear(),cNow.getMonth(),cNow.getDay()); |
Date now = calendarWithOutTime.getTime(); |
criteria.add(coRole) |
.add(coType) |
.add(or(or(lt("startDate",now),eq("startDate",now)),isNull("startDate"))) |
.add(or(or(gt("expireDate",now),eq("expireDate",now)),isNull("expireDate"))) |
.add(like("targetRoles","%" + targetRole + "%")) |
.setMaxResults(maxAnnouncements) |
.addOrder(Order.desc("saveDate")); |
return criteria.list(); |
}*/ |
public List<Announcement> findAnnouncements(int maxAnnouncements,List<String> roles,String type) |
private Criteria createMaxAnnouncementsRolesTypeCriteria(int maxAnnouncements,List<String> roles,String type) |
{ |
if(roles == null) |
{ |
108,11 → 101,13 |
.add(coType) |
.add(or(or(lt("startDate",now),eq("startDate",now)),isNull("startDate"))) |
.add(or(or(gt("expireDate",now),eq("expireDate",now)),isNull("expireDate"))) |
.add(eq("status",true)) |
.setMaxResults(maxAnnouncements) |
.addOrder(Order.desc("saveDate")); |
return criteria.list(); |
return criteria; |
} |
public static void main(String[] args) |
{ |
AbstractDao.getCurrentSession().beginTransaction(); |
127,7 → 122,7 |
GenericUser us = a.getOwner(); |
List<String> userRoles=us.getOwnerRoles(); |
for(String role:userRoles){ |
System.out.println("--->"+role); |
System.out.println("--->"+role); |
} |
System.out.println(a.getSaveDate() + ":" + a.getTitle() + " " + a.getOwner().getName() ); |
} |
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/UserDaoImpl.java |
---|
8,8 → 8,11 |
import java.util.List; |
import java.util.Date; |
import java.io.Serializable; |
import pt.estgp.estgweb.domain.User; |
import pt.estgp.estgweb.domain.Announcement; |
/** |
* @author Jorge Machado |
17,7 → 20,7 |
* @time 2:51:06 |
* @see pt.estgp.estgweb.domain.dao.impl |
*/ |
public class UserDaoImpl extends UserDao |
public class UserDaoImpl<Announcement> extends UserDao |
{ |
public static UserDaoImpl getInstance() |
{ |
117,4 → 120,16 |
} |
} |
public Serializable save(User obj) |
{ |
try { |
obj.setSaveDate(new Date()); |
return super.save(obj); |
} |
catch (HibernateException e) { |
throw new DaoException(e); |
} |
} |
} |
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/ImageDaoImpl.java |
---|
1,5 → 1,14 |
package pt.estgp.estgweb.domain.dao.impl; |
import org.hibernate.Criteria; |
import org.hibernate.criterion.Criterion; |
import static org.hibernate.criterion.Restrictions.*; |
import pt.estgp.estgweb.domain.Image; |
import java.util.List; |
import jomm.dao.impl.AbstractDao; |
/** |
* @author Jorge Machado |
* @date 28/Fev/2008 |
/impl/src/java/pt/estgp/estgweb/web/form/announcements/AnnouncementsForm.java |
---|
1,21 → 1,18 |
package pt.estgp.estgweb.web.form.announcements; |
import org.apache.struts.action.ActionForm; |
import org.apache.log4j.Logger; |
import org.apache.struts.action.ActionErrors; |
import org.apache.struts.action.ActionMessages; |
import org.apache.struts.action.ActionMessage; |
import org.apache.struts.upload.FormFile; |
import pt.estgp.estgweb.domain.UserSessionImpl; |
import pt.estgp.estgweb.domain.views.AnnouncementView; |
import pt.estgp.estgweb.domain.Image; |
import pt.estgp.estgweb.domain.DomainObjectFactory; |
import pt.estgp.estgweb.utils.ConfigProperties; |
import pt.estgp.estgweb.web.UserSessionProxy; |
import pt.estgp.estgweb.web.form.ApplicationForm; |
import pt.estgp.estgweb.web.utils.DatesUtils; |
import java.util.ArrayList; |
import java.util.List; |
import jomm.utils.MessageResources; |
/** |
* @author Jorge Machado |
* @date 28/Fev/2008 |
25,6 → 22,9 |
public class AnnouncementsForm extends ApplicationForm |
{ |
private static final Logger logger = Logger.getLogger(AnnouncementsForm.class); |
private static final String TARGET_ROLES_KEY = "targetRoles"; |
private AnnouncementView announcementView; |
private String role; |
38,9 → 38,9 |
private String targetPrioritiesStr; |
private Integer counter; |
private List<String> selectedRoles; |
private static List<String> targetRoles = ConfigProperties.getListValues("user.role"); |
private static List<String> announcementTypes = ConfigProperties.getListValues("announcements.type"); |
private static List<String> targetPriorities = ConfigProperties.getListValues("announcements.priority"); |
188,15 → 188,34 |
public ActionErrors validate(org.apache.struts.action.ActionMapping actionMapping, javax.servlet.http.HttpServletRequest httpServletRequest) |
{ |
UserSessionImpl userSession = null; |
try |
{ |
userSession = (UserSessionImpl) UserSessionProxy.loadUserSessionFromRequest(httpServletRequest); |
List<String> roles = (List<String>) userSession.get(TARGET_ROLES_KEY); |
if(roles == null || roles.size() == 0) |
{ |
roles = new ArrayList<String>(); |
roles.add(targetRolesStr); |
announcementView.setTargetRoles(roles); |
} |
} |
catch (Throwable throwable) |
{ |
logger.error(throwable,throwable); |
} |
if(httpServletRequest.getParameter("dispatch").equals("addRole") || httpServletRequest.getParameter("dispatch").equals("removeRole")) |
return null; |
ActionErrors errors = new ActionErrors(); |
if(url.contains("http://")) |
addMessageWithKeys(errors,httpServletRequest,"errors.notrequired","announcement.protocol.error.http","announcement.linkAnnouncement"); |
addMessageWithKeys(errors,httpServletRequest,"errors.notrequired","announcement.protocol.error.http","announcement.linkAnnouncement"); |
if(url.contains("https://")) |
addMessageWithKeys(errors,httpServletRequest,"errors.notrequired","announcement.protocol.error.https","announcement.linkAnnouncement"); |
addMessageWithKeys(errors,httpServletRequest,"errors.notrequired","announcement.protocol.error.https","announcement.linkAnnouncement"); |
if(url.contains("ftp://")) |
addMessageWithKeys(errors,httpServletRequest,"errors.notrequired","announcement.protocol.error.ftp","announcement.linkAnnouncement"); |
addMessageWithKeys(errors,httpServletRequest,"errors.notrequired","announcement.protocol.error.ftp","announcement.linkAnnouncement"); |
if(announcementView.getTitle() == null || announcementView.getTitle().trim().length() == 0) |
addMessageWithKeys(errors,httpServletRequest,"errors.required","announcement.title"); |
if(announcementView.getText() == null || announcementView.getText().trim().length() == 0) |
/impl/src/java/pt/estgp/estgweb/web/controllers/announcements/AnnouncementsController.java |
---|
38,7 → 38,7 |
{ |
private static final Logger logger = Logger.getLogger(AnnouncementsController.class); |
private static final String TARGET_ROLES_KEY = "targetRoles"; |
public ActionForward save(ActionMapping mapping, |
54,10 → 54,6 |
if(announcementsForm.getAnnouncementView().getId() <= 0) |
{ |
Announcement a = DomainObjectFactory.createAnnouncementImpl(); |
UserSessionImpl userSession = null; |
userSession = (UserSessionImpl) request.getAttribute(Globals.USER_SESSION_KEY); |
List<String> roles = (List<String>) userSession.get(TARGET_ROLES_KEY); |
announcementsForm.getAnnouncementView().setTargetRoles(roles); |
announcementsForm.getAnnouncementView().persistViewInObject(a); |
IServiceManager sm = ServiceManager.getInstance(); |
75,6 → 71,8 |
b.close(); |
Image i = DomainObjectFactory.createImageImpl(); |
i.setImage(b.toByteArray()); |
i.setContentType(bigImage.getContentType()); |
i.setSize(bigImage.getFileSize()); |
i.setDescription(a.getTitle()); |
i.setName(bigImage.getFileName()); |
i.setSaveDate(new Date()); |
96,6 → 94,8 |
Image i2 = DomainObjectFactory.createImageImpl(); |
i2.setImage(b2.toByteArray()); |
i2.setDescription(a.getTitle()); |
i2.setContentType(smallImage.getContentType()); |
i2.setSize(smallImage.getFileSize()); |
i2.setName(smallImage.getFileName()); |
i2.setSaveDate(new Date()); |
a.setSmallImage(i2); |
120,10 → 120,7 |
} |
else |
{ |
UserSessionImpl userSession = (UserSessionImpl) request.getAttribute(Globals.USER_SESSION_KEY); |
List<String> roles = (List<String>) userSession.get(TARGET_ROLES_KEY); |
AnnouncementView a = announcementsForm.getAnnouncementView(); |
a.setTargetRoles(roles); |
IServiceManager sm = ServiceManager.getInstance(); |
String[] names = new String[]{"object"}; |
Object[] args = new Object[]{a}; |
/impl/src/java/pt/estgp/estgweb/web/filters/UserSessionFilter.java |
---|
43,7 → 43,9 |
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) |
throws IOException, ServletException |
{ |
HttpServletRequest hrequest = (HttpServletRequest) request; |
if(((HttpServletRequest)request).getServletPath().indexOf("errorNoCookies.do")>=0 || !hrequest.isRequestedSessionIdFromCookie()) |
chain.doFilter(request,response); |
try |
/impl/src/java/pt/estgp/estgweb/web/ImageStream.java |
---|
New file |
0,0 → 1,55 |
package pt.estgp.estgweb.web; |
import pt.estgp.estgweb.domain.Image; |
import pt.estgp.estgweb.domain.dao.impl.ImageDaoImpl; |
import java.io.*; |
import javax.servlet.*; |
import javax.servlet.http.*; |
import jomm.dao.impl.AbstractDao; |
import org.apache.log4j.Logger; |
/** |
* @author Fabio |
* @date 4/Abr/2008 |
* @time 11:03:00 |
* @see pt.estgp.estgweb.web |
*/ |
public class ImageStream extends HttpServlet |
{ |
private static final Logger logger = Logger.getLogger(ImageStream.class); |
public void doGet (HttpServletRequest request, HttpServletResponse response) |
throws ServletException, IOException |
{ |
String imageRequarired = request.getPathInfo(); |
imageRequarired=imageRequarired.substring(1); |
long id=Long.parseLong(imageRequarired.trim()); |
AbstractDao.getCurrentSession().beginTransaction(); |
Image image = new ImageDaoImpl().get(id); |
try { |
//String mimeType = MimeTypeGuesser.getInstance().guessMimeType(a.getName()); |
response.setContentType(image.getContentType()); |
byte[] imagemStream = image.getImage(); |
response.setContentLength(imagemStream.length); |
OutputStream out = response.getOutputStream(); |
if(imagemStream!=null) |
out.write(imagemStream); |
else |
logger.warn("Image "+image.getId()+" has 0 bytes"); |
out.flush(); |
out.close(); |
} |
catch (Exception e1) |
{ |
e1.printStackTrace(); |
} |
AbstractDao.getCurrentSession().getTransaction().commit(); |
} |
} |
/impl/src/java/pt/estgp/estgweb/web/tags/IsAdminTag.java |
---|
21,7 → 21,7 |
public int doEndTag() throws JspException { |
UserSessionImpl userSession = (UserSessionImpl) pageContext.getRequest().getAttribute(Globals.USER_SESSION_KEY); |
if(userSession!=null && userSession.getUser() !=null && ((UserImpl)userSession.getUser()).hasRole(Globals.ADMIN_ROLE)) |
if(userSession!=null && userSession.getUser() !=null && (((UserImpl)userSession.getUser()).hasRole(Globals.ADMIN_ROLE) || ((UserImpl)userSession.getUser()).isSuperuser())) |
{ |
String toPage = bodyContent.getString().trim(); |
JspWriter writer = pageContext.getOut(); |
/impl/src/java/pt/estgp/estgweb/web/tags/IsNotAdminTag.java |
---|
New file |
0,0 → 1,44 |
package pt.estgp.estgweb.web.tags; |
import org.apache.log4j.Logger; |
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.UserImpl; |
import pt.estgp.estgweb.Globals; |
public class IsNotAdminTag extends BodyTagSupport { |
private static final Logger logger = Logger.getLogger(IsNotAdminTag.class); |
public int doStartTag() throws JspException { |
return EVAL_BODY_TAG; |
} |
public int doEndTag() throws JspException { |
UserSessionImpl userSession = (UserSessionImpl) pageContext.getRequest().getAttribute(Globals.USER_SESSION_KEY); |
if(userSession == null || userSession.getUser() == null || !(((UserImpl)userSession.getUser()).hasRole(Globals.ADMIN_ROLE) && !((UserImpl)userSession.getUser()).isSuperuser())) |
{ |
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/java/pt/estgp/estgweb/examples/DBInit.java |
---|
21,10 → 21,15 |
{ |
AbstractDao.getCurrentSession().beginTransaction(); |
UserImpl user = DomainObjectFactory.createUserImpl(); |
user.setUsername("1"); |
user.setUsername("super"); |
user.setRoles("all,admin"); |
user.setPassword(BytesUtils.getMD5("1")); |
DaoFactory.getUserDaoImpl().save(user); |
UserImpl userStudent = DomainObjectFactory.createUserImpl(); |
userStudent.setUsername("student"); |
userStudent.setRoles("student"); |
userStudent.setPassword(BytesUtils.getMD5("1")); |
DaoFactory.getUserDaoImpl().save(userStudent); |
AbstractDao.getCurrentSession().getTransaction().commit(); |
} |
} |
/impl/src/hbm/pt/estgp/estgweb/domain/Image.hbm.xml |
---|
14,6 → 14,8 |
<timestamp name="updateDate" unsaved-value="null"/> |
<property name="saveDate" type="timestamp"/> |
<property name="name" type="string"/> |
<property name="contentType" type="string"/> |
<property name="size" type="int"/> |
<property name="description" type="text"/> |
<property name="image" type="binary" length="4194304"/> |
<subclass name="pt.estgp.estgweb.domain.ImageImpl" discriminator-value="ImageImpl"/> |
/impl/src/web/imgs/rolesIcons/estg.gif |
---|
Cannot display: file marked as a binary type. |
svn:mime-type = application/octet-stream |
/impl/src/web/admin/announcements/submitAnnouncement.jsp |
---|
16,8 → 16,22 |
<input type="hidden" name="dispatch" value="addRole"> |
<table class="form"> |
<estgweb:isAdmin> |
<tr> |
<th> |
<bean:message key="announcement.status"/> |
</th> |
<td> |
<html:select property="announcementView.status"> |
<html:option value="true"><bean:message key="yes"/></html:option> |
<html:option value="false"><bean:message key="no"/></html:option> |
</html:select> |
</td> |
</tr> |
</estgweb:isAdmin> |
<tr> |
<th> |
<bean:message key="announcement.typeAnnouncement"/> |
</th> |
<td> |
55,17 → 69,27 |
<bean:message key="announcement.target.roles"/> |
</th> |
<td> |
<select name="targetRolesStr"> |
<html:select property="targetRolesStr"> |
<estgweb:isAdmin> |
<logic:present name="AnnouncementsForm" property="targetRoles"> |
<logic:iterate id="item" name="AnnouncementsForm" property="targetRoles"> |
<jomm:option itemName="item" comparableObjectName="AnnouncementsForm" comparableObjectProperty="targetRolesStr"> |
<jomm:message patternMessage="user.role.{0}" name0="item"/> |
</jomm:option> |
</logic:iterate> |
<input type="button" value="<bean:message key="add"/>" onclick="set(this.form,'addRole');this.form.submit()"> |
</logic:present> |
</select> |
<input type="button" value="<bean:message key="add"/>" onclick="set(this.form,'addRole');this.form.submit()"> |
</estgweb:isAdmin> |
<estgweb:isNotAdmin> |
<html:option value="all"><bean:message key="user.role.all"/></html:option> |
<html:option value="student"><bean:message key="user.role.student"/></html:option> |
<html:option value="oldStudent"><bean:message key="user.role.oldStudent"/></html:option> |
<html:option value="futureStudent"><bean:message key="user.role.futureStudent"/></html:option> |
<html:option value="teacher"><bean:message key="user.role.teacher"/></html:option> |
</estgweb:isNotAdmin> |
</html:select> |
<logic:present name="AnnouncementsForm" property="selectedRoles"> |
<logic:notEmpty name="AnnouncementsForm" property="selectedRoles"> |
<ul> |
/impl/src/web/css/style.css |
---|
83,11 → 83,11 |
h1 |
{ |
font-size:14pt; |
font-size:1.2em; |
} |
h2 |
{ |
font-size:12pt; |
font-size:1em; |
} |
/*************************************************************************************/ |
307,8 → 307,28 |
background-color:#4d4d4d; |
} |
.flashTopNews td,.flashCenterNews td,.flashBottomNews td |
#flashTopNews table |
{ |
width:100%; |
} |
#flashTopNews, #flashTopNews table |
{ |
background-color:#4d4d4d; |
height:100px; |
padding:0; |
margin:0; |
} |
#flashTopNews img |
{ |
height:100px; |
} |
.imageNewsTop |
{ |
text-align:right; |
} |
#flashTopNews td,.flashCenterNews td,.flashBottomNews td |
{ |
vertical-align:top; |
} |
338,7 → 358,7 |
font-weight:bold; |
} |
.titleNewsCenter,.descriptionNewsCenter,.descriptionNewsBottom,.linkLeftMenu a |
.flashCenterNews a,.descriptionNewsBottom a,.linkLeftMenu a,.flashTopNews a |
{ |
text-decoration:none; |
} |
365,9 → 385,10 |
.lastnews ul |
{ |
padding:0; |
list-style: none; |
padding-left:5px; |
WIDTH: 160px; |
padding-right:5px; |
width:160px; |
} |
#leftMenuModule h2 |
/impl/src/web/js/ajax.js |
---|
1,121 → 1,161 |
var xmlHttp; |
var servidorBaseUrl = "@server.base.url@"; |
/** |
* |
* AJAX Functions |
* |
* This code is protected under GNU LGPL License |
* |
* @author Jorge Machado |
* @date April 2008 |
**/ |
/** |
* Starts XMLHTTP Ajax request |
* |
* @author Jorge Machado |
* @date April 2008 |
* |
* params: |
* @params HTTP GET Parameters for query string |
* @xmlHttpRequest request |
* @id target element |
* @stateChanged target function |
* @innerPhrase to put while waiting for response |
* @navjsp requested jsp |
*/ |
function startRequest(xmlHttpRequest,params,id,stateChanged,innerPhrase,navjsp) |
{ |
if(innerPhrase != '') |
getObjectById(id).innerHTML = innerPhrase; |
if (xmlHttpRequest==null) |
{ |
alert ("Browser does not support HTTP Request"); |
return; |
} |
var url= navjsp; |
if(params != null && params.length > 0) |
{ |
url=url+"?"+ params; |
url=url+"&sid="+Math.random(); |
} |
else |
{ |
url=url+"?sid="+Math.random(); |
} |
xmlHttpRequest.onreadystatechange=stateChanged; |
xmlHttpRequest.open("GET",url,true); |
xmlHttpRequest.send(null); |
} |
function getObjectById(objectId) { |
// cross-browser function to get an object's style object given its id |
try |
/** |
* Return an HTML element given ID |
* |
* @author Jorge Machado |
* @date April 2008 |
* |
* params: |
* @objectId required object |
*/ |
function getObjectById(objectId) |
{ |
// cross-browser function to get an object's style object given its id |
try |
{ |
if(document.getElementById && document.getElementById(objectId)) |
{ |
if(document.getElementById && document.getElementById(objectId)) { |
// W3C DOM |
return document.getElementById(objectId); |
} else if (document.all(objectId)) { |
return document.getElementById(objectId); |
} |
else if (document.all(objectId)) |
{ |
// MSIE 4 DOM |
return document.all(objectId); |
} else if (document.layers && document.layers[objectId]) { |
return document.all(objectId); |
} |
else if (document.layers && document.layers[objectId]) |
{ |
// NN 4 DOM.. note: this won't find nested layers |
return document.layers[objectId]; |
} else { |
return false; |
} |
return document.layers[objectId]; |
} |
catch(e) |
else |
{ |
return false; |
} |
} // getObjectById |
function GetXmlHttpObject() |
{ |
var objXMLHttp=null; |
if (window.XMLHttpRequest) |
{ |
objXMLHttp=new XMLHttpRequest(); |
} |
else if (window.ActiveXObject) |
{ |
objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP"); |
} |
return objXMLHttp; |
} |
catch(e) |
{ |
return false; |
} |
} |
/** |
* Creates a new XmlHttpObject |
* @author Jorge Machado |
* @date April 2008 |
* |
* params: |
* @handler target xmlHttpObject function |
*/ |
function GetXmlHttpObject(handler) |
{ |
var objXmlHttp=null; |
if (navigator.userAgent.indexOf("Opera")>=0) |
{ |
alert("This example doesn't work in Opera") ; |
return ; |
} |
if (navigator.userAgent.indexOf("MSIE")>=0) |
{ |
var strName="Msxml2.XMLHTTP"; |
if (navigator.appVersion.indexOf("MSIE 5.5")>=0) |
{ |
strName="Microsoft.XMLHTTP"; |
} |
try |
{ |
objXmlHttp=new ActiveXObject(strName); |
objXmlHttp.onreadystatechange=handler ; |
return objXmlHttp; |
} |
catch(e) |
{ |
alert("Error. Scripting for ActiveX might be disabled") ; |
return ; |
} |
} |
if (navigator.userAgent.indexOf("Mozilla")>=0) |
{ |
objXmlHttp=new XMLHttpRequest(); |
objXmlHttp.onload=handler; |
objXmlHttp.onerror=handler; |
return objXmlHttp; |
} |
var objXmlHttp = null; |
if (navigator.userAgent.indexOf("Opera")>=0) |
{ |
alert("This example doesn't work in Opera") ; |
return objXmlHttp; |
} |
if (navigator.userAgent.indexOf("MSIE")>=0) |
{ |
var strName="Msxml2.XMLHTTP"; |
if (navigator.appVersion.indexOf("MSIE 5.5")>=0) |
{ |
strName="Microsoft.XMLHTTP"; |
} |
try |
{ |
objXmlHttp=new ActiveXObject(strName); |
objXmlHttp.onreadystatechange=handler ; |
return objXmlHttp; |
} |
catch(e) |
{ |
alert("Error. Scripting for ActiveX might be disabled") ; |
return objXmlHttp; |
} |
} |
if (navigator.userAgent.indexOf("Mozilla")>=0) |
{ |
objXmlHttp=new XMLHttpRequest(); |
objXmlHttp.onload=handler; |
objXmlHttp.onerror=handler; |
return objXmlHttp; |
} |
} |
/** |
* |
* Application Methods Examples |
* |
* |
*/ |
/*************************************************** |
TopFlashNews |
***************************************************/ |
var xmlHttpTopFlashNews; |
var getFlashNewsTimeout; |
var getFlashNewsJsp; |
function getImportState() |
function getFlashNews(jsp,timeout) |
{ |
xmlHttp=GetXmlHttpObject(stateChangedGetImportState); |
getObjectById("importState").innerHTML = "<div class=\"statusSearch\">Updating import state ....</div>"; |
if (xmlHttp==null) |
{ |
alert ("Browser does not support HTTP Request"); |
return; |
} |
//http://servidor:8080 |
var url= servidorBaseUrl + "/jsp/import/getImportState.jsp"; |
url=url+"?sid="+Math.random(); |
xmlHttp.onreadystatechange=stateChangedGetImportState; |
xmlHttp.open("GET",url,true); |
xmlHttp.send(null); |
getFlashNewsJsp = jsp; |
getFlashNewsTimeout = timeout; |
getFlashNewsTimeoutCall(); |
} |
function stateChangedGetImportState() |
function getFlashNewsTimeoutCall() |
{ |
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete") |
{ |
var html = xmlHttp.responseText; |
getObjectById("importState").innerHTML=html; |
if(!(getObjectById("importStateStatus") != null && getObjectById("importStateStatus").value == 'STOPPED')) |
{ |
setTimeout(getImportState,5000); |
} |
} |
xmlHttpTopFlashNews=GetXmlHttpObject(stateChangedGetFlashNews); |
startRequest(xmlHttpTopFlashNews,"","flashTopNews",stateChangedGetFlashNews,"",getFlashNewsJsp) |
} |
function stateChangedGetFlashNews() |
{ |
if (xmlHttpTopFlashNews.readyState==4 || xmlHttpTopFlashNews.readyState=="complete") |
{ |
getObjectById("flashTopNews").innerHTML=xmlHttpTopFlashNews.responseText; |
setTimeout(getFlashNewsTimeoutCall,getFlashNewsTimeout); |
} |
} |
/impl/src/web/public/index.jsp |
---|
23,41 → 23,31 |
<jomm:messages/> |
<html:errors/> |
<script type="text/javascript"> |
<!-- |
getFlashNews('<%=request.getContextPath()%>/public/announcements/getFlashNews.jsp',<%=Globals.ANNOUNCEMENT_TYPE_TOP_FLASH_NEWS_TIMEOUT%>); |
--> |
</script> |
<div class="indexPage" > |
<div class="header"> |
<h1> <bean:message key="mainAnnouncements"/></h1> |
</div> |
<table class="flashTopNews"> |
<tr> |
<td> |
<div class="textNewsTop"> |
<logic:present name="Announcements"> |
<logic:iterate id="item" name="Announcements" type="pt.estgp.estgweb.domain.views.AnnouncementView"> |
<logic:equal value="top.flash.news" name="item" property="type"> |
<%if (topAnnouncements <= Globals.NUMBER_ANNOUNCEMENT_TYPE_TOP_FLASH_NEWS_INDEX) { |
%> |
<div class="titleNewsTop"> |
<html:link action="/loadAnnouncement?id=${item.id}&dispatch=load">${item.title}</html:link> |
</div> |
<div class="descriptionNewsTop"> |
<html:link action="/loadAnnouncement?id=${item.id}&dispatch=load" >${item.text}</html:link> |
</div> |
<% |
} |
topAnnouncements++; |
%> |
</logic:equal> |
</logic:iterate> |
</logic:present> |
</div> |
</td> |
<td class="imageNewsTop"> |
<img src="<%=request.getContextPath()%>/imgs/destaque_1.jpg"/> |
</td> |
</tr> |
</table> |
<div id="flashTopNews"> |
<table> |
<tr> |
<td> |
<div class="textNewsTop"> |
<bean:message key="announcements.loading"/> |
</div> |
</td> |
<td class="imageNewsTop"> |
</td> |
</tr> |
</table> |
</div> |
<table class="flashCenterNews"> |
<tr> |
65,7 → 55,7 |
<logic:iterate id="item" name="Announcements" type="pt.estgp.estgweb.domain.views.AnnouncementView"> |
<logic:equal value="bottom.flash.news" name="item" property="type"> |
<%if(centerAnnouncements<=Globals.NUMBER_ANNOUNCEMENT_TYPE_BOTTOM_FLASH_NEWS_INDEX) |
{ |
{ |
%> |
<td class="imageNewsCenter"> |
<img src="<%=request.getContextPath()%>/imgs/destaque_2_1.jpg"/> |
79,11 → 69,11 |
</div> |
</td> |
<% |
} |
else{ |
} |
centerAnnouncements++; |
%> |
} |
else{ |
} |
centerAnnouncements++; |
%> |
</logic:equal> |
</logic:iterate> |
</div> |
95,16 → 85,16 |
<logic:iterate id="item" name="Announcements" type="pt.estgp.estgweb.domain.views.AnnouncementView"> |
<logic:equal value="news" name="item" property="type"> |
<%if(bottomAnnouncements<=Globals.NUMBER_ANNOUNCEMENT_TYPE_NEW_INDEX) |
{ |
{ |
%> |
<td class="imageNewsBottom"> |
<img src="<%=request.getContextPath()%>/imgs/destaque_3_3.gif"/> |
</td> |
<% |
} |
else{ |
} |
bottomAnnouncements++; |
} |
else{ |
} |
bottomAnnouncements++; |
%> |
</logic:equal> |
</logic:iterate> |
116,8 → 106,8 |
<logic:iterate length="5" id="item" name="Announcements" type="pt.estgp.estgweb.domain.views.AnnouncementView"> |
<logic:equal value="news" name="item" property="type"> |
<% |
if(bottomAnnouncements<=4) |
{ |
if(bottomAnnouncements<=4) |
{ |
%> |
<td width="50px"> |
<div class="titleNewsBottom"> |
128,8 → 118,8 |
</div> |
</td> |
<% |
} |
bottomAnnouncements++; |
} |
bottomAnnouncements++; |
%> |
</logic:equal> |
</logic:iterate> |
/impl/src/web/public/portals/alunos/student.jsp |
---|
12,16 → 12,12 |
<jsp:include page="../blocoPortal.jsp"/> |
<jsp:include page="contactosLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
</td> |
<td class="column"> |
<jsp:include page="mobilidadeLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
<jsp:include page="accaoSocialLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
</td> |
<td class="column"> |
<jsp:include page="orgaosLinks.jsp"/> |
/impl/src/web/public/portals/Docentes/teacher.jsp |
---|
4,25 → 4,27 |
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %> |
<div class="portal"> |
<div class="portalContent"> |
<table class="columnTable"> |
<table class="columnTable" width="100%"> |
<tbody> |
<tr> |
<td class="column" width="50%"> |
<jsp:include page="servicosLinks.jsp"/> |
<td class="column"> |
<jsp:include page="institutoPolitecnicoLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
<jsp:include page="informacaoAcademicaLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
<jsp:include page="contactosLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
<jsp:include page="informacaoAcademicaLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
</td> |
<td class="column" width="50%"> |
<td class="column"> |
<jsp:include page="mobilidadeLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
<jsp:include page="accaoSocialLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
<jsp:include page="orgaosLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
<jsp:include page="institutoPolitecnicoLinks.jsp"/> |
</td> |
<td class="column"> |
<jsp:include page="servicosLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
</td> |
</tr> |
/impl/src/web/public/portals/antigosAlunos/oldStudent.jsp |
---|
4,22 → 4,24 |
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %> |
<div class="portal"> |
<div class="portalContent"> |
<table class="columnTable"> |
<table class="columnTable" width="100%"> |
<tbody> |
<tr> |
<td class="column" width="50%"> |
<td class="column"> |
<jsp:include page="estgLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
<jsp:include page="servicosLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
<jsp:include page="actividadesLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
</td> |
<td class="column" width="50%"> |
<td class="column"> |
<jsp:include page="formacaoPosGraduadaLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
<jsp:include page="institutoPolitecnicoLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
</td> |
<td class="column"> |
<jsp:include page="actividadesLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
<jsp:include page="contactosLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
</td> |
/impl/src/web/public/portals/futurosAlunos/futureStudent.jsp |
---|
4,28 → 4,32 |
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %> |
<div class="portal"> |
<div class="portalContent"> |
<table class="columnTable"> |
<table class="columnTable" width="100%"> |
<tbody> |
<tr> |
<td class="column" width="50%"> |
<td class="column"> |
<jsp:include page="estgLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
<jsp:include page="servicosLinks.jsp"/> |
<jsp:include page="informacaoAcademicaLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
<jsp:include page="contactosLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
</td> |
<td class="column"> |
<jsp:include page="institutoPolitecnicoLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
<jsp:include page="orgaosLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
<jsp:include page="accaoSocialLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
</td> |
<td class="column" width="50%"> |
<jsp:include page="informacaoAcademicaLinks.jsp"/> |
<td class="column"> |
<jsp:include page="servicosLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
<jsp:include page="mobilidadeLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
<jsp:include page="accaoSocialLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
<jsp:include page="orgaosLinks.jsp"/> |
<jsp:include page="../blocoPortal.jsp"/> |
</td> |
</tr> |
</tbody> |
/impl/src/web/public/announcements/getFlashNews.jsp |
---|
New file |
0,0 → 1,39 |
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.IServiceManager" %> |
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.ServiceManager" %> |
<%@ page import="pt.estgp.estgweb.domain.views.AnnouncementView" %> |
<%@ page import="java.util.List" %> |
<%@page import="pt.estgp.estgweb.Globals" %> |
<%@ page import="pt.estgp.estgweb.web.utils.RequestUtils" %> |
<%@ page import="java.util.ArrayList" %> |
<%@ page contentType="text/html;charset=UTF-8" language="java" %> |
<%@ taglib uri="/WEB-INF/tlds/estgweb.tld" prefix="estgweb" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %> |
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %> |
<% |
//String iterator = request.getParameter("iterator"); |
IServiceManager sm = ServiceManager.getInstance(); |
// String[] names = new String[]{"iterator"}; |
String[] names = new String[]{}; |
//Object[] arguments = new Object[]{Integer.parseInt(iterator)}; |
Object[] arguments = new Object[]{}; |
AnnouncementView announcementView = (AnnouncementView) sm.execute(RequestUtils.getRequester(request), "LoadTopFlashNewsIterate", arguments, names); |
%> |
<table> |
<tr> |
<td> |
<div id="textNewsTop"> |
<div class="titleNewsTop"> |
<html:link action="/loadAnnouncement?id=<%=announcementView.getId()%>&dispatch=load"><%=announcementView.getTitle()%></html:link> |
</div> |
<div class="descriptionNewsTop"> |
<html:link action="/loadAnnouncement?id=<%=announcementView.getId()%>&dispatch=load"><%=announcementView.getTextSummary()%></html:link> |
</div> |
</div> |
</td> |
<td class="imageNewsTop"> |
<%if(announcementView.getBigImage() != null){%><img alt="<%=announcementView.getTitle()%>" src="<%=request.getContextPath()%>/imageStream/<%=announcementView.getBigImage().getId()%>"><%}%> |
</td> |
</tr> |
</table> |
/impl/src/web/public/announcements/announcements.jsp |
---|
17,34 → 17,24 |
<div class="lastNews"> |
<div class="header"> |
<h1><bean:message key="announcements"/></h1> |
<h1><bean:message key="announcements"/></h1> |
</div> |
<table class="lastNewsBlock"> |
<tr> |
<td> |
<logic:present name="Announcements"> |
<div class="listClean"> |
<ul> |
<logic:iterate id="item" name="Announcements" type="pt.estgp.estgweb.domain.views.AnnouncementView"> |
<li> |
<logic:empty name="item" property="url"> |
<logic:equal value="news" name="item" property="type"> |
<div class="titleLastNews"><html:link action="/loadAnnouncement?id=${item.id}&dispatch=load">${item.title}</html:link></div> |
</logic:equal> |
</logic:empty> |
<logic:notEmpty name="item" property="url"> |
<logic:equal value="news" name="item" property="type"> |
<div class="titleLastNews"><html:link href="${item.url}">${item.title}</html:link></div> |
</logic:equal> |
</logic:notEmpty> |
</li> |
</logic:iterate> |
</ul> |
</div> |
</logic:present> |
</td> |
</tr> |
</table> |
<div class="lastNewsBlock"> |
<logic:present name="Announcements"> |
<ul> |
<logic:iterate id="item" name="Announcements" type="pt.estgp.estgweb.domain.views.AnnouncementView"> |
<logic:equal value="news" name="item" property="type"> |
<li> |
<logic:empty name="item" property="url"> |
<div class="titleLastNews"><html:link action="/loadAnnouncement?id=${item.id}&dispatch=load">${item.title}</html:link></div> |
</logic:empty> |
<logic:notEmpty name="item" property="url"> |
<div class="titleLastNews"><html:link href="${item.url}">${item.title}</html:link></div> |
</logic:notEmpty> |
</li> |
</logic:equal> |
</logic:iterate> |
</ul> |
</logic:present> |
</div> |
</div> |
/impl/gen/java/pt/estgp/estgweb/domain/Course.java |
---|
1,5 → 1,5 |
package pt.estgp.estgweb.domain; |
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9 |
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9 |
import java.util.Date; |
/impl/gen/java/pt/estgp/estgweb/domain/UrlStatMonth.java |
---|
1,5 → 1,5 |
package pt.estgp.estgweb.domain; |
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9 |
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9 |
import java.util.Date; |
/impl/gen/java/pt/estgp/estgweb/domain/UrlStatDayId.java |
---|
1,5 → 1,5 |
package pt.estgp.estgweb.domain; |
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9 |
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9 |
/impl/gen/java/pt/estgp/estgweb/domain/SessionObject.java |
---|
1,5 → 1,5 |
package pt.estgp.estgweb.domain; |
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9 |
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9 |
import java.util.Date; |
/impl/gen/java/pt/estgp/estgweb/domain/GenericUser.java |
---|
1,5 → 1,5 |
package pt.estgp.estgweb.domain; |
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9 |
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9 |
import java.util.Date; |
/impl/gen/java/pt/estgp/estgweb/domain/User.java |
---|
1,5 → 1,5 |
package pt.estgp.estgweb.domain; |
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9 |
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9 |
import java.util.Date; |
/impl/gen/java/pt/estgp/estgweb/domain/UrlStatYear.java |
---|
1,5 → 1,5 |
package pt.estgp.estgweb.domain; |
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9 |
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9 |
import java.util.Date; |
/impl/gen/java/pt/estgp/estgweb/domain/UrlStatMonthId.java |
---|
1,5 → 1,5 |
package pt.estgp.estgweb.domain; |
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9 |
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9 |
/impl/gen/java/pt/estgp/estgweb/domain/UserSession.java |
---|
1,5 → 1,5 |
package pt.estgp.estgweb.domain; |
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9 |
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9 |
import java.util.Date; |
/impl/gen/java/pt/estgp/estgweb/domain/Image.java |
---|
1,5 → 1,5 |
package pt.estgp.estgweb.domain; |
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9 |
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9 |
import java.util.Date; |
14,15 → 14,19 |
private Date updateDate; |
private Date saveDate; |
private String name; |
private String contentType; |
private int size; |
private String description; |
private byte[] image; |
public Image() { |
} |
public Image(Date saveDate, String name, String description, byte[] image) { |
public Image(Date saveDate, String name, String contentType, int size, String description, byte[] image) { |
this.saveDate = saveDate; |
this.name = name; |
this.contentType = contentType; |
this.size = size; |
this.description = description; |
this.image = image; |
} |
55,6 → 59,20 |
public void setName(String name) { |
this.name = name; |
} |
public String getContentType() { |
return this.contentType; |
} |
public void setContentType(String contentType) { |
this.contentType = contentType; |
} |
public int getSize() { |
return this.size; |
} |
public void setSize(int size) { |
this.size = size; |
} |
public String getDescription() { |
return this.description; |
} |
/impl/gen/java/pt/estgp/estgweb/domain/SessionObjectId.java |
---|
1,5 → 1,5 |
package pt.estgp.estgweb.domain; |
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9 |
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9 |
/impl/gen/java/pt/estgp/estgweb/domain/Announcement.java |
---|
1,5 → 1,5 |
package pt.estgp.estgweb.domain; |
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9 |
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9 |
import java.util.Date; |
/impl/gen/java/pt/estgp/estgweb/domain/Group.java |
---|
1,5 → 1,5 |
package pt.estgp.estgweb.domain; |
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9 |
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9 |
import java.util.Date; |
/impl/gen/java/pt/estgp/estgweb/domain/UrlStatDay.java |
---|
1,5 → 1,5 |
package pt.estgp.estgweb.domain; |
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9 |
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9 |
import java.util.Date; |
/impl/gen/java/pt/estgp/estgweb/domain/UrlStatYearId.java |
---|
1,5 → 1,5 |
package pt.estgp.estgweb.domain; |
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9 |
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9 |
/impl/gen/java/pt/estgp/estgweb/domain/CourseUserAssociation.java |
---|
1,5 → 1,5 |
package pt.estgp.estgweb.domain; |
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9 |
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9 |
import java.util.Date; |
/impl/gen/java/pt/estgp/estgweb/domain/UrlStat.java |
---|
1,5 → 1,5 |
package pt.estgp.estgweb.domain; |
// Generated 3/Abr/2008 12:06:01 by Hibernate Tools 3.2.0.b9 |
// Generated 4/Abr/2008 15:49:07 by Hibernate Tools 3.2.0.b9 |
import java.util.Date; |
/impl/build.properties |
---|
25,6 → 25,8 |
tomcat.username=admin |
tomcat.password=admin |
service.url=${tomcat.url}${tomcat.context.path} |
#IF is ROOT use Nothing |
#example for ROOT: |
# tomcat.context.path.install=/ |
/impl/build.xml |
---|
276,6 → 276,9 |
<include name="**/*"/> |
</fileset> |
</copy> |
<replace file="${build.dir.war}/js/ajax.js"> |
<replacefilter token="@server.base.url@" value="${tomcat.context.path}"/> |
</replace> |
</target> |
<target name="war" depends="build.war"> |