X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=js%2Fangular-crmCaseType.js;h=8f579356b1ea7bde5d2e85f080814a62b97918c9;hb=11fd83cbe475256b1d25ef3eb5c8c4b1c1f7c167;hp=6a1bc9a50f9d28f3cde17bfb696001d7c50a839b;hpb=778f91a74c6f6143ed40a7a4499d02dfacd7516e;p=civicrm-core.git diff --git a/js/angular-crmCaseType.js b/js/angular-crmCaseType.js index 6a1bc9a50f..8f579356b1 100644 --- a/js/angular-crmCaseType.js +++ b/js/angular-crmCaseType.js @@ -6,23 +6,30 @@ var crmCaseType = angular.module('crmCaseType', ['ngRoute', 'ui.utils', 'crmUi', 'unsavedChanges']); - var newCaseTypeDefinitionTemplate = { - activityTypes: [ - {name: 'Open Case', max_instances: 1 } - ], - activitySets: [ - { - name: 'standard_timeline', - label: 'Standard Timeline', - timeline: '1', // Angular won't bind checkbox correctly with numeric 1 - activityTypes: [ - {name: 'Open Case', status: 'Completed' } - ] - } - ], - caseRoles: [ - { name: 'Case Coordinator', creator: '1', manager: '1'} - ] + // Note: This template will be passed to cloneDeep(), so don't put any funny stuff in here! + var newCaseTypeTemplate = { + title: "", + name: "", + is_active: "1", + weight: "1", + definition: { + activityTypes: [ + {name: 'Open Case', max_instances: 1 } + ], + activitySets: [ + { + name: 'standard_timeline', + label: 'Standard Timeline', + timeline: '1', // Angular won't bind checkbox correctly with numeric 1 + activityTypes: [ + {name: 'Open Case', status: 'Completed' } + ] + } + ], + caseRoles: [ + { name: 'Case Coordinator', creator: '1', manager: '1'} + ] + } }; crmCaseType.config(['$routeProvider', @@ -40,14 +47,30 @@ templateUrl: partialUrl('edit.html'), controller: 'CaseTypeCtrl', resolve: { - selectedCaseType: function($route, crmApi) { - if ( $route.current.params.id !== 'new') { - return crmApi('CaseType', 'getsingle', {id: $route.current.params.id}); - } - else { - return { title: "", name: "", is_active: "1", weight: "1", - definition: _.extend({}, newCaseTypeDefinitionTemplate) }; + apiCalls: function($route, crmApi) { + var reqs = {}; + reqs.actStatuses = ['OptionValue', 'get', { + option_group_id: 'activity_status' + }]; + reqs.actTypes = ['OptionValue', 'get', { + option_group_id: 'activity_type', + options: { + sort: 'name', + limit: 0 + } + }]; + reqs.relTypes = ['RelationshipType', 'get', { + options: { + sort: CRM.crmCaseType.REL_TYPE_CNAME, + limit: 0 + } + }]; + if ($route.current.params.id !== 'new') { + reqs.caseType = ['CaseType', 'getsingle', { + id: $route.current.params.id + }]; } + return crmApi(reqs); } } }); @@ -99,13 +122,13 @@ }; }); - crmCaseType.controller('CaseTypeCtrl', function($scope, crmApi, selectedCaseType) { + crmCaseType.controller('CaseTypeCtrl', function($scope, crmApi, apiCalls) { $scope.partialUrl = partialUrl; - $scope.activityStatuses = CRM.crmCaseType.actStatuses; - $scope.activityTypes = CRM.crmCaseType.actTypes; - $scope.activityTypeNames = _.pluck(CRM.crmCaseType.actTypes, 'name'); - $scope.relationshipTypeNames = _.pluck(CRM.crmCaseType.relTypes, 'label_b_a'); // label_b_a is CRM_Case_XMLProcessor::REL_TYPE_CNAME + $scope.activityStatuses = _.values(apiCalls.actStatuses.values); + $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.workflows = { @@ -113,7 +136,7 @@ 'sequence': 'Sequence' }; - $scope.caseType = selectedCaseType; + $scope.caseType = apiCalls.caseType ? apiCalls.caseType : _.cloneDeep(newCaseTypeTemplate); $scope.caseType.definition = $scope.caseType.definition || []; $scope.caseType.definition.activityTypes = $scope.caseType.definition.activityTypes || []; $scope.caseType.definition.activitySets = $scope.caseType.definition.activitySets || []; @@ -261,6 +284,29 @@ 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(); + } + }); + }; }); })(angular, CRM.$, CRM._); \ No newline at end of file