Rev 1760 | Rev 1770 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<%@ page import="jomm.dao.DaoException" %>
<%@ page import="jomm.dao.impl.AbstractDao" %>
<%@ page import="org.hibernate.Criteria" %>
<%@ page import="org.hibernate.criterion.Criterion" %>
<%@ page import="org.hibernate.criterion.Order" %>
<%@ page import="static org.hibernate.criterion.Restrictions.eq" %>
<%@ page import="static org.hibernate.criterion.Restrictions.or" %>
<%@ page import="pt.estgp.estgweb.domain.RepositoryDocument" %>
<%@ page import="pt.estgp.estgweb.domain.RepositoryDocumentCollection" %>
<%@ page import="pt.estgp.estgweb.domain.RepositoryDocumentInterfaceImpl" %>
<%@ page import="pt.estgp.estgweb.domain.dao.DaoFactory" %>
<%@ page import="pt.estgp.estgweb.services.data.repositorydocuments.interfaces.InterfaceBlock" %>
<%@ page import="pt.estgp.estgweb.services.data.repositorydocuments.interfaces.RepositoryInterface" %>
<%@ page import="java.util.List" %>
<%@ page import="static org.hibernate.criterion.Restrictions.le" %>
<%@ page import="static org.hibernate.criterion.Restrictions.*" %>
<%@ page import="org.hibernate.FlushMode" %>
<%@ taglib uri="/WEB-INF/tlds/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/tlds/struts-nested.tld" prefix="nested" %>
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/tlds/struts-tiles.tld" prefix="tiles" %>
<%@ taglib tagdir="/WEB-INF/tags" prefix="bacoTags" %>
<%@ taglib prefix="baco" uri="http://www.estgp.pt/baco/" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
String slugOrId = (String) request.getAttribute("slug");
AbstractDao.getCurrentSession().beginTransaction();
RepositoryDocumentInterfaceImpl repositoryDocumentInterface;
try{
repositoryDocumentInterface = DaoFactory.getRepositoryDocumentInterfaceDaoImpl().findBySlug(slugOrId);
}
catch(DaoException e)
{
response.sendError(404);
return;
}
RepositoryInterface loadedConfig = repositoryDocumentInterface.getRepositoryInterface();
request.setAttribute("loadedConfig",loadedConfig);
%>
<%--<jsp:useBean id="loadedConfig" type="pt.estgp.estgweb.services.data.repositorydocuments.interfaces.RepositoryInterface" scope="request"/>
--%>
<script>
<%
String toReplaceContainer;
String newContainer;
if(loadedConfig.isContainerFluid())
{
toReplaceContainer = "container";
newContainer = "container-fluid";
}
else
{
toReplaceContainer = "container-fluid";
newContainer = "container";
}
%>
$(document).ready(function()
{
var toReplaceContainer = "<%=toReplaceContainer%>";
var newContainer = "<%=newContainer%>";
var containerToReplace = $("." + toReplaceContainer);
var containerToUse = $("." + newContainer);
if(containerToReplace)
{
containerToReplace.removeClass(toReplaceContainer);
containerToReplace.addClass(newContainer);
}
else if(!containerToUse)
{
$(".repository-interface").wrap("<div class='" + newContainer + "'></div>")
}
});
/**********************************
* FUNCIONALIDADE DE PESQUISA
* *******************************/
$.extend($.expr[':'], {
'containsi': function(elem, i, match, array)
{
return removeDiacritics((elem.textContent || elem.innerText || '').toLowerCase())
.indexOf(removeDiacritics((match[3] || "").toLowerCase())) >= 0;
}
});
$(document).ready(
function(){
$('.repository-interface .collapse')
.on('shown.bs.collapse', function(e) {
if ($(this).is(e.target)) {
$(this)
.parent().eq(0)
.find(".glyphicon-plus").eq(0)
.removeClass("glyphicon-plus")
.addClass("glyphicon-minus");
}
})
.on('hidden.bs.collapse', function(e) {
if ($(this).is(e.target)) {
$(this)
.parent().eq(0)
.find(".glyphicon-minus").eq(0)
.removeClass("glyphicon-minus")
.addClass("glyphicon-plus");
}
});
$("#documentFilterInput").unbind("click");
$('#documentFilterInput').bind("keypress", function(e) {
if (e.keyCode == 13) {
e.preventDefault();
return false;
}
});
$("#documentFilterInput").keyup(
function(){
if($("#documentFilterInput").val()=="")
{
$(".repository-document, repository-document-collection").show();
}
else
{
$('.repository-interface .collapse').collapse('show');
var fields = $("#documentFilterInput").val().split(" ");
$(".repository-document, .repository-document-collection").show();
$(".repository-document, .repository-document-collection").each(
function()
{
for(var i = 0; i < fields.length; i++)
{
if($(this).find(" *:containsi('"+fields[i]+"')").length == 0)
{
$(this).hide();
break;
}
}
}
);
}
}
);
}
);
function toogleId()
{
}
</script>
<style>
body
{
background-color: white !important;
}
</style>
<div class="repository-interface">
<div class="repository-intro repository-interface-intro">
<logic:equal value="true" name="loadedConfig" property="showTitle">
<div class="repository-title clearfix">
${loadedConfig.title}
<span class="pull-right" style="font-size: 0.7em;display: inline-block">
<input class="form-control" id="documentFilterInput" type="text" style="width: 200px"/>
</span>
<span class="pull-right" style="font-size: 0.7em;margin-right: 5px; margin-top: 5px">
Pesquisar Nesta Página:
</span>
</div>
</logic:equal>
<logic:equal value="true" name="loadedConfig" property="showDescription">
<div class="repository-description">
${loadedConfig.description}
</div>
</logic:equal>
</div>
<nested:iterate id="interfaceRow" name="loadedConfig" property="rows" type="pt.estgp.estgweb.services.data.repositorydocuments.interfaces.InterfaceRow">
<div class="row">
<div class="repository-intro">
<logic:equal value="true" name="interfaceRow" property="showTitle">
<div class="repository-title">
${interfaceRow.title}
</div>
</logic:equal>
<logic:equal value="true" name="interfaceRow" property="showDescription">
<div class="repository-description">
${interfaceRow.description}
</div>
</logic:equal>
</div>
<nested:iterate id="interfaceColumn" name="interfaceRow" property="columns" type="pt.estgp.estgweb.services.data.repositorydocuments.interfaces.InterfaceColumn">
<div class="col-md-${interfaceColumn.cols} repository-column">
<div class="repository-intro">
<logic:equal value="true" name="interfaceColumn" property="showTitle">
<div class="repository-title">
<span class="btn-xs glyphicon glyphicon-bookmark"></span>
${interfaceColumn.title}
</div>
</logic:equal>
<logic:equal value="true" name="interfaceColumn" property="showDescription">
<div class="repository-description">
${interfaceColumn.description}
</div>
</logic:equal>
</div>
<nested:iterate id="interfaceBlock" name="interfaceColumn" property="blocks" type="pt.estgp.estgweb.services.data.repositorydocuments.interfaces.InterfaceBlock">
<%
List<Long> collections = interfaceBlock.getCollectionIds();
%>
<%
String idChilds = "block_" + interfaceBlock.hashCode();
//String toogleAttrs = interfaceBlock.isBrowseMinimizeMaximize() ? " data-toggle=\"collapse\" data-target=\"#" + idChilds + "\" " :"";
//String styleCol = interfaceBlock.isBrowseMinimizeMaximize() ? " style=\"cursor:hand; text-decoration:underline\" " :"";
String toogleAttrs = " data-toggle=\"collapse\" data-target=\"#" + idChilds + "\" " ;
String styleCol = " style=\"cursor:hand; text-decoration:underline\" ";
String folderIcon = !interfaceBlock.isTree() && interfaceBlock.isBrowseMinimizeMaximize() ? " glyphicon-plus " : " glyphicon-minus ";
%>
<baco:hasRole role="admin,all,repositoryDocs,repositoryDeposit">
<logic:notEmpty name="interfaceBlock" property="collectionIds">
<%
if(collections != null && collections.size() == 1 && interfaceBlock.isTree())
{
request.setAttribute("colToAdd",collections.get(0));
%>
<div class="well well-sm clearfix">
<%=DaoFactory.getRepositoryDocumentCollectionDaoImpl().load(collections.get(0)).getName()%>
<html:link styleClass="btn btn-success pull-right" action="/user/repositoryEditDocument?repositoryCollectionId=${colToAdd}" target="_blank">
<span class="glyphicon glyphicon-plus"> </span> na Raiz da Árvore
</html:link>
</div>
<%
}
%>
</logic:notEmpty>
</baco:hasRole>
<div class="repository-block">
<div class="repository-intro" <%=toogleAttrs%>>
<%
if(!interfaceBlock.isTree() && interfaceBlock.isBrowseMinimizeMaximize() && !interfaceBlock.isShowTitle())
{
//Caso o titulo não esteja a ser mostrado e a colecção esteja minimizada e seja flat não vamos ter +/- para expandir
%>
<div class="repository-title">
<span class="btn-xs glyphicon <%=folderIcon%>" style="margin-right: 5px"></span>
<span class="btn-xs glyphicon glyphicon-bookmark"></span>
<label <%=styleCol%>>Bloco de Documentos (Aviso: Titulo Inexistente ou oculto, contacte a administração para verificar a situação)</label>
</div>
<%
}
%>
<logic:equal value="true" name="interfaceBlock" property="showTitle">
<div class="repository-title">
<span class="btn-xs glyphicon <%=folderIcon%>" style="margin-right: 5px"></span>
<span class="btn-xs glyphicon glyphicon-bookmark"></span>
<label <%=styleCol%>>${interfaceBlock.title}</label>
</div>
</logic:equal>
<baco:hasRole role="admin,all,repositoryDocs,repositoryDeposit">
<logic:notEmpty name="interfaceBlock" property="collectionIds">
<%
if(collections != null && collections.size() == 1 && !interfaceBlock.isTree())
{
request.setAttribute("colToAdd",collections.get(0));
%>
<div class="well well-sm clearfix">
<%=DaoFactory.getRepositoryDocumentCollectionDaoImpl().load(collections.get(0)).getName()%>
<html:link styleClass="btn btn-success pull-right" action="/user/repositoryEditDocument?repositoryCollectionId=${colToAdd}" target="_blank">
<span class="glyphicon glyphicon-plus"> </span>
</html:link>
</div>
<%
}
%>
</logic:notEmpty>
</baco:hasRole>
<logic:equal value="true" name="interfaceBlock" property="showDescription">
<div class="repository-description">
${interfaceBlock.description}
</div>
</logic:equal>
</div>
<div id="<%=idChilds%>" <%=!interfaceBlock.isTree() && interfaceBlock.isBrowseMinimizeMaximize() ? " class=\"repository-block-childs collapse\"" :" class=\"repository-block-childs collapse in \" "%>>
<%!
public Criterion getAllCollectionsClauses(Long collectionId)
{
Criterion c;
RepositoryDocumentCollection col = DaoFactory.getRepositoryDocumentCollectionDaoImpl().load(collectionId);
c = eq("collection.id",col.getId());
if( col.getChilds() != null && col.getChilds().size() > 0)
{
for(RepositoryDocumentCollection child: col.getChilds())
{
Criterion cChilds = getAllCollectionsClauses(child.getId());
if(cChilds != null)
c = or(c,cChilds);
}
}
return c;
}
%>
<%
if(!interfaceBlock.isTree())
{
Criteria c = AbstractDao.getCurrentSession().createCriteria(RepositoryDocument.class);
Criterion clauses = null;
for(Long collection : collections)
{
Criterion clausesCol = getAllCollectionsClauses(collection);
if(clauses == null)
clauses = clausesCol;
else
{
clauses = or(clauses,clausesCol);
}
}
c.add(clauses);
c.add(eq("visible",true));
if(interfaceBlock.getOrderBy() == InterfaceBlock.Order.publishDateAsc)
c.addOrder(Order.asc("publishDate"));
else if(interfaceBlock.getOrderBy() == InterfaceBlock.Order.publishDateDesc)
c.addOrder(Order.desc("publishDate"));
else if(interfaceBlock.getOrderBy() == InterfaceBlock.Order.saveDateAsc)
c.addOrder(Order.asc("saveDate"));
else if(interfaceBlock.getOrderBy() == InterfaceBlock.Order.saveDateDesc)
c.addOrder(Order.desc("saveDate"));
else if(interfaceBlock.getOrderBy() == InterfaceBlock.Order.updateDateAsc)
c.addOrder(Order.desc("updateDate"));
else if(interfaceBlock.getOrderBy() == InterfaceBlock.Order.updateDateDesc)
c.addOrder(Order.desc("updateDate"));
else if(interfaceBlock.getOrderBy() == InterfaceBlock.Order.title)
c.addOrder(Order.asc("title"));
if(interfaceBlock.getMaxPublishDate() != null && interfaceBlock.getMaxPublishDate().getTime() > 0)
{
c.add(le("publishDate", interfaceBlock.getMaxPublishDate()));
}
if(interfaceBlock.getMinPublishDate() != null && interfaceBlock.getMinPublishDate().getTime() > 0)
{
c.add(ge("publishDate", interfaceBlock.getMinPublishDate()));
}
List<RepositoryDocument> documents = c.list();
request.setAttribute("documents",documents);
request.setAttribute("interfaceBlock",interfaceBlock);
%>
<jsp:include page="showInterfaceDocsFragment.jsp"/>
<%
}
else
{
for(Long collection : collections)
{
RepositoryDocumentCollection col = DaoFactory.getRepositoryDocumentCollectionDaoImpl().get(collection);
for(RepositoryDocumentCollection child: col.getChilds())
{
request.setAttribute("collection",child);
request.setAttribute("interfaceBlock",interfaceBlock);
%>
<jsp:include page="showInterfaceColFragment.jsp"/>
<%
}
}
}
%>
</div>
</div>
</nested:iterate>
</div>
</nested:iterate>
</div>
</nested:iterate>
</div>
<%
AbstractDao.getCurrentSession().getTransaction().rollback();
%>
Generated by GNU Enscript 1.6.5.2.