Changeset View
Changeset View
Standalone View
Standalone View
src/applications/herald/controller/HeraldTranscriptController.php
Show First 20 Lines • Show All 218 Lines • ▼ Show 20 Lines | if ($xscript->getObjectTranscript()) { | ||||
->appendChild($body); | ->appendChild($body); | ||||
} | } | ||||
} | } | ||||
} | } | ||||
return $panel; | return $panel; | ||||
} | } | ||||
private function buildActionTranscriptPanel(HeraldTranscript $xscript) { | private function buildActionTranscriptPanel(HeraldTranscript $xscript) { | ||||
$viewer = $this->getViewer(); | |||||
$action_xscript = mgroup($xscript->getApplyTranscripts(), 'getRuleID'); | $action_xscript = mgroup($xscript->getApplyTranscripts(), 'getRuleID'); | ||||
$adapter = $this->getAdapter(); | $adapter = $this->getAdapter(); | ||||
$field_names = $adapter->getFieldNameMap(); | $field_names = $adapter->getFieldNameMap(); | ||||
$condition_names = $adapter->getConditionNameMap(); | $condition_names = $adapter->getConditionNameMap(); | ||||
$handles = $this->handles; | $handles = $this->handles; | ||||
Show All 13 Lines | foreach ($rule_xscripts as $rule_xscript) { | ||||
$rule_monogram = pht('H%d', $rule_id); | $rule_monogram = pht('H%d', $rule_id); | ||||
$rule_uri = '/'.$rule_monogram; | $rule_uri = '/'.$rule_monogram; | ||||
$rule_item = id(new PHUIObjectItemView()) | $rule_item = id(new PHUIObjectItemView()) | ||||
->setObjectName($rule_monogram) | ->setObjectName($rule_monogram) | ||||
->setHeader($rule_xscript->getRuleName()) | ->setHeader($rule_xscript->getRuleName()) | ||||
->setHref($rule_uri); | ->setHref($rule_uri); | ||||
if (!$rule_xscript->getResult()) { | $rule_result = $rule_xscript->getRuleResult(); | ||||
if (!$rule_result->getShouldApplyActions()) { | |||||
$rule_item->setDisabled(true); | $rule_item->setDisabled(true); | ||||
} | } | ||||
$rule_list->addItem($rule_item); | $rule_list->addItem($rule_item); | ||||
// Build the field/condition transcript. | // Build the field/condition transcript. | ||||
$cond_xscripts = $xscript->getConditionTranscriptsForRule($rule_id); | $cond_xscripts = $xscript->getConditionTranscriptsForRule($rule_id); | ||||
$cond_list = id(new PHUIStatusListView()); | $cond_list = id(new PHUIStatusListView()); | ||||
$cond_list->addItem( | $cond_list->addItem( | ||||
id(new PHUIStatusItemView()) | id(new PHUIStatusItemView()) | ||||
->setTarget(phutil_tag('strong', array(), pht('Conditions')))); | ->setTarget(phutil_tag('strong', array(), pht('Conditions')))); | ||||
foreach ($cond_xscripts as $cond_xscript) { | foreach ($cond_xscripts as $cond_xscript) { | ||||
$result = $cond_xscript->getResult(); | $result = $cond_xscript->getResult(); | ||||
$icon = $result->getIconIcon(); | $icon = $result->getIconIcon(); | ||||
$color = $result->getIconColor(); | $color = $result->getIconColor(); | ||||
$name = $result->getName(); | $name = $result->getName(); | ||||
$result_details = $result->newDetailsView(); | $result_details = $result->newDetailsView($viewer); | ||||
if ($result_details !== null) { | if ($result_details !== null) { | ||||
$result_details = phutil_tag( | $result_details = phutil_tag( | ||||
'div', | 'div', | ||||
array( | array( | ||||
'class' => 'herald-condition-note', | 'class' => 'herald-condition-note', | ||||
), | ), | ||||
$result_details); | $result_details); | ||||
} | } | ||||
Show All 9 Lines | foreach ($rule_xscripts as $rule_xscript) { | ||||
$cond_item = id(new PHUIStatusItemView()) | $cond_item = id(new PHUIStatusItemView()) | ||||
->setIcon($icon, $color) | ->setIcon($icon, $color) | ||||
->setTarget($name) | ->setTarget($name) | ||||
->setNote(array($explanation, $result_details)); | ->setNote(array($explanation, $result_details)); | ||||
$cond_list->addItem($cond_item); | $cond_list->addItem($cond_item); | ||||
} | } | ||||
if ($rule_xscript->isForbidden()) { | $rule_result = $rule_xscript->getRuleResult(); | ||||
$last_icon = 'fa-ban'; | |||||
$last_color = 'indigo'; | $last_icon = $rule_result->getIconIcon(); | ||||
$last_result = pht('Forbidden'); | $last_color = $rule_result->getIconColor(); | ||||
$last_note = pht('Object state prevented rule evaluation.'); | $last_result = $rule_result->getName(); | ||||
} else if ($rule_xscript->getResult()) { | $last_note = $rule_result->getDescription(); | ||||
$last_icon = 'fa-check-circle'; | |||||
$last_color = 'green'; | $last_details = $rule_result->newDetailsView($viewer); | ||||
$last_result = pht('Passed'); | if ($last_details !== null) { | ||||
$last_note = pht('Rule passed.'); | $last_details = phutil_tag( | ||||
} else { | 'div', | ||||
$last_icon = 'fa-times-circle'; | array( | ||||
$last_color = 'red'; | 'class' => 'herald-condition-note', | ||||
$last_result = pht('Failed'); | ), | ||||
$last_note = pht('Rule failed.'); | $last_details); | ||||
} | } | ||||
$cond_last = id(new PHUIStatusItemView()) | $cond_last = id(new PHUIStatusItemView()) | ||||
->setIcon($last_icon, $last_color) | ->setIcon($last_icon, $last_color) | ||||
->setTarget(phutil_tag('strong', array(), $last_result)) | ->setTarget(phutil_tag('strong', array(), $last_result)) | ||||
->setNote($last_note); | ->setNote(array($last_note, $last_details)); | ||||
$cond_list->addItem($cond_last); | $cond_list->addItem($cond_last); | ||||
$cond_box = id(new PHUIBoxView()) | $cond_box = id(new PHUIBoxView()) | ||||
->appendChild($cond_list) | ->appendChild($cond_list) | ||||
->addMargin(PHUI::MARGIN_LARGE_LEFT); | ->addMargin(PHUI::MARGIN_LARGE_LEFT); | ||||
$rule_item->appendChild($cond_box); | $rule_item->appendChild($cond_box); | ||||
if (!$rule_xscript->getResult()) { | // Not all rules will have any action transcripts, but we show them | ||||
// If the rule didn't pass, don't generate an action transcript since | // in general because they may have relevant information even when | ||||
// actions didn't apply. | // rules did not take actions. In particular, state-based actions may | ||||
continue; | // forbid rules from matching. | ||||
} | |||||
$cond_box->addMargin(PHUI::MARGIN_MEDIUM_BOTTOM); | $cond_box->addMargin(PHUI::MARGIN_MEDIUM_BOTTOM); | ||||
$action_xscripts = idx($action_map, $rule_id, array()); | $action_xscripts = idx($action_map, $rule_id, array()); | ||||
foreach ($action_xscripts as $action_xscript) { | foreach ($action_xscripts as $action_xscript) { | ||||
$action_key = $action_xscript->getAction(); | $action_key = $action_xscript->getAction(); | ||||
$action = $adapter->getActionImplementation($action_key); | $action = $adapter->getActionImplementation($action_key); | ||||
▲ Show 20 Lines • Show All 457 Lines • Show Last 20 Lines |