Subversion Repositories bacoAlunos

Rev

Rev 1756 | Rev 1759 | 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.*" %>
<%@ 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 (elem.textContent || elem.innerText || '').toLowerCase()
                            .indexOf((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").show();
                            }
                            else
                            {
                                $('.repository-interface .collapse').collapse('show');
                                var fields = $("#documentFilterInput").val().split(" ");

                                $(".repository-document").show();
                                $(".repository-document").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 ";


                        %>
                        <div class="repository-block">
                            <div class="repository-intro" <%=toogleAttrs%>>
                                <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));
                                        %>
                                        <html:link styleClass="btn btn-xs btn-success pull-right" action="/user/repositoryEditDocument?repositoryCollectionId=${colToAdd}" target="_blank">
                                            <span class="glyphicon glyphicon-plus"></span>
                                        </html:link>
                                        <%
                                            }
                                            else if(collections != null && collections.size() == 1 && interfaceBlock.isTree())
                                            {
                                        %>
                                        <html:link styleClass="btn btn-success pull-right" action="/user/repositoryEditDocument?repositoryCollectionId=${colToAdd}" target="_blank">
                                            <span class="glyphicon glyphicon-plus"> na Raiz da Colecção</span>
                                        </html:link>
                                        <%
                                            }
                                        %>
                                    </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().commit();
%>

Generated by GNU Enscript 1.6.5.2.