From 94223323fe39f5bd330c6d5257de035ff2fe7cf1 Mon Sep 17 00:00:00 2001 From: Galen Charlton Date: Mon, 23 May 2016 09:49:20 -0400 Subject: [PATCH] WIP --- .../staff/admin/server/config/marc_field.tt2 | 56 ++++++++++++++++++++++ .../src/templates/staff/admin/server/t_splash.tt2 | 3 +- .../templates/staff/share/t_fm_record_editor.tt2 | 18 +++++++ .../staff/admin/server/config/marc_field.js | 33 +++++++++++++ .../ui/default/staff/services/fm_record_editor.js | 55 +++++++++++++++++++++ 5 files changed, 164 insertions(+), 1 deletion(-) create mode 100644 Open-ILS/src/templates/staff/admin/server/config/marc_field.tt2 create mode 100644 Open-ILS/src/templates/staff/share/t_fm_record_editor.tt2 create mode 100644 Open-ILS/web/js/ui/default/staff/admin/server/config/marc_field.js create mode 100644 Open-ILS/web/js/ui/default/staff/services/fm_record_editor.js diff --git a/Open-ILS/src/templates/staff/admin/server/config/marc_field.tt2 b/Open-ILS/src/templates/staff/admin/server/config/marc_field.tt2 new file mode 100644 index 0000000000..385a4c7cdb --- /dev/null +++ b/Open-ILS/src/templates/staff/admin/server/config/marc_field.tt2 @@ -0,0 +1,56 @@ +[% + WRAPPER "staff/base.tt2"; + ctx.page_title = l("MARC Tag Tables"); + ctx.page_app = "egAdminConfig"; + ctx.page_ctrl = 'MarcField'; +%] + +[% BLOCK APP_JS %] + + + + + +[% END %] + +
+
+ [% l('MARC Tag Tables') %] +
+
+ + + + +
+
+
+ + +
+
+
+ + + + + + + + + + +[% END %] diff --git a/Open-ILS/src/templates/staff/admin/server/t_splash.tt2 b/Open-ILS/src/templates/staff/admin/server/t_splash.tt2 index 14319421c6..231dd5c679 100644 --- a/Open-ILS/src/templates/staff/admin/server/t_splash.tt2 +++ b/Open-ILS/src/templates/staff/admin/server/t_splash.tt2 @@ -44,6 +44,7 @@ ,[ l('MARC Search/Facet Classes'), "./admin/server/config/metabib_class" ] ,[ l('MARC Search/Facet Field FTS Maps'), "./admin/server/config/metabib_field_ts_map" ] ,[ l('MARC Search/Facet Fields'), "./admin/server/config/metabib_field" ] + ,[ l('MARC Tag Tables'), "./admin/server/config/marc_field" ] ,[ l('Org Unit Proximity Adjustments'), "./admin/server/config/org_unit_proximity_adjustment" ] ,[ l('Organization Types'), "./admin/server/legacy/actor/org_unit_type" ] ,[ l('Org Unit Setting Types'), "./admin/server/config/org_unit_setting_type" ] @@ -59,7 +60,7 @@ ,[ l('Z39.50 Servers'), "./admin/server/config/z3950_source" ] ]; - USE table(interfaces, rows=16); + USE table(interfaces, rows=17); %] [% FOREACH row = table.rows %] diff --git a/Open-ILS/src/templates/staff/share/t_fm_record_editor.tt2 b/Open-ILS/src/templates/staff/share/t_fm_record_editor.tt2 new file mode 100644 index 0000000000..aaa0861c43 --- /dev/null +++ b/Open-ILS/src/templates/staff/share/t_fm_record_editor.tt2 @@ -0,0 +1,18 @@ +
+ +

{{record_label}}

+
+
+
+ +
+
+ {{record[field.name]}} + + +
+
+
+
diff --git a/Open-ILS/web/js/ui/default/staff/admin/server/config/marc_field.js b/Open-ILS/web/js/ui/default/staff/admin/server/config/marc_field.js new file mode 100644 index 0000000000..2866ab7abe --- /dev/null +++ b/Open-ILS/web/js/ui/default/staff/admin/server/config/marc_field.js @@ -0,0 +1,33 @@ +angular.module('egAdminConfig', + ['ngRoute','ui.bootstrap','egCoreMod','egUiMod','egGridMod','egFmRecordEditorMod']) + +.controller('MarcField', + ['$scope','$q','$timeout','$location','$window','egCore','egGridDataProvider', +function($scope , $q , $timeout , $location , $window , egCore , egGridDataProvider) { + + egCore.startup.go(); // standalone mode requires manual startup + + $scope.marc_record_type = 'biblio'; + $scope.$watch('marc_record_type', function(newVal, oldVal) { + if (newVal != oldVal) { + $scope.gridControls.setQuery(generateQuery($scope.marc_record_type)); + $scope.gridControls.refresh(); + } + }); + + function generateQuery(marc_record_type) { + return { + 'id' : { '!=' : null }, + 'marc_record_type' : marc_record_type + } + } + + $scope.gridControls = { + setQuery : function() { + return generateQuery($scope.marc_record_type); + }, + setSort : function() { + return ['tag']; + } + } +}]) diff --git a/Open-ILS/web/js/ui/default/staff/services/fm_record_editor.js b/Open-ILS/web/js/ui/default/staff/services/fm_record_editor.js new file mode 100644 index 0000000000..3057a2b48a --- /dev/null +++ b/Open-ILS/web/js/ui/default/staff/services/fm_record_editor.js @@ -0,0 +1,55 @@ +angular.module('egFmRecordEditorMod', + ['egCoreMod', 'egUiMod', 'ui.bootstrap']) + +.directive('egEditFmRecord', function() { + return { + restrict : 'AE', + transclude : true, + scope : { + // IDL class hint (e.g. "aou") + idlClass : '@', + + // mode: 'create' for creating a new record, + // 'update' for editing an existing record + mode : '@', + + // record ID to update + recordId : '@', + + // reference to handler to run upon saving + // record. The handler will be passed the + // record ID and a parameter indicating whether + // the save did a create or an update. Note that + // even if the mode of the egEditFmRecord is + // 'create', the onSave handler may still get + // 'update' if the user is permitted to create a + // record, then update it + onSave : '=', + + }, + + templateUrl : '/eg/staff/share/t_fm_record_editor', + + controller : [ + '$scope','egCore', + function($scope , egCore) { + + $scope.record_label = egCore.idl.classes[$scope.idlClass].label; + + if ($scope.mode == 'update') { + console.debug('retrieve ' + $scope.recordId + ' of ' + $scope.idlClass); + egCore.pcrud.retrieve($scope.idlClass, $scope.recordId).then(function(r) { $scope.rec = r }); + } else { + $scope.rec = new egCore.idl[$scope.idlClass](); + } + + function get_field_list() { + var fields = egCore.idl.classes[$scope.idlClass].fields; + + return fields; + } + + $scope.fields = get_field_list(); + }] + }; +}) -- 2.11.0