Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 483 → Rev 488

/impl/conf/language/MessageResources.properties
126,7 → 126,7
fail.role=Lamentamos o incómodo, mas necessita de permissões especiais para aceder a esta área.
fail.owner=Lamentamos o incómodo, mas não tem permissões sobre o objecto ao qual tentou aceder.
fail.timer=Lamentamos o incomodo, mas a acção que tentou efectuar não pode ser executada nesta data.
fail.authenticate=Falhou a autênticação
fail.authenticate=O nome de utilizador ou a palavra passe estão errados. Por favor tente de novo.
 
#palavras comuns
courseunit=Unidade Curricular
/impl/conf/language/MessageResourcesCourseUnits.properties
58,6 → 58,8
courseunit.S2=2ª Semestre
courseunit.ALL=Todos os Semestres
courseunit.assignement.delivered.date=Data de Entrega
courseunit.assignement.delivered.date.first.version=Data de Entrega da Primeira Versão
courseunit.assignement.delivered.versions=Total de Versões Entregues
courseunit.assignement.deliver.date=Data Limite de Entrega
courseunit.assignement.deliver.type=Tipo de entrega
courseunit.assignement.deliver.type.zipfile=Ficheiro Comprimido (ZIP)
/impl/conf/app.properties
81,6 → 81,7
##################################################
##Proxy Servers
#If is an HTTP Server needs encoding config if FTP needs user pass config
#This server is the server for unit contents, must be named ionline, it is hardcoded
server.ionline=ftp://www.global.estgp.pt
server.ionline.start.path=
ionline.pass=baco
/impl/src/java/jomm/utils/StringsUtils.java
30,19 → 30,30
 
public static String getFormatedText(String text)
{
return getFormatedText(text,Integer.MAX_VALUE,Integer.MAX_VALUE);
}
public static String getFormatedText(String text, int maxlines, int maxLineSize)
{
int linesCounter = 1;
int lineSize = 0;
if (text == null || text.trim().length() == 0)
return "";
 
StringBuilder finalFormatedText = new StringBuilder();
boolean newLine = true;
for (int i = 0; i < text.length(); i++)
for (int i = 0; i < text.length() && linesCounter < maxlines; i++)
{
lineSize++;
 
if (newLine && text.charAt(i) == ' ')
{
finalFormatedText.append("&nbsp;");
}
else if (text.charAt(i) == '\n')
{
linesCounter++;
lineSize = 0;
finalFormatedText.append("<br>");
newLine = true;
}
63,6 → 74,13
finalFormatedText.append(text.charAt(i));
newLine = false;
}
 
/*Line Size Simulation*/
if(lineSize > maxLineSize)
{
linesCounter++;
lineSize = 0;
}
}
return finalFormatedText.toString();
}
/impl/src/java/jomm/web/ftp/impl/FtpFile.java
46,7 → 46,7
this.lastUpdate = ftpFile.getTimestamp().getTime();
this.name = ftpFile.getName();
this.directory = ftpFile.isDirectory();
this.size = ftpFile.getSize();
this.size = ftpFile.getSize() / 1024;
if(name.lastIndexOf('.')>=0)
this.extension = name.substring(name.lastIndexOf('.'));
if (ftpFile.getType() == FTPFile.DIRECTORY_TYPE)
/impl/src/java/pt/estgp/estgweb/services/courseunits/CourseUnitWorkService.java
10,6 → 10,7
import pt.estgp.estgweb.domain.dao.DaoFactory;
import pt.estgp.estgweb.services.expceptions.ServiceException;
import pt.estgp.estgweb.services.data.RepositoryService;
import pt.estgp.estgweb.services.data.IRepositoryFile;
import pt.estgp.estgweb.services.blogs.CreateBlogService;
import pt.estgp.estgweb.services.email.SendEmailService;
import pt.estgp.estgweb.services.email.EMAILJob;
220,7 → 221,10
CourseUnitAssignementView courseUnitAssignementView = new CourseUnitAssignementView(assignement,assignement.getDeliverables().size());
for(CourseUnitDeliverable d: assignement.getDeliverables())
{
views.add(new CourseUnitDeliverableView(d,courseUnitAssignementView));
CourseUnitDeliverableView c = new CourseUnitDeliverableView(d,courseUnitAssignementView);
views.add(c);
RepositoryFileImpl repositoryFile = repositoryService.loadView(d.getDeliverableRepositoryStream());
c.setVersions(new ArrayList<RepositoryFileVersion>(repositoryFile.getRepositoryFileVersions()));
}
courseUnitAssignementView.setDeliverables(views);
courseUnitAssignementView.setCourseUnitView(new CourseUnitView(assignement.getCourseUnit()));
/impl/src/java/pt/estgp/estgweb/services/common/impl/DefaultResult.java
1,6 → 1,7
package pt.estgp.estgweb.services.common.impl;
 
import pt.estgp.estgweb.services.common.IResult;
import jomm.utils.StringsUtils;
 
/**
* @author Jorge Machado
79,6 → 80,13
return text;
}
 
public String getTextSummary()
{
if(text!=null)
return StringsUtils.getFragment(text,300);
return null;
}
 
public String getUrl() {
return url;
}
/impl/src/java/pt/estgp/estgweb/services/common/CommonServicesManager.java
142,7 → 142,9
{
DefaultResult defaultResult = (DefaultResult) result;
if(defaultResult.getBestFragments() == null || defaultResult.getBestFragments().trim().length() == 0)
{
defaultResult.setBestFragments(LuceneUtils.doStandardHighlights(defaultResult.getText(), query, SEARCH_FRAGMENT_SIZE, SEARCH_MAX_FRAGMENTS));
}
if (!defaultResult.isTitleKey())
{
String title = defaultResult.getTitle();
165,6 → 167,15
if (defaultResult.getText() == null || defaultResult.getText().length() == 0)
defaultResult.setText(text);
}
 
if(defaultResult.getCreator() != null && defaultResult.getCreator().trim().length() > 0)
{
String creator = defaultResult.getCreator();
 
defaultResult.setCreator(LuceneUtils.highlight(defaultResult.getCreator(), query));
if (defaultResult.getCreator() == null || defaultResult.getCreator().length() == 0)
defaultResult.setCreator(creator);
}
}
}
}
/impl/src/java/pt/estgp/estgweb/services/common/IResult.java
17,6 → 17,7
public boolean isSubTitleKey();
public String getBestFragments();
public String getText();
public String getTextSummary();
public boolean isTextKey();
public String getUrl();
public boolean isAbsoluteUrl();
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/BlogDaoImpl.java
120,16 → 120,18
 
public int countBlogs(String query, SearchTypeEnum searchType, List<String> roles, Object o, boolean internal)
{
Criterion c = DaoUtils.createSearchQuery(query,searchType,"description","title");
Criterion c = DaoUtils.createSearchQuery(query,searchType,"description","title","o.name");
Criteria criteria = createRestrictionsCriteria(roles, internal);
criteria.createAlias("owner","o");
criteria.add(c);
return criteria.list().size();
}
 
public List<Blog> searchBlogs(String query, SearchTypeEnum searchTypeEnum, int maxBlogs, int page, List<String> roles, boolean internal)
{
Criterion c = DaoUtils.createSearchQuery(query, searchTypeEnum, "description", "title");
Criterion c = DaoUtils.createSearchQuery(query, searchTypeEnum, "description", "title","o.name");
Criteria criteria = createRestrictionsCriteria(roles, internal);
criteria.createAlias("owner","o");
criteria.add(c)
.setMaxResults(maxBlogs)
.setFirstResult(page * maxBlogs);
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/BlogPostDaoImpl.java
125,16 → 125,18
 
public int countBlogPosts(String query, SearchTypeEnum searchType, List<String> roles, Object o, boolean internal)
{
Criterion c = DaoUtils.createSearchQuery(query,searchType,"text","title");
Criterion c = DaoUtils.createSearchQuery(query,searchType,"text","title","o.name");
Criteria criteria = createRestrictionsCriteria(roles, internal);
criteria.createAlias("owner","o");
criteria.add(c);
return criteria.list().size();
}
 
public List<BlogPost> searchBlogPosts(String query, SearchTypeEnum searchTypeEnum, int maxBlogs, int page, List<String> roles, boolean internal)
{
Criterion c = DaoUtils.createSearchQuery(query, searchTypeEnum, "text", "title");
Criterion c = DaoUtils.createSearchQuery(query, searchTypeEnum, "text", "title","o.name");
Criteria criteria = createRestrictionsCriteria(roles, internal);
criteria.createAlias("owner","o");
criteria.add(c)
.setMaxResults(maxBlogs)
.setFirstResult(page * maxBlogs);
/impl/src/java/pt/estgp/estgweb/domain/dao/DaoUtils.java
44,6 → 44,36
return c;
}
 
public static Criterion createSearchQuery(String query, SearchTypeEnum searchTypeEnum, String field1, String field2,String field3)
{
Criterion c = null;
if (searchTypeEnum == SearchTypeEnum.ExactPhrase)
c = or(or(like(field1, "%" + query + "%"), like(field2, "%" + query + "%")),like(field3, "%" + query + "%"));
else if (searchTypeEnum == SearchTypeEnum.AllWords)
{
String[] fields = query.trim().split(" ");
for (String field : fields)
{
if (c == null)
c = or(or(like(field1, "%" + field + "%"), like(field2, "%" + field + "%")),like(field3, "%" + field + "%"));
else
c = and(c, or(or(like(field1, "%" + field + "%"), like(field2, "%" + field + "%")),like(field3, "%" + field + "%")));
}
}
else
{
String[] fields = query.trim().split(" ");
for (String field : fields)
{
if (c == null)
c = or(or(like(field1, "%" + field + "%"), like(field2, "%" + field + "%")),like(field3, "%" + field + "%"));
else
c = or(c, or(or(like(field1, "%" + field + "%"), like(field2, "%" + field + "%")), like(field3, "%" + field + "%")));
}
}
return c;
}
 
public static Criterion createSearchQuery(String query, SearchTypeEnum searchTypeEnum, String field1)
{
Criterion c = null;
/impl/src/java/pt/estgp/estgweb/domain/views/UserView.java
264,8 → 264,13
public void persistViewInObjectUser(User user)
{
user.setName(name);
user.setAddress(address);
user.setZip(zip);
user.setCountry(country);
user.setEmail(email);
user.setPhonenumber(phonenumber);
user.setOutEmail(outEmail);
 
user.setPop3server(pop3server);
user.setPop3username(pop3username);
if(pop3password != null && pop3password.length()> 0)
273,9 → 278,12
user.setSkype(skype);
user.setGmail(gmail);
user.setMsn(msn);
user.setPhonenumber(phonenumber);
user.setAddress(address);
user.setZip(zip);
user.setOffice(office);
user.setExt(ext);
 
 
 
user.setScholarDegree(scholarDegree);
if(user.getPassword() != null && user.getPassword().length() > 0 && password != null && password.length() > 0)
{
user.setPassword(BytesUtils.getDigestMD5Hex(password));
/impl/src/java/pt/estgp/estgweb/domain/views/utils/CourseUnitDeliverableComparator.java
New file
0,0 → 1,49
package pt.estgp.estgweb.domain.views.utils;
 
import pt.estgp.estgweb.domain.RepositoryFileVersion;
import pt.estgp.estgweb.domain.views.CourseUnitDeliverableView;
 
import java.util.Comparator;
 
/**
* @author Jorge Machado
* @date 15/Dez/2009
* @time 18:15:22
* @email machadofisher@gmail.com
*/
public class CourseUnitDeliverableComparator implements Comparator<CourseUnitDeliverableView> {
 
 
public static CourseUnitDeliverableComparator FIRST_VERSION_DESC = new CourseUnitDeliverableComparator(true,true);
public static CourseUnitDeliverableComparator FIRST_VERSION_ASC = new CourseUnitDeliverableComparator(false,true);
public static CourseUnitDeliverableComparator LAST_VERSION_DESC = new CourseUnitDeliverableComparator(true,false);
public static CourseUnitDeliverableComparator LAST_VERSION_ASC = new CourseUnitDeliverableComparator(false,false);
 
int sort;
boolean first;
 
private CourseUnitDeliverableComparator(boolean desc, boolean first)
{
if(desc)
sort = 1;
else
sort = -1;
this.first = first;
}
 
public int compare(CourseUnitDeliverableView o1, CourseUnitDeliverableView o2)
{
if(!first)
{
if(o1.getDeliverDate().getTime() < o2.getDeliverDate().getTime()) return 1 * sort;
else if(o1.getDeliverDate().getTime() < o2.getDeliverDate().getTime()) return -1 * sort;
else return 0;
}
else
{
if(o1.getVersions().get(0).getSaveDate().getTime() < o2.getVersions().get(0).getSaveDate().getTime()) return 1 * sort;
else if(o1.getVersions().get(0).getSaveDate().getTime() < o2.getVersions().get(0).getSaveDate().getTime()) return -1 * sort;
else return 0;
}
}
}
/impl/src/java/pt/estgp/estgweb/domain/views/utils/RepositoryFileVersionComparator.java
New file
0,0 → 1,35
package pt.estgp.estgweb.domain.views.utils;
 
import pt.estgp.estgweb.domain.RepositoryFileVersion;
 
import java.util.Comparator;
 
/**
* @author Jorge Machado
* @date 15/Dez/2009
* @time 18:15:22
* @email machadofisher@gmail.com
*/
public class RepositoryFileVersionComparator implements Comparator<RepositoryFileVersion> {
 
 
public static RepositoryFileVersionComparator DESC = new RepositoryFileVersionComparator(true);
public static RepositoryFileVersionComparator ASC = new RepositoryFileVersionComparator(false);
 
int sort;
 
private RepositoryFileVersionComparator(boolean desc)
{
if(desc)
sort = 1;
else
sort = -1;
}
 
public int compare(RepositoryFileVersion o1, RepositoryFileVersion o2)
{
if(o1.getSaveDate().getTime() < o2.getSaveDate().getTime()) return 1 * sort;
else if(o1.getSaveDate().getTime() < o2.getSaveDate().getTime()) return -1 * sort;
else return 0;
}
}
/impl/src/java/pt/estgp/estgweb/domain/views/BlogPostView.java
29,6 → 29,7
private String text;
private Image image;
private GenericUser owner;
private long ownerId;
private String ownerUsername;
private String ownerName;
private String ownerEmail;
52,6 → 53,7
this.id = blogPost.getId();
this.owner = blogPost.getOwner();
ownerUsername = owner.getUsername();
ownerId = owner.getId();
ownerName = owner.getName();
ownerEmail = owner.getEmail();
this.blogId = blogPost.getBlog().getId();
203,6 → 205,11
return ownerUsername;
}
 
public long getOwnerId()
{
return ownerId;
}
 
public String getOwnerName()
{
return ownerName;
/impl/src/java/pt/estgp/estgweb/domain/views/AnnouncementView.java
371,6 → 371,16
return StringsUtils.getFormatedText(text);
}
 
public String getFormatedTextSummary(int maxLines, int maxLineSize)
{
return StringsUtils.getFormatedText(getText(),maxLines, maxLineSize);
}
 
public Boolean getFormatedTextBiggerThenPermited(int maxLines, int maxLineSize)
{
return StringsUtils.getFormatedText(getText()).length() > StringsUtils.getFormatedText(getText(),maxLines, maxLineSize).length();
}
 
public Boolean getTextBiggerThenPermited()
{
if(getInternalUrlPath() != null && getInternalUrlPath().trim().length()>0)
/impl/src/java/pt/estgp/estgweb/domain/views/CourseUnitDeliverableView.java
1,13 → 1,15
package pt.estgp.estgweb.domain.views;
 
import pt.estgp.estgweb.domain.CourseUnitAssignement;
import pt.estgp.estgweb.domain.CourseUnitAssignementImpl;
import pt.estgp.estgweb.domain.CourseUnitDeliverableImpl;
import pt.estgp.estgweb.domain.CourseUnitDeliverable;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.views.utils.RepositoryFileVersionComparator;
import pt.estgp.estgweb.web.utils.DatesUtils;
import pt.estgp.estgweb.services.data.RepositoryService;
import pt.estgp.estgweb.services.data.IRepositoryFile;
 
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import java.util.Collections;
 
/**
* @author Jorge Machado
22,9 → 24,13
private String fileStreamId;
private Date deliverDate;
private String deliverDateStr;
private String deliverDateMinutesSecondsStr;
private String deliverDateStrFirstVersion;
private String deliverDateMinutesSecondsStrFirstVersion;
private UserView student;
private String grade;
private String obs;
private List<RepositoryFileVersion> versions;
 
private CourseUnitDeliverable courseUnitDeliverable;
private CourseUnitAssignementView courseUnitAssignementView;
55,6 → 61,7
this.fileStreamId = courseUnitDeliverable.getDeliverableRepositoryStream();
this.deliverDate = courseUnitDeliverable.getDeliverDate();
this.deliverDateStr = DatesUtils.getStringFromDate(deliverDate);
this.deliverDateMinutesSecondsStr = DatesUtils.getStringFromDateWithMinutesAndSeconds(getDeliverDate());
//if is null will create a userview even if deleted
this.student = new UserView(courseUnitDeliverable.getStudent());
if(this.student.isDeleted() && courseUnitDeliverable.getStudentId() > 0)
106,6 → 113,40
}
 
 
public String getDeliverDateMinutesSecondsStrFirstVersion() {
return deliverDateMinutesSecondsStrFirstVersion;
}
 
public List<RepositoryFileVersion> getVersions() {
return versions;
}
 
public int getVersionsSize() {
if(versions == null)
return 0;
return versions.size();
}
 
public void setVersions(List<RepositoryFileVersion> versions)
{
this.versions = versions;
if(versions != null)
{
Collections.sort(versions, RepositoryFileVersionComparator.DESC);
deliverDateStrFirstVersion = DatesUtils.getStringFromDate(versions.get(0).getSaveDate());
deliverDateMinutesSecondsStrFirstVersion = DatesUtils.getStringFromDateWithMinutesAndSeconds(versions.get(0).getSaveDate());
}
}
 
 
public String getDeliverDateMinutesSecondsStr() {
return deliverDateMinutesSecondsStr;
}
 
public String getDeliverDateStrFirstVersion() {
return deliverDateStrFirstVersion;
}
 
public String getObs()
{
return obs;
157,6 → 198,11
this.deliverDateStr = deliverDateStr;
}
 
public String getDeliverDateStrMinutesSeconds()
{
return deliverDateMinutesSecondsStr;
}
 
private static final long milisecondsof24Hours=24*60*60*1000;
 
public boolean isLateDeliver()
/impl/src/java/pt/estgp/estgweb/domain/views/CourseUnitView.java
9,6 → 9,8
import java.io.Serializable;
import java.util.*;
 
import jomm.utils.StringsUtils;
 
/**
* @author Jorge Machado
* @date 2/Mar/2008
279,6 → 281,11
return objectives;
}
 
public String getFormatedObjectives()
{
return StringsUtils.getFormatedText(objectives);
}
 
public void setObjectives(String objectives)
{
this.objectives = objectives;
/impl/src/java/pt/estgp/estgweb/web/utils/DatesUtils.java
19,6 → 19,7
 
private static final Logger logger = Logger.getLogger(DatesUtils.class);
 
private static SimpleDateFormat minutesSecondsDateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
private static SimpleDateFormat filenameDateFormat = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
private static SimpleDateFormat userViewDateFormat = new SimpleDateFormat("yyyy/MM/dd");
 
29,6 → 30,13
return userViewDateFormat.format(d);
}
 
public static String getStringFromDateWithMinutesAndSeconds(Date d)
{
if(d == null)
return "";
return minutesSecondsDateFormat.format(d);
}
 
public static String getStringFromDateForFilename(Date d)
{
if(d == null)
/impl/src/java/pt/estgp/estgweb/web/form/blogs/BlogForm.java
100,9 → 100,9
addMessageWithKeys(errors, httpServletRequest, "errors.required", "blog.description");
if(blogView.getName()!=null)
blogView.setName(blogView.getName().trim());
if(blogView.getName() == null || !StringsUtils.checkLetters09AZazHiffenUnderScore(blogView.getName()))
if(blogView.getName() != null && blogView.getName().trim().length() > 0 && !StringsUtils.checkLetters09AZazHiffenUnderScore(blogView.getName()))
addMessage(errors, httpServletRequest, "blog.bad.name");
else
else if(blogView.getName() != null && blogView.getName().trim().length() > 0)
{
IServiceManager sm;
try
120,7 → 120,8
addMessage(errors, httpServletRequest, "error.500");
}
 
}
}else if(blogView.getName() != null && blogView.getName().trim().length() == 0)
blogView.setName(null);
return errors;
}
 
/impl/src/doc/baco.ppt
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
/impl/src/web/css/style.css
202,7 → 202,7
}
 
#content h2 a {
font-size: 0.8em;
font-size: 1em;
}
 
#content h2 {
/impl/src/web/js/ajax.js
206,7 → 206,9
var objXmlHttp = null;
if (navigator.userAgent.indexOf("Opera")>=0)
{
alert("This example doesn't work in Opera") ;
objXmlHttp=new XMLHttpRequest();
objXmlHttp.onload=handler;
objXmlHttp.onerror=handler;
return objXmlHttp;
}
if (navigator.userAgent.indexOf("MSIE")>=0)
/impl/src/web/layout/searchForm.jsp
39,7 → 39,7
%>
<td class="searchTab">
<html:form action="/search" method="post">
<input type="hidden" name="from" value="home"/>
<!--<input type="hidden" name="from" value="home"/>-->
<input type="hidden" name="dispatch" value="search"/>
<table>
<tr>
79,7 → 79,7
%>
<html:form action="/search" method="post">
<input type="hidden" name="dispatch" value="search"/>
<input type="hidden" name="from" value="intranet"/>
<input type="hidden" name="from" value="Home"/>
<div class="searchTab">
<html:image page="/imgs/lupa.gif" altKey="search"/><input type="text" class="small" name="query" value="<%=query%>"/> <input type="submit" value=">>">
</div>
90,4 → 90,4
%>
 
 
</baco:isModuleOn>
</baco:isModuleOn>
/impl/src/web/public/search/searchResults.jsp
253,7 → 253,13
<logic:notEmpty name="result" property="creator">
<p><b><bean:message key="search.result.creator"/>:</b> ${result.creator}</p>
</logic:notEmpty>
<p class="fragments">${result.bestFragments}</p>
<logic:empty name="result" property="bestFragments">
<p class="fragments">${result.text}</p>
</logic:empty>
<logic:notEmpty name="result" property="bestFragments">
<p class="fragments">${result.bestFragments}</p>
</logic:notEmpty>
 
<logic:notEmpty name="result" property="directory">
<p class="smallGreen">${result.directory}</p>
<p> <bean:message key="srusource.filter.dirs"/> :
/impl/src/web/public/search/searchResultsModule.jsp
69,7 → 69,12
<logic:notEmpty name="result" property="creator">
<p><b><bean:message key="search.result.creator"/>:</b> ${result.creator}</p>
</logic:notEmpty>
<p class="fragments">${result.bestFragments}</p>
<logic:empty name="result" property="bestFragments">
<p class="fragments">${result.text}</p>
</logic:empty>
<logic:notEmpty name="result" property="bestFragments">
<p class="fragments">${result.bestFragments}</p>
</logic:notEmpty>
<logic:notEmpty name="result" property="directory">
<p class="smallGreen">${result.directory}</p>
<p> <bean:message key="srusource.filter.dirs"/> :
/impl/src/web/public/blogs/blog.jsp
189,7 → 189,7
</tr>
<tr>
<td colspan="2" class="pFooter">
Posted by: (${post.ownerUsername}) ${post.ownerName} [AT] ${post.formatedSaveDate}
Posted by: <html:link page="/startProfile.do?userView.id=${post.ownerId}">(${post.ownerUsername}) ${post.ownerName}</html:link> [AT] ${post.formatedSaveDate}
</td>
</tr>
</baco:canLoad>
229,11 → 229,15
<%
String identifier = "" + BlogView.getId();
if(BlogView.getName() != null && BlogView.getName().length() > 0)
identifier = BlogView.getName();
{ 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>
<bean:message key="at"/>
/impl/src/web/public/announcements/getFlashNews.jsp
26,20 → 26,21
<table class="container">
<tr>
<td class="textContainer">
<%if(announcementView.getUrl()==null)
<%
if(announcementView.getUrl()==null)
{%>
<h2><a href="<%=request.getContextPath()%>/loadAnnouncement.do?id=<%=announcementView.getId()%>&dispatch=load"><%=announcementView.getTitle()%></a></h2>
<p><a href="<%=request.getContextPath()%>/loadAnnouncement.do?id=<%=announcementView.getId()%>&dispatch=load"><%=announcementView.getTextSummary()%></a></p>
<p><a href="<%=request.getContextPath()%>/loadAnnouncement.do?id=<%=announcementView.getId()%>&dispatch=load"><%=announcementView.getFormatedTextSummary(10,150)%> ... </a></p>
<%}
else if (!announcementView.getTextBiggerThenPermited())
else if (!announcementView.getFormatedTextBiggerThenPermited(10,150))
{%>
<h2><a href="<%=announcementView.getUrl()%>"><%=announcementView.getTitle()%></a></h2>
<p><a href="<%=announcementView.getUrl()%>"><%=announcementView.getText()%></a></p>
<p><a href="<%=announcementView.getUrl()%>"><%=announcementView.getFormatedText()%></a></p>
<%}
else
{%>
<h2><a href="<%=request.getContextPath()%>/loadAnnouncement.do?id=<%=announcementView.getId()%>&dispatch=load"><%=announcementView.getTitle()%></a></h2>
<p><a href="<%=request.getContextPath()%>/loadAnnouncement.do?id=<%=announcementView.getId()%>&dispatch=load"><%=announcementView.getTextSummary()%></a></p>
<p><a href="<%=request.getContextPath()%>/loadAnnouncement.do?id=<%=announcementView.getId()%>&dispatch=load"><%=announcementView.getFormatedTextSummary(10,150)%> ... </a></p>
<%}%>
</td>
<td class="imageContainer">
/impl/src/web/public/announcements/loadAnnouncement.jsp
55,6 → 55,9
</html:link>
</baco:canManage>
</h2>
<logic:notEmpty name="Announcement" property="url">
<p>URL: <html:link page="${Announcement.url}"><script type="text/javascript">document.write((""+document.location).substr(0,(""+document.location).lastIndexOf("/")));</script>${Announcement.url}</html:link></p>
</logic:notEmpty>
<%
AnnouncementStyleEnum styleEnum = Announcement.getStyleEnum();
 
77,6 → 80,7
%>
 
 
 
<p>
<div class="imageAnnouncement">
<%
308,7 → 312,9
</tr>
<logic:notEmpty name="Announcement" property="url">
<tr>
<td colspan="2"> &nbsp;&nbsp;&gt;&gt; <html:link href="${Announcement.url}">${Announcement.url}</html:link></td>
<td colspan="2">
URL: <html:link page="${Announcement.url}"><script type="text/javascript">document.write((""+document.location).substr(0,(""+document.location).lastIndexOf("/")));</script>${Announcement.url}</html:link>
</td>
</tr>
</logic:notEmpty>
<tr>
/impl/src/web/user/courseunits/courseunitassignement.jsp
1,6 → 1,8
<%@ page import="pt.estgp.estgweb.domain.Teacher" %>
<%@ page import="pt.estgp.estgweb.domain.TeacherImpl" %>
<%@ page import="jomm.utils.MessageResources" %>
<%@ page import="java.util.Collections" %>
<%@ page import="pt.estgp.estgweb.domain.views.utils.CourseUnitDeliverableComparator" %>
<%@ 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" %>
95,15 → 97,72
</logic:notEmpty>
</table>
</div>
 
<bean:define id="orderFirst" type="java.lang.String" scope="request" value=""/>
<bean:define id="orderLast" type="java.lang.String" scope="request" value=""/>
 
<%
// String orderFirst = "";
// String orderLast = "";
 
if (request.getParameter("sort") != null) {
String sortBy = request.getParameter("sort");
if (sortBy.equals("firstAsc"))
{
Collections.sort(CourseUnitAssignementView.getDeliverables(), CourseUnitDeliverableComparator.FIRST_VERSION_ASC);
%>
<bean:define id="orderFirst" type="java.lang.String" scope="request" value="firstDesc"/>
<bean:define id="orderLast" type="java.lang.String" scope="request" value="lastAsc"/>
<%
}
else if (sortBy.equals("firstDesc"))
{
Collections.sort(CourseUnitAssignementView.getDeliverables(), CourseUnitDeliverableComparator.FIRST_VERSION_DESC);
%>
<bean:define id="orderFirst" type="java.lang.String" scope="request" value="firstAsc"/>
<bean:define id="orderLast" type="java.lang.String" scope="request" value="lastAsc"/>
<%
}
else if (sortBy.equals("lastAsc"))
{
Collections.sort(CourseUnitAssignementView.getDeliverables(), CourseUnitDeliverableComparator.LAST_VERSION_ASC);
%>
<bean:define id="orderLast" type="java.lang.String" scope="request" value="lastDesc"/>
<bean:define id="orderFirst" type="java.lang.String" scope="request" value="firstAsc"/>
<%
}
else if (sortBy.equals("lastDesc"))
{
Collections.sort(CourseUnitAssignementView.getDeliverables(), CourseUnitDeliverableComparator.LAST_VERSION_DESC);
%>
<bean:define id="orderLast" type="java.lang.String" scope="request" value="lastAsc"/>
<bean:define id="orderFirst" type="java.lang.String" scope="request" value="firstAsc"/>
<%
}
else
{
%>
<bean:define id="orderFirst" type="java.lang.String" scope="request" value="firstAsc"/>
<bean:define id="orderLast" type="java.lang.String" scope="request" value="lastAsc"/>
 
<%
}
}
 
%>
 
<nested:form action="/user/courseUnitControllerFromHome">
<input type="hidden" name="dispatch" value="updateDeliverables">
<html:hidden property="courseUnitAssignementView.id" value="${CourseUnitAssignementView.id}"/>
 
<html:hidden property="courseUnitView.id" value="${CourseUnitView.id}"/>
 
<a name="works"/>
<table class="dataTable">
<tr>
<th><bean:message key="courseunit.assignement.delivered.date"/></th>
<th><bean:message key="courseunit.assignement.delivered.versions"/></th>
<th><html:link action="/user/startLoadCourseUnitAssignementFromHome?courseUnitAssignementView.id=${CourseUnitAssignementView.id}&sort=${orderFirst}#works"><bean:message key="courseunit.assignement.delivered.date.first.version"/></html:link></th>
<th><html:link action="/user/startLoadCourseUnitAssignementFromHome?courseUnitAssignementView.id=${CourseUnitAssignementView.id}&sort=${orderLast}#works"><bean:message key="courseunit.assignement.delivered.date"/></html:link></th>
<th><bean:message key="courseunit.assignement.deliver.time"/></th>
<th><bean:message key="number"/></th>
<th><bean:message key="name"/></th>
113,7 → 172,18
</tr>
<nested:iterate id="deliverable" property="courseUnitAssignementView.deliverables" type="pt.estgp.estgweb.domain.views.CourseUnitDeliverableView">
<tr>
<td>${deliverable.deliverDateStr} </td>
<td align="right">
 
<a href="javascript:showOrHideOne('work${deliverable.id}')">${deliverable.versionsSize}</a>
<div id="work${deliverable.id}" style="display:none;">
<nested:iterate id="version" name="deliverable" property="versions" type="pt.estgp.estgweb.domain.RepositoryFileVersion">
- <bean:message key="courseunit.assignement.deliver.version"/> (${version.saveDate})&nbsp;<br/>
</nested:iterate>
</div>
 
</td>
<td nowrap="nowrap" align="center">${deliverable.deliverDateMinutesSecondsStrFirstVersion} </td>
<td nowrap="nowrap" align="center">${deliverable.deliverDateStrMinutesSeconds} </td>
<logic:equal name="deliverable" property="lateDeliver" value="true">
<td class="statusERROR">
<bean:message key="courseunit.assignement.deliver.time.late"/>
126,7 → 196,7
</logic:notEqual>
<td align="right">${deliverable.student.code}</td>
<td>${deliverable.student.name}</td>
<td><a target="_blank" href="<%=request.getContextPath()%>/repositoryStream/${deliverable.fileStreamId}"><bean:message key="courseunit.assignement.deliver.version"/> (${deliverable.deliverDateStr})</a></td>
<td><a target="_blank" href="<%=request.getContextPath()%>/repositoryStream/${deliverable.fileStreamId}"><bean:message key="courseunit.assignement.deliver.version"/> (${deliverable.deliverDateMinutesSecondsStr})</a></td>
<td>
<nested:hidden property="id"/>
<nested:text property="grade"/>
/impl/src/web/user/courseunits/courseunit.jsp
39,7 → 39,7
<p>
<baco:cantManage name="CourseUnitView">
<logic:present name="CourseUnitView" property="objectives">
${CourseUnitView.objectives}
${CourseUnitView.formatedObjectives}
</logic:present>
<logic:notPresent name="CourseUnitView" property="objectives">
<bean:message key="courseunit.objectives.not.available"/>