LP#1724348: show preferred tab when record loads
authora. bellenir <ab@grpl.org>
Fri, 18 May 2018 20:44:49 +0000 (16:44 -0400)
committera. bellenir <ab@grpl.org>
Fri, 18 May 2018 20:44:49 +0000 (16:44 -0400)
allow $scope.record_tab to be an empty string. (prevents overriding user preference in eg.cat.default_record_tab).
do not reset or clear $scope.record_tab when returning to search results (so previously used view can be remembered as subsequent records are opened.)
always use catalog view if there is no $scope.record_id.

Signed-off-by: a. bellenir <ab@grpl.org>
Open-ILS/src/templates/staff/cat/catalog/t_catalog.tt2
Open-ILS/web/js/ui/default/staff/cat/catalog/app.js

index c1e326e..cb16b57 100644 (file)
@@ -17,7 +17,7 @@
     <button type="button" ng-disabled="from_route" class="btn btn-default" ng-click="opac_call('rdetailEnd')">
        [% l('End') %]
     </button>
-    <button type="button" ng-disabled="from_route" class="btn btn-default" ng-click="opac_call('rdetailBackToResults', true)">
+    <button type="button" ng-disabled="from_route" class="btn btn-default" ng-click="opac_call('rdetailBackToResults')">
        [% l('Back To Results') %] ( {{ search_result_index }} / {{ search_result_hit_count }} )
     </button>
   </div>
@@ -98,7 +98,7 @@
 </div>
 
 <ul class="nav nav-tabs">
-  <li ng-class="{active : record_tab == 'catalog'}">
+  <li ng-class="{active : !record_id || record_tab == '' || record_tab == 'catalog'}">
     <a ng-click="set_record_tab('catalog')" >
         [% l('OPAC View') %]
     </a>
   </div>
   <div class="tab-pane active">
     <!-- ng-show allows the catalog iframe to stay loaded (unlike ng-if) -->
-    <div ng-show="record_tab == 'catalog'">
+    <div ng-show="!record_id || record_tab == '' || record_tab == 'catalog'">
       <eg-embed-frame save-space="300" frame="opac_iframe" url="catalog_url" handlers="handlers" onchange="handle_page"></eg-embed-frame>
     </div>
-    <div ng-show="record_tab == 'marc_edit'">
+    <div ng-show="record_id && record_tab == 'marc_edit'">
       <eg-marc-edit-record fast-add="true" on-save="refresh_record_callback" dirty-flag="stop_unload" record-id="record_id"/>
     </div>
     <!-- ng-if the remaining tabs so they can be instantiated on demand -->
-    <div ng-if="record_tab == 'marc_html'">
+    <div ng-if="record_id && record_tab == 'marc_html'">
       <eg-record-html record-id="record_id"></eg-record-html>
     </div>
-    <div ng-if="record_tab == 'holds'">
+    <div ng-if="record_id && record_tab == 'holds'">
       [% INCLUDE 'staff/cat/catalog/t_holds.tt2' %]
     </div>
-    <div ng-if="record_tab == 'monoparts'">
+    <div ng-if="record_id && record_tab == 'monoparts'">
       <eg-embed-frame save-space="350" url="parts_url"></eg-embed-frame>
     </div>
-    <div ng-if="record_tab == 'holdings'">
+    <div ng-if="record_id && record_tab == 'holdings'">
       [% INCLUDE 'staff/cat/catalog/t_holdings.tt2' %]
     </div>
-    <div ng-if="record_tab == 'conjoined'">
+    <div ng-if="record_id && record_tab == 'conjoined'">
       [% INCLUDE 'staff/cat/catalog/t_conjoined_items.tt2' %]
     </div>
   </div>
index 4b3d186..524fca4 100644 (file)
@@ -307,9 +307,8 @@ function($scope , $routeParams , $location , $window , $q , egCore , egHolds , e
     );
 
     $scope.in_opac_call = false;
-    $scope.opac_call = function (opac_frame_function, force_opac_tab) {
+    $scope.opac_call = function (opac_frame_function) {
         if ($scope.opac_iframe) {
-            if (force_opac_tab) $scope.record_tab = 'catalog';
             $scope.in_opac_call = true;
             $scope.opac_iframe.dom.contentWindow[opac_frame_function]();
             if (opac_frame_function == 'rdetailBackToResults') {
@@ -566,9 +565,9 @@ function($scope , $routeParams , $location , $window , $q , egCore , egHolds , e
         if (!$scope.in_opac_call) {
             if ($scope.record_id && !$scope.record_tab) {
                 $scope.default_tab = egCore.hatch.getLocalItem( 'eg.cat.default_record_tab' );
-                tab = $routeParams.record_tab || $scope.default_tab || 'catalog';
+                tab = $routeParams.record_tab || $scope.default_tab || '';
             } else {
-                tab = $routeParams.record_tab || 'catalog';
+                tab = $routeParams.record_tab || $scope.record_tab || '';
             }
             $scope.set_record_tab(tab);
         } else {
@@ -1837,6 +1836,7 @@ function($scope , $routeParams , $location , $window , $q , egCore , egHolds , e
                 break;
 
             case 'catalog':
+            case '':
                 init_cat_url();
                 break;
 
@@ -1858,10 +1858,10 @@ function($scope , $routeParams , $location , $window , $q , egCore , egHolds , e
     var tab;
     if ($scope.record_id) {
         $scope.default_tab = egCore.hatch.getLocalItem( 'eg.cat.default_record_tab' );
-        tab = $routeParams.record_tab || $scope.default_tab || 'catalog';
+        tab = $routeParams.record_tab || $scope.default_tab || '';
 
     } else {
-        tab = $routeParams.record_tab || 'catalog';
+        tab = $routeParams.record_tab || '';
     }
     $scope.set_record_tab(tab);