/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:"<%=finalPath%>"','${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')"> |
< |
<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"/> |
></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')"> |
< |
<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"/> |
></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}:"${label.label}"','${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:"<%=finalPath%>"','${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')">< 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 ></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}:"${label.label}"','${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')">< 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 ></a> |
</logic:equal> |