Mercurial > hg > isophonics-drupal-site
comparison core/lib/Drupal/Core/Ajax/AjaxResponse.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4c8ae668cc8c |
---|---|
1 <?php | |
2 | |
3 namespace Drupal\Core\Ajax; | |
4 | |
5 use Drupal\Core\Render\BubbleableMetadata; | |
6 use Drupal\Core\Render\AttachmentsInterface; | |
7 use Drupal\Core\Render\AttachmentsTrait; | |
8 use Symfony\Component\HttpFoundation\JsonResponse; | |
9 | |
10 /** | |
11 * JSON response object for AJAX requests. | |
12 * | |
13 * @ingroup ajax | |
14 */ | |
15 class AjaxResponse extends JsonResponse implements AttachmentsInterface { | |
16 | |
17 use AttachmentsTrait; | |
18 | |
19 /** | |
20 * The array of ajax commands. | |
21 * | |
22 * @var array | |
23 */ | |
24 protected $commands = []; | |
25 | |
26 /** | |
27 * Add an AJAX command to the response. | |
28 * | |
29 * @param \Drupal\Core\Ajax\CommandInterface $command | |
30 * An AJAX command object implementing CommandInterface. | |
31 * @param bool $prepend | |
32 * A boolean which determines whether the new command should be executed | |
33 * before previously added commands. Defaults to FALSE. | |
34 * | |
35 * @return AjaxResponse | |
36 * The current AjaxResponse. | |
37 */ | |
38 public function addCommand(CommandInterface $command, $prepend = FALSE) { | |
39 if ($prepend) { | |
40 array_unshift($this->commands, $command->render()); | |
41 } | |
42 else { | |
43 $this->commands[] = $command->render(); | |
44 } | |
45 if ($command instanceof CommandWithAttachedAssetsInterface) { | |
46 $assets = $command->getAttachedAssets(); | |
47 $attachments = [ | |
48 'library' => $assets->getLibraries(), | |
49 'drupalSettings' => $assets->getSettings(), | |
50 ]; | |
51 $attachments = BubbleableMetadata::mergeAttachments($this->getAttachments(), $attachments); | |
52 $this->setAttachments($attachments); | |
53 } | |
54 | |
55 return $this; | |
56 } | |
57 | |
58 /** | |
59 * Gets all AJAX commands. | |
60 * | |
61 * @return \Drupal\Core\Ajax\CommandInterface[] | |
62 * Returns all previously added AJAX commands. | |
63 */ | |
64 public function &getCommands() { | |
65 return $this->commands; | |
66 } | |
67 | |
68 } |