19 declare(strict_types=1);
107 MainControls\Slate\Slate::class
110 $this->checkArgListElements(
"Bulky or Slate",
$check, $classes);
112 if (array_key_exists($id, $this->entries)) {
116 $clone = clone $this;
117 $clone->entries[
$id] = $entry;
135 bool $initially_hidden =
false,
138 if (!$this->tools_button) {
139 throw new LogicException(
"There must be a tool-button configured to add tool-entries", 1);
142 if (array_key_exists($id, $this->tool_entries)) {
146 $clone = clone $this;
147 $clone->tool_entries[
$id] = $entry;
148 $signal = $this->signal_generator->create();
149 $signal->addOption(
'entry_id', $id);
150 $signal->addOption(
'action', self::ENTRY_ACTION_TRIGGER_MAPPED);
151 $clone->tool_signals[
$id] = $signal;
153 if ($initially_hidden) {
154 $clone->initially_hidden_ids[] =
$id;
158 $clone->close_buttons[
$id] = $close_button;
168 $clone = clone $this;
169 $clone->tools_button = $button;
226 $this->entry_click_signal = $this->signal_generator->create();
227 $this->tools_click_signal = $this->signal_generator->create();
228 $this->tools_removal_signal = $this->signal_generator->create();
229 $this->disengage_all_signal = $this->signal_generator->create();
230 $this->disengage_all_signal->addOption(
'action', self::ENTRY_ACTION_DISENGAGE_ALL);
231 $this->toggle_tools_signal = $this->signal_generator->create();
232 $this->toggle_tools_signal->addOption(
'action', self::ENTRY_ACTION_TOGGLE_TOOLS);
237 $clone = clone $this;
238 $clone->initSignals();
239 foreach (array_keys($this->tool_entries) as $tool_id) {
240 $this->tool_signals[$tool_id] = $this->signal_generator->create();
258 $valid_entries = array_merge(
259 array_keys($this->entries),
260 array_keys($this->tool_entries),
263 if (!in_array($active, $valid_entries)) {
267 $clone = clone $this;
277 return array_unique($this->initially_hidden_ids);
285 return $this->tool_signals[$tool_id];
299 $clone = clone $this;
300 $clone->entries = [];
301 $clone->tool_entries = [];
309 if (!in_array($action, [self::ENTRY_ACTION_TRIGGER, self::ENTRY_ACTION_REMOVE])) {
312 $signal = $this->signal_generator->create();
313 $signal->addOption(
'entry_id', $entry_id);
314 $signal->addOption(
'action', $action);
320 $clone = clone $this;
321 $clone->mainbar_tree_position = $tree_pos;
327 $clone = clone $this;
330 foreach ($clone->getEntries() as $k => $v) {
331 $clone->entries[$k] =
$f($counter, $v,
false);
336 foreach ($clone->getToolEntries() as $k => $v) {
337 $clone->tool_entries[$k] =
$f($counter, $v,
true);
Signal $tools_click_signal
const ENTRY_ACTION_TRIGGER
Signal $entry_click_signal
This describes the MainBar.
Button Bulky $tools_button
__construct(SignalGeneratorInterface $signal_generator)
trait JavaScriptBindable
Trait for components implementing JavaScriptBindable providing standard implementation.
withAdditionalEntry(string $id, $entry)
const ENTRY_ACTION_TOGGLE_TOOLS
initSignals()
Set the signals for this component.
const ENTRY_ACTION_REMOVE
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
withMappedSubNodes(callable $f)
Signal $toggle_tools_signal
string $mainbar_tree_position
getInitiallyHiddenToolIds()
Signal $tools_removal_signal
const ENTRY_ACTION_TRIGGER_MAPPED
getEngageToolSignal(string $tool_id)
withMainBarTreePosition(string $tree_pos)
withActive(string $active)
Button Bulky $more_button
getTriggerSignal(string $entry_id, string $action)
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins
const ENTRY_ACTION_DISENGAGE_ALL
array $initially_hidden_ids
withToolsButton(Button\Bulky $button)
Signal $disengage_all_signal
SignalGeneratorInterface $signal_generator
withAdditionalToolEntry(string $id, Slate $entry, bool $initially_hidden=false, ?Button\Close $close_button=null)