LP#1549505: Add ability to set default sorter via global flag
authorMike Rylander <mrylander@gmail.com>
Thu, 4 Feb 2016 22:19:03 +0000 (17:19 -0500)
committerGalen Charlton <gmc@esilibrary.com>
Wed, 24 Feb 2016 22:40:01 +0000 (17:40 -0500)
Signed-off-by: Mike Rylander <mrylander@gmail.com>
Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader.pm
Open-ILS/src/sql/Pg/950.data.seed-values.sql
Open-ILS/src/sql/Pg/upgrade/XXXX.schema.statisitcal-ratings.sql
Open-ILS/src/templates/opac/parts/advanced/search.tt2
Open-ILS/src/templates/opac/parts/filtersort.tt2
Open-ILS/src/templates/opac/parts/searchbar.tt2

index 66f73d1..473b613 100644 (file)
@@ -256,6 +256,11 @@ sub load_common {
         return $self->redirect_ssl unless $self->cgi->https;
     }
 
+    # XXX Cache this? Makes testing difficult as apache needs a restart.
+    my $default_sort = $e->retrieve_config_global_flag('opac.default_sort');
+    $ctx->{default_sort} =
+        ($default_sort && $U->is_true($default_sort->enabled)) ? $default_sort->value : '';
+
     $ctx->{referer} = $self->cgi->referer;
     $ctx->{path_info} = $self->cgi->path_info;
     $ctx->{full_path} = $ctx->{base_path} . $self->cgi->path_info;
index 5b8fcce..e7a2bfb 100644 (file)
@@ -10279,6 +10279,20 @@ INSERT INTO config.global_flag (name, label, value, enabled) VALUES (
     TRUE
 );
 
+/* To be added when upgrade scripts are pulled into the baseline
+INSERT INTO config.global_flag (name, label, value, enabled) VALUES (
+    'opac.default_sort',
+    oils_i18n_gettext(
+        'opac.default_sort',
+        'OPAC Default Sort (titlesort, authorsort, pubdate, popularity, poprel, or empty)',
+        'cgf',
+        'label'
+    ),
+    '',
+    TRUE
+);
+*/
+
 INSERT INTO config.usr_setting_type (name,opac_visible,label,description,datatype)
     VALUES (
         'history.circ.retention_age',
index e35c75b..9d668c4 100644 (file)
@@ -3,6 +3,13 @@ BEGIN;
 
 CREATE SCHEMA rating;
 
+INSERT INTO config.global_flag (name, label, value, enabled) VALUES (
+    'opac.default_sort',
+    'OPAC Default Sort (titlesort, authorsort, pubdate, popularity, poprel, or empty for relevance)',
+    '',
+    TRUE
+);
+
 CREATE TABLE rating.popularity_parameter (
     id          INT     PRIMARY KEY,
     name        TEXT    NOT NULL UNIQUE, -- i18n
index e35095b..b745b32 100644 (file)
                             </div>
 [%
                 CASE "sort_selector";
+                    default_sort=ctx.default_sort;
+                    IF CGI.param('sort');
+                        default_sort=CGI.param('sort');
+                    END;
                     INCLUDE "opac/parts/filtersort.tt2"
                         id=adv_chunk.id
-                        value=CGI.param('sort') class='results_header_sel';
+                        value=default_sort class='results_header_sel';
                     %]
 
                     [% IF NOT metarecords.disabled %]
index 1907058..5bc8ed0 100644 (file)
@@ -14,4 +14,9 @@
         <option value='pubdate.descending'[% value == 'pubdate.descending' ? ' selected="selected"' : '' %]>[% l("Date: Newest to Oldest") %]</option>
         <option value='pubdate'[% value == 'pubdate' ? ' selected="selected"' : '' %]>[% l("Date: Oldest to Newest") %]</option>
     </optgroup>
+    <optgroup label='[% l("Sort by Popularity") %]'>
+        <option value='popularity'[% value == 'popularity' ? ' selected="selected"' : '' %]>[% l("Most Popular") %]</option>
+        <option value='popularity.descending'[% value == 'popularity.descending' ? ' selected="selected"' : '' %]>[% l("Least Popular") %]</option>
+        <option value='poprel'[% value == 'poprel' ? ' selected="selected"' : '' %]>[% l("Popularity Adjusted Relevance") %]</option>
+    </optgroup>
 </select>
index ac13ce0..64cae0d 100644 (file)
         [% END %]
     </div>
     [%- END %]
+    [% IF NOT CGI.param('sort') %]
+    <input type="hidden" name="sort" value="[% ctx.default_sort %]"/>
+    [% END %]
     [% UNLESS took_care_of_form %]</form>[% END %]
     [% IF (is_advanced AND NOT is_special) AND CGI.param('qtype') %]
     <div class="opac-auto-102">