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.caseTypes = caseTypes.values;
+ $scope.toggleCaseType = function (caseType) {
+ caseType.is_active = (caseType.is_active == '1') ? '0' : '1';
+ crmApi('CaseType', 'create', caseType, true)
+ .then(function (data) {
+ if (data.is_error) {
+ caseType.is_active = (caseType.is_active == '1') ? '0' : '1'; // revert
+ $scope.$digest();
+ }
+ });
+ };
+ $scope.deleteCaseType = function (caseType) {
+ crmApi('CaseType', 'delete', {id: caseType.id}, {
+ error: function (data) {
+ CRM.alert(data.error_message, ts('Error'));
+ }
+ })
+ .then(function (data) {
+ if (!data.is_error) {
+ delete caseTypes.values[caseType.id];
+ $scope.$digest();
+ }
+ });
+ };
+ $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._);