Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 464 → Rev 469

/impl/conf/language/MessageResourcesCommon.properties
3,6 → 3,8
# ANNOUNCEMENTS MESSAGE RESOURCES
#
################################################################################
result.turn.off.filters=Limpar Filtros
search.pages.to=a
search=Pesquisar
search.form=Formulário de Pesquisa
search.results=Resultados da Pesquisa ({0})
/impl/conf/language/MessageResourcesSruSources.properties
5,6 → 5,7
################################################################################
module.SruSource=Pastas Partilhadas do Donald
 
srusource.filter.dirs=Filtrar Resultados por directório
srusource=Fontes de Pesquisa SRU (Search and Retrieve via URL)
srusource.create.srusource=Nova fonte SRU
srusource.name=Nome
34,3 → 35,19
srusource.deleted.fail=Falhou a remoção da Fonte de SRU
 
srusource.confirm.delete=Tem a certeza que deseja apagar esta Fonte de SRU?
 
 
facet.facetType=Tipo
facet.facetLastModified=Ultima Modificação
facet.facetDir=Directorios
 
facet.facetType=Tipo
facet.facetLastModified=Ultima Modificação
facet.facetDir=Directorios
facet.date=Ano.Mes.Dia
facet.year=Ano
facet.month=Ano.Mes
facet.type=Tipo
facet.dir=Tipo
 
facets=Filtre por Facetas
/impl/conf/language/MessageResources.properties
132,6 → 132,7
courseunit=Unidade Curricular
grade=Nota
date=Data
last.modification.date=Última modificação
code=Código
none=Nenhum
description=Descrição
/impl/src/java/pt/estgp/estgweb/services/common/ISearchResults.java
25,6 → 25,8
public String getModuleInternalKey();
public String getDescription();
public List<IFacet> getFacets();
public String getQueryNoEncode();
public String getQueryUtf();
 
 
}
/impl/src/java/pt/estgp/estgweb/services/common/impl/DefaultResult.java
22,6 → 22,11
private boolean subTitleKey = false;
private boolean textKey = false;
private boolean absoluteUrl = false;
private String date;
private String creator;
private String directory;
private String sizeKb;
private String mime;
 
private LabelGroup subTitlesGroup = null;
 
46,6 → 51,14
this.bestFragments = bestFragments;
}
 
public String getMime() {
return mime;
}
 
public void setMime(String mime) {
this.mime = mime;
}
 
public String getTitle() {
return title;
}
101,6 → 114,31
return subTitlesGroup;
}
 
 
public String getDate() {
return date;
}
 
public void setDate(String date) {
this.date = date;
}
 
public String getCreator() {
return creator;
}
 
public void setCreator(String creator) {
this.creator = creator;
}
 
public String getDirectory() {
return directory;
}
 
public void setDirectory(String directory) {
this.directory = directory;
}
 
public void setSubTitlesGroup(LabelGroup subTitlesGroup)
{
this.subTitlesGroup = subTitlesGroup;
114,4 → 152,13
public void setAbsoluteUrl(boolean absoluteUrl) {
this.absoluteUrl = absoluteUrl;
}
 
 
public String getSizeKb() {
return sizeKb;
}
 
public void setSizeKb(String sizeKb) {
this.sizeKb = sizeKb;
}
}
/impl/src/java/pt/estgp/estgweb/services/common/impl/DefaultSearchResults.java
120,7 → 120,23
}
return query;
}
public String getQueryUtf() {
try
{
return URIUtil.encodePath(query,"UTF-8");
}
catch (URIException e)
{
e.printStackTrace();
}
return query;
}
public String getQueryNoEncode() {
 
return query;
 
}
 
public void setQuery(String query) {
this.query = query;
}
128,7 → 144,7
public String getSearchType() {
return searchType;
}
 
public void setSearchType(String searchType) {
this.searchType = searchType;
}
/impl/src/java/pt/estgp/estgweb/services/common/DefaultFacetLabel.java
20,11 → 20,11
this.label = label;
}
 
public int getOcurrences() {
public int getOccurrences() {
return ocurrences;
}
 
public void setOcurrences(int ocurrences) {
public void setOccurrences(int ocurrences) {
this.ocurrences = ocurrences;
}
}
/impl/src/java/pt/estgp/estgweb/services/common/IResult.java
21,6 → 21,11
public String getUrl();
public boolean isAbsoluteUrl();
public LabelGroup getSubTitlesGroup();
public String getDate();
public String getCreator();
public String getDirectory();
public String getSizeKb();
public String getMime();
 
/**
* Class to support groups of labels
/impl/src/java/pt/estgp/estgweb/services/common/IFacetLabel.java
8,5 → 8,5
*/
public interface IFacetLabel {
public String getLabel();
public int getOcurrences();
public int getOccurrences();
}
/impl/src/java/pt/estgp/estgweb/services/srusources/SruSourcesCommonServices.java
4,8 → 4,6
import pt.estgp.estgweb.services.common.*;
import pt.estgp.estgweb.services.common.impl.DefaultSearchResults;
import pt.estgp.estgweb.services.common.impl.DefaultResult;
import pt.estgp.estgweb.services.common.impl.DefaultToDo;
import pt.estgp.estgweb.services.courseunits.CourseUnitsCommonServices;
import pt.estgp.estgweb.domain.*;
import pt.estgp.estgweb.domain.views.SruSourceView;
import pt.estgp.estgweb.domain.views.SruSourceCollectionView;
13,7 → 11,6
import pt.estgp.estgweb.utils.RoleManager;
import pt.estgp.estgweb.utils.Dom4jUtil;
import org.apache.log4j.Logger;
import org.dom4j.DocumentException;
import org.dom4j.Document;
import org.dom4j.XPath;
import org.dom4j.Element;
24,8 → 21,6
import java.util.HashMap;
import java.net.URLEncoder;
import java.net.URL;
import java.net.MalformedURLException;
import java.io.UnsupportedEncodingException;
 
/*
* @author Goncalo Luiz gedl [AT] rnl [DOT] ist [DOT] utl [DOT] pt
116,9 → 111,9
collectionQuery.append(appender).append(collectionView.getCollection());
appender = " OR ";
}
String finalQuery = sruSourceView.getCollectionField() + ":(" + collectionQuery.toString() + ") AND (" + search + ")";
String finalQuery = sruSourceView.getCollectionField() + ":\"" + collectionQuery.toString() + "\" AND (" + search + ")";
logger.error("Sru server " + sruSourceView.getName() + " final query: " + finalQuery);
String sruRequest = sruSourceView.getUrl() + "?query=" + URLEncoder.encode(finalQuery,"UTF-8") + "&verb=getSRUResponseWithThisQuery&startRecord=" + ((page*maxResults)+1) + "&maximumRecords=" + maxResults;
String sruRequest = sruSourceView.getUrl() + "?query=" + URLEncoder.encode(finalQuery,"UTF-8") + "&verb=getSRUResponseWithThisQueryPhraseBoost&startRecord=" + ((page*maxResults)+1) + "&maximumRecords=" + maxResults;
URL url = new URL(sruRequest);
Document dom = Dom4jUtil.parse(url);
 
141,6 → 136,22
XPath xPathFileRelativePath = dom.createXPath("./files:fileRelativePath");
xPathFileRelativePath.setNamespaceURIs(namespaces);
Object fileRelativePath = xPathFileRelativePath.selectSingleNode(doc);
 
XPath xPathFileName = dom.createXPath("./files:fileName");
xPathFileName.setNamespaceURIs(namespaces);
Element fileName = (Element) xPathFileName.selectSingleNode(doc);
 
XPath xPathFileSize = dom.createXPath("./files:fileSizeKB");
xPathFileSize.setNamespaceURIs(namespaces);
Element fileSizeKB = (Element) xPathFileSize.selectSingleNode(doc);
 
XPath xPathFileType = dom.createXPath("./files:fileType");
xPathFileType.setNamespaceURIs(namespaces);
Element fileType = (Element) xPathFileType.selectSingleNode(doc);
 
XPath xPathFileDateLastModified = dom.createXPath("./files:fileDateLastModified");
xPathFileDateLastModified.setNamespaceURIs(namespaces);
Element fileDateLastModified = (Element) xPathFileDateLastModified.selectSingleNode(doc);
if(fileRelativePath != null )
{
XPath xPathFileUrl = dom.createXPath("./files:url");
151,7 → 162,11
 
DefaultResult defaultResult = new DefaultResult();
String relativePathStr = ((Element)fileRelativePath).getText();
defaultResult.setTitle(relativePathStr);
defaultResult.setTitle(fileName.getText());
defaultResult.setSizeKb(fileSizeKB.getTextTrim());
defaultResult.setDirectory(relativePathStr);
defaultResult.setDate(fileDateLastModified.getTextTrim());
defaultResult.setMime(fileType.getTextTrim());
// defaultResult.setSubTitle(courseUnit.getCourseName());
// defaultResult.setSubTitleKey(false);
// defaultResult.setText(courseUnit.getObjectives());
206,22 → 221,26
DefaultFacet defaultFacet = new DefaultFacet();
defaultFacet.setLabels(new ArrayList<IFacetLabel>());
defaultFacet.setIndex(facetElem.attribute("name").getValue());
XPath xPathFacetLabel = dom.createXPath("./files:facetLabel");
xPathFacetLabel.setNamespaceURIs(namespaces);
List<Element> facetLabelElems = xPathFacets.selectNodes(facetElem);
if(!defaultFacet.getIndex().equals("dir") && !defaultFacet.getIndex().equals("facetDir"))
{
XPath xPathFacetLabel = dom.createXPath("./files:facetLabel");
xPathFacetLabel.setNamespaceURIs(namespaces);
List<Element> facetLabelElems = xPathFacetLabel.selectNodes(facetElem);
 
for(Element facetLabelElem: facetLabelElems)
{
DefaultFacetLabel facetLabel = new DefaultFacetLabel();
facetLabel.setOcurrences(Integer.parseInt(facetLabelElem.attribute("ocurr").getValue()));
facetLabel.setLabel(facetLabelElem.getTextTrim());
defaultFacet.getLabels().add(facetLabel);
for(Element facetLabelElem: facetLabelElems)
{
DefaultFacetLabel facetLabel = new DefaultFacetLabel();
facetLabel.setOccurrences(Integer.parseInt(facetLabelElem.attribute("ocurr").getValue()));
facetLabel.setLabel(facetLabelElem.getTextTrim());
if(facetLabel.getOccurrences() > 0)
defaultFacet.getLabels().add(facetLabel);
}
if(defaultFacet.getLabels().size()>0)
facets.add(defaultFacet);
}
if(defaultFacet.getLabels().size()>0)
facets.add(defaultFacet);
}
if(facets.size() > 0)
searchResultsSource.setFacets(facets);
searchResultsSource.setFacets(facets);
}
catch (Throwable e)
{
/impl/src/web/css/style.css
441,6 → 441,19
color: black;
}
 
#searchResults li .fragments {
padding-left:30px;
padding-right:10px;
}
#searchResults li .smallGreen {
 
padding-left:10px;
color: green;
text-decoration: none;
FONT: 10px "bitstream vera sans", "Lucida Grande", "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif
 
}
 
#searchResults li a {
cursor: pointer;
}
464,8 → 477,14
margin-top: 10px;
cursor: pointer;
padding-bottom: 0;
FONT: 12px "bitstream vera sans", "Lucida Grande", "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif
}
 
#searchResults li .module .result h2 a, #searchResults #googleModule .result h2 {
 
FONT: 18px "bitstream vera sans", "Lucida Grande", "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif
}
 
#searchResults li .module .result p {
margin-top: 5px;
cursor: pointer;
1665,5 → 1684,25
.ects
{
background-color:#EBFCD6;
}
}
 
 
 
/*FACETS*/
.facets .title {
background-color: #8EC73F;
color: #FFFFFF;
font-size: 1.2em;
 
}
.facets
{
border-left: 1px solid #8ec73f;
border-bottom: 1px solid #8ec73f;
}
 
.facets table
{
width:100%;
}
 
/impl/src/web/layout/putIcon.jsp
New file
0,0 → 1,77
<%--
Created by IntelliJ IDEA.
User: Jorge
Date: 19/Nov/2009
Time: 11:22:24
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
String mime = (String) request.getAttribute("ICON_mime");
String label = (String) request.getAttribute("ICON_alt");
 
if(mime != null)
{
if (mime.toLowerCase().endsWith("doc") || mime.toLowerCase().endsWith("docx") || mime.endsWith("rtf"))
{
%>
<img alt="<%=mime%>" src="<%=request.getContextPath()%>/imgs/mime/doc.gif">
<%
}
else if (mime.toLowerCase().endsWith("pdf"))
{
%>
<img alt="<%=mime%>" src="<%=request.getContextPath()%>/imgs/mime/pdf.gif">
<%
}
else if (mime.toLowerCase().endsWith("ppt"))
{
%>
<img alt="<%=mime%>" src="<%=request.getContextPath()%>/imgs/mime/ppt.gif">
<%
}
else if (mime.toLowerCase().endsWith("zip") || mime.endsWith(".gz") || mime.endsWith("tgz"))
{
%>
<img alt="<%=mime%>" src="<%=request.getContextPath()%>/imgs/mime/zip.gif">
<%
}
else if (mime.toLowerCase().endsWith("rar"))
{
%>
<img alt="<%=label%>" src="<%=request.getContextPath()%>/imgs/mime/rar.gif">
<%
}
else if (mime.toLowerCase().endsWith("html") || mime.endsWith("htm"))
{
%>
<img alt="<%=label%>" src="<%=request.getContextPath()%>/imgs/mime/html.gif">
<%
}
else if (mime.toLowerCase().endsWith("xls") || mime.endsWith("xlsx"))
{
%>
<img alt="<%=label%>" src="<%=request.getContextPath()%>/imgs/mime/xls.gif">
<%
}
else if (mime.toLowerCase().endsWith("txt"))
{
%>
<img alt="<%=label%>" src="<%=request.getContextPath()%>/imgs/mime/txt.gif">
<%
}
else if (mime.toLowerCase().endsWith("xml"))
{
%>
<img alt="<%=label%>" src="<%=request.getContextPath()%>/imgs/mime/xml.gif">
<%
}
else
{
%>
<img alt="<%=label%>" src="<%=request.getContextPath()%>/imgs/mime/unknown.gif">
<%
}
}
 
%>
/impl/src/web/public/search/searchResults.jsp
12,7 → 12,7
<baco:isModuleOff module="searchGoogle">
<script language="Javascript" type="text/javascript">
var moduleResults = <%=ICommonSearchResults.getTotalResults()%>;
var query = '<%=ICommonSearchResults.getQuery()%>';
var query = '<%=ICommonSearchResults.getQuery()%>';
var searchType = '<%=ICommonSearchResults.getSearchType()%>';
if (moduleResults == 0 )
{
148,7 → 148,7
<logic:notEmpty name="searchResults" property="description">
<bean:write name="searchResults" property="description"/>
</logic:notEmpty>
<b>(${searchResults.totalResults})</b>
<b id="${searchResults.module.messageKey}_total">(${searchResults.totalResults})</b>
<a id="${searchResults.module.messageKey}SeeMore"
href="javascript:showOrHideOne('${searchResults.module.messageKey}_${searchResults.moduleInternalKey}')">
<bean:message key="search.see.more"/>
163,83 → 163,190
visibility = Globals.HIDDEN;
%>
<div class="module" id="${searchResults.module.messageKey}_${searchResults.moduleInternalKey}" style="<%=visibility%>">
<div id="${searchResults.module.messageKey}Results">
<logic:iterate id="result" name="searchResults" property="results"
type="pt.estgp.estgweb.services.common.IResult">
<div class="result">
<h2>
<logic:notEmpty name="result" property="url">
<%
if(result.isAbsoluteUrl())
{
%>
<a href="${result.url}">${result.title}</a>
<%
}
else
{
%>
<a href="<%=request.getContextPath()%>${result.url}">${result.title}</a>
<%
}
%>
</logic:notEmpty>
<logic:empty name="result" property="url">
${result.title}
</logic:empty>
<logic:notEmpty name="result" property="subTitle">
(
<logic:equal value="true" name="result" property="subTitleKey">
<bean:message key="${result.subTitle}"/>
<div align="right" id="turnOffFilters${searchResults.module.messageKey}_${searchResults.moduleInternalKey}" style="<%=Globals.HIDDEN%>;" >
<a onclick="hideOne('turnOffFilters${searchResults.module.messageKey}_${searchResults.moduleInternalKey}');return true;" href="javascript:searchCall('${searchResults.module.messageKey}_${searchResults.moduleInternalKey}Results','${searchResults.query}','${searchResults.searchType}','0','${searchResults.module.messageKey}','${searchResults.moduleInternalKey}','<%=request.getContextPath()%>/search.do')">
<bean:message key="result.turn.off.filters"/>
</a>
</div>
<br/>
<div id="${searchResults.module.messageKey}_${searchResults.moduleInternalKey}Results">
<table cellpadding="0" cellspacing="0" width="100%" style="padding:10px">
<tr>
<td valign="top">
<!--RESULTS-->
<%
int from = searchResults.getPage()*searchResults.getMaxResultsPage() + 1;
 
int to = (searchResults.getPage()+1)*searchResults.getMaxResultsPage();
if(to > searchResults.getTotalResults())
to = searchResults.getTotalResults();
%>
<p><bean:message key="search.pages.found.results"/> <%=from%> <bean:message key="search.pages.to"/> <%=to%> <bean:message key="search.pages.for.about"/> ${searchResults.totalResults}</p>
<logic:iterate id="result" name="searchResults" property="results"
type="pt.estgp.estgweb.services.common.IResult">
<div class="result">
<h2>
<logic:notEmpty name="result" property="mime">
<%
request.setAttribute("ICON_mime",result.getMime());
request.setAttribute("ICON_alt",result.getMime());
%>
<jsp:include page="/layout/putIcon.jsp"/>
</logic:notEmpty>
 
<logic:notEmpty name="result" property="url">
<%
if(result.isAbsoluteUrl())
{
%>
<a href="${result.url}">${result.title}</a>
<%
}
else
{
%>
<a href="<%=request.getContextPath()%>${result.url}">${result.title}</a>
<%
}
%>
</logic:notEmpty>
<logic:empty name="result" property="url">
${result.title}
</logic:empty>
<logic:notEmpty name="result" property="sizeKb">
[${result.sizeKb} KB]
</logic:notEmpty>
<logic:notEmpty name="result" property="subTitle">
(
<logic:equal value="true" name="result" property="subTitleKey">
<bean:message key="${result.subTitle}"/>
</logic:equal>
<logic:notEqual value="true" name="result" property="subTitleKey">
${result.subTitle}
</logic:notEqual>
)
</logic:notEmpty>
<logic:notEmpty name="result" property="subTitlesGroup">
(
<%
String subTitleSeparator = "";
%>
<logic:iterate id="subTitleLabel" name="result" property="subTitlesGroup.labels">
<%=subTitleSeparator%>
<logic:equal value="true" name="subTitleLabel" property="key">
<bean:message key="${subTitleLabel.label}"/>
</logic:equal>
<logic:notEqual value="true" name="subTitleLabel" property="key">
${subTitleLabel.label}
</logic:notEqual>
 
<%
subTitleSeparator = ", ";
%>
</logic:iterate>
)
</logic:notEmpty>
</h2>
<logic:notEmpty name="result" property="date">
<p><b><bean:message key="last.modification.date"/>:</b> ${result.date}</p>
</logic:notEmpty>
<p class="fragments">${result.bestFragments}</p>
<logic:notEmpty name="result" property="directory">
<p class="smallGreen">${result.directory}</p>
<p> <bean:message key="srusource.filter.dirs"/> :
<%
String directory = result.getDirectory();
String[] paths = directory.split("[\\\\]");
String finalPath = "";
for(int i = 0; i < paths.length -1;i++)
{
String path = paths[i];
if(path.trim().length() > 0)
{
finalPath += "/" + path;
%>
\
<a href="javascript:searchCall('${searchResults.module.messageKey}_${searchResults.moduleInternalKey}Results','(${searchResults.queryNoEncode}) AND dir:&quot;<%=finalPath%>&quot;','${searchResults.searchType}','0','${searchResults.module.messageKey}','${searchResults.moduleInternalKey}','<%=request.getContextPath()%>/search.do')" onclick="showOne('turnOffFilters${searchResults.module.messageKey}_${searchResults.moduleInternalKey}');return true;">
<%=path%>
</a>
<%
}
}
%>
</p>
</logic:notEmpty>
 
 
 
</div>
</logic:iterate>
<p class="pages">
<bean:message key="search.pages"/>
<logic:equal value="true" name="searchResults" property="hasPreviousPage">
<a href="javascript:searchCall('${searchResults.module.messageKey}_${searchResults.moduleInternalKey}Results','${searchResults.query}','${searchResults.searchType}','${searchResults.previousPage}','${searchResults.module.messageKey}','${searchResults.moduleInternalKey}','<%=request.getContextPath()%>/search.do')">
&lt;
<bean:message key="result.previous"/>
</a>
</logic:equal>
<logic:notEqual value="true" name="result" property="subTitleKey">
${result.subTitle}
</logic:notEqual>
)
</logic:notEmpty>
<logic:notEmpty name="result" property="subTitlesGroup">
(
<%
String subTitleSeparator = "";
%>
<logic:iterate id="subTitleLabel" name="result" property="subTitlesGroup.labels">
<%=subTitleSeparator%>
<logic:equal value="true" name="subTitleLabel" property="key">
<bean:message key="${subTitleLabel.label}"/>
</logic:equal>
<logic:notEqual value="true" name="subTitleLabel" property="key">
${subTitleLabel.label}
</logic:notEqual>
${searchResults.page2Screen}
<logic:equal value="true" name="searchResults" property="hasNextPage">
<a href="javascript:searchCall('${searchResults.module.messageKey}_${searchResults.moduleInternalKey}Results','${searchResults.query}','${searchResults.searchType}','${searchResults.nextPage}','${searchResults.module.messageKey}','${searchResults.moduleInternalKey}','<%=request.getContextPath()%>/search.do')">
<bean:message key="result.next"/>
&gt;</a>
</logic:equal>
</p>
 
<%
subTitleSeparator = ", ";
%>
</logic:iterate>
)
</logic:notEmpty>
</h2>
 
<p>${result.bestFragments} ...</p>
</div>
</logic:iterate>
<p class="pages">
<bean:message key="search.pages"/>
<logic:equal value="true" name="searchResults" property="hasPreviousPage">
<a href="javascript:searchCall('${searchResults.module.messageKey}Results','${searchResults.query}','${searchResults.searchType}','${searchResults.previousPage}','${searchResults.module.messageKey}','${searchResults.moduleInternalKey}','<%=request.getContextPath()%>/search.do')">
&lt;
<bean:message key="result.previous"/>
</a>
</logic:equal>
${searchResults.page2Screen}
<logic:equal value="true" name="searchResults" property="hasNextPage">
<a href="javascript:searchCall('${searchResults.module.messageKey}Results','${searchResults.query}','${searchResults.searchType}','${searchResults.nextPage}','${searchResults.module.messageKey}','${searchResults.moduleInternalKey}','<%=request.getContextPath()%>/search.do')">
<bean:message key="result.next"/>
&gt;</a>
</logic:equal>
</p>
</div>
</td>
<td valign="top">
<!--FACETS-->
<logic:notEmpty name="searchResults" property="facets">
<div class="facets">
<div class="title" style="white-space:nowrap;"><bean:message key="facets"/></div>
<table class="dataTable">
<logic:iterate id="facet" name="searchResults" property="facets" type="pt.estgp.estgweb.services.common.IFacet">
<tr>
<th colspan="2">
<bean:message key="facet.${facet.index}"/>
</th>
</tr>
<logic:iterate id="label" name="facet" property="labels" type="pt.estgp.estgweb.services.common.IFacetLabel">
<tr>
<td>
<%
if(facet.getIndex().equals("type") || facet.getIndex().equals("facetType"))
{
request.setAttribute("ICON_mime",label.getLabel());
request.setAttribute("ICON_alt",label.getLabel());
%>
<jsp:include page="/layout/putIcon.jsp"/> ${label.label}
<%
}
else
{
%>
${label.label}
<%
}
%>
</td>
<td align="right">
<a href="javascript:searchCall('${searchResults.module.messageKey}_${searchResults.moduleInternalKey}Results','(${searchResults.query}) AND ${facet.index}:&quot;${label.label}&quot;','${searchResults.searchType}','0','${searchResults.module.messageKey}','${searchResults.moduleInternalKey}','<%=request.getContextPath()%>/search.do')" onclick="showOne('turnOffFilters${searchResults.module.messageKey}_${searchResults.moduleInternalKey}');return true;">
${label.occurrences}
</a>
</td>
</tr>
</logic:iterate>
</logic:iterate>
</table>
</div>
</logic:notEmpty>
</td>
</tr>
</table>
</div>
<h3>
<a href="javascript:hide('${searchResults.module.messageKey}','${searchResults.module.messageKey}SeeMore')">Fechar</a>
<a href="javascript:hide('${searchResults.module.messageKey}_${searchResults.moduleInternalKey}','${searchResults.module.messageKey}SeeMore')">Fechar</a>
</h3>
</div>
</li>
/impl/src/web/public/search/searchResultsModule.jsp
1,57 → 1,152
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="pt.estgp.estgweb.services.common.*" %>
<%@ page import="pt.estgp.estgweb.web.Globals" %>
<%@ 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" %>
<jsp:useBean id="ISearchResults" type="pt.estgp.estgweb.services.common.ISearchResults" scope="request"/>
<logic:iterate id="result" name="ISearchResults" property="results"
type="pt.estgp.estgweb.services.common.IResult">
<div class="result">
<table cellpadding="0" cellspacing="0" width="100%" style="padding:10px">
<tr>
<td valign="top">
<!--RESULTS-->
<%
int from = (ISearchResults.getPage()*ISearchResults.getMaxResultsPage()) + 1;
int to = (ISearchResults.getPage()+1)*ISearchResults.getMaxResultsPage();
if(to > ISearchResults.getTotalResults())
to = ISearchResults.getTotalResults();
%>
<p><bean:message key="search.pages.found.results"/> <%=from%> <bean:message key="search.pages.to"/> <%=to%> <bean:message key="search.pages.for.about"/> ${ISearchResults.totalResults}</p>
<logic:iterate id="result" name="ISearchResults" property="results"
type="pt.estgp.estgweb.services.common.IResult">
<div class="result">
 
<h2>
<logic:notEmpty name="result" property="url">
<%
if(result.isAbsoluteUrl())
{
%>
<a href="${result.url}">${result.title}</a>
<%
}
else
{
%>
<a href="<%=request.getContextPath()%>${result.url}">${result.title}</a>
<%
}
%>
<h2>
<logic:notEmpty name="result" property="mime">
<%
request.setAttribute("ICON_mime",result.getMime());
request.setAttribute("ICON_alt",result.getMime());
%>
<jsp:include page="/layout/putIcon.jsp"/>
</logic:notEmpty>
<logic:notEmpty name="result" property="url">
<%
if(result.isAbsoluteUrl())
{
%>
<a href="${result.url}">${result.title}</a>
<%
}
else
{
%>
<a href="<%=request.getContextPath()%>${result.url}">${result.title}</a>
<%
}
%>
</logic:notEmpty>
<logic:empty name="result" property="url">
${result.title}
</logic:empty>
<logic:notEmpty name="result" property="sizeKb">
[${result.sizeKb} KB]
</logic:notEmpty>
<logic:notEmpty name="result" property="subTitle">
(
<logic:equal value="true" name="result" property="subTitleKey">
<bean:message key="${result.subTitle}"/>
</logic:equal>
<logic:notEqual value="true" name="result" property="subTitleKey">
${result.subTitle}
</logic:notEqual>
)
</logic:notEmpty>
</h2>
<logic:notEmpty name="result" property="date">
<p><b><bean:message key="last.modification.date"/>:</b> ${result.date}</p>
</logic:notEmpty>
<p class="fragments">${result.bestFragments}</p>
<logic:notEmpty name="result" property="directory">
<p class="smallGreen">${result.directory}</p>
<p> <bean:message key="srusource.filter.dirs"/> :
<%
String directory = result.getDirectory();
String[] paths = directory.split("[\\\\]");
String finalPath = "";
for(int i = 0; i < paths.length -1;i++)
{
String path = paths[i];
if(path.trim().length() > 0)
{
finalPath += "/" + path;
%>
\
<a href="javascript:searchCall('${ISearchResults.module.messageKey}_${ISearchResults.moduleInternalKey}Results','(${ISearchResults.queryNoEncode}) AND dir:&quot;<%=finalPath%>&quot;','${ISearchResults.searchType}','0','${ISearchResults.module.messageKey}','${ISearchResults.moduleInternalKey}','<%=request.getContextPath()%>/search.do')" onclick="showOne('turnOffFilters${ISearchResults.module.messageKey}_${ISearchResults.moduleInternalKey}');return true;">
<%=path%>
</a>
<%
}
}
%>
</p>
</logic:notEmpty>
</div>
</logic:iterate>
Pages:
<logic:equal value="true" name="ISearchResults" property="hasPreviousPage">
<a href="javascript:searchCall('${ISearchResults.module.messageKey}_${ISearchResults.moduleInternalKey}Results','${ISearchResults.query}','${ISearchResults.searchType}','${ISearchResults.previousPage}','${ISearchResults.module.messageKey}','${ISearchResults.moduleInternalKey}','<%=request.getContextPath()%>/search.do')">&lt; previous</a>
</logic:equal>
${ISearchResults.page2Screen}
<logic:equal value="true" name="ISearchResults" property="hasNextPage">
<a href="javascript:searchCall('${ISearchResults.module.messageKey}_${ISearchResults.moduleInternalKey}Results','${ISearchResults.query}','${ISearchResults.searchType}','${ISearchResults.nextPage}','${ISearchResults.module.messageKey}','${ISearchResults.moduleInternalKey}','<%=request.getContextPath()%>/search.do')">next &gt;</a>
</logic:equal>
</td>
<td valign="top">
<!--FACETS-->
<logic:notEmpty name="ISearchResults" property="facets">
<div class="facets">
<div class="title" style="white-space:nowrap;"><bean:message key="facets"/></div>
<table class="dataTable">
<logic:iterate id="facet" name="ISearchResults" property="facets" type="pt.estgp.estgweb.services.common.IFacet">
<tr>
<th colspan="2">
<bean:message key="facet.${facet.index}"/>
</th>
</tr>
<logic:iterate id="label" name="facet" property="labels" type="pt.estgp.estgweb.services.common.IFacetLabel">
<tr>
<td>
<%
if(facet.getIndex().equals("type") || facet.getIndex().equals("facetType"))
{
request.setAttribute("ICON_mime",label.getLabel());
request.setAttribute("ICON_alt",label.getLabel());
%>
<jsp:include page="/layout/putIcon.jsp"/>
<%
}
else
{
%>
${label.label}
<%
}
%>
</td>
<td align="right">
<a href="javascript:searchCall('${ISearchResults.module.messageKey}_${ISearchResults.moduleInternalKey}Results','(${ISearchResults.query}) AND ${facet.index}:&quot;${label.label}&quot;','${ISearchResults.searchType}','0','${ISearchResults.module.messageKey}','${ISearchResults.moduleInternalKey}','<%=request.getContextPath()%>/search.do')" onclick="showOne('turnOffFilters${ISearchResults.module.messageKey}_${ISearchResults.moduleInternalKey}');return true;">
${label.occurrences}
</a>
</td>
</tr>
</logic:iterate>
</logic:iterate>
</table>
</div>
</logic:notEmpty>
<logic:empty name="result" property="url">
${result.title}
</logic:empty>
<logic:notEmpty name="result" property="subTitle">
(
<logic:equal value="true" name="result" property="subTitleKey">
<bean:message key="${result.subTitle}"/>
</logic:equal>
<logic:notEqual value="true" name="result" property="subTitleKey">
${result.subTitle}
</logic:notEqual>
)
</logic:notEmpty>
</h2>
</td>
</tr>
</table>
 
<p>${result.bestFragments} ...</p>
</div>
</logic:iterate>
Pages:
<logic:equal value="true" name="ISearchResults" property="hasPreviousPage">
<a href="javascript:searchCall('${ISearchResults.module.messageKey}Results','${ISearchResults.query}','${ISearchResults.searchType}','${ISearchResults.previousPage}','${ISearchResults.module.messageKey}','${ISearchResults.moduleInternalKey}','<%=request.getContextPath()%>/search.do')">&lt; previous</a>
</logic:equal>
${ISearchResults.page2Screen}
<logic:equal value="true" name="ISearchResults" property="hasNextPage">
<a href="javascript:searchCall('${ISearchResults.module.messageKey}Results','${ISearchResults.query}','${ISearchResults.searchType}','${ISearchResults.nextPage}','${ISearchResults.module.messageKey}','${ISearchResults.moduleInternalKey}','<%=request.getContextPath()%>/search.do')">next &gt;</a>
</logic:equal>