webstaff: check whether a pattern can be edited or deleted
authorGalen Charlton <gmc@equinoxinitiative.org>
Fri, 7 Jul 2017 22:08:02 +0000 (18:08 -0400)
committerGalen Charlton <gmc@equinoxinitiative.org>
Fri, 7 Jul 2017 22:08:02 +0000 (18:08 -0400)
Signed-off-by: Galen Charlton <gmc@equinoxinitiative.org>
Open-ILS/src/templates/staff/serials/t_pattern_editor_dialog.tt2
Open-ILS/src/templates/staff/serials/t_prediction_manager.tt2
Open-ILS/web/js/ui/default/staff/serials/directives/prediction_manager.js

index d34f5a0..c19ef8c 100644 (file)
@@ -8,7 +8,7 @@
   <div class="modal-body">
     <div class="container-fluid">
       <eg-prediction-wizard pattern-code="patternCode" on-save="ok"
-                            show-share="showShare"
+                            show-share="showShare" view-only="viewOnly"
       ></eg-prediction-wizard pattern-code>
    </div>
  </div>
index 1bc9bb9..0dda638 100644 (file)
             <option value="supplement">[% l('Supplement') %]</option>
             <option value="index">[% l('Index') %]</option>
         </select>
-        <button class="btn btn-default" ng-click="openPatternEditorDialog(pred)">[% l('Edit Pattern') %]</button>
+        <button class="btn btn-default" ng-click="openPatternEditorDialog(pred, false)" ng-if=" pred._can_edit_or_delete">[% l('Edit Pattern') %]</button>
+        <button class="btn btn-default" ng-click="openPatternEditorDialog(pred, true)"  ng-if="!pred._can_edit_or_delete">[% l('View Pattern') %]</button>
     </div>
     <div>
         <button class="btn btn-default" ng-disabled="pred.predform.$dirty" ng-click="add_issuances()">[% l('Predict New Issues') %]</button>
-        <button type="submit" class="btn btn-default" ng-click="deleteScap(pred)">[% l('Delete') %]</button>
+        <button type="submit" class="btn btn-default" ng-disabled="!pred._can_edit_or_delete" ng-click="deleteScap(pred)">[% l('Delete') %]</button>
         <button type="submit" class="btn btn-primary" ng-disabled="!pred.predform.$dirty" ng-click="updateScap(pred)">[% l('Save') %]</button>
     </div>
     </form>
index 2390f69..14164f3 100644 (file)
@@ -28,6 +28,17 @@ function($scope , $q , egSerialsCoreSvc , egCore , egGridDataProvider ,
     function reload(ssubId) {
         var ssub = egSerialsCoreSvc.get_ssub(ssubId);
         $scope.predictions = egCore.idl.toTypedHash(ssub.scaps());
+        angular.forEach($scope.predictions, function(pred) {
+            pred._can_edit_or_delete = false;
+            egCore.net.request(
+                'open-ils.serial',
+                'open-ils.serial.caption_and_pattern.safe_delete.dry_run',
+                egCore.auth.token(),
+                pred.id
+            ).then(function(result) {
+                if (result == 1) pred._can_edit_or_delete = true;
+            });
+        });
         egSerialsCoreSvc.fetch_spt().then(function() {
             $scope.pattern_templates = egCore.idl.toTypedHash(egSerialsCoreSvc.sptList);
             $scope.active_pattern_template = { id : null };
@@ -156,7 +167,7 @@ function($scope , $q , egSerialsCoreSvc , egCore , egGridDataProvider ,
         $timeout(function() { $scope.new_prediction.predform.$setDirty() });
     }
 
-    $scope.openPatternEditorDialog = function(pred) {
+    $scope.openPatternEditorDialog = function(pred, viewOnly) {
         $uibModal.open({
             templateUrl: './serials/t_pattern_editor_dialog',
             size: 'lg',
@@ -164,6 +175,7 @@ function($scope , $q , egSerialsCoreSvc , egCore , egGridDataProvider ,
             backdrop: 'static',
             controller:
                 ['$scope', '$uibModalInstance', function($scope, $uibModalInstance) {
+                $scope.viewOnly = viewOnly;
                 $scope.focusMe = true;
                 $scope.patternCode = pred.pattern_code;
                 $scope.ok = function(patternCode) { $uibModalInstance.close(patternCode) }