Permalink
Browse files

Merge pull request #563 from silverstripe-rebelalliance/trac/7427-add…

…-responses

BUGFIX: Add batch handler status messages (fixes #7427)
  • Loading branch information...
sminnee committed Jun 22, 2012
2 parents 5e47159 + 0346923 commit bafda9395731448defea7a0fc325cf2185ba8bd3
Showing with 33 additions and 10 deletions.
  1. +33 −10 admin/code/CMSBatchAction.php
@@ -27,7 +27,38 @@
* Return a set of status-updated JavaScript to return to the CMS.
*/
abstract function run(SS_List $objs);
/**
* Helper method for responding to a back action request
* @param $successMessage string - The message to return as a notification.
* Can have up to two %d's in it. The first will be replaced by the number of successful
* changes, the second by the number of failures
* @param $status array - A status array like batchactions builds. Should be
* key => value pairs, the key can be any string: "error" indicates errors, anything
* else indicates a type of success. The value is an array. We don't care what's in it,
* we just use count($value) to find the number of items that succeeded or failed
*/
public function response($successMessage, $status) {
$count = 0;
$errors = 0;
foreach($status as $k => $v) {
if ($k == 'errors') $errors = count($v);
else $count += count($v);
}
$response = Controller::curr()->getResponse();
if($response) {
$response->setStatusCode(
200,
sprintf($successMessage, $count, $errors)
);
}
return Convert::raw2json($status);
}
/**
* Helper method for processing batch actions.
* Returns a set of status-updating JavaScript to return to the CMS.
@@ -67,15 +98,7 @@ public function batchaction(SS_List $objs, $helperMethod, $successMessage, $argu
unset($obj);
}
$response = Controller::curr()->getResponse();
if($response) {
$response->setStatusCode(
200,
sprintf($successMessage, $objs->Count(), count($status['error']))
);
}
return Convert::raw2json($status);
return $this->response($successMessage, $status);
}

0 comments on commit bafda93

Please sign in to comment.