/impl/conf/language/MessageResourcesCourse.properties |
---|
106,3 → 106,6 |
course.comissions=Comissões de Curso |
course.list=Listagem de Cursos |
course.course.units=Listagem de Unidades Curriculares |
/impl/conf/WEB-INF/struts/struts-courses.xml |
---|
94,6 → 94,7 |
<action path="/user/coursePedagogicContents" forward="page.courses.pedagogic.contents"/> |
<action path="/user/courseComissions" forward="page.courses.comissions"/> |
<action path="/user/courseCourseUnits" forward="page.courses.courseunits"/> |
/impl/conf/WEB-INF/struts/struts-courseunits.xml |
---|
168,6 → 168,17 |
input="page.courseunit.delete.admin"> |
<forward name="edit" path="page.edit.courseunit.admin.from.course.unit.delete"/> |
</action> |
<action path="/user/startEditCourseUnitAdminFromCourseCourseUnits" forward="/user/courseUnitControllerAdminFromCourseCourseUnits.do?dispatch=edit&from=CourseCourseUnits"/> |
<action path="/user/courseUnitControllerAdminFromCourseCourseUnits" |
type="pt.estgp.estgweb.web.controllers.courseunits.CourseUnitsAdminController" |
name="CourseUnitsForm" |
scope="request" |
parameter="dispatch" |
validate="false" |
input="page.courses.courseunits"> |
<forward name="edit" path="page.edit.courseunit.admin.from.course.course.units"/> |
</action> |
</action-mappings> |
</struts-config> |
/impl/conf/WEB-INF/struts/tiles-courseunits.xml |
---|
192,6 → 192,12 |
<put name="topnav" value="/admin/courseunits/topnavEditCourseUnitFromDelete.jsp"/> |
<put name="body" value="/admin/courseunits/courseunit.jsp"/> |
</definition> |
<definition name="page.edit.courseunit.admin.from.course.course.units" extends="base.separators.home"> |
<put name="title" value="Unidade Curricular"/> |
<put name="topnav" value="/admin/courseunits/topnavEditCourseUnitFromCourseCourseUnits.jsp"/> |
<put name="body" value="/admin/courseunits/courseunit.jsp"/> |
</definition> |
/impl/conf/WEB-INF/struts/tiles-courses.xml |
---|
101,8 → 101,14 |
<definition name="page.courses.courseunits" extends="page.separators.home"> |
<put name="title" value="Listagem de Unidades"/> |
<put name="topnav" value="/admin/courses/topnavCourseCourseUnits.jsp"/> |
<put name="body" value="/admin/courses/courseCourseUnits.jsp"/> |
</definition> |
</tiles-definitions> |
/impl/src/java/pt/estgp/estgweb/domain/dao/impl/CourseDaoImpl.java |
---|
53,6 → 53,47 |
.list().size(); |
} |
public int countCoursesUnits(String importYear,long courseId) |
{ |
return createCriteria() |
.createAlias("courseUnits", "c") |
.setProjection(Projections.property("c.id")) |
.add(eq("c.importYear", importYear)) |
.add(eq("id", courseId)) |
.list().size(); |
} |
public int countCoursesUnitsNot(String importYear,long courseId) |
{ |
return createCriteria() |
.createAlias("courseUnits", "c") |
.setProjection(Projections.property("c.id")) |
.add(not(eq("c.importYear", importYear))) |
.add(eq("id", courseId)) |
.list().size(); |
} |
public List<Long> findCoursesUnitsIds(String importYear,long courseId) |
{ |
return createCriteria() |
.createAlias("courseUnits", "c") |
.setProjection(Projections.property("c.id")) |
.add(eq("id", courseId)) |
.add(eq("c.importYear", importYear)) |
.addOrder(Order.asc("c.name")) |
.list(); |
} |
public List<Long> findCoursesUnitsIds(long courseId) |
{ |
return createCriteria() |
.createAlias("courseUnits","c") |
.setProjection(Projections.property("c.id")) |
.add(eq("id", courseId)) |
.addOrder(Order.asc("c.importYear")) |
.addOrder(Order.asc("c.name")) |
.list(); |
} |
public List<Course> searchActualYear(String query, SearchTypeEnum searchTypeEnum, int max, int page) |
{ |
Criterion c = DaoUtils.createSearchQuery(query, searchTypeEnum, "name", "description"); |
/impl/src/web/admin/courses/courseCourseUnits.jsp |
---|
New file |
0,0 → 1,117 |
<%@ page import="jomm.dao.impl.AbstractDao" %> |
<%@ page import="pt.estgp.estgweb.domain.Course" %> |
<%@ page import="pt.estgp.estgweb.domain.CourseUnit" %> |
<%@ page import="pt.estgp.estgweb.domain.dao.DaoFactory" %> |
<%@ page import="pt.estgp.estgweb.domain.views.CourseUnitView" %> |
<%@ page import="java.util.List" %> |
<%@ page import="pt.estgp.estgweb.domain.views.CourseView" %> |
<%@ page contentType="text/html;charset=UTF-8" language="java" %> |
<%@ 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/struts-bean.tld" prefix="bean" %> |
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %> |
<%-- |
NOTAS DE DESENVOLVIMENTO |
Este serviço pode encaminhar para edição de unidades curriculares |
Portanto a edição de unidades curriculares (Administrativa) envia a CourseUnitView |
que é usada aqui para ler o courseId de forma a não perder o ano onde estavamos |
Por essa razao o courseId tem de estar presente em todos os links de saida desta página |
--%> |
<style> |
.nav-menu li |
{ |
padding-left: 0; |
margin-left: 0; |
padding-bottom: 0; |
padding-top: 0; |
margin-bottom: 0; |
margin-top: 0; |
} |
</style> |
<% |
AbstractDao.getCurrentSession().beginTransaction(); |
%> |
<% |
String courseId = request.getParameter("courseId"); |
if(courseId == null || courseId.length()==0) |
{ |
CourseUnitView view = (CourseUnitView) request.getAttribute("CourseUnitView"); |
if(view == null) |
{ |
// importYear = DaoFactory.getConfigurationDaoImpl().getInterfaceImportYearCreateTransaction(); |
} |
else |
{ |
courseId = ""+view.getCourseId(); |
} |
} |
Course c = DaoFactory.getCourseDaoImpl().get(new Long(courseId)); |
CourseView cv = new CourseView(c); |
request.setAttribute("CourseView",cv); |
List<Long> courseUnits = DaoFactory.getCourseDaoImpl().findCoursesUnitsIds(c.getId()); |
request.setAttribute("courseUnits",courseUnits); |
%> |
<div class="container-fluid"> |
<div class="row"> |
<div class="col-md-12"> |
<h1>Unidades Curriculares do Curso de - <bean:message key="course.${CourseView.degreeCleanCode}"/> - <%=c.getCode()%> - <%=c.getName()%></h1> |
</div> |
</div> |
<div class="row"> |
<div class="col-md-12"> |
<table class="tablesorter tablesorterfiltered"> |
<thead> |
<tr> |
<th>Código</th> |
<th>Nome</th> |
<th>Turma</th> |
<th>Ano</th> |
<th class="filter-name filter-select">Semestre</th> |
<th>Editar</th> |
</tr> |
</thead> |
<tbody> |
<logic:iterate id="unitId" name="courseUnits" type="java.lang.Long"> |
<% |
CourseUnit cu = DaoFactory.getCourseUnitDaoImpl().load(unitId); |
CourseUnitView cuv = new CourseUnitView(cu); |
request.setAttribute("cuv",cuv); |
%> |
<tr> |
<td>${cuv.code}</td> |
<td>${cuv.name}</td> |
<td>${cuv.cdTurma}</td> |
<td>${cuv.importYear}</td> |
<td><bean:message key="courseunit.${cuv.semestre}"/></td> |
<td> |
<a class="btn btn-warning" href="<%=request.getContextPath()%>/user/startEditCourseUnitAdminFromCourseCourseUnits.do?id=${cuv.id}&courseId=<%=c.getId()%>"><bean:message key="edit"/><span class="glyphicon glyphicon-pencil"></span></a> |
</td> |
</tr> |
</logic:iterate> |
</tbody> |
</table> |
</div> |
</div> |
</div> |
<% |
AbstractDao.getCurrentSession().getTransaction().commit(); |
%> |
/impl/src/web/admin/courses/courseComissions.jsp |
---|
6,6 → 6,8 |
<%@ page import="pt.estgp.estgweb.domain.views.CourseView" %> |
<%@ page import="pt.estgp.estgweb.utils.DatesUtils" %> |
<%@ page import="java.util.List" %> |
<%@ page import="pt.estgp.estgweb.domain.UserSession" %> |
<%@ page import="pt.estgp.estgweb.web.UserSessionProxy" %> |
<%@ page contentType="text/html;charset=UTF-8" language="java" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %> |
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %> |
40,19 → 42,18 |
List<Course> courses = DaoFactory.getCourseDaoImpl().findAll(importYear); |
%> |
<div class="container-fluid"> |
<div class="row"> |
<div class="col-sm-12 col-md-6"> |
<div class="col-sm-12 col-md-4"> |
<div class="panel panel-primary"> |
<div class="panel-heading"><bean:message key="course.pedagogic.contents.admin"/> - <%=importYear%></div> |
<div class="panel-body"> |
<h1>Listagem de Cursos</h1> |
<form role="form" action="<%=request.getContextPath()%>/user/courseComissions.do" method="post"> |
<div class="form-group"> |
<label for="importYear"><bean:message key="courseunit.importYear"/></label> |
<label for="importYear">Escolha o úlitmo ano em que o curso esteve ativo:</label> |
<select name="importYear" id="importYear" class="form-control" onchange="this.form.submit()"> |
<option value="">Escolha o úlitmo ano em que o curso esteve ativo:</option> |
<option value="">Ultimo ano ativo</option> |
<% |
List<String> years = DatesUtils.getImportYears(10); |
for(String year: years) |
67,8 → 68,7 |
</div> |
</form> |
</div> |
</div> |
</div> |
</div> |
80,58 → 80,60 |
</div> |
</div> |
<div class="row"> |
<div class="col-md-4" style="padding-left: 0; padding-right: 5px"> |
<nav class="navbar navbar-default" role="navigation"> |
<div class="navbar-header" style="padding-right: 15px;"> |
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#courses"> |
<span class="icon-bar"></span> |
<span class="icon-bar"></span> |
<span class="icon-bar"></span> |
</button> |
</div> |
<div class="collapse navbar-collapse" id="courses"> |
<div class="panel-heading">Cursos</div> |
<ul class="nav nav-stacked"> |
<% |
for(Course c: courses) |
{ |
%> |
<li><a href="#course<%=c.getId()%>"><%=c.getCode()%> - <%=c.getName()%></a></li> |
<% |
} |
%> |
</ul> |
</div><!-- /.navbar-collapse --> |
</nav> |
</div> |
<div class="col-md-8" style="padding-left: 0"> |
<div class="row"> |
<div class="col-md-12"> |
<table class="tablesorter tablesorterfiltered"> |
<thead> |
<tr> |
<th>Codigo</th> |
<th>Grau</th> |
<th>Curso</th> |
<baco:hasRole role="services,admin,all"> |
<th>Papel Comissão Curso</th> |
<th>Unidades <%=importYear%></th> |
<th>Unidades noutros anos</th> |
</baco:hasRole> |
<th>Comissão de Curso</th> |
<baco:hasRole role="services,admin,all"> |
<th></th> |
</baco:hasRole> |
</tr> |
</thead> |
<tbody> |
<% |
UserSession userSession = UserSessionProxy.loadUserSessionFromRequest(request); |
for(Course c: courses) |
{ |
CourseView cv = new CourseView(c); |
request.setAttribute("CourseView",cv); |
int unitsSize=DaoFactory.getCourseDaoImpl().countCoursesUnits(importYear,c.getId()); |
int unitsSizeOthers=DaoFactory.getCourseDaoImpl().countCoursesUnitsNot(importYear, c.getId()); |
int totalUnits = unitsSize + unitsSizeOthers; |
if(totalUnits > 0 || userSession.getUser().isAdmin() || userSession.getUser().hasRole("services")) |
{ |
%> |
<a name="course<%=c.getId()%>"></a> |
<div class="panel panel-default"> |
<div class="panel-heading"><%=c.getCode()%> - <%=c.getName()%> - <bean:message key="course.${CourseView.degreeCleanCode}"/> <%if(c.isStatus()){%>Ativo <%=importYear%><%}%></div> |
<div class="panel-body"> |
<label>Papel Institucional da Comissão em Sistema:</label> |
<logic:notEmpty name="CourseView" property="validationRole"> |
<bean:message key="user.role.${CourseView.validationRole}"/> |
</logic:notEmpty> |
<logic:empty name="CourseView" property="validationRole"> |
Papel não atribuido (Corrigir Situação) |
</logic:empty> |
<tr> |
<td>${CourseView.code}</td> |
<td><bean:message key="course.${CourseView.degreeCleanCode}"/></td> |
<td>${CourseView.name}</td> |
<baco:hasRole role="services,admin,all"> |
<td> |
<logic:notEmpty name="CourseView" property="validationRole"> |
<bean:message key="user.role.${CourseView.validationRole}"/> |
</logic:notEmpty> |
<logic:empty name="CourseView" property="validationRole"> |
Papel não atribuido (Corrigir Situação) |
</logic:empty> |
</td> |
<td> |
<%=unitsSize%> |
</td> |
<td> |
<%=unitsSizeOthers%> |
</td> |
</baco:hasRole> |
<td> |
<div class="list-group"> |
<% |
for(User u:DaoFactory.getUserDaoImpl().loadRoleUsers(c.getValidationRole())) |
149,19 → 151,28 |
} |
%> |
</div> |
</div> |
</div> |
</td> |
<baco:hasRole role="services,admin,all"> |
<td> |
<a class="btn btn-default" target="_blank" href="<%=request.getContextPath()%>/user/courseCourseUnits.do?courseId=<%=c.getId()%>"> |
<span class="glyphicon glyphicon-list-alt"></span> |
</a> |
</td> |
</baco:hasRole> |
</tr> |
<% |
} |
} |
%> |
</div> |
</div> |
</tbody> |
</table> |
</div> |
</div> |
</div> |
<% |
AbstractDao.getCurrentSession().getTransaction().commit(); |
%> |
/impl/src/web/admin/courses/topnavCourseCourseUnits.jsp |
---|
New file |
0,0 → 1,16 |
<%@page contentType="text/html"%> |
<%@page pageEncoding="UTF-8"%> |
<%@page import="jomm.web.utils.NavPlaceServer"%> |
<%@ page import="jomm.web.utils.TopNav" %> |
<%@ page import="pt.estgp.estgweb.domain.views.BlogView" %> |
<%@ page import="pt.estgp.estgweb.domain.CourseUnit" %> |
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.ServiceManager" %> |
<%@ page import="pt.utl.ist.berserk.logic.serviceManager.IServiceManager" %> |
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %> |
<%--<baco:object2Request beanIdName="id" classname="pt.estgp.estgweb.domain.CourseUnit" useBean="CourseUnitView"/>--%> |
<% |
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request); |
topNav.addNavPlace("/user/startHome.do", "intranet.separator.home.back"); |
topNav.addNavPlace(null, "course.course.units"); |
%> |
<jsp:include page="/layout/topnav.jsp"/> |
Property changes: |
Added: svn:executable |
+ * |
/impl/src/web/admin/courseunits/topnavEditCourseUnitFromCourseCourseUnits.jsp |
---|
New file |
0,0 → 1,12 |
<%@page contentType="text/html"%> |
<%@page pageEncoding="UTF-8"%> |
<%@page import="jomm.web.utils.NavPlaceServer"%> |
<%@ page import="jomm.web.utils.TopNav" %> |
<% |
String courseId = request.getParameter("courseId"); |
TopNav topNav = NavPlaceServer.getInstance().createTopNav(request); |
topNav.addNavPlace("/user/startHome.do", "intranet.separator.home.back"); |
topNav.addNavPlace("/user/courseCourseUnits.do?courseId="+courseId, "course.course.units"); |
topNav.addNavPlace(null, "courseunit.edit"); |
%> |
<jsp:include page="/layout/topnav.jsp"/> |
Property changes: |
Added: svn:executable |
+ * |