Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / web / core / lib / Drupal / Core / Ajax / SettingsCommand.php
1 <?php
2
3 namespace Drupal\Core\Ajax;
4
5 /**
6  * AJAX command for adjusting Drupal's JavaScript settings.
7  *
8  * The 'settings' command instructs the client either to use the given array as
9  * the settings for ajax-loaded content or to extend drupalSettings with the
10  * given array, depending on the value of the $merge parameter.
11  *
12  * This command is implemented by Drupal.AjaxCommands.prototype.settings()
13  * defined in misc/ajax.js.
14  *
15  * @ingroup ajax
16  */
17 class SettingsCommand implements CommandInterface {
18
19   /**
20    * An array of key/value pairs of JavaScript settings.
21    *
22    * This will be used for all commands after this if they do not include their
23    * own settings array.
24    *
25    * @var array
26    */
27   protected $settings;
28
29   /**
30    * Whether the settings should be merged into the global drupalSettings.
31    *
32    * By default (FALSE), the settings that are passed to Drupal.attachBehaviors
33    * will not include the global drupalSettings.
34    *
35    * @var bool
36    */
37   protected $merge;
38
39   /**
40    * Constructs a SettingsCommand object.
41    *
42    * @param array $settings
43    *   An array of key/value pairs of JavaScript settings.
44    * @param bool $merge
45    *   Whether the settings should be merged into the global drupalSettings.
46    */
47   public function __construct(array $settings, $merge = FALSE) {
48     $this->settings = $settings;
49     $this->merge = $merge;
50   }
51
52   /**
53    * Implements Drupal\Core\Ajax\CommandInterface:render().
54    */
55   public function render() {
56
57     return [
58       'command' => 'settings',
59       'settings' => $this->settings,
60       'merge' => $this->merge,
61     ];
62   }
63
64 }