Mercurial > hg > isophonics-drupal-site
diff core/lib/Drupal/Core/Ajax/SettingsCommand.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/lib/Drupal/Core/Ajax/SettingsCommand.php Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,64 @@ +<?php + +namespace Drupal\Core\Ajax; + +/** + * AJAX command for adjusting Drupal's JavaScript settings. + * + * The 'settings' command instructs the client either to use the given array as + * the settings for ajax-loaded content or to extend drupalSettings with the + * given array, depending on the value of the $merge parameter. + * + * This command is implemented by Drupal.AjaxCommands.prototype.settings() + * defined in misc/ajax.js. + * + * @ingroup ajax + */ +class SettingsCommand implements CommandInterface { + + /** + * An array of key/value pairs of JavaScript settings. + * + * This will be used for all commands after this if they do not include their + * own settings array. + * + * @var array + */ + protected $settings; + + /** + * Whether the settings should be merged into the global drupalSettings. + * + * By default (FALSE), the settings that are passed to Drupal.attachBehaviors + * will not include the global drupalSettings. + * + * @var bool + */ + protected $merge; + + /** + * Constructs a SettingsCommand object. + * + * @param array $settings + * An array of key/value pairs of JavaScript settings. + * @param bool $merge + * Whether the settings should be merged into the global drupalSettings. + */ + public function __construct(array $settings, $merge = FALSE) { + $this->settings = $settings; + $this->merge = $merge; + } + + /** + * Implements Drupal\Core\Ajax\CommandInterface:render(). + */ + public function render() { + + return [ + 'command' => 'settings', + 'settings' => $this->settings, + 'merge' => $this->merge, + ]; + } + +}