mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-07 01:54:22 +00:00
DS-2637 Possibility for users to configure the discovery browse page on the fly
Modifications to the following files: -searchFacetFilter.java -browse.js -attribute-handles.xsl -browse.xsl ,enable the user to change the pagination through the gear icon, as was already the case for other browse pages The was an improvement based on the following Jira ticket https://jira.duraspace.org/browse/DS-2637
This commit is contained in:
@@ -17,7 +17,8 @@
|
||||
$this = $(this);
|
||||
browse_controls = $('#aspect_artifactbrowser_ConfigurableBrowse_div_browse-controls, ' +
|
||||
'#aspect_administrative_WithdrawnItems_div_browse-controls, ' +
|
||||
'#aspect_administrative_PrivateItems_div_browse-controls');
|
||||
'#aspect_administrative_PrivateItems_div_browse-controls, '+
|
||||
'#aspect_discovery_SearchFacetFilter_div_browse-controls');
|
||||
$('*[name="' +$this.data('name') + '"]', browse_controls).val($this.data('returnvalue'));
|
||||
$('.btn', browse_controls).click();
|
||||
$this.closest('.open').removeClass('open');
|
||||
|
@@ -112,7 +112,8 @@
|
||||
<xsl:variable name="gear"
|
||||
select="//dri:div[@id='aspect.artifactbrowser.ConfigurableBrowse.div.browse-controls'
|
||||
or @id='aspect.administrative.WithdrawnItems.div.browse-controls'
|
||||
or @id='aspect.administrative.PrivateItems.div.browse-controls']"/>
|
||||
or @id='aspect.administrative.PrivateItems.div.browse-controls'
|
||||
or @id='aspect.discovery.SearchFacetFilter.div.browse-controls']"/>
|
||||
<xsl:choose>
|
||||
<xsl:when test="$position = 'top' and $gear">
|
||||
<div class="row">
|
||||
@@ -412,7 +413,8 @@
|
||||
<xsl:for-each
|
||||
select="//dri:div[@id='aspect.artifactbrowser.ConfigurableBrowse.div.browse-controls'
|
||||
or @id='aspect.administrative.WithdrawnItems.div.browse-controls'
|
||||
or @id='aspect.administrative.PrivateItems.div.browse-controls']//dri:field[@type='select']">
|
||||
or @id='aspect.administrative.PrivateItems.div.browse-controls'
|
||||
or @id='aspect.discovery.SearchFacetFilter.div.browse-controls']//dri:field[@type='select']">
|
||||
<xsl:if test="position() > 1">
|
||||
<li class="divider"/>
|
||||
</xsl:if>
|
||||
|
@@ -104,7 +104,8 @@
|
||||
|
||||
<xsl:template match="dri:div[@id = 'aspect.artifactbrowser.ConfigurableBrowse.div.browse-controls'
|
||||
or @id='aspect.administrative.WithdrawnItems.div.browse-controls'
|
||||
or @id='aspect.administrative.PrivateItems.div.browse-controls']">
|
||||
or @id='aspect.administrative.PrivateItems.div.browse-controls'
|
||||
or @id='aspect.discovery.SearchFacetFilter.div.browse-controls']">
|
||||
<div>
|
||||
<xsl:call-template name="copy-attributes"/>
|
||||
<xsl:attribute name="rend">
|
||||
|
@@ -77,6 +77,8 @@ public class SearchFacetFilter extends AbstractDSpaceTransformer implements Cach
|
||||
|
||||
private SearchService searchService = null;
|
||||
private static final Message T_go = message("xmlui.general.go");
|
||||
private static final Message T_rpp = message("xmlui.Discovery.AbstractSearch.rpp");
|
||||
private static final int[] RESULTS_PER_PAGE_PROGRESSION = {5, 10, 20, 40, 60, 80, 100};
|
||||
|
||||
public SearchFacetFilter() {
|
||||
|
||||
@@ -220,9 +222,9 @@ public class SearchFacetFilter extends AbstractDSpaceTransformer implements Cach
|
||||
DiscoverFacetField discoverFacetField;
|
||||
if(request.getParameter(SearchFilterParam.STARTS_WITH) != null)
|
||||
{
|
||||
discoverFacetField = new DiscoverFacetField(facetField, DiscoveryConfigurationParameters.TYPE_TEXT, DEFAULT_PAGE_SIZE + 1, DiscoveryConfigurationParameters.SORT.VALUE, request.getParameter(SearchFilterParam.STARTS_WITH).toLowerCase());
|
||||
discoverFacetField = new DiscoverFacetField(facetField, DiscoveryConfigurationParameters.TYPE_TEXT, getPageSize() + 1, DiscoveryConfigurationParameters.SORT.VALUE, request.getParameter(SearchFilterParam.STARTS_WITH).toLowerCase());
|
||||
}else{
|
||||
discoverFacetField = new DiscoverFacetField(facetField, DiscoveryConfigurationParameters.TYPE_TEXT, DEFAULT_PAGE_SIZE + 1, DiscoveryConfigurationParameters.SORT.VALUE);
|
||||
discoverFacetField = new DiscoverFacetField(facetField, DiscoveryConfigurationParameters.TYPE_TEXT, getPageSize() + 1, DiscoveryConfigurationParameters.SORT.VALUE);
|
||||
}
|
||||
|
||||
|
||||
@@ -269,6 +271,7 @@ public class SearchFacetFilter extends AbstractDSpaceTransformer implements Cach
|
||||
Division div = body.addDivision("browse-by-" + request.getParameter(SearchFilterParam.FACET_FIELD), "primary");
|
||||
|
||||
addBrowseJumpNavigation(div, browseParams, request);
|
||||
addBrowseControls(div, browseParams);
|
||||
|
||||
// Set up the major variables
|
||||
//Collection collection = (Collection) dso;
|
||||
@@ -307,20 +310,20 @@ public class SearchFacetFilter extends AbstractDSpaceTransformer implements Cach
|
||||
|
||||
//Only show the nextpageurl if we have at least one result following our current results
|
||||
String nextPageUrl = null;
|
||||
if (values.size() == (DEFAULT_PAGE_SIZE + 1))
|
||||
if (values.size() == (getPageSize() + 1))
|
||||
{
|
||||
nextPageUrl = getNextPageURL(browseParams, request);
|
||||
}
|
||||
|
||||
|
||||
|
||||
int shownItemsMax = offSet + (DEFAULT_PAGE_SIZE < values.size() ? values.size() - 1 : values.size());
|
||||
int shownItemsMax = offSet + (getPageSize() < values.size() ? values.size() - 1 : values.size());
|
||||
|
||||
|
||||
|
||||
// We put our total results to -1 so this doesn't get shown in the results (will be hidden by the xsl)
|
||||
// The reason why we do this is because solr 1.4 can't retrieve the total number of facets found
|
||||
results.setSimplePagination(-1, offSet + 1,
|
||||
results.setSimplePagination((int) queryResults.getTotalSearchResults(), offSet + 1,
|
||||
shownItemsMax, getPreviousPageURL(browseParams, request), nextPageUrl);
|
||||
|
||||
Table singleTable = results.addTable("browse-by-" + facetField + "-results", (int) (queryResults.getDspaceObjects().size() + 1), 1);
|
||||
@@ -329,9 +332,9 @@ public class SearchFacetFilter extends AbstractDSpaceTransformer implements Cach
|
||||
|
||||
|
||||
int end = values.size();
|
||||
if(DEFAULT_PAGE_SIZE < end)
|
||||
if(getPageSize() < end)
|
||||
{
|
||||
end = DEFAULT_PAGE_SIZE;
|
||||
end = getPageSize();
|
||||
}
|
||||
for (int i = 0; i < end; i++) {
|
||||
DiscoverResult.FacetResult value = values.get(i);
|
||||
@@ -441,7 +444,7 @@ public class SearchFacetFilter extends AbstractDSpaceTransformer implements Cach
|
||||
Map<String, String> parameters = new HashMap<String, String>();
|
||||
parameters.putAll(browseParams.getCommonBrowseParams());
|
||||
parameters.putAll(browseParams.getControlParameters());
|
||||
parameters.put(SearchFilterParam.OFFSET, String.valueOf(offSet + DEFAULT_PAGE_SIZE));
|
||||
parameters.put(SearchFilterParam.OFFSET, String.valueOf(offSet + getPageSize()));
|
||||
|
||||
// Add the filter queries
|
||||
String url = generateURL("search-filter", parameters);
|
||||
@@ -466,7 +469,7 @@ public class SearchFacetFilter extends AbstractDSpaceTransformer implements Cach
|
||||
Map<String, String> parameters = new HashMap<String, String>();
|
||||
parameters.putAll(browseParams.getCommonBrowseParams());
|
||||
parameters.putAll(browseParams.getControlParameters());
|
||||
parameters.put(SearchFilterParam.OFFSET, String.valueOf(offset - DEFAULT_PAGE_SIZE));
|
||||
parameters.put(SearchFilterParam.OFFSET, String.valueOf(offset - getPageSize()));
|
||||
|
||||
// Add the filter queries
|
||||
String url = generateURL("search-filter", parameters);
|
||||
@@ -574,5 +577,54 @@ public class SearchFacetFilter extends AbstractDSpaceTransformer implements Cach
|
||||
|
||||
return dso;
|
||||
}
|
||||
protected int getPageSize() {
|
||||
try {
|
||||
int rpp =Integer.parseInt(ObjectModelHelper.getRequest(objectModel).getParameter("rpp"));
|
||||
DEFAULT_PAGE_SIZE=rpp;
|
||||
return rpp;
|
||||
}
|
||||
catch (Exception e) {
|
||||
return DEFAULT_PAGE_SIZE;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the controls to changing sorting and display options.
|
||||
*
|
||||
* @param div
|
||||
* @param params
|
||||
* @throws WingException
|
||||
*/
|
||||
private void addBrowseControls(Division div, SearchFilterParam params)
|
||||
throws WingException
|
||||
{
|
||||
// Prepare a Map of query parameters required for all links
|
||||
Map<String, String> queryParams = new HashMap<String, String>();
|
||||
|
||||
queryParams.putAll(params.getCommonBrowseParams());
|
||||
Request request = ObjectModelHelper.getRequest(objectModel);
|
||||
queryParams.put("order",request.getParameter("order"));
|
||||
String facetField = request.getParameter(SearchFilterParam.FACET_FIELD);
|
||||
Division controls = div.addInteractiveDivision("browse-controls", "search-filter?field="+facetField,
|
||||
Division.METHOD_POST, "browse controls");
|
||||
|
||||
// Add all the query parameters as hidden fields on the form
|
||||
for (Map.Entry<String, String> param : queryParams.entrySet())
|
||||
{
|
||||
controls.addHidden(param.getKey()).setValue(param.getValue());
|
||||
}
|
||||
|
||||
Para controlsForm = controls.addPara();
|
||||
// Create a control for the number of records to display
|
||||
controlsForm.addContent(T_rpp);
|
||||
|
||||
Select rppSelect = controlsForm.addSelect("rpp");
|
||||
|
||||
for (int i : RESULTS_PER_PAGE_PROGRESSION)
|
||||
{
|
||||
rppSelect.addOption((i == getPageSize()), i, Integer.toString(i));
|
||||
}
|
||||
controlsForm.addButton("update").setValue("update");
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user