Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

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

…-responses

BUGFIX: Add batch handler status messages (fixes #7427)
  • Loading branch information...
commit bafda9395731448defea7a0fc325cf2185ba8bd3 2 parents 5e47159 + 0346923
@sminnee sminnee authored
Showing with 33 additions and 10 deletions.
  1. +33 −10 admin/code/CMSBatchAction.php
View
43 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);
}
Please sign in to comment.
Something went wrong with that request. Please try again.