Merge pull request #4297 from colemanw/CRM-15412
[civicrm-core.git] / js / angular-crmCaseType.js
index 8f579356b1ea7bde5d2e85f080814a62b97918c9..c7cfd6570e7fc53f02820168510ee921705eb801 100644 (file)
     weight: "1",
     definition: {
       activityTypes: [
-        {name: 'Open Case', max_instances: 1 }
+        {name: 'Open Case', max_instances: 1},
+        {name: 'Email'},
+        {name: 'Follow up'},
+        {name: 'Meeting'},
+        {name: 'Phone Call'}
       ],
       activitySets: [
         {
     $scope.activityTypes = apiCalls.actTypes.values;
     $scope.activityTypeNames = _.pluck(apiCalls.actTypes.values, 'name');
     $scope.relationshipTypeNames = _.pluck(apiCalls.relTypes.values, CRM.crmCaseType.REL_TYPE_CNAME); // CRM_Case_XMLProcessor::REL_TYPE_CNAME
-    $scope.locks = {caseTypeName: true};
+    $scope.locks = {caseTypeName: true, activitySetName: true};
 
     $scope.workflows = {
       'timeline': 'Timeline',
       }
     };
 
+    $scope.isForkable = function() {
+      return !$scope.caseType.id || $scope.caseType.is_forkable
+    };
+
     $scope.isNewActivitySetAllowed = function(workflow) {
       switch (workflow) {
         case 'timeline':
         case 'sequence':
           return 0 == _.where($scope.caseType.definition.activitySets, {sequence: '1'}).length;
         default:
-          if (console && console.log) console.log('Denied access to unrecognized workflow: (' + workflow + ')');
+          CRM.console('warn', 'Denied access to unrecognized workflow: (' + workflow + ')');
           return false;
       }
     };
 
+    $scope.isActivityRemovable = function(activitySet, activity) {
+      if (activitySet.name == 'standard_timeline' && activity.name == 'Open Case') {
+        return false;
+      } else {
+        return true;
+      }
+    };
+
+    $scope.isValidName = function(name) {
+      return !name || name.match(/^[a-zA-Z0-9_]+$/);
+    };
+
     $scope.getWorkflowName = function(activitySet) {
       var result = 'Unknown';
       _.each($scope.workflows, function(value, key) {
     };
     $scope.$watch('locks.caseTypeName', updateCaseTypeName);
     $scope.$watch('caseType.title', updateCaseTypeName);
+
+    if (!$scope.isForkable()) {
+      CRM.alert(ts('The CiviCase XML file for this case-type prohibits editing the definition.'));
+    }
   });
 
   crmCaseType.controller('CaseTypeListCtrl', function($scope, crmApi, caseTypes) {
           }
         });
     };
+    $scope.revertCaseType = function (caseType) {
+      caseType.definition = 'null';
+      caseType.is_forked = '0';
+      crmApi('CaseType', 'create', caseType, true)
+        .then(function (data) {
+          if (data.is_error) {
+            caseType.is_forked = '1'; // restore
+            $scope.$digest();
+          }
+        });
+    };
   });
 
-})(angular, CRM.$, CRM._);
\ No newline at end of file
+})(angular, CRM.$, CRM._);