Added code to set the default search library, the preferred library user/vlewis/lp1437112-not_possible_to_set_workstation_preferences
authorVictoria Lewis <vlewis@catalystitservices.com>
Wed, 19 Aug 2015 17:03:30 +0000 (10:03 -0700)
committerVictoria Lewis <vlewis@catalystitservices.com>
Thu, 5 Nov 2015 21:33:59 +0000 (13:33 -0800)
and the advanced search default pane.

modified:   Open-ILS/src/templates/opac/parts/advanced/expert.tt2
modified:   Open-ILS/src/templates/opac/parts/advanced/numeric.tt2
modified:   Open-ILS/src/templates/opac/parts/advanced/search.tt2
modified:   Open-ILS/src/templates/opac/parts/pref_lib_display.tt2
modified:   Open-ILS/src/templates/opac/parts/searchbar.tt2
modified:   Open-ILS/src/templates/opac/results.tt2
new file:   Open-ILS/src/templates/staff/admin/workstation/t_search_prefs.tt2
modified:   Open-ILS/web/js/ui/default/staff/admin/workstation/app.js
modified:   Open-ILS/web/js/ui/default/staff/cat/catalog/app.js

17 files changed:
Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader.pm
Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Search.pm
Open-ILS/src/perlmods/lib/OpenILS/WWW/EGCatLoader/Util.pm
Open-ILS/src/templates/opac/parts/advanced/expert.tt2
Open-ILS/src/templates/opac/parts/advanced/numeric.tt2
Open-ILS/src/templates/opac/parts/advanced/search.tt2
Open-ILS/src/templates/opac/parts/org_selector.tt2
Open-ILS/src/templates/opac/parts/pref_lib_display.tt2
Open-ILS/src/templates/opac/parts/searchbar.tt2
Open-ILS/src/templates/opac/results.tt2
Open-ILS/src/templates/staff/admin/workstation/index.tt2
Open-ILS/src/templates/staff/admin/workstation/t_search_prefs.tt2 [new file with mode: 0644]
Open-ILS/src/templates/staff/admin/workstation/t_splash.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
Open-ILS/web/js/ui/default/staff/circ/in_house_use/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 19f3a25..ec9dfce 100644 (file)
@@ -141,7 +141,8 @@ sub _prepare_biblio_search {
     my $pref_ou = $ctx->{pref_ou};
     if (defined($pref_ou) and $pref_ou ne '' and $pref_ou != $org and ($pref_ou ne $ctx->{aou_tree}->()->id) and not $query =~ / pref_ou\(\S+\)/) {
         my $plib = $ctx->{get_aou}->($pref_ou)->shortname;
-        $query = "pref_ou($plib) $query";
+        my $pref_scrubber = "pref_ou($plib) $query";
+        push @naive_query_re, $pref_scrubber;
     }
 
     if (my $grp = $ctx->{copy_location_group}) {
@@ -174,7 +175,7 @@ sub _prepare_biblio_search {
         push @naive_query_re, $thing;
     }
 
-    # This gives templates a way to take site() and depth() back out of
+    # This gives templates a way to take site(), pref_ou(), and depth() back out of
     # query strings when they shouldn't be there (because they're controllable
     # with other widgets).
     $ctx->{naive_query_scrub} = sub {
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 85e2ca2..489a8b0 100644 (file)
@@ -1,4 +1,5 @@
 <form action="[% ctx.opac_root %]/results" method="get">
+    <meta http-equiv="Set-Cookie" content="pplib=[%CGI.param('plib')%];path=/">
     <div class="header_middle">[% l("Expert Search") %]</div>
     <input type="hidden" name="_special" value="1" />
     <table class="expert-search">
index 4644600..e720a58 100644 (file)
@@ -1,4 +1,6 @@
 <form action="[% ctx.opac_root %]/results" method="get">
+
+    <meta http-equiv="Set-Cookie" content="pplib=[%CGI.param('plib')%];path=/">
     <div class="header_middle">[% l("Numeric Search") %]</div>
     <input type="hidden" name="contains" value="contains" />
     <input type="hidden" name="_special" value="1" />
@@ -13,7 +15,6 @@
                     <option value="identifier|tcn">[% l('TCN') %]</option>
                     <option value="item_barcode">[% l('Item Barcode') %]</option>
                 </select>
-       
                 <input type="text" name="query" size="16" autofocus placeholder='[% l("Identifier") %]' />
            <br/>
             [%- lib_select_id="numeric_search_library" -%]
index e35095b..460d079 100644 (file)
@@ -2,6 +2,8 @@
     PROCESS "opac/parts/misc_util.tt2";
     PROCESS get_library;
 %]
+
+<meta http-equiv="Set-Cookie" content="pplib=[%CGI.param('plib')%]; path=/">
 <form action="[% ctx.opac_root %]/results" method="get">
 <div id='adv_global_search' class='data_grid data_grid_center'>
     <div id='adv_search_rows'>
@@ -61,6 +63,7 @@
                 class='hidden'[% END %]>
                 <strong><label for="[% adv_chunk.id %]">
                   [% adv_chunk.adv_label %] </label></strong><br />
+
 [%
         IF adv_chunk.adv_special;
             SWITCH adv_chunk.adv_special;
index ab4d7c9..afadc32 100644 (file)
@@ -12,13 +12,13 @@ PROCESS get_library;
 
 BLOCK build_org_selector;
     node_stack = [{org => org_unit || ctx.aouct_tree || ctx.aou_tree}];
-    inherited_vis = ctx.get_cgf('opac.org_unit.non_inherited_visibility').enabled == 'f';
+    inherited_vis = ctx.get_cgf('opac.org_unit.non_inherited_visibility').enabled == 'f'; #get configuration 'opac.org_unit's option for non-inherited visibility and disable it(f)
 
     IF !name; 
-        name = loc_name;
+        name = loc_name; #If name doesn't exist, set it to loc_name - Defined in misc_util.tt2 get_library
     END;
     IF !value;
-        value = loc_value;
+        value = loc_value;#If value doesn't exist, set it to loc_value - Defined in misc_util.tt2 get_library
     END;
 
     # if the selected org unit is out of hiding scope, 
@@ -39,7 +39,7 @@ BLOCK build_org_selector;
             css_class = '';
             disabled = '';
             selected = '';
-            visible = org_unit.opac_visible == 't';
+            visible = org_unit.opac_visible == 't'; #enable visibility for org_unit's opac_visible option
 
             # org and all children are invisible.
             NEXT IF !visible AND inherited_vis AND !ctx.is_staff;
@@ -59,6 +59,7 @@ BLOCK build_org_selector;
                 END;
 
                 # add the child org units
+                # Allows child org_units to be displayed
                 FOR child IN org_unit.children.reverse;
                     node_stack.push({org => child});
                 END;
@@ -116,17 +117,19 @@ BLOCK build_org_selector;
             SET pad_depth = pad_depth + 1 IF loc_grp;
 
             # determine the depth by calculating the distance from the root
+                       # This gives the Search Library dropdown its child-parent padding
             porg = ctx.get_aou(org_unit.parent_ou);
             WHILE porg;
                 SET pad_depth = pad_depth + 1 IF porg.opac_visible == 't' OR ctx.is_staff;
                 porg = ctx.get_aou(porg.parent_ou);
             END;
-
+            
             pad_depth = pad_depth * 2;
-            display_name = loc_grp ? loc_grp.name : org_unit.name %]
+            display_name = loc_grp ? loc_grp.name : org_unit.name  #If there is a loc_grp, use loc_grp.name.  Otherwise use org_unit.name?
+            %]
 
             <option value='[% node_value %]' [% selected %] [% disabled %] [% css_class %]> 
-                [% '&nbsp;' FOR [0..pad_depth]; display_name | html %]
+                [% '&nbsp;' FOR [0..pad_depth]; display_name | html %] 
             </option> 
 
         [%- END %]
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 c2d2710..eb05940 100644 (file)
@@ -6,7 +6,7 @@
     [%- END %]
     <div id="search-box">
         <span class="search_catalog_lbl mobile_hide">[% l('Search the Catalog') %]</span>
-        <span class="adv_search_catalog_lbl"><a href="[% mkurl(ctx.opac_root _ '/advanced', {},  expert_search_parms.merge(browse_search_parms, facet_search_parms)) %]"
+        <span class="adv_search_catalog_lbl"><a href="[% mkurl(ctx.opac_root _ '/advanced', {"plib" => CGI.cookie('pplib')},  expert_search_parms.merge(browse_search_parms, facet_search_parms)) %]"
             id="home_adv_search_link" rel="nofollow" vocab="">[% l('Advanced Search') %]</a></span>
         <span class="browse_the_catalog_lbl"><a href="[% mkurl(ctx.opac_root _ '/browse', {}, expert_search_parms.merge(general_search_parms, facet_search_parms, ['fi:has_browse_entry'])) %]" rel="nofollow" vocab="">[% l('Browse the Catalog') %]</a></span>
     </div>
@@ -99,7 +99,7 @@
     [% UNLESS took_care_of_form %]</form>[% END %]
     [% IF (is_advanced AND NOT is_special) AND CGI.param('qtype') %]
     <div class="opac-auto-102">
-        [ <a href="[% mkurl(ctx.opac_root _ '/advanced') %]" rel="nofollow" vocab="">[%
+        [ <a href="[% mkurl(ctx.opac_root _ '/advanced', {"plib" => CGI.cookie('pplib')}) %]" rel="nofollow" vocab="">[%
             l('Refine My Original Search')
         %]</a> ]
     </div>
index f1bb957..341561a 100644 (file)
@@ -50,7 +50,7 @@
                     <a href="[% mkurl(ctx.opac_root _ '/home', {$loc_name => loc_value}, 1) %]" rel="nofollow" vocab="">[% l('Another Search') %]</a>
                 </div>
                 <div class="results_header_btns">
-                    <a href="[% mkurl(ctx.opac_root _ '/advanced',{}, expert_search_parms.merge(browse_search_parms, facet_search_parms)) %]" rel="nofollow" vocab="">[% l('Advanced Search') %]</a>
+                    <a href="[% mkurl(ctx.opac_root _ '/advanced',{"plib" => CGI.cookie('pplib')}, expert_search_parms.merge(browse_search_parms, facet_search_parms)) %]" rel="nofollow" vocab="">[% l('Advanced Search') %]</a>
                 </div>
                 <div id="refine_hits" class="results_header_btns result_block_visible"><a onclick="getFacety();">[% l('Refine these results') %]</a></div>
                 <div id="return_to_hits" class="results_header_btns"><a onclick="getResulty();">[% l('Back to results') %]</a></div>
index 3f927a4..46ed053 100644 (file)
@@ -14,6 +14,8 @@ angular.module('egCoreMod').run(['egStrings', function(s) {
   s.PREFS_REMOVE_KEY_CONFIRM = 
     '[% 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>
@@ -22,3 +24,7 @@ angular.module('egCoreMod').run(['egStrings', function(s) {
 <div ng-view></div>
 
 [% END %]
+
+
+
+
diff --git a/Open-ILS/src/templates/staff/admin/workstation/t_search_prefs.tt2 b/Open-ILS/src/templates/staff/admin/workstation/t_search_prefs.tt2
new file mode 100644 (file)
index 0000000..b70845e
--- /dev/null
@@ -0,0 +1,96 @@
+<div class="container" id="admin-workstation-printing">
+
+<style>
+    /* TODO: more context and move me */
+    textarea {
+        height: 400px;
+        width: 100%;
+    }
+    h2 { margin-bottom: 15px }
+      
+</style>
+
+    <div class="row">
+        <div class="col-md-12">
+            <h2>[% l('Library & Search Preferences') %]</h2>
+        </div>
+    </div>
+
+    <div class="row">
+        <div class="col-md-6">
+            <h3>Default Search Library</h3>
+            <p>The default search library setting determines what library is searched from the advanced 
+            search screen and portal page by default. Manual selection of a search library will override 
+            it. One recommendation is to set the search library to the highest point you would normally 
+            want to search.</p>
+            <div class="btn-group " dropdown>
+                <button type="button" class="btn btn-default dropdown-toggle">
+                    <span style="padding-right: 5px;">{{getDefaultSelectedName}}</span>
+                    <span class="caret"></span>
+                </button>
+                <ul class="dropdown-menu">
+                    <li ng-repeat="org in orgList"  ng-hide="hiddenTest(org.id)">
+                        <a href ng-click="orgDefaultChanged(org)"  a-disabled="disableTest(org.id)"
+                            style="padding-left: {{org.depth * 10 + 5}}px">
+                            {{org.shortname}}
+                        </a>
+                    </li>
+                </ul>
+            </div>
+        </div>      <!-- col -->
+    </div><!-- row -->
+
+    <div class="row">
+        <div class="col-md-6">
+            <h3>Preferred Library</h3>
+            <p>The preferred library is used to show copies and URIs regardless of the library 
+            searched. One recommendation is to set this to your workstation library so that local 
+            copies show up first in search results.</p>
+            <div class="btn-group " dropdown>
+                <button type="button" class="btn btn-default dropdown-toggle">
+                    <span style="padding-right: 5px;">{{getPrefDefaultSelectedName}}</span> 
+                    <span class="caret"></span>
+                </button>
+                <ul class="dropdown-menu">
+                    <li ng-repeat="org in orgList"  ng-hide="hiddenTest(org.id)">
+                        <a href ng-click="prefOrgDefaultChanged(org)"  a-disabled="disableTest(org.id)"
+                        style="padding-left: {{org.depth * 10 + 5}}px">
+                            {{org.shortname}}
+                        </a>
+                    </li>
+                </ul>
+            </div>
+        </div> <!-- col -->
+    </div>  <!-- row -->
+
+    <div class="row">
+        <div class="col-md-6">
+            <h3>Default Advanced Search Pane</h3>
+            <p>Advanced search has secondary panes for Numeric and MARC Expert searching. You
+            can change which one is loaded by default when opening a new catalog window here.</p>
+
+            <div class="btn-group " dropdown>
+                <button type="button" class="btn btn-default dropdown-toggle" ng-model ="selectedPane">
+                    <span style="padding-right: 5px;">{{getPrefDefaultSelectedPane}}</span> 
+                    <span class="caret"></span>
+                </button>
+                <ul class="dropdown-menu">
+                    <li ng-repeat="pane in paneList" value= "{{pane}}" >
+                        <a href ng-click="prefPaneDefaultChanged(pane)" >
+                            {{pane}}
+                        </a>
+                    </li>
+                </ul>
+            </div>
+
+            </div><!-- col -->
+        </div><!-- row -->
+
+    <br>
+    <div>
+        <button class="btn btn-default" ng-click="setDefaultLibs() ">
+        [% l('Save') %]
+        </button>
+    </div>
+</div><!-- container -->
+
index 8ceb795..6bf9530 100644 (file)
       </div>
     </div>
   </div>
+  
+  <div class="row new-entry">
+    <div class="col-md-6">
+      <span class="glyphicon glyphicon-search"></span>
+      <a target="self" href="./admin/workstation/search/prefs">
+      [% l('Set Search Preferences') %]
+    </a>
+    </div>
+  </div>
 
   <div class="row new-entry">
     <div class="col-md-6">
index 2884ba6..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>
             <img src="/xul/server/skin/media/images/portal/bucket.png"/>
             <a target="_self" href="./cat/bucket/copy/">[% l('Copy Buckets') %]</a>
           </div>
+            <div>
+            <form action="/eg/opac/results" method="get">
+            <input type="search" alt="Catalog Search" maxlength="200"
+                size="20" name="query"
+                placeholder="Search catalog for..." />
+            <input id="search-submit-go" type="submit" value="Search" 
+                title="Search" class="opac-button" onclick="setTimeout
+                (function(){$(&quot;search-submit-spinner&quot;)
+                .className=&quot;&quot;; $(&quot;search-submit-go&quot;)
+                .className=&quot;hidden&quot;}, 2000)">
+            </form>
+            </div>
         </div>
       </div>
     </div>
index ae771ec..cbbabd1 100644 (file)
@@ -31,6 +31,12 @@ angular.module('egWorkstationAdmin',
         controller: 'StoredPrefsCtrl',
         resolve : resolver
     });
+    
+    $routeProvider.when('/admin/workstation/search/prefs', {
+        templateUrl: './admin/workstation/t_search_prefs',
+        controller: 'SearchPrefsCtrl',
+        resolve : resolver
+    });
 
 
     // default page 
@@ -48,7 +54,6 @@ function($scope , $window , $location , egCore , egConfirmDialog) {
     var allWorkstations = [];
     var permMap = {};
     $scope.contextOrg = egCore.org.get(egCore.auth.user().ws_ou());
-
     egCore.perm.hasPermAt('REGISTER_WORKSTATION', true)
     .then(function(orgList) { 
 
@@ -64,7 +69,7 @@ function($scope , $window , $location , egCore , egConfirmDialog) {
     // fetch the stored WS info
     egCore.hatch.getItem('eg.workstation.all')
     .then(function(all) {
-        allWorkstations = all || [];
+        allWorkstations = all || []; 
         $scope.workstations = 
             allWorkstations.map(function(w) { return w.name });
         return egCore.hatch.getItem('eg.workstation.default');
@@ -172,6 +177,163 @@ function($scope , $window , $location , egCore , egConfirmDialog) {
             'eg.hatch.url', $scope.hatchURL);
     }
 }])
+/*
+ *  Search Preferences Controller
+ */
+.controller('SearchPrefsCtrl',
+    ['$scope','$window','$location', 'egCore', 'egOrg','egConfirmDialog', 'egAuth',
+function($scope , $window , $location, egCore, egOrg, egConfirmDialog, egAuth) {
+    console.log('SearchPrefsCtrl');
+    $scope.orgList = egOrg.list().map(function(org) {
+        return {
+            id : org.id(),
+            shortname : org.shortname(), 
+            depth : org.ou_type().depth()
+        }
+    });
+
+    $scope.paneList = ['Advanced', 'Numeric', 'Expert'];
+    var preferredPane;
+
+    egCore.hatch.getItem('eg.pref.lib.default')
+    .then(function(prefDef) {
+        if (prefDef == undefined) {
+           egCore.hatch.setItem(
+            'eg.pref.lib.default', $scope.orgList[0]);
+            prefDef =  $scope.orgList[0].shortname;
+        }
+        //This lets our dropdown auto-select our default preferred lib.
+        $scope.selectedPrefOrg =  prefDef;
+        $scope.getPrefDefaultSelectedName = getSelectedName($scope.selectedPrefOrg.shortname);
+    });
+
+    egCore.hatch.getItem('eg.adv.pane.default')
+    .then(function(prefPane) {
+        if (prefPane == undefined) {
+           egCore.hatch.setItem(
+            'eg.adv.pane.default', 'advanced');
+            preferredPane =  'Advanced';
+            prefPane = 'advanced';
+        }
+        //This lets our dropdown auto-select our default pane.
+        switch(prefPane) {
+            case 'advanced':
+                $scope.selectedPane  = 'Advanced';
+                break;
+            case 'numeric':
+                $scope.selectedPane  = 'Numeric';
+                break;
+            case 'expert':
+                $scope.selectedPane = 'Expert'
+                break;
+            default:
+                $scope.selectedPane  = 'Advanced';
+        }
+        $scope.getPrefDefaultSelectedPane = getSelectedName($scope.selectedPane);
+    });
+
+
+    egCore.hatch.getItem('eg.search.lib.default')
+    .then(function(def) {
+        if (def == undefined) {
+           egCore.hatch.setItem(
+            'eg.search.lib.default', $scope.orgList[0]);
+            def =  $scope.orgList[0].shortname;
+        }
+        //This lets our dropdown auto-select our default search lib.
+        $scope.selectedOrg = def;
+        $scope.getDefaultSelectedName = getSelectedName($scope.selectedOrg.shortname);
+    });
+
+    $scope.orgDefaultChanged = function(org) {
+        $scope.selectedOrg = org;
+        $scope.getDefaultSelectedName =  $scope.selectedOrg.shortname;
+        if ($scope.onchange) $scope.onchange($scope.getDefaultSelectedName);
+    }
+
+    $scope.prefOrgDefaultChanged = function(org) {
+        $scope.selectedPrefOrg = org;
+        $scope.getPrefDefaultSelectedName = $scope.selectedPrefOrg.shortname;
+        if ($scope.onchange) $scope.onchange($scope.getPrefDefaultSelectedName);
+    }
+
+    $scope.prefPaneDefaultChanged = function(pane) {
+        $scope.selectedPane = pane;
+        $scope.getPrefDefaultSelectedPane = $scope.selectedPane;
+        if ($scope.onchange) $scope.onchange($scope.getPrefDefaultSelectedName);
+    }
+
+    var getSelectedName = function(prefOrg) {
+        if (prefOrg) {
+            return prefOrg;
+        } else {
+           return $scope.orgList[0].shortname;
+        }
+    }
+
+    $scope.setDefaultLibs = function() {
+        if($scope.selectedOrg.shortname){
+            setDefaultSearchLib();
+        }
+        if($scope.selectedPrefOrg.shortname ){
+            setDefaultPrefLib();
+        }
+        if($scope.selectedPane ){
+            setDefaultPrefPane();
+        }
+    }
+
+    function setDefaultSearchLib() {
+        if($scope.selectedOrg){
+            egCore.hatch.setItem(
+                'eg.search.lib.default', ($scope.selectedOrg))
+       }
+    }
+
+    function setDefaultPrefLib() {
+        if($scope.selectedPrefOrg ) {
+            egCore.hatch.setItem(
+                'eg.pref.lib.default',  $scope.selectedPrefOrg)
+        }
+    }
+
+    function setDefaultPrefPane() {
+        if($scope.selectedPane) {
+             switch($scope.selectedPane) {
+            case 'Advanced':
+                preferredPane = 'advanced';
+                break;
+            case 'Numeric':
+                preferredPane = 'numeric';
+                break;
+            case 'Expert':
+                preferredPane = 'expert';
+                break;
+            default:
+                preferredPane = 'advanced';
+        }
+            egCore.hatch.setItem(
+                'eg.adv.pane.default',  preferredPane)
+        }
+    }
+
+    // ---------------------
+    // Hatch Configs
+    $scope.hatchURL = egCore.hatch.hatchURL();
+    $scope.hatchRequired = 
+        egCore.hatch.getLocalItem('eg.hatch.required');
+
+    $scope.updateHatchRequired = function() {
+        egCore.hatch.setLocalItem(
+            'eg.hatch.required', $scope.hatchRequired);
+    }
+
+    $scope.updateHatchURL = function() {
+        egCore.hatch.setLocalItem(
+            'eg.hatch.url', $scope.hatchURL);
+    }
+
+}])
 
 .controller('PrintConfigCtrl',
        ['$scope','egCore',
index 4cd81d7..85b04ad 100644 (file)
@@ -262,6 +262,21 @@ function($scope , $routeParams , $location , $q , egCore , egHolds,
         if ($scope.catalog_url) return; 
 
         var url = $location.absUrl().replace(/\/staff.*/, '/opac/advanced');
+        var default_search_library = egCore.hatch.getLocalItem('eg.search.lib.default');
+        var preferred_search_library = egCore.hatch.getLocalItem('eg.pref.lib.default');
+        var default_adv_pane = egCore.hatch.getLocalItem('eg.adv.pane.default');
+
+        if (default_search_library.id) {
+          url += '?locg=' + default_search_library.id;
+        }
+
+        if (preferred_search_library.id) {
+          url += '&plib=' + preferred_search_library.id;
+        }
+
+        if (default_adv_pane) {
+          url += '&pane=' + default_adv_pane;
+        }
 
         // A record ID in the path indicates a request for the record-
         // specific page.
index 06a1889..f58eab2 100644 (file)
@@ -98,6 +98,7 @@ function($scope,  egCore,  egGridDataProvider , egConfirmDialog) {
                 coArgs, {title : $scope.selectedNcType()}
             );
         }
+        $scope.args.barcode=' ';
     }
 
     function performCheckout(method, args, data) {