LP#1843599: AngularJS MARC editor once again sets bib source
authorGalen Charlton <gmc@equinoxinitiative.org>
Fri, 20 Dec 2019 17:40:34 +0000 (12:40 -0500)
committerJason Etheridge <jason@EquinoxInitiative.org>
Tue, 7 Jan 2020 17:17:52 +0000 (12:17 -0500)
This patch fixes a regression introduced by the patch for bug 1693580
that prevent changes to the bib source from being made via the AngularJS
MARC editor.

To test
-------
[1] Apply the patch.
[2] Create a new bib record and save it with a non-empty source. Verify
    that the record sets the source as expected.
[3] Edit a bib record and change the source. Verify that the new source
    is retained when the record is saved.
[4] Edit an authority record and save it. Verify that it can be updated
    without error. (Note that authority records do not have sources in
    the same way that bib records do.)

Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Signed-off-by: Rogan Hamby <rhamby@esilibrary.com>
Signed-off-by: Jason Etheridge <jason@EquinoxInitiative.org>
Open-ILS/web/js/ui/default/staff/cat/services/marcedit.js

index 71cf44b..09b46d0 100644 (file)
@@ -737,7 +737,8 @@ angular.module('egMarcMod', ['egCoreMod', 'ui.bootstrap'])
 
                 // necessary to prevent ng-model scope hiding ugliness in egMarcEditBibSource:
                 $scope.bib_source = {
-                    id : $scope.bibSource ? $scope.bibSource : null
+                    id : $scope.bibSource ? $scope.bibSource : null,
+                    name: null
                 };
                 $scope.brandNewRecord = false;
                 $scope.record_type = $scope.recordType || 'bre';
@@ -1399,7 +1400,7 @@ angular.module('egMarcMod', ['egCoreMod', 'ui.bootstrap'])
                         promise = egCore.net.request(
                             'open-ils.cat', method,
                             egCore.auth.token(), $scope.recordId, 
-                            $scope.Record().marc(), $scope.Record().source()
+                            $scope.Record().marc(), $scope.bib_source.name
                         );
 
                     } else {
@@ -1412,7 +1413,7 @@ angular.module('egMarcMod', ['egCoreMod', 'ui.bootstrap'])
                             'open-ils.cat', method,
                             egCore.auth.token(), 
                             $scope.Record().marc(),
-                            $scope.Record().source()
+                            $scope.bib_source.name
                         );
                     }
 
@@ -1590,6 +1591,8 @@ angular.module('egMarcMod', ['egCoreMod', 'ui.bootstrap'])
                     function(newVal, oldVal) {
                         if (newVal !== oldVal) {
                             $scope.bre.source(newVal);
+                            var cbs = $scope.bib_sources.filter(function(s) { return s.id() == newVal });
+                            $scope.$parent.bib_source.name = (cbs && cbs[0]) ? cbs[0].source() : null;
                         }
                     }
                 );