Skip to content

Commit

Permalink
Merge pull request #12236 from agileware/CIVICRM-874
Browse files Browse the repository at this point in the history
CiviCase, added reference of activities from different timelines.
  • Loading branch information
colemanw authored Jun 30, 2018
2 parents eabff8a + 093f1cf commit 784dd9c
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 10 deletions.
8 changes: 7 additions & 1 deletion CRM/Case/BAO/CaseType.php
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,8 @@ public static function convertXmlToDefinition($xml) {
// set activity sets
if (isset($xml->ActivitySets)) {
$definition['activitySets'] = array();
$definition['timelineActivityTypes'] = array();

foreach ($xml->ActivitySets->ActivitySet as $activitySetXML) {
// parse basic properties
$activitySet = array();
Expand All @@ -257,7 +259,11 @@ public static function convertXmlToDefinition($xml) {
if (isset($activitySetXML->ActivityTypes)) {
$activitySet['activityTypes'] = array();
foreach ($activitySetXML->ActivityTypes->ActivityType as $activityTypeXML) {
$activitySet['activityTypes'][] = json_decode(json_encode($activityTypeXML), TRUE);
$activityType = json_decode(json_encode($activityTypeXML), TRUE);
$activitySet['activityTypes'][] = $activityType;
if ($activitySetXML->timeline) {
$definition['timelineActivityTypes'][] = $activityType;
}
}
}
$definition['activitySets'][] = $activitySet;
Expand Down
33 changes: 25 additions & 8 deletions ang/crmCaseType.js
Original file line number Diff line number Diff line change
Expand Up @@ -261,6 +261,8 @@
$scope.caseType.definition.caseRoles = $scope.caseType.definition.caseRoles || [];
$scope.caseType.definition.statuses = $scope.caseType.definition.statuses || [];

$scope.caseType.definition.timelineActivityTypes = $scope.caseType.definition.timelineActivityTypes || [];

$scope.selectedStatuses = {};
_.each(apiCalls.caseStatuses.values, function (status) {
$scope.selectedStatuses[status.name] = !$scope.caseType.definition.statuses.length || $scope.caseType.definition.statuses.indexOf(status.name) > -1;
Expand Down Expand Up @@ -288,14 +290,27 @@
}

function addActivityToSet(activitySet, activityTypeName) {
activitySet.activityTypes.push({
name: activityTypeName,
label: $scope.activityTypes[activityTypeName].label,
status: 'Scheduled',
reference_activity: 'Open Case',
reference_offset: '1',
reference_select: 'newest'
});
var activity = {
name: activityTypeName,
label: $scope.activityTypes[activityTypeName].label,
status: 'Scheduled',
reference_activity: 'Open Case',
reference_offset: '1',
reference_select: 'newest'
};
activitySet.activityTypes.push(activity);
if(typeof activitySet.timeline !== "undefined" && activitySet.timeline == "1") {
$scope.caseType.definition.timelineActivityTypes.push(activity);
}
}

function resetTimelineActivityTypes() {
$scope.caseType.definition.timelineActivityTypes = [];
angular.forEach($scope.caseType.definition.activitySets, function(activitySet) {
angular.forEach(activitySet.activityTypes, function(activityType) {
$scope.caseType.definition.timelineActivityTypes.push(activityType);
});
});
}

function createActivity(name, callback) {
Expand Down Expand Up @@ -363,6 +378,7 @@
var idx = _.indexOf(array, item);
if (idx != -1) {
array.splice(idx, 1);
resetTimelineActivityTypes();
}
};

Expand Down Expand Up @@ -462,6 +478,7 @@
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) {
Expand Down
2 changes: 1 addition & 1 deletion ang/crmCaseType/timelineTable.html
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
ui-jq="select2"
ui-options="{dropdownAutoWidth : true}"
ng-model="activity.reference_activity"
ng-options="activityType.name as activityType.label for activityType in activitySet.activityTypes"
ng-options="activityType.name as activityType.label for activityType in caseType.definition.timelineActivityTypes"
>
<option value="">-- Case Start --</option>
</select>
Expand Down
13 changes: 13 additions & 0 deletions tests/phpunit/CRM/Case/BAO/CaseTypeTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ public function definitionProvider() {
'activitySets' => array(),
'activityTypes' => array(),
'caseRoles' => array(),
'timelineActivityTypes' => array(),
)),
'xml' => file_get_contents(__DIR__ . '/xml/empty-lists.xml'),
);
Expand All @@ -42,6 +43,9 @@ public function definitionProvider() {
),
),
),
'timelineActivityTypes' => array(
array('name' => 'Open Case', 'status' => 'Completed'),
),
'caseRoles' => array(
array('name' => 'First role', 'creator' => 1, 'manager' => 1),
),
Expand Down Expand Up @@ -80,6 +84,15 @@ public function definitionProvider() {
),
),
),
'timelineActivityTypes' => array(
array('name' => 'Open Case', 'status' => 'Completed'),
array(
'name' => 'Meeting',
'reference_activity' => 'Open Case',
'reference_offset' => 1,
'reference_select' => 'newest',
),
),
'caseRoles' => array(
array('name' => 'First role', 'creator' => 1, 'manager' => 1),
array('name' => 'Second role'),
Expand Down
3 changes: 3 additions & 0 deletions tests/phpunit/api/v3/CaseTypeTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,9 @@ public function setUp() {
),
),
),
'timelineActivityTypes' => array(
array('name' => 'Open Case', 'status' => 'Completed'),
),
'caseRoles' => array(
array('name' => 'First role', 'creator' => 1, 'manager' => 1),
),
Expand Down

0 comments on commit 784dd9c

Please sign in to comment.