ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
Toggle.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
22
24use ILIAS\UI\Implementation\Component\ComponentHelper;
28
29class Toggle extends Button implements C\Button\Toggle
30{
31 use ComponentHelper;
33 use Triggerer;
34
35 protected ?string $action_off = null;
36 protected ?string $action_on = null;
37
38 public function __construct(string $label, $action_on, $action_off, bool $is_on, ?Signal $click = null)
39 {
40 $this->checkStringOrSignalArg("action", $action_on);
41 $this->checkStringOrSignalArg("action_off", $action_off);
42
43 // no way to resolve conflicting string actions
44 $button_action = (is_null($click)) ? "" : $click;
45
46 parent::__construct($label, $button_action);
47
48 if (is_string($action_on)) {
49 $this->action_on = $action_on;
50 } else {
51 $this->setTriggeredSignal($action_on, "toggle_on");
52 }
53
54 if (is_string($action_off)) {
55 $this->action_off = $action_off;
56 } else {
57 $this->setTriggeredSignal($action_off, "toggle_off");
58 }
59
60 $this->is_engageable = true;
61 $this->engaged = $is_on;
62 }
63
67 public function getActionOff()
68 {
69 if ($this->action_off !== null) {
70 return $this->action_off;
71 }
72
73 return $this->getTriggeredSignalsFor("toggle_off");
74 }
75
79 public function getActionOn()
80 {
81 if ($this->action_on !== null) {
82 return $this->action_on;
83 }
84
85 return $this->getTriggeredSignalsFor("toggle_on");
86 }
87
89 {
90 return $this->appendTriggeredSignal($signal, "toggle_on");
91 }
92
94 {
95 return $this->appendTriggeredSignal($signal, "toggle_off");
96 }
97}
__construct(string $label, $action_on, $action_off, bool $is_on, ?Signal $click=null)
Definition: Toggle.php:38
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Definition: Bulky.php:21
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Definition: Bulky.php:21
appendTriggeredSignal(C\Signal $signal, string $event)
Append a triggered signal to other signals of the same event.
Definition: Triggerer.php:47
getTriggeredSignalsFor(string $event)
Get signals that are triggered for a certain event.
Definition: Triggerer.php:94
trait JavaScriptBindable
Trait for components implementing JavaScriptBindable providing standard implementation.
setTriggeredSignal(C\Signal $signal, string $event)
Add a triggered signal, replacing any other signals registered on the same event.
Definition: Triggerer.php:75