webstaff: Z39.50 - various improvements
authorGalen Charlton <gmc@esilibrary.com>
Fri, 17 Jul 2015 18:56:10 +0000 (18:56 +0000)
committerJason Stephenson <jstephenson@mvlc.org>
Wed, 19 Aug 2015 17:39:19 +0000 (13:39 -0400)
* add widget to show/hide search form
* add more vertical space between search form and results table
* forgo a label on the results table
* make Z39.50 search results non-multiselect-able
* implement edit-then-import

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
Signed-off-by: Jason Stephenson <jstephenson@mvlc.org>
Open-ILS/src/templates/staff/cat/z3950/index.tt2
Open-ILS/src/templates/staff/cat/z3950/t_list.tt2
Open-ILS/src/templates/staff/cat/z3950/t_marc_edit.tt2 [new file with mode: 0644]
Open-ILS/src/templates/staff/css/cat.css.tt2
Open-ILS/web/js/ui/default/staff/cat/z3950/app.js

index 02f8d08..af38a12 100644 (file)
 <script src="[% ctx.media_prefix %]/js/ui/default/staff/services/ui.js"></script>
 <script src="[% ctx.media_prefix %]/js/ui/default/staff/cat/z3950/app.js"></script>
 <script src="[% ctx.media_prefix %]/js/ui/default/staff/cat/services/z3950.js"></script>
+<script src="[% ctx.media_prefix %]/js/ui/default/staff/marcrecord.js"></script>
+<script src="[% ctx.media_prefix %]/js/ui/default/staff/cat/services/record.js"></script>
+<script src="[% ctx.media_prefix %]/js/ui/default/staff/cat/services/tagtable.js"></script>
+<script src="[% ctx.media_prefix %]/js/ui/default/staff/cat/services/marcedit.js"></script>
 [% END %]
 
 <div ng-view></div>
index dcd5840..91719d7 100644 (file)
@@ -1,17 +1,30 @@
 <div class="row">
+  <a class="pull-right" href ng-click="toggle_search_form()"
+    title="[% l('Hide Search Form') %]"
+    ng-show="show_search_form()">
+    <span class="glyphicon glyphicon-resize-small"></span>
+  </a>
+  <a class="pull-right" href ng-click="toggle_search_form()"
+    title="[% l('Show Search Form') %]"
+    ng-hide="show_search_form()">
+    <span class="glyphicon glyphicon-resize-full"></span>
+  </a>
+</div>
+
+<div class="row">
     <div class="col-xs-6">
         <strong>[% l('Query') %]</strong>
         <form ng-keyup="$event.keyCode == 13 && search()">
-        <eg-z3950-search-field-list></eg-z3950-search-field-list>
+        <eg-z3950-search-field-list ng-show="show_search_form()"></eg-z3950-search-field-list>
         </form>
     </div>
     <div class="col-xs-6">
         <strong>[% l('Service and Credentials') %]</strong>
-        <eg-z3950-target-list>
+        <eg-z3950-target-list ng-show="show_search_form()">
     </div>
 </div>
 
-<div class="row" id="z3950-search-form-row">
+<div class="row" id="z3950-search-form-row" ng-show="show_search_form()">
     <form ng-submit="search()" id="z3950-search-form"
         role="form" class="form-inline">
         <div class="button-group">
@@ -26,8 +39,7 @@
 <eg-grid
   id-field="index"
   idl-class="mvr"
-  features="-display,-sort,-multisort"
-  main-label="[% l('Results') %]"
+  features="-display,-sort,-multisort,-multiselect"
   items-provider="z3950SearchGridProvider"
   grid-controls="gridControls"
   persist-key="cat.z3950_results">
@@ -36,6 +48,8 @@
     label="[% l('Show in Catalog') %]"></eg-grid-menu>
   <eg-grid-menu-item handler="import" disabled="cant_import"
     label="[% l('Import') %]"></eg-grid-menu>
+  <eg-grid-menu-item handler="spawn_editor" disabled="cant_import"
+    label="[% l('Edit then Import') %]"></eg-grid-menu>
 
     <!-- 
       FIXME: it would be nice to make this column link
diff --git a/Open-ILS/src/templates/staff/cat/z3950/t_marc_edit.tt2 b/Open-ILS/src/templates/staff/cat/z3950/t_marc_edit.tt2
new file mode 100644 (file)
index 0000000..97e448c
--- /dev/null
@@ -0,0 +1,13 @@
+<div>
+  <div class="modal-header">
+    <button type="button" class="close"
+      ng-click="cancel()" aria-hidden="true">&times;</button>
+    <h4 class="modal-title">[% l('Import Record') %]</h4>
+  </div>
+  <div class="modal-body">
+    <eg-marc-edit-record dirty-flag="dirty_flag" record-id="record_id" marc-xml="{{marc_xml}}"/>
+  </div>
+  <div class="modal-footer">
+    <button class="btn btn-warning" ng-click="cancel()">[% l('Cancel') %]</button>
+  </div>
+</div>
index 7f7b579..fcd98bd 100644 (file)
@@ -142,3 +142,7 @@ grid[name="-none-"] * label { color: black; }
 
 .marcValidated { color: black; }
 .marcUnvalidated { color: red; }
+
+#z3950-search-form-row {
+    margin-bottom: 20px;
+}
index 8a6d7d6..d08946a 100644 (file)
@@ -3,7 +3,7 @@
  */
 
 angular.module('egCatZ3950Search',
-    ['ngRoute', 'ui.bootstrap', 'egCoreMod', 'egUiMod', 'egGridMod', 'egZ3950Mod'])
+    ['ngRoute', 'ui.bootstrap', 'egCoreMod', 'egUiMod', 'egGridMod', 'egZ3950Mod', 'egMarcMod'])
 
 .config(function($routeProvider, $locationProvider, $compileProvider) {
     $locationProvider.html5Mode(true);
@@ -26,8 +26,8 @@ angular.module('egCatZ3950Search',
  * List view - grid stuff
  */
 .controller('Z3950SearchCtrl',
-       ['$scope','$q','$location','$timeout','$window','egCore','egGridDataProvider','egZ3950TargetSvc',
-function($scope , $q , $location , $timeout , $window,  egCore , egGridDataProvider,  egZ3950TargetSvc ) {
+       ['$scope','$q','$location','$timeout','$window','egCore','egGridDataProvider','egZ3950TargetSvc','$modal',
+function($scope , $q , $location , $timeout , $window,  egCore , egGridDataProvider,  egZ3950TargetSvc,  $modal) {
 
     // get list of targets
     egZ3950TargetSvc.loadTargets();
@@ -78,6 +78,14 @@ function($scope , $q , $location , $timeout , $window,  egCore , egGridDataProvi
         egZ3950TargetSvc.clearSearchFields();
     };
 
+    var display_form = true;
+    $scope.show_search_form = function() {
+        return display_form;
+    }
+    $scope.toggle_search_form = function() {
+        display_form = !display_form;
+    }
+
     $scope.showInCatalog = function() {
         var items = $scope.gridControls.selectedItems();
         // relying on cant_showInCatalog to protect us
@@ -116,4 +124,24 @@ function($scope , $q , $location , $timeout , $window,  egCore , egGridDataProvi
         if (items.length == 1) return false;
         return true;
     };
+
+    $scope.spawn_editor = function() {
+        var items = $scope.gridControls.selectedItems();
+        $modal.open({
+            templateUrl: './cat/z3950/t_marc_edit',
+            size: 'lg',
+            controller:
+                ['$scope', '$modalInstance', function($scope, $modalInstance) {
+console.debug('calling modal controller');
+                $scope.focusMe = true;
+                $scope.record_id = 0;
+                $scope.dirty_flag = false;
+                $scope.marc_xml = items[0]['marcxml'];
+                $scope.ok = function(args) { $modalInstance.close(args) }
+                $scope.cancel = function () { $modalInstance.dismiss() }
+            }]
+        }).result.then(function (args) {
+            if (!args || !args.name) return;
+        });
+    }
 }])