Mercurial > hg > isophonics-drupal-site
comparison core/lib/Drupal/Core/Ajax/OpenDialogCommand.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children | 7a779792577d |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4c8ae668cc8c |
---|---|
1 <?php | |
2 | |
3 namespace Drupal\Core\Ajax; | |
4 | |
5 use Drupal\Component\Render\PlainTextOutput; | |
6 | |
7 /** | |
8 * Defines an AJAX command to open certain content in a dialog. | |
9 * | |
10 * @ingroup ajax | |
11 */ | |
12 class OpenDialogCommand implements CommandInterface, CommandWithAttachedAssetsInterface { | |
13 | |
14 use CommandWithAttachedAssetsTrait; | |
15 | |
16 /** | |
17 * The selector of the dialog. | |
18 * | |
19 * @var string | |
20 */ | |
21 protected $selector; | |
22 | |
23 /** | |
24 * The title of the dialog. | |
25 * | |
26 * @var string | |
27 */ | |
28 protected $title; | |
29 | |
30 /** | |
31 * The content for the dialog. | |
32 * | |
33 * Either a render array or an HTML string. | |
34 * | |
35 * @var string|array | |
36 */ | |
37 protected $content; | |
38 | |
39 /** | |
40 * Stores dialog-specific options passed directly to jQuery UI dialogs. Any | |
41 * jQuery UI option can be used. See http://api.jqueryui.com/dialog. | |
42 * | |
43 * @var array | |
44 */ | |
45 protected $dialogOptions; | |
46 | |
47 /** | |
48 * Custom settings that will be passed to the Drupal behaviors on the content | |
49 * of the dialog. | |
50 * | |
51 * @var array | |
52 */ | |
53 protected $settings; | |
54 | |
55 /** | |
56 * Constructs an OpenDialogCommand object. | |
57 * | |
58 * @param string $selector | |
59 * The selector of the dialog. | |
60 * @param string $title | |
61 * The title of the dialog. | |
62 * @param string|array $content | |
63 * The content that will be placed in the dialog, either a render array | |
64 * or an HTML string. | |
65 * @param array $dialog_options | |
66 * (optional) Options to be passed to the dialog implementation. Any | |
67 * jQuery UI option can be used. See http://api.jqueryui.com/dialog. | |
68 * @param array|null $settings | |
69 * (optional) Custom settings that will be passed to the Drupal behaviors | |
70 * on the content of the dialog. If left empty, the settings will be | |
71 * populated automatically from the current request. | |
72 */ | |
73 public function __construct($selector, $title, $content, array $dialog_options = [], $settings = NULL) { | |
74 $title = PlainTextOutput::renderFromHtml($title); | |
75 $dialog_options += ['title' => $title]; | |
76 $this->selector = $selector; | |
77 $this->content = $content; | |
78 $this->dialogOptions = $dialog_options; | |
79 $this->settings = $settings; | |
80 } | |
81 | |
82 /** | |
83 * Returns the dialog options. | |
84 * | |
85 * @return array | |
86 */ | |
87 public function getDialogOptions() { | |
88 return $this->dialogOptions; | |
89 } | |
90 | |
91 /** | |
92 * Sets the dialog options array. | |
93 * | |
94 * @param array $dialog_options | |
95 * Options to be passed to the dialog implementation. Any jQuery UI option | |
96 * can be used. See http://api.jqueryui.com/dialog. | |
97 */ | |
98 public function setDialogOptions($dialog_options) { | |
99 $this->dialogOptions = $dialog_options; | |
100 } | |
101 | |
102 /** | |
103 * Sets a single dialog option value. | |
104 * | |
105 * @param string $key | |
106 * Key of the dialog option. Any jQuery UI option can be used. | |
107 * See http://api.jqueryui.com/dialog. | |
108 * @param mixed $value | |
109 * Option to be passed to the dialog implementation. | |
110 */ | |
111 public function setDialogOption($key, $value) { | |
112 $this->dialogOptions[$key] = $value; | |
113 } | |
114 | |
115 /** | |
116 * Sets the dialog title (an alias of setDialogOptions). | |
117 * | |
118 * @param string $title | |
119 * The new title of the dialog. | |
120 */ | |
121 public function setDialogTitle($title) { | |
122 $this->setDialogOptions('title', $title); | |
123 } | |
124 | |
125 /** | |
126 * Implements \Drupal\Core\Ajax\CommandInterface:render(). | |
127 */ | |
128 public function render() { | |
129 // For consistency ensure the modal option is set to TRUE or FALSE. | |
130 $this->dialogOptions['modal'] = isset($this->dialogOptions['modal']) && $this->dialogOptions['modal']; | |
131 return [ | |
132 'command' => 'openDialog', | |
133 'selector' => $this->selector, | |
134 'settings' => $this->settings, | |
135 'data' => $this->getRenderedContent(), | |
136 'dialogOptions' => $this->dialogOptions, | |
137 ]; | |
138 } | |
139 | |
140 } |