/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportStudentsService.java |
---|
59,7 → 59,7 |
//Cadeiras a Vulso |
//Erasmus |
//disciplinas a vulso ESS |
Integer[] cursosFicticios = {19,4,0,22}; |
static Integer[] cursosFicticios = {19,4,0,22}; |
static boolean studentComUnidadesRepetidas = false; |
328,7 → 328,7 |
} |
} |
boolean isCursoFicticio(int cursoCode) |
protected static boolean isCursoFicticio(int cursoCode) |
{ |
for(Integer cursoFicticio: cursosFicticios) |
{ |
/impl/src/java/pt/estgp/estgweb/services/sigesimports/oracle/dao/DisciplinaDao.java |
---|
New file |
0,0 → 1,138 |
package pt.estgp.estgweb.services.sigesimports.oracle.dao; |
import pt.estgp.estgweb.services.sigesimports.oracle.domain.Disciplina; |
import java.sql.Connection; |
import java.sql.PreparedStatement; |
import java.sql.ResultSet; |
import java.sql.SQLException; |
import java.util.ArrayList; |
import java.util.List; |
/** |
* Created by jorgemachado on 26/02/16. |
*/ |
public class DisciplinaDao extends AbstractDao<Disciplina> |
{ |
private static DisciplinaDao instance = null; |
private DisciplinaDao() |
{ |
} |
public static DisciplinaDao getInstance() |
{ |
if (instance == null) |
instance = new DisciplinaDao(); |
return instance; |
} |
protected String getTable() { |
return "CSE.T_TBDISCIP"; |
} |
protected String getIdColumn() { |
return "CD_DISCIP"; |
} |
public Disciplina load(Integer codigo) throws SQLException { |
Disciplina d = null; |
Connection conn = getCurrentConnection(); |
PreparedStatement catCMD = conn.prepareStatement("SELECT DISTINCT CSE.T_TBDISCIP.CD_DISCIP AS CD_DISCIP, CSE.T_TBDISCIP.DS_DISCIP AS DS_DISCIP, CSE.T_TBDISCIP.CD_INSTITUIC AS CD_INSTITUIC, CSE.T_INSCRI.CD_CURSO AS CD_CURSO, CSE.T_CURSOS.NM_CURSO AS NM_CURSO, CSE.T_CURSOS.CD_GRAU1 AS CD_GRAU1 FROM CSE.T_INSCRI INNER JOIN CSE.T_TBDISCIP ON CSE.T_INSCRI.CD_DISCIP=CSE.T_TBDISCIP.CD_DISCIP INNER JOIN CSE.T_CURSOS ON CSE.T_CURSOS.CD_CURSO = CSE.T_INSCRI.CD_CURSO WHERE CSE.T_TBDISCIP.CD_DISCIP = " + codigo); |
ResultSet aReader = catCMD.executeQuery(); |
if (aReader.next()) |
{ |
d = getDisciplina(aReader); |
} |
//close the reader |
aReader.close(); |
catCMD.close(); |
conn.close(); |
return d; |
} |
public Disciplina load(ResultSet aReader) throws SQLException |
{ |
Disciplina d = new Disciplina(); |
d.codigo = getDecimal("CD_DISCIP",aReader); |
d.nome = getString("DS_DISCIP",aReader); |
d.codigoInstituicao = getDecimal("CD_INSTITUIC", aReader); |
return d; |
} |
private String getCodigosDisciplinasQuery(Integer codigoInstituicao, String ano, String semestre) |
{ |
/*return "SELECT DISTINCT CSE.T_TBDISCIP.CD_DISCIP, CSE.T_INSCRI.CD_TURMA_T,"+ |
"CSE.T_TBDISCIP.DS_DISCIP AS DS_DISCIP, CSE.T_TBDISCIP.CD_INSTITUIC AS CD_INSTITUIC, CSE.T_INSCRI.CD_CURSO AS CD_CURSO, CSE.T_CURSOS.NM_CURSO AS NM_CURSO, CSE.T_CURSOS.CD_GRAU1 AS CD_GRAU1 "+ |
"FROM CSE.T_INSCRI INNER JOIN CSE.T_TBDISCIP ON CSE.T_INSCRI.CD_DISCIP=CSE.T_TBDISCIP.CD_DISCIP INNER JOIN CSE.T_CURSOS ON CSE.T_CURSOS.CD_CURSO = CSE.T_INSCRI.CD_CURSO WHERE "+ |
" (((((CSE.T_TBDISCIP.CD_INSTITUIC)=" + codigoInstituicao + ") AND ((CSE.T_INSCRI.CD_LECTIVO)='" + ano + "')) AND CSE.T_INSCRI.CD_DURACAO = '" + semestre + "') AND (CSE.T_INSCRI.CD_TIPDIS = 1 OR CSE.T_INSCRI.CD_TIPDIS = 2))";*/ |
return "SELECT DISTINCT " + |
"CSE.T_TBDISCIP.CD_DISCIP AS CD_DISCIP, "+ |
"CSE.T_TBDISCIP.DS_DISCIP AS DS_DISCIP, " + |
"CSE.T_TBDISCIP.CD_INSTITUIC AS CD_INSTITUIC, " + |
"CSE.T_INSCRI.CD_CURSO AS CD_CURSO, " + |
"CSE.T_CURSOS.NM_CURSO AS NM_CURSO, " + |
"CSE.T_CURSOS.CD_GRAU1 AS CD_GRAU1 " + |
"FROM " + |
"CSE.T_INSCRI INNER JOIN CSE.T_TBDISCIP ON CSE.T_INSCRI.CD_DISCIP=CSE.T_TBDISCIP.CD_DISCIP " + |
"INNER JOIN CSE.T_CURSOS ON CSE.T_CURSOS.CD_CURSO = CSE.T_INSCRI.CD_CURSO " + |
"WHERE "+ |
" (((((CSE.T_TBDISCIP.CD_INSTITUIC)=" + codigoInstituicao + ") AND ((CSE.T_INSCRI.CD_LECTIVO)='" + ano + "')) AND CSE.T_INSCRI.CD_DURACAO = '" + semestre + "') AND ((CSE.T_INSCRI.CD_STATUS)<>5) AND (CSE.T_INSCRI.CD_TIPDIS = 2 OR CSE.T_INSCRI.CD_TIPDIS = 1))"; |
/**\//SO QUEREMOS 1 e 2 |
* eliminamos tb inscricoes nao regulares STATUS <> 5</> |
* As restantes 5 e 6 so servem para depois procurar a Real para atribuir ao aluno |
* A unica coisa que falta aqui será do outro lado eliminar cursos ficticios |
* |
* CD_TIPDISC = 1 Inscricoes normais |
* CD_TIPDISC = 2 Nao conta para media |
* CD_TIPDISC = 3 Qualitativa |
* CD_TIPDISC = 4 Equivalencia |
* CD_TIPDISC = 5 Equivalencia sem nota |
* CD_TIPDISC = 6 Extra Curricular |
* CD_TIPDISC = 7 Suplemento Diploma |
* CD_TIPDISC = 8 Integracao ou refazimento do plano de estudos |
*/ |
} |
public List<Disciplina> loadDisciplinas(Integer codigoInstituicao, String ano, String semestre,Connection conn) throws SQLException { |
List<Disciplina> disciplinas = new ArrayList<Disciplina>(); |
boolean connWasNull = conn == null; |
if(connWasNull) |
conn = getCurrentConnection(); |
PreparedStatement catCMD = conn.prepareStatement(getCodigosDisciplinasQuery(codigoInstituicao, ano, semestre)); |
ResultSet aReader = catCMD.executeQuery(); |
while (aReader.next()) |
{ |
disciplinas.add(getDisciplina(aReader)); |
} |
//close the reader |
aReader.close(); |
catCMD.close(); |
if(connWasNull) |
conn.close(); |
return disciplinas; |
} |
private Disciplina getDisciplina(ResultSet aReader) throws SQLException { |
Disciplina d = new Disciplina(); |
d.codigo = getDecimal("CD_DISCIP", aReader); |
d.nome = getString("DS_DISCIP", aReader); |
d.codigoInstituicao = getDecimal("CD_INSTITUIC", aReader); |
d.codigoCurso = getDecimal("CD_CURSO", aReader); |
d.nomeCurso = getString("NM_CURSO", aReader); |
d.grauCurso = "" + getDecimal("CD_GRAU1", aReader); |
//d.cdTurma = "" + getString("CD_TURMA_T", aReader); |
return d; |
} |
} |
/impl/src/java/pt/estgp/estgweb/services/sigesimports/oracle/domain/Disciplina.java |
---|
106,6 → 106,10 |
return cdTipologia; |
} |
public void setGrauCurso(String grauCurso) { |
this.grauCurso = grauCurso; |
} |
@Override |
public String toString() { |
return "Disciplina{" + |
/impl/src/java/pt/estgp/estgweb/services/sigesimports/ImportCourseService.java |
---|
17,17 → 17,15 |
import pt.estgp.estgweb.services.logresults.LogMessageTypeEnum; |
import pt.estgp.estgweb.services.logresults.impl.DefaultLogMessage; |
import pt.estgp.estgweb.services.logresults.impl.DefaultLogMessages; |
import pt.estgp.estgweb.services.sigesimports.oracle.dao.DisciplinaDao; |
import pt.estgp.estgweb.services.sigesimports.oracle.dao.connection.ConnectionManager; |
import pt.estgp.estgweb.services.sigesimports.oracle.domain.Disciplina; |
import pt.estgp.estgweb.utils.ConfigProperties; |
import pt.estgp.estgweb.utils.Email; |
import pt.ipportalegre.siges.web.services.ArrayOfDisciplina; |
import pt.ipportalegre.siges.web.services.Disciplina; |
import pt.ipportalegre.siges.web.services.SiGesWEB; |
import pt.utl.ist.berserk.logic.serviceManager.IService; |
import javax.xml.namespace.QName; |
import java.math.BigDecimal; |
import java.net.MalformedURLException; |
import java.net.URL; |
import java.sql.Connection; |
import java.sql.SQLException; |
import java.util.*; |
/** |
42,6 → 40,7 |
int newUnits = 0; |
int newCourses = 0; |
int unitsRepeated = 0; |
int unitsAtualizadas = 0; |
public ILogMessages run(String year) throws ServiceException |
{ |
String msgS = "STARTING COURSES IMPORT SERVICE FOR YEAR: " + year; |
51,6 → 50,7 |
newUnits = 0; |
newCourses = 0; |
unitsRepeated = 0; |
unitsAtualizadas = 0; |
DefaultLogMessages logMessages = new DefaultLogMessages(); |
try |
71,7 → 71,7 |
/** |
* Build Course Units Maps |
*/ |
SiGesWEB service; |
/*SiGesWEB service; |
String WSDL = DaoFactory.getConfigurationDaoImpl().getSigesWebServicesWsdl(); |
try |
{ |
85,16 → 85,18 |
serviceLogError(logMessages.getLastMessage(), e); |
return logMessages; |
} |
*/ |
DisciplinaDao service = DisciplinaDao.getInstance(); |
Connection conn = ConnectionManager.openConnection(); |
importUnitsSemestre(service,conn, "S1", year, disciplinasMap, disciplinasMapS1, cursosMap, logMessages); |
importUnitsSemestre(service,conn, "S2", year, disciplinasMap, disciplinasMapS2, cursosMap, logMessages); |
importUnitsSemestre(service,conn, "A", year, disciplinasMap, disciplinasMapA, cursosMap, logMessages); |
importUnitsSemestre(service,conn, "T1", year, disciplinasMap, disciplinasMapT1, cursosMap, logMessages); |
importUnitsSemestre(service,conn, "T2", year, disciplinasMap, disciplinasMapT2, cursosMap, logMessages); |
importUnitsSemestre(service,conn, "T3", year, disciplinasMap, disciplinasMapT3, cursosMap, logMessages); |
importUnitsSemestre(service,conn, "T4", year, disciplinasMap, disciplinasMapT4, cursosMap, logMessages); |
importUnitsSemestre(service, "S1", year, disciplinasMap, disciplinasMapS1, cursosMap, logMessages); |
importUnitsSemestre(service, "S2", year, disciplinasMap, disciplinasMapS2, cursosMap, logMessages); |
importUnitsSemestre(service, "A", year, disciplinasMap, disciplinasMapA, cursosMap, logMessages); |
importUnitsSemestre(service, "T1", year, disciplinasMap, disciplinasMapT1, cursosMap, logMessages); |
importUnitsSemestre(service, "T2", year, disciplinasMap, disciplinasMapT2, cursosMap, logMessages); |
importUnitsSemestre(service, "T3", year, disciplinasMap, disciplinasMapT3, cursosMap, logMessages); |
importUnitsSemestre(service, "T4", year, disciplinasMap, disciplinasMapT4, cursosMap, logMessages); |
/** |
* Import Courses |
*/ |
130,14 → 132,16 |
/** |
* Update Course Units |
*/ |
updateCourseUnits(disciplinasMapS1, "S1",logMessages,year,service); |
updateCourseUnits(disciplinasMapS2, "S2",logMessages,year,service); |
updateCourseUnits(disciplinasMapA, "A",logMessages,year,service); |
updateCourseUnits(disciplinasMapT1, "T1",logMessages,year,service); |
updateCourseUnits(disciplinasMapT2, "T2",logMessages,year,service); |
updateCourseUnits(disciplinasMapT3, "T3",logMessages,year,service); |
updateCourseUnits(disciplinasMapT4, "T4",logMessages,year,service); |
updateCourseUnits(disciplinasMapS1, "S1",logMessages,year,service,conn); |
updateCourseUnits(disciplinasMapS2, "S2",logMessages,year,service,conn); |
updateCourseUnits(disciplinasMapA, "A",logMessages,year,service,conn); |
updateCourseUnits(disciplinasMapT1, "T1",logMessages,year,service,conn); |
updateCourseUnits(disciplinasMapT2, "T2",logMessages,year,service,conn); |
updateCourseUnits(disciplinasMapT3, "T3",logMessages,year,service,conn); |
updateCourseUnits(disciplinasMapT4, "T4",logMessages,year,service,conn); |
conn.close(); |
serviceLogInfo("######################################"); |
serviceLogInfo("######################################"); |
serviceLogInfo("#Courses Imported:" + cursosMap.size()); |
150,7 → 154,8 |
serviceLogInfo("#Units Imported T4:" + disciplinasMapT4.size()); |
serviceLogInfo("#New Courses Found:" + newCourses); |
serviceLogInfo("#New Units Found:" + newUnits); |
serviceLogInfo("#Unidades Repetidas:" + unitsRepeated); |
serviceLogInfo("#Regular Updated Units:" + unitsAtualizadas); |
serviceLogInfo("#Unidades Repetidas (A mesma para o conjunto (Codigo,Curso,Ano,Semestre)):" + unitsRepeated); |
logger.info("######################################"); |
logger.info("######################################"); |
164,7 → 169,8 |
logger.info("#Units Imported T4:" + disciplinasMapT4.size()); |
logger.info("#New Courses Found:" + newCourses); |
logger.info("#New Units Found:" + newUnits); |
logger.info("#Unidades Repetidas:" + unitsRepeated); |
logger.info("#Regular Updated Units:" + unitsAtualizadas); |
logger.info("#Unidades Repetidas (A mesma para o conjunto (Codigo,Curso,Ano,Semestre)):" + unitsRepeated); |
} |
210,21 → 216,21 |
} |
private void importUnitsSemestre(SiGesWEB service, |
private void importUnitsSemestre(DisciplinaDao service, |
Connection conn, |
String semestre, |
String year, |
HashMap<String, Disciplina> disciplinasMap, |
HashMap<String, Disciplina> disciplinasMapSemestre, |
HashMap<String, Disciplina> cursosMap, |
DefaultLogMessages logMessages) |
{ |
DefaultLogMessages logMessages) throws SQLException { |
logMessages.addMessage(new DefaultLogMessage("import.semestre.course.units." + semestre, LogMessageTypeEnum.INFO)); |
serviceLogInfo("importing " + semestre + " course units"); |
logger.info("importing " + semestre + " course units"); |
ArrayOfDisciplina arrayOfDisciplina = service.getSiGesWEBSoap().getDisciplinasDaInstituicaoSemestre(new BigDecimal(DaoFactory.getConfigurationDaoImpl().getSigesInstitutionCode()), year, semestre); |
List<Disciplina> disciplinas = arrayOfDisciplina.getDisciplina(); |
List<Disciplina> disciplinas = service.loadDisciplinas(DaoFactory.getConfigurationDaoImpl().getSigesInstitutionCode(), year, semestre,conn); |
for (Disciplina d : disciplinas) |
{ |
if (disciplinasMap.get(getDisciplinaUniqueRef(d)) != null) |
241,11 → 247,11 |
private String getDisciplinaUniqueRef(Disciplina d) |
{ |
return d.getCodigo().intValue() + ":" + d.getCodigoCurso() + ":" + d.getCdDuracao() + ":" + d.getCdTurma(); |
return d.getCodigo().intValue() + ":" + d.getCodigoCurso() + ":" + d.getCdDuracao(); // + ":" + d.getCdTurma(); |
} |
public static final int SIGES_CODIGO_TIPO_DISCIPLINA_EXTRA_CURRICULAR = ConfigProperties.getIntProperty("siges.codigo.tipo.disciplina.extra.curricular"); |
private void updateCourseUnits(HashMap<String, Disciplina> disciplinasMapS, String semestre, DefaultLogMessages logMessages, String year,SiGesWEB service) |
private void updateCourseUnits(HashMap<String, Disciplina> disciplinasMapS, String semestre, DefaultLogMessages logMessages, String year,DisciplinaDao service,Connection conn) |
{ |
logMessages.addMessage(new DefaultLogMessage("import.semestre.updating.course.units." + semestre, LogMessageTypeEnum.INFO)); |
257,9 → 263,9 |
{ |
Disciplina d = entry.getValue(); |
//TIPO 6 é uma EXTRA CURRICULAR |
if(d.getCdTipoDisciplina().longValue() == SIGES_CODIGO_TIPO_DISCIPLINA_EXTRA_CURRICULAR) |
if(ImportStudentsService.isCursoFicticio(d.getCodigoCurso())) |
{ |
logMessages.addMessage(new DefaultLogMessage("import.error","Ignorando disciplina com tipo = " + d.getCdTipoDisciplina(), "see log for details", LogMessageTypeEnum.WARNING)); |
logMessages.addMessage(new DefaultLogMessage("import.error","Ignorando disciplina com codigo de curso ficticio - codigo: " + d.getCodigoCurso(), " see log for details", LogMessageTypeEnum.WARNING)); |
logger.warn(logMessages.getLastMessage()); |
serviceLogWarn(logMessages.getLastMessage()); |
276,6 → 282,13 |
logger.fatal(logMessages.getLastMessage()); |
serviceLogWarn(logMessages.getLastMessage()); |
} |
else if(cus != null && cus.size() == 1) |
{ |
unitsAtualizadas++; |
String msg = "Regular unit update: " + "(" + d.getCodigo() + ") curso: " + d.getCodigoCurso() + " " + semestre + " " + year; |
logger.info(msg); |
serviceLogInfo(msg); |
} |
if (cus == null || cus.size() == 0) |
/impl/src/java/pt/estgp/estgweb/web/FtpServer.java |
---|
111,7 → 111,8 |
logger.warn("Cant login user: " + username); |
} |
} |
errorMsg = "errors.ftp.unknown.error"; |
if(errorMsg == null) |
errorMsg = "errors.ftp.unknown.error"; |
return null; |
/* estava assim |
/impl/src/java/pt/estgp/estgweb/web/FtpManager.java |
---|
63,10 → 63,16 |
{ |
items2import.add(item); |
} |
else |
else if(stream != null && item.getName() != null) |
{ |
logger.warn("ITEM:" + item.getName() + " not parameter and has ZERO BYTES will not import"); |
messageBack.addError(request,"errors.file.zero.bytes",item.getName()); |
String newFolder = (String) request.getAttribute("newFolder"); |
String deleteFile = (String) request.getAttribute("deleteFile"); |
String deleteFolder = (String) request.getAttribute("deleteFolder"); |
if((newFolder == null || newFolder.length() == 0) && (deleteFile == null || deleteFile.length() == 0) && (deleteFolder == null || deleteFolder.length() == 0)) |
{ |
logger.warn("ITEM:" + item.getName() + " not parameter and has ZERO BYTES will not import"); |
messageBack.addError(request,"errors.file.zero.bytes",item.getName()); |
} |
} |
} |
String username = (String) request.getAttribute("username"); |
/impl/src/web/admin/announcements/submitTodoAnnouncement.jsp |
---|
26,7 → 26,12 |
request.setAttribute("fromAction", fromAction); |
%> |
<html:form action="${user}/submitTodoAnnouncement${fromAction}${from}" enctype="multipart/form-data"> |
<div class="container"> |
<html:form styleClass="form-horizontal" action="${user}/submitTodoAnnouncement${fromAction}${from}" enctype="multipart/form-data"> |
<html:hidden property="role"/> |
<html:hidden property="announcementView.id"/> |
<html:hidden property="smallImageStr"/> |
35,15 → 40,15 |
<html:hidden property="announcementView.type" value="todo"/> |
<input type="hidden" name="dispatch" value="removeRole"> |
<table class="form"> |
<baco:isAdmin> |
<tr> |
<th> |
<bean:message key="announcement.status"/> |
</th> |
<td> |
<html:select property="announcementView.status"> |
<div class="form-group"> |
<label class="control-label col-sm-2" for="status"><bean:message key="announcement.status"/></label> |
<div class="col-sm-10"> |
<%--<input type="email" class="form-control" id="email">--%> |
<html:select styleId="status" styleClass="form-control" property="announcementView.status"> |
<html:option value="true"> |
<bean:message key="yes"/> |
</html:option> |
51,18 → 56,17 |
<bean:message key="no"/> |
</html:option> |
</html:select> |
</td> |
</tr> |
</div> |
</div> |
</baco:isAdmin> |
<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"> |
<div class="form-group"> |
<label class="control-label col-sm-2" for="ownerRole"><bean:message key="announcement.sendAnnouncementLike"/></label> |
<div class="col-sm-10"> |
<html:select styleId="ownerRole" styleClass="form-control" property="announcementView.choosedOwnerRole"> |
<logic:iterate id="item" name="UserSession" property="user.ownerRoles"> |
<jomm:option itemName="item" comparableObjectName="AnnouncementsForm" |
comparableObjectProperty="announcementView.choosedOwnerRole"> |
70,16 → 74,15 |
</jomm:option> |
</logic:iterate> |
</html:select> |
</td> |
</tr> |
</div> |
</div> |
</logic:notEmpty> |
</logic:present> |
<tr> |
<th> |
<bean:message key="announcement.target.roles"/> |
</th> |
<td> |
<html:select property="targetRolesStr"> |
<div class="form-group"> |
<label class="control-label col-sm-2" for="targetRoles"><bean:message key="announcement.target.roles"/></label> |
<div class="col-sm-8"> |
<html:select styleId="targetRoles" styleClass="form-control" property="targetRolesStr"> |
<logic:present name="AnnouncementsForm" property="targetRoles"> |
<logic:iterate id="item" name="AnnouncementsForm" property="targetRoles"> |
<jomm:option itemName="item" comparableObjectName="AnnouncementsForm" |
87,78 → 90,89 |
<bean:message key="user.role.${item}"/> |
</jomm:option> |
</logic:iterate> |
<input type="button" value="<bean:message key="add"/>" |
onclick="set(this.form,'addRole');this.form.submit();"> |
</logic:present> |
</html:select> |
</div> |
<div class="col-sm-2"> |
<button type="button" class="btn btn-success" onclick="set(this.form,'addRole');this.form.submit();"><span class="glyphicon glyphicon-plus"></span></button> |
</div> |
</div> |
<logic:present name="AnnouncementsForm" property="selectedRoles"> |
<logic:notEmpty name="AnnouncementsForm" property="selectedRoles"> |
<div class="form-group"> |
<label class="control-label col-sm-2" >Destinatários Seleccionados</label> |
<div class="col-sm-10"> |
<logic:present name="AnnouncementsForm" property="selectedRoles"> |
<logic:notEmpty name="AnnouncementsForm" property="selectedRoles"> |
<table class="dataTable removeButton"> |
<logic:iterate id="item" name="AnnouncementsForm" property="selectedRoles"> |
<tr> |
<th> |
<div class="list-group"> |
<logic:iterate id="item" name="AnnouncementsForm" property="selectedRoles"> |
<div class="list-group-item"> |
<button type="button" class="btn btn-xs btn-danger" |
onclick="AnnouncementsForm.role.value='${item}';set(this.form,'removeRole');this.form.submit();"> |
<span class="glyphicon glyphicon-remove"></span> |
</button> |
<bean:message key="user.role.${item}"/> |
</th> |
<td><input type="button" class="removeButton" |
onclick="AnnouncementsForm.role.value='${item}';set(this.form,'removeRole');this.form.submit();"> |
</td> |
</tr> |
</logic:iterate> |
</table> |
</logic:notEmpty> |
</logic:present> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="announcement.title"/> |
* |
</th> |
<td> |
<html:text styleClass="text" property="announcementView.title" maxlength="250"/> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="announcement.expireDate"/> |
* |
</th> |
<td> |
<a href="javascript:cal.select(getObjectById('expireDate'),'anchor2','yyyy/MM/dd')" name="anchor2" id="anchor2"><html:text styleClass="date" property="expireDate" styleId="expireDate" readonly="true"/></a> |
<input type="button" class="removeButton" onClick="AnnouncementsForm.expireDate.value=null"> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="announcement.linkAnnouncement"/> |
</th> |
<td> |
<html:select property="urlProtocol"> |
</div> |
</logic:iterate> |
</div> |
</div> |
</div> |
</logic:notEmpty> |
</logic:present> |
<div class="form-group"> |
<label class="control-label col-sm-2" for="title"><bean:message key="announcement.title"/> * </label> |
<div class="col-sm-10"> |
<html:text styleId="title" styleClass="form-control" property="announcementView.title" maxlength="250"/> |
</div> |
</div> |
<div class="form-group"> |
<label class="control-label col-sm-2" for="expireDate"><bean:message key="announcement.expireDate"/> * </label> |
<div class="col-sm-8"> |
<a href="javascript:cal.select(getObjectById('expireDate'),'anchor2','yyyy/MM/dd')" name="anchor2" id="anchor2"> |
<html:text style="background-color: #f5f5f5" styleClass="date form-control" property="expireDate" styleId="expireDate" readonly="true"/> |
</a> |
</div> |
<div class="col-sm-2"> |
<button type="button" class="btn btn-danger" onClick="AnnouncementsForm.expireDate.value=null"><span class="glyphicon glyphicon-remove"></span></button> |
</div> |
</div> |
<div class="form-group"> |
<label class="control-label col-sm-2" for="linkAnnouncement"><bean:message key="announcement.linkAnnouncement"/> </label> |
<div class="col-sm-2"> |
<html:select styleClass="form-control" property="urlProtocol"> |
<html:option value="http://">Http://</html:option> |
<html:option value="ftp://">ftp://</html:option> |
<html:option value="https://">Https://</html:option> |
</html:select> |
<html:text property="url" maxlength="250"/> |
</td> |
</tr> |
<tr> |
<th> |
<bean:message key="announcement.text"/> |
* |
</th> |
<td> |
<html:textarea styleClass="textarea" property="announcementView.text"/> |
</td> |
</tr> |
<tr class="buttons"> |
<td colspan="2"> |
<input type="button" |
onclick="set(this.form,'save');this.form.submit()" |
value="<bean:message key="confirm"/>"/> |
</td> |
</tr> |
</table> |
</html:form> |
</div> |
<div class="col-sm-8"> |
<html:text styleClass="form-control" styleId="linkAnnouncement" property="url" maxlength="250"/> |
</div> |
</div> |
<div class="form-group"> |
<label class="control-label col-sm-2" for="text"><bean:message key="announcement.text"/> </label> * |
<div class="col-sm-10"> |
<html:textarea styleId="text" styleClass="form-control" property="announcementView.text"/> |
</div> |
</div> |
<button type="button" class="btn btn-success" onclick="set(this.form,'save');this.form.submit()"><bean:message key="confirm"/></button> |
</html:form> |
</div> |
/impl/src/web/css/lavish-bootstrap.css |
---|
3531,7 → 3531,7 |
} |
} |
.navbar-collapse { |
max-height: 340px; |
overflow-x: visible; |
padding-right: 15px; |
padding-left: 15px; |
4571,6 → 4571,15 |
text-decoration: none; |
background-color: #f5f5f5; |
} |
.list-group-item-info { |
color: #8a6100; |
background-color: #ffdb96; |
} |
a.list-group-item-info, |
button.list-group-item-info { |
color: #8a6100; |
} |
.list-group-item.active, |
.list-group-item.active:hover, |
.list-group-item.active:focus { |
4766,18 → 4775,18 |
border-bottom-color: #eed3d7; |
} |
.panel-info { |
border-color: #bce8f1; |
border-color: #e8d68a; |
} |
.panel-info > .panel-heading { |
color: #3a87ad; |
background-color: #d9edf7; |
border-color: #bce8f1; |
color: #8a6100; |
background-color: #ffdb96; |
border-color: #e8d68a; |
} |
.panel-info > .panel-heading + .panel-collapse .panel-body { |
border-top-color: #bce8f1; |
border-color: #e8d68a; |
} |
.panel-info > .panel-footer + .panel-collapse .panel-body { |
border-bottom-color: #bce8f1; |
border-color: #e8d68a; |
} |
.well { |
min-height: 20px; |
/impl/src/web/public/announcements/loadTodoAnnouncement.jsp |
---|
10,42 → 10,41 |
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %> |
<jsp:useBean id="Announcement" type="pt.estgp.estgweb.domain.views.AnnouncementView" scope="request"/> |
<% UserSessionImpl userSession = (UserSessionImpl) UserSessionProxy.loadUserSession(request, response);%> |
<div class="seccao"> |
<h2>${Announcement.title} |
<baco:canManage name="Announcement"> |
<!--valid="false">--> |
<% |
String fromAction = ""; |
String user = ""; |
if(request.getParameter("from")!=null) |
{ |
user = "/user"; |
fromAction = "From" + request.getParameter("from"); |
} |
request.setAttribute("user",user); |
request.setAttribute("fromAction",fromAction); |
%> |
<html:link action="${user}/startEditAnnouncement${fromAction}?id=${Announcement.id}"> |
<bean:message key="edit"/> |
</html:link> |
<html:link action="${user}/startDeleteAnnouncement${fromAction}?id=${Announcement.id}"> |
<bean:message key="delete"/> |
</html:link> |
</baco:canManage> |
</h2> |
<div class="panel panel-info"> |
<div class="panel-heading"> |
${Announcement.title} |
<baco:canManage name="Announcement"> |
<!--valid="false">--> |
<% |
String fromAction = ""; |
String user = ""; |
if(request.getParameter("from")!=null) |
{ |
user = "/user"; |
fromAction = "From" + request.getParameter("from"); |
} |
request.setAttribute("user",user); |
request.setAttribute("fromAction",fromAction); |
%> |
<html:link styleClass="btn btn-default" action="${user}/startEditAnnouncement${fromAction}?id=${Announcement.id}"> |
<bean:message key="edit"/> |
</html:link> |
<html:link styleClass="btn btn-danger" action="${user}/startDeleteAnnouncement${fromAction}?id=${Announcement.id}"> |
<bean:message key="delete"/> |
</html:link> |
</baco:canManage> |
</div> |
<div class="panel-body"> |
<table> |
<tr> |
<td valign="top"> |
<img width="150px" alt="<%=Announcement.getTitle()%>" src="<%=request.getContextPath()%>/imgs/todoMini.jpg"> |
</td> |
<td valign="top">${Announcement.formatedText}</td> |
</tr> |
<img style="float: left;margin: 10px;" width="150px" alt="<%=Announcement.getTitle()%>" src="<%=request.getContextPath()%>/imgs/todoMini.jpg"> |
<p class="lead">${Announcement.formatedText}</p> |
<logic:notEmpty name="Announcement" property="url"> |
<tr> |
<td colspan="2"> >> <html:link href="${Announcement.url}">${Announcement.url}</html:link></td> |
</tr> |
<html:link styleClass="btn btn-success" href="${Announcement.url}">Entrar na tarefa</html:link> |
</logic:notEmpty> |
</table> |
</div> |
</div> |
/impl/src/web/user/courseunits/menu.jsp |
---|
157,7 → 157,9 |
CourseUnitContentsGrants contentsGrants = CourseUnitContentsGrants.parse(CourseUnitView.getContentsGrants()); |
if ( contentsGrants == CourseUnitContentsGrants.PUBLIC || |
if ( userSession.getUser().isSuperuserOrAdmin() || |
userSession.getUser().hasRole("services") || |
contentsGrants == CourseUnitContentsGrants.PUBLIC || |
(contentsGrants == CourseUnitContentsGrants.INTERNAL && UserSessionProxy.isAuthenticated(request)) || |
(contentsGrants == CourseUnitContentsGrants.PRIVATE && UserSessionProxy.isAuthenticated(request) && |
(((UserImpl) ((userSession.getUser()))).isTeacherOfCourseUnit(CourseUnitView.getId()) || |