LP 1437112 Added set preferred default library in web client. Preparing to switch...
authorVictoria Lewis <vlewis@catalystitservices.com>
Tue, 6 Oct 2015 20:06:46 +0000 (13:06 -0700)
committerVictoria Lewis <vlewis@catalystitservices.com>
Tue, 6 Oct 2015 20:06:46 +0000 (13:06 -0700)
Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader.pm
Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Util.pm
Open-ILS/src/templates/opac/parts/advanced/search.tt2
Open-ILS/src/templates/opac/parts/pref_lib_display.tt2
Open-ILS/src/templates/staff/admin/workstation/index.tt2
Open-ILS/src/templates/staff/admin/workstation/t_search_prefs.tt2
Open-ILS/src/templates/staff/t_splash.tt2
Open-ILS/web/js/ui/default/staff/admin/workstation/app.js
Open-ILS/web/js/ui/default/staff/cat/catalog/app.js

index b1527fb..d366e6a 100644 (file)
@@ -321,6 +321,7 @@ sub load_common {
     $self->load_search_filter_groups($ctx->{search_ou});
     $self->load_org_util_funcs;
     $self->load_perm_funcs;
+    $self->_get_pref_lib;
 
     return Apache2::Const::OK;
 }
index 69bb898..021071a 100644 (file)
@@ -9,6 +9,8 @@ use OpenILS::Utils::CStoreEditor qw/:funcs/;
 use OpenILS::Utils::Fieldmapper;
 use OpenILS::Application::AppUtils;
 use OpenSRF::MultiSession;
+use CGI qw/:standard/;
+use CGI::Cookie;
 
 my $U = 'OpenILS::Application::AppUtils';
 
@@ -559,9 +561,16 @@ sub _get_pref_lib {
     my $self = shift;
     my $ctx = $self->ctx;
 
+    if( $ctx->{is_staff}) {
     # plib param takes precedence
-    my $plib = $self->cgi->param('plib');
+    # my $plib = $self->cgi->param('plib');  #replaced url 'plib' with cookie 'pplib'
+    my $plib =  $self->cgi->cookie('pplib');
+    my $pref_clump = $plib;
+    my ($org, $grp) = split(/:/, $pref_clump);
+        $ctx->{pref_lib_org} = $self->_resolve_org_id_or_shortname($org);
+        $ctx->{pref_ou}  = $ctx->{pref_lib_org};
     return $plib if $plib;
+    }
 
     if ($self->apache->headers_in->get('OILS-Pref-Lib')) {
         return $self->apache->headers_in->get('OILS-Pref-Lib');
index e35095b..1bc79fc 100644 (file)
@@ -61,6 +61,9 @@
                 class='hidden'[% END %]>
                 <strong><label for="[% adv_chunk.id %]">
                   [% adv_chunk.adv_label %] </label></strong><br />
+
+        <meta http-equiv="Set-Cookie" content="pplib=[%CGI.param('plib')%];
+                        path=/">
 [%
         IF adv_chunk.adv_special;
             SWITCH adv_chunk.adv_special;
index 9fe7d9c..7c3aa61 100644 (file)
@@ -1,6 +1,6 @@
-[%- IF ctx.pref_ou && ctx.pref_ou != ctx.search_ou; %]
-<span class="preflib">[%
-    l('Preferred library: [_1]', '<span class="bold">' _ ctx.get_aou(ctx.pref_ou).name _ '</span>');
+[%- IF ctx.pref_ou && ctx.pref_ou != ctx.search_ou; ctx.pref_ou = CGI.cookie('pplib')%]
+<span class="preflib">    [%
+    l('Preferred library: [_1]','<span class="bold">' _ ctx.get_aou(ctx.pref_ou).name _ '</span>');
     IF NOT ctx.is_staff %]<a href="[% mkurl(ctx.opac_root _ '/myopac/prefs_settings')
     %]" class="preflib_change" title="[% l("Change preferred library"); %]">[% l('?') %]</a>[% END; %]
 </span>
index 0512483..46ed053 100644 (file)
@@ -15,6 +15,7 @@ angular.module('egCoreMod').run(['egStrings', function(s) {
     '[% l('Delete content for key "[_1]"?', '{{deleteKey}}') %]';
   s.DEFAULT_WS_LABEL = '[% l('[_1] (Default)', '{{ws}}') %]';
   s.DEFAULT_ORG_LABEL = '[% l( '[_1] {{org}}') %]';
+  s.DEFAULT_PREF_ORG_LABEL = '[% l( '[_1] {{org}}') %]';
   s.WS_EXISTS = '[% l("Workstation name already exists.  Use it anyway?") %]';
 }]);
 </script>
index cde8e68..5b1c12a 100644 (file)
@@ -41,8 +41,7 @@
                 </div><!-- /btn-group -->
               </div><!-- /input-group -->
             </div><!-- col -->
-            
-        <button class="btn btn-default" ng-click="setDefaultSearchLib()">
+        <button class="btn btn-default" ng-click="setDefaultLibs() ">
         [% l('Save') %]
         </button>
 
                                copies show up first in search results.</p>
               <div class="input-group">
                 <div class="input-group-btn" dropdown>
-                  <select class="btn btn-default dropdown-toggle">
-                    <option>[% l('Select Library') %]</option>
-                    <option ng-repeat="org in orgList">
-                        {{org.shortname}}
+                  <select class="btn btn-default dropdown-toggle" ng-model="selectedPrefOrg">
+                    <option ng-repeat="org in orgList" value="{{org}}"
+                    ng-selected="org.shortname == selectedPrefOrg">
+                        {{getPrefOrgLabel(org.shortname)}}
                     </option>
                                  </select>
                 </div><!-- /btn-group -->
@@ -78,7 +77,6 @@
                                                </div><!-- /btn-group -->
                                        </div><!-- /input-group -->
                                </div><!-- col -->
-                               
                        </div><!-- row -->
 </div><!-- container -->
 
index 970d098..d517105 100644 (file)
           <div class="panel-title text-center">[% l('Item Search and Cataloging') %]</div>
         </div>
         <div class="panel-body">
+        <div>
+           <form action="/eg/opac/results" method="get">
+           <input type="search" alt="Catalog Search" name="query"
+            placeholder="Search catalog for..."/>
+           <input id="none" type="submit" value="Search">
+           </form>
+        </div>
           <div>
             <img src="/xul/server/skin/media/images/portal/bucket.png"/>
             <a target="_self" href="./cat/bucket/record/">[% l('Record Buckets') %]</a>
index 3414251..5b38f19 100644 (file)
@@ -192,6 +192,22 @@ function($scope , $window , $location, egCore, egOrg, egConfirmDialog, egAuth) {
         }
     });
 
+    egCore.hatch.getItem('eg.pref.lib.default')
+    .then(function(def) {
+        if (def == undefined) {
+           egCore.hatch.setItem(
+            'eg.pref.lib.default', $scope.orgList[0]);
+            def =  $scope.orgList[0].shortname;
+        }
+        //This lets our dropdown auto-select our default preferred lib.
+        $scope.selectedPrefOrg = def;
+        angular.forEach($scope.orgList, function(val, key) {
+            if(JSON.stringify(def.shortname) == JSON.stringify(val.shortname)){
+            $scope.selectedPrefOrg = val.shortname;
+            }
+        });
+    });
+
     egCore.hatch.getItem('eg.search.lib.default')
     .then(function(def) {
         if (def == undefined) {
@@ -213,12 +229,28 @@ function($scope , $window , $location, egCore, egOrg, egConfirmDialog, egAuth) {
             egCore.strings.$replace(egCore.strings.DEFAULT_ORG_LABEL, {org:org}) :org;
     }
 
-    $scope.setDefaultSearchLib = function() {
+    $scope.getPrefOrgLabel = function(org) {
+        return org == $scope.defaultPrefLib?
+            egCore.strings.$replace(egCore.strings.DEFAULT_PREF_ORG_LABEL, {pref:org}) :org;
+    }
+
+    $scope.setDefaultLibs = function() {
+        setDefaultSearchLib();
+        setDefaultPrefLib();
+    }
+
+    function setDefaultSearchLib() {
         egCore.hatch.setItem(
             'eg.search.lib.default', JSON.parse($scope.selectedOrg))
         .then(function() { $scope.defaultSearchLib = $scope.selectedOrg });
     }
 
+    function setDefaultPrefLib() {
+        egCore.hatch.setItem(
+            'eg.pref.lib.default',  JSON.parse($scope.selectedPrefOrg))
+        .then(function() { $scope.defaultPrefLib = $scope.selectedPrefOrg });
+    }
+
     // ---------------------
     // Hatch Configs
     $scope.hatchURL = egCore.hatch.hatchURL();
@@ -235,7 +267,6 @@ function($scope , $window , $location, egCore, egOrg, egConfirmDialog, egAuth) {
             'eg.hatch.url', $scope.hatchURL);
     }
 
-
 }])
 
 .controller('PrintConfigCtrl',
index 6593210..0f356b5 100644 (file)
@@ -263,10 +263,16 @@ function($scope , $routeParams , $location , $q , egCore , egHolds,
 
         var default_search_library = egCore.hatch.getLocalItem('eg.search.lib.default');
         var url = $location.absUrl().replace(/\/staff.*/, '/opac/advanced');
+        var preferred_search_library = egCore.hatch.getLocalItem('eg.pref.lib.default');
 
         if (default_search_library.id) {
           url += '?locg=' + default_search_library.id;
         }
+
+        if (preferred_search_library.id) {
+          url += '&plib=' + preferred_search_library.id;
+        }
+
         // A record ID in the path indicates a request for the record-
         // specific page.
         if ($routeParams.record_id) {