Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 338 → Rev 341

/impl/conf/WEB-INF/tlds/baco.tld
121,6 → 121,20
</attribute>
</tag>
<tag>
<name>isRealOwner</name>
<tagclass>pt.estgp.estgweb.web.tags.RealOwnerTag</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>isValid</name>
<tagclass>pt.estgp.estgweb.web.tags.IsValidTag</tagclass>
<attribute>
/impl/conf/template/assignement/Assignement.txt
1,7 → 1,10
Unidade Curricular:{0}
Unidade Curricular:{0}
 
Titulo:{1}
 
Data de Entrega: {2}
 
Descrição:
 
{3}
 
/impl/src/java/pt/estgp/estgweb/services/courseunits/CreateCourseUnitWorksBackupService.java
31,10 → 31,9
*/
/**
* @author Jorge Machado
*
*
* Created at 17/Out/2003 , 23:45:24
*
* <p/>
* <p/>
* Created at 17/Out/2003 , 23:45:24
*/
public class CreateCourseUnitWorksBackupService implements IService
{
45,16 → 44,16
 
public String createSystemActualYearBackup(String importYear, UserSession userSession) throws ServiceException
{
if(importYear == null || importYear.trim().length() == 0)
if (importYear == null || importYear.trim().length() == 0)
importYear = DatesUtils.getImportYear();
String importYearIntranet = DatesUtils.getImportYearIntranet();
String tmpName = BytesUtils.generateHexKey();
String tmpName = BytesUtils.generateHexKey();
String tmpDir = Globals.TMP_DIR + "/" + tmpName;
new File(tmpDir).mkdirs();
List<Course> courses = DaoFactory.getCourseDaoImpl().findAll(importYear);
try
{
for(Course c: courses)
for (Course c : courses)
{
String couseDirPath = tmpDir + "/" + StringsUtils.normalizeResourceName(c.getName()) + '.' + c.getCode();
try
62,11 → 61,11
String courseImportYearPath = couseDirPath + "/" + importYearIntranet;
File courseImportYearDir = new File(courseImportYearPath);
courseImportYearDir.mkdirs();
List<CourseUnit> courseUnits = DaoFactory.getCourseUnitDaoImpl().loadByCourse(c.getId(),importYear);
for(CourseUnit courseUnit: courseUnits)
List<CourseUnit> courseUnits = DaoFactory.getCourseUnitDaoImpl().loadByCourse(c.getId(), importYear);
for (CourseUnit courseUnit : courseUnits)
{
String semestre;
if(courseUnit.getSemestre().equals("S1"))
if (courseUnit.getSemestre().equals("S1"))
{
semestre = Globals.INTRANET_SEMESTRE_S1;
}
77,15 → 76,15
String normalizedName = StringsUtils.normalizeResourceName(courseUnit.getName());
String unitPath = courseImportYearPath + "/" + semestre + "/" + normalizedName;
 
for(CourseUnitAssignement assignement : courseUnit.getAssignements())
for (CourseUnitAssignement assignement : courseUnit.getAssignements())
{
String assignementDir = unitPath + "/assignement" + assignement.getId();
createAssignementCopy(assignement,assignementDir,userSession);
if(!assignement.getDeliverType().equals(Globals.COURSEUNIT_ASSIGNEMENT_TYPE_NO_FILE) && assignement.getDeliverables() != null && assignement.getDeliverables().size() > 0)
createAssignementCopy(assignement, assignementDir, userSession);
if (!assignement.getDeliverType().equals(Globals.COURSEUNIT_ASSIGNEMENT_TYPE_NO_FILE) && assignement.getDeliverables() != null && assignement.getDeliverables().size() > 0)
{
for(CourseUnitDeliverable deliverable: assignement.getDeliverables())
for (CourseUnitDeliverable deliverable : assignement.getDeliverables())
{
copyDeliverableVersions(deliverable,assignementDir,userSession);
copyDeliverableVersions(deliverable, assignementDir, userSession);
}
}
}
93,48 → 92,49
}
catch (IOException e)
{
logger.error(e,e);
logger.error(e, e);
}
}
FilesUtils.zipFolder(tmpDir,tmpDir + ".zip");
FilesUtils.zipFolder(tmpDir, tmpDir + ".zip");
FilesUtils.delete(tmpDir);
return tmpName + ".zip";
}
catch (IOException e)
{
logger.error(e,e);
logger.error(e, e);
}
return null;
}
 
/**
* In case of student create a backup with student deliverables in actual year subscribed units, in case of teacher create a backup of all deliverables in actual year teached units
* In case of student create a backup with student deliverables in actual year subscribed units, in case of teacher create a backup of all deliverables in actual year teached units
*
* @param userSession
* @return
* @throws ServiceException
*/
public String createActualYearBackup(UserSession userSession) throws ServiceException
{
if(userSession.getUser() instanceof Teacher)
if (userSession.getUser() instanceof Teacher)
return createLoginTeacherActualYearBackup(userSession);
else if(userSession.getUser() instanceof Student)
else if (userSession.getUser() instanceof Student)
return createLoginStudentActualYearBackup(userSession);
return null;
}
 
 
/**
* In case of student create a backup with student deliverables subscribed units, in case of teacher create a backup of all deliverables of teached units
*
* In case of student create a backup with student deliverables subscribed units, in case of teacher create a backup of all deliverables of teached units
* @param userSession
* @return
* @throws ServiceException
*/
public String createBackup(UserSession userSession) throws ServiceException
{
if(userSession.getUser() instanceof Teacher)
if (userSession.getUser() instanceof Teacher)
return createLoginTeacherBackup(userSession);
else if(userSession.getUser() instanceof Student)
else if (userSession.getUser() instanceof Student)
return createLoginStudentBackup(userSession);
return null;
}
142,97 → 142,93
public String createLoginStudentBackup(UserSession userSession) throws ServiceException
{
Student s = (Student) userSession.getUser();
return createStudentBackup(s,userSession);
return createStudentBackup(s, userSession);
}
 
 
public String createLoginTeacherBackup(UserSession userSession) throws ServiceException
{
Teacher t = (Teacher) userSession.getUser();
return createTeacherBackup(t,userSession);
return createTeacherBackup(t, userSession);
}
 
 
public String createLoginStudentActualYearBackup(UserSession userSession) throws ServiceException
{
Student s = (Student) userSession.getUser();
return createStudentActualYearBackup(s,userSession);
return createStudentActualYearBackup(s, userSession);
}
 
 
public String createLoginTeacherActualYearBackup(UserSession userSession) throws ServiceException
{
Teacher t = (Teacher) userSession.getUser();
return createTeacherActualYearBackup(t,userSession);
return createTeacherActualYearBackup(t, userSession);
}
 
public String createStudentActualYearBackup(long studentId, UserSession userSession) throws ServiceException
{
Student s = DaoFactory.getStudentDaoImpl().get(studentId);
return createStudentActualYearBackup(s,userSession);
return createStudentActualYearBackup(s, userSession);
}
 
public String createTeacherActualYearBackup(long teacherId, UserSession userSession) throws ServiceException
{
Teacher t = DaoFactory.getTeacherDaoImpl().get(teacherId);
return createTeacherActualYearBackup(t,userSession);
return createTeacherActualYearBackup(t, userSession);
}
 
 
public String createStudentBackup(long studentId, UserSession userSession) throws ServiceException
{
Student s = DaoFactory.getStudentDaoImpl().get(studentId);
return createStudentBackup(s,userSession);
return createStudentBackup(s, userSession);
}
 
public String createTeacherBackup(long teacherId, UserSession userSession) throws ServiceException
{
Teacher t = DaoFactory.getTeacherDaoImpl().get(teacherId);
return createTeacherBackup(t,userSession);
return createTeacherBackup(t, userSession);
}
 
 
 
private String createStudentActualYearBackup(Student s, UserSession userSession) throws ServiceException
{
List<CourseUnit> units = DaoFactory.getCourseUnitDaoImpl().loadSubscribedImportYearUnits(s.getId(),DatesUtils.getImportYear());
if(units == null || units.size() == 0)
List<CourseUnit> units = DaoFactory.getCourseUnitDaoImpl().loadSubscribedImportYearUnits(s.getId(), DatesUtils.getImportYear());
if (units == null || units.size() == 0)
return null;
return createStudentBackup(units,s,userSession);
return createStudentBackup(units, s, userSession);
}
 
private String createTeacherActualYearBackup(Teacher t, UserSession userSession) throws ServiceException
{
List units = DaoFactory.getCourseUnitDaoImpl().loadTeachedImportYearUnits(t.getId(),DatesUtils.getImportYear());
if(units == null || units.size() == 0)
List units = DaoFactory.getCourseUnitDaoImpl().loadTeachedImportYearUnits(t.getId(), DatesUtils.getImportYear());
if (units == null || units.size() == 0)
return null;
return createTeacherBackup(units,t,userSession);
return createTeacherBackup(units, t, userSession);
}
 
 
 
private String createStudentBackup(Student s, UserSession userSession) throws ServiceException
{
List<CourseUnit> units = new ArrayList<CourseUnit>(s.getSubscribedUnits());
if(units == null || units.size() == 0)
if (units == null || units.size() == 0)
return null;
return createStudentBackup(units,s,userSession);
return createStudentBackup(units, s, userSession);
}
 
private String createTeacherBackup(Teacher t, UserSession userSession) throws ServiceException
{
List<CourseUnit> units = new ArrayList<CourseUnit>(t.getTeachedUnits());
if(units == null || units.size() == 0)
if (units == null || units.size() == 0)
return null;
return createTeacherBackup(units,t,userSession);
return createTeacherBackup(units, t, userSession);
}
 
 
 
 
private String createStudentBackup(List<CourseUnit> courseUnits, Student s, UserSession userSession) throws ServiceException
{
String tmpName = BytesUtils.generateHexKey();
String tmpName = BytesUtils.generateHexKey();
String tmpDir = Globals.TMP_DIR + "/" + tmpName;
new File(tmpDir).mkdirs();
 
240,12 → 236,12
{
try
{
for(CourseUnit courseUnit: courseUnits)
for (CourseUnit courseUnit : courseUnits)
{
String courseDirPath = tmpDir + "/" + StringsUtils.normalizeResourceName(courseUnit.getCourse().getName()) + '.' + courseUnit.getCourse().getCode();
String courseImportYearPath = courseDirPath + "/" + courseUnit.getImportYear();
String semestre;
if(courseUnit.getSemestre().equals("S1"))
if (courseUnit.getSemestre().equals("S1"))
{
semestre = Globals.INTRANET_SEMESTRE_S1;
}
256,36 → 252,36
String normalizedName = StringsUtils.normalizeResourceName(courseUnit.getName());
String unitPath = courseImportYearPath + "/" + semestre + "/" + normalizedName;
 
for(CourseUnitAssignement assignement : courseUnit.getAssignements())
for (CourseUnitAssignement assignement : courseUnit.getAssignements())
{
String assignementDir = unitPath + "/assignement" + assignement.getId();
createAssignementCopy(assignement,assignementDir,userSession);
if(!assignement.getDeliverType().equals(Globals.COURSEUNIT_ASSIGNEMENT_TYPE_NO_FILE) && assignement.getDeliverables() != null && assignement.getDeliverables().size() > 0)
createAssignementCopy(assignement, assignementDir, userSession);
if (!assignement.getDeliverType().equals(Globals.COURSEUNIT_ASSIGNEMENT_TYPE_NO_FILE) && assignement.getDeliverables() != null && assignement.getDeliverables().size() > 0)
{
CourseUnitDeliverable deliverable = DaoFactory.getCourseUnitDeliverableDaoImpl().loadDeliverable(s.getId(),assignement.getId());
copyDeliverableVersions(deliverable,assignementDir,userSession);
CourseUnitDeliverable deliverable = DaoFactory.getCourseUnitDeliverableDaoImpl().loadDeliverable(s.getId(), assignement.getId());
copyDeliverableVersions(deliverable, assignementDir, userSession);
}
}
}
}
catch (IOException e)
{
logger.error(e,e);
logger.error(e, e);
}
FilesUtils.zipFolder(tmpDir,tmpDir + ".zip");
FilesUtils.zipFolder(tmpDir, tmpDir + ".zip");
FilesUtils.delete(tmpDir);
return tmpName + ".zip";
}
catch (IOException e)
{
logger.error(e,e);
logger.error(e, e);
}
return null;
}
 
private String createTeacherBackup(List<CourseUnit> courseUnits, Teacher t, UserSession userSession) throws ServiceException
{
String tmpName = BytesUtils.generateHexKey();
String tmpName = BytesUtils.generateHexKey();
String tmpDir = Globals.TMP_DIR + "/" + tmpName;
new File(tmpDir).mkdirs();
 
293,12 → 289,12
{
try
{
for(CourseUnit courseUnit: courseUnits)
for (CourseUnit courseUnit : courseUnits)
{
String courseDirPath = tmpDir + "/" + StringsUtils.normalizeResourceName(courseUnit.getCourse().getName()) + '.' + courseUnit.getCourse().getCode();
String courseImportYearPath = courseDirPath + "/" + courseUnit.getImportYear();
String semestre;
if(courseUnit.getSemestre().equals("S1"))
if (courseUnit.getSemestre().equals("S1"))
{
semestre = Globals.INTRANET_SEMESTRE_S1;
}
309,15 → 305,15
String normalizedName = StringsUtils.normalizeResourceName(courseUnit.getName());
String unitPath = courseImportYearPath + "/" + semestre + "/" + normalizedName;
 
for(CourseUnitAssignement assignement : courseUnit.getAssignements())
for (CourseUnitAssignement assignement : courseUnit.getAssignements())
{
String assignementDir = unitPath + "/assignement" + assignement.getId();
createAssignementCopy(assignement,assignementDir,userSession);
if(!assignement.getDeliverType().equals(Globals.COURSEUNIT_ASSIGNEMENT_TYPE_NO_FILE) && assignement.getDeliverables() != null && assignement.getDeliverables().size() > 0)
createAssignementCopy(assignement, assignementDir, userSession);
if (!assignement.getDeliverType().equals(Globals.COURSEUNIT_ASSIGNEMENT_TYPE_NO_FILE) && assignement.getDeliverables() != null && assignement.getDeliverables().size() > 0)
{
for(CourseUnitDeliverable deliverable: assignement.getDeliverables())
for (CourseUnitDeliverable deliverable : assignement.getDeliverables())
{
copyDeliverableVersions(deliverable,assignementDir,userSession);
copyDeliverableVersions(deliverable, assignementDir, userSession);
}
}
}
325,15 → 321,15
}
catch (IOException e)
{
logger.error(e,e);
logger.error(e, e);
}
FilesUtils.zipFolder(tmpDir,tmpDir + ".zip");
FilesUtils.zipFolder(tmpDir, tmpDir + ".zip");
FilesUtils.delete(tmpDir);
return tmpName + ".zip";
}
catch (IOException e)
{
logger.error(e,e);
logger.error(e, e);
}
return null;
}
341,20 → 337,20
 
private void copyDeliverableVersions(CourseUnitDeliverable deliverable, String toDir, UserSession userSession)
{
if(deliverable.getDeliverableRepositoryStream() != null && deliverable.getDeliverableRepositoryStream().length() > 0)
if (deliverable.getDeliverableRepositoryStream() != null && deliverable.getDeliverableRepositoryStream().length() > 0)
{
String deliverDir = toDir + "/deliverable" + deliverable.getId() + "-" + deliverable.getStudent().getId() + "numero" + deliverable.getStudent().getSigesCode();
new File(deliverDir).mkdirs();
List<IRepositoryFile> iRepositoryFiles = repositoryService.loadVersions(deliverable.getDeliverableRepositoryStream(),userSession);
for(IRepositoryFile iRepositoryFile: iRepositoryFiles)
List<IRepositoryFile> iRepositoryFiles = repositoryService.loadVersions(deliverable.getDeliverableRepositoryStream(), userSession);
for (IRepositoryFile iRepositoryFile : iRepositoryFiles)
{
try
{
FilesUtils.copy(iRepositoryFile.getInput(),deliverDir + "/version" + getResourceFileName(iRepositoryFile.getName()));
FilesUtils.copy(iRepositoryFile.getInput(), deliverDir + "/version" + getResourceFileName(iRepositoryFile.getName()));
}
catch (IOException e)
{
logger.error(e,e);
logger.error(e, e);
}
}
}
362,12 → 358,12
 
public String getResourceFileName(String resourceName)
{
String extension = FilesUtils.getExtension( resourceName);
if(extension != null)
String extension = FilesUtils.getExtension(resourceName);
if (extension != null)
{
resourceName = resourceName.substring(0,resourceName.length() - extension.length());
resourceName = resourceName.substring(0, resourceName.length() - extension.length());
}
if(extension == null)
if (extension == null)
extension = ".unknown";
return resourceName + extension;
}
379,17 → 375,15
FileWriter assignementDesc = new FileWriter(assignementDir + "/description.txt");
assignementDesc.write(fileContent);
assignementDesc.close();
if(assignement.getRepositoryStream() != null && assignement.getRepositoryStream().length() > 0)
if (assignement.getRepositoryStream() != null && assignement.getRepositoryStream().length() > 0)
{
IRepositoryFile iRepositoryFile = repositoryService.load(assignement.getRepositoryStream(),userSession);
FilesUtils.copy(iRepositoryFile.getInput(),assignementDir + "/" + getResourceFileName(iRepositoryFile.getName()));
IRepositoryFile iRepositoryFile = repositoryService.load(assignement.getRepositoryStream(), userSession);
FilesUtils.copy(iRepositoryFile.getInput(), assignementDir + "/" + getResourceFileName(iRepositoryFile.getName()));
}
}
 
public String buildAssignementTemplate(CourseUnitAssignement assignement)
{
String assignementDir = StringsUtils.normalizeResourceName(assignement.getTitle()) + assignement.getId();
new File(assignementDir).mkdirs();
String[] args = new String[]
{
assignement.getCourseUnit().getName(),
398,16 → 392,15
assignement.getDescription()
};
String content = TemplateUtils.getOrLoadTemplate(Globals.TEMPLATE_ASSIGNEMENT_PATH + "/Assignement.txt");
// Format the mail message
// Format the mail message
return MessageFormat.format(content, args);
}
 
 
 
public static void main(String[] args) throws ServiceException
{
AbstractDao.getCurrentSession().beginTransaction();
new CreateCourseUnitWorksBackupService().createSystemActualYearBackup(null,null);
new CreateCourseUnitWorksBackupService().createSystemActualYearBackup(null, null);
AbstractDao.getCurrentSession().getTransaction().commit();
}
 
/impl/src/java/pt/estgp/estgweb/services/announcements/CreateAnnouncementService.java
131,6 → 131,8
logger.info("ImageSmall form announcement:" + announcementView.getId() + "do not exist!");
}
}
if(a.getOwner().getId() != userSession.getUser().getId())
announcementView.setChoosedOwnerRole(a.getChoosedOwnerRole());
announcementView.persistViewInObject(a);
if(announcementView.getTargetRoles() == null || announcementView.getTargetRoles().size() == 0)
a.setTargetRoles(ALL_ROLE);
/impl/src/java/pt/estgp/estgweb/domain/views/AnnouncementView.java
48,6 → 48,9
private boolean status = true;
private boolean internal;
private GenericUser owner;
private String ownerUsername;
private String ownerName;
private String ownerEmail;
private String style;
private String internalUrlServer;
private String internalUrlPath;
91,6 → 94,9
this.expireDate = announcement.getExpireDate();
this.choosedOwnerRole = announcement.getChoosedOwnerRole();
this.owner = announcement.getOwner();
this.ownerUsername = owner.getUsername();
this.ownerName = owner.getName();
this.ownerEmail = owner.getEmail();
this.internalUrlServer = announcement.getInternalUrlServer();
this.internalUrlPath = announcement.getInternalUrlPath();
this.style = announcement.getStyle();
426,10 → 432,17
 
public String getOwnerUsername()
{
if (owner instanceof User)
return ((User) owner).getUsername();
else
return null;
return ownerUsername;
}
 
 
public String getOwnerName()
{
return ownerName;
}
 
public String getOwnerEmail()
{
return ownerEmail;
}
}
/impl/src/java/pt/estgp/estgweb/web/tags/RealOwnerTag.java
New file
0,0 → 1,99
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.IOwned;
import pt.estgp.estgweb.Globals;
 
public class RealOwnerTag extends BodyTagSupport
{
 
private static final Logger logger = Logger.getLogger(RealOwnerTag.class);
 
private String name;
 
private String property;
 
private String valid;
 
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 String getValid()
{
return valid;
}
 
public void setValid(String valid)
{
this.valid = valid;
}
 
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(Globals.USER_SESSION_KEY);
 
IOwned owned = (IOwned) RequestUtils.lookup(pageContext, name, property, null);
 
return owned.getOwner() == null || userSession.getUser() != null && (owned.getOwner().getId() == userSession.getUser().getId());
 
}
 
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/web/admin/announcements/submitAnnouncement.jsp
91,25 → 91,29
</html:select>
</td>
</tr>
 
<logic:present name="UserSession" property="user">
<logic:notEmpty name="UserSession" property="user.ownerRoles">
<tr>
<th>
<bean:message key="announcement.sendAnnouncementLike"/>
</th>
<td>
<html:select property="announcementView.choosedOwnerRole">
<logic:iterate id="item" name="UserSession" property="user.ownerRoles">
<jomm:option itemName="item" comparableObjectName="AnnouncementsForm"
comparableObjectProperty="announcementView.choosedOwnerRole">
<bean:message key="user.role.${item}"/>
</jomm:option>
</logic:iterate>
</html:select>
</td>
</tr>
</logic:notEmpty>
<baco:isRealOwner name="AnnouncementsForm" property="announcementView">
<logic:notEmpty name="UserSession" property="user.ownerRoles">
<tr>
<th>
<bean:message key="announcement.sendAnnouncementLike"/>
</th>
<td>
<html:select property="announcementView.choosedOwnerRole">
<logic:iterate id="item" name="UserSession" property="user.ownerRoles">
<jomm:option itemName="item" comparableObjectName="AnnouncementsForm"
comparableObjectProperty="announcementView.choosedOwnerRole">
<bean:message key="user.role.${item}"/>
</jomm:option>
</logic:iterate>
</html:select>
</td>
</tr>
</logic:notEmpty>
</baco:isRealOwner>
</logic:present>
 
<tr>
<th>
<bean:message key="announcement.target.roles"/>
/impl/src/web/public/announcements/loadAnnouncement.jsp
124,7 → 124,7
&nbsp;&nbsp;&gt;&gt; <html:link href="${Announcement.url}">${Announcement.url}</html:link>
</logic:notEmpty>
<div class="pFooter">
Posted by: ${Announcement.ownerUsername} AT ${Announcement.formatedSaveDate}
Posted by: (${Announcement.ownerUsername}) ${Announcement.ownerName} [AT] ${Announcement.formatedSaveDate}
</div>
</p>
<%
187,7 → 187,7
</logic:notEmpty>
<tr>
<td class="pFooter">
Posted by: ${Announcement.ownerUsername} AT ${Announcement.formatedSaveDate}
Posted by: (${Announcement.ownerUsername}) ${Announcement.ownerName} [AT] ${Announcement.formatedSaveDate}
</td>
</tr>
</table>
250,7 → 250,7
 
<tr>
<td colspan="2" class="pFooter">
Posted by: ${Announcement.ownerUsername} AT ${Announcement.formatedSaveDate}
Posted by: (${Announcement.ownerUsername}) ${Announcement.ownerName} [AT] ${Announcement.formatedSaveDate}
</td>
</tr>
</table>
313,7 → 313,7
</logic:notEmpty>
<tr>
<td colspan="2" class="pFooter">
Posted by: ${Announcement.ownerUsername} [AT] ${Announcement.formatedSaveDate}
Posted by: (${Announcement.ownerUsername}) ${Announcement.ownerName} [AT] ${Announcement.formatedSaveDate}
</td>
</tr>
</table>
/impl/build.xml
97,6 → 97,12
config="file://${basedir}/${dist.dir}/estgweb.xml"
username="${tomcat.username}" password="${tomcat.password}" />
</target>
<target name="tomcat.deployContextOnly" depends="">
<echo message="${tomcat.manager}"/>
<tomcat.install url="${tomcat.manager}" path="${tomcat.context.path.install}"
config="file://${basedir}/${dist.dir}/estgweb.xml"
username="${tomcat.username}" password="${tomcat.password}" />
</target>
<target name="tomcat.redeployContext" depends="tomcat.undeploy,build.war" >
<echo message="${tomcat.manager}"/>
<tomcat.install url="${tomcat.manager}" path="${tomcat.context.path.install}"