3declare(strict_types=1);
98 $this->lng = $language;
152 if ($this->exit_control) {
153 throw new \LogicException(
"Only one exit-control per view...", 1);
155 $cmd = $this->url_builder->getHref($command);
157 $label =
'lso_player_suspend';
159 $label =
'lso_player_finish';
162 $exit_button = $this->ui_factory->button()->bulky(
163 $this->ui_factory->symbol()->glyph()->close(),
164 $this->lng->txt($label),
168 $this->exit_control = $exit_button;
177 if ($this->next_control) {
178 throw new \LogicException(
"Only one next-control per view...", 1);
180 $label = $this->lng->txt(
'lso_player_next');
181 $cmd = $this->url_builder->getHref($command, $parameter);
182 $btn = $this->ui_factory->button()->standard($label, $cmd);
183 if ($command ===
'') {
184 $btn = $btn->withUnavailableAction();
186 $this->next_control = $btn;
195 if ($this->previous_control) {
196 throw new \LogicException(
"Only one previous-control per view...", 1);
198 $label = $this->lng->txt(
'lso_player_previous');
199 $cmd = $this->url_builder->getHref($command, $parameter);
200 $btn = $this->ui_factory->button()->standard($label, $cmd);
201 if ($command ===
'') {
202 $btn = $btn->withUnavailableAction();
204 $this->previous_control = $btn;
213 if ($this->done_control) {
214 throw new \LogicException(
"Only one done-control per view...", 1);
216 $label = $this->lng->txt(
'lso_player_done');
217 $cmd = $this->url_builder->getHref($command, $parameter);
218 $btn = $this->ui_factory->button()->primary($label, $cmd);
219 $this->done_control = $btn;
226 public function generic(
string $label,
string $command,
int $parameter =
null) :
ControlBuilder
228 $cmd = $this->url_builder->getHref($command, $parameter);
229 $this->controls[] = $this->ui_factory->button()->standard($label, $cmd);
238 throw new \Exception(
"NYI: Toggles", 1);
240 $cmd_on = $this->url_builder->getHref($on_command, 0);
241 $cmd_off = $this->url_builder->getHref($off_command, 0);
252 foreach ($labels as $parameter => $label) {
253 $actions[$label] = $this->url_builder->getHref($command, $parameter);
255 $this->mode_controls[] = $this->ui_factory->viewControl()->
mode($actions,
'');
265 throw new \LogicException(
"Only one locator per view...", 1);
277 int $parameter =
null,
281 throw new \LogicException(
"Only one ToC per view...", 1);
283 $this->toc =
new LSTOCBuilder($this, $command, $label, $parameter, $state);
297 throw new \LogicException(
"Only one start-control per view...", 1);
299 $this_cmd = $this->url_builder->getHref(self::CMD_START_OBJECT, $parameter);
300 $lp_cmd = str_replace(
302 '&cmd=' . self::CMD_CHECK_CURRENT_ITEM_LP .
'&',
306 $this->setListenerJS($lp_cmd, $this_cmd);
307 $this->start = $this->ui_factory->button()
308 ->primary($label,
'')
309 ->withOnLoadCode(
function ($id) use (
$url) {
310 $interval = $this->global_settings->getPollingIntervalMilliseconds();
311 return "$('#{$id}').on('click', function(ev) {
312 var il_ls_win = window.open('$url');
313 window._lso_current_item_lp = -1;
314 window.setInterval(lso_checkLPOfObject, $interval);
328 return $this->additional_js;
332 string $check_lp_url,
333 string $on_lp_change_url
335 $this->additional_js =
337function lso_checkLPOfObject()
339 if(! il.UICore.isPageVisible()) {
344 url:
"$check_lp_url",
345 }).done(
function(data) {
346 if(window._lso_current_item_lp === -1) {
347 window._lso_current_item_lp = data;
349 if (window._lso_current_item_lp !== data) {
350 location.replace(
'$on_lp_change_url');
An exception for terminatinating execution or to throw for unit testing.
__construct(Factory $ui_factory, LSURLBuilder $url_builder, ilLanguage $language, LSGlobalSettings $global_settings)
tableOfContent(string $label, string $command, int $parameter=null, $state=null)
A table of content allows the user to get an overview over the generally available content in the obj...
done(string $command, int $parameter=null)
A done control allows the user to mark the object as done.The $parameter can be used to pass addition...
previous(string $command, int $parameter=null)
A previous control allows the user to go back to the previous item in the object.The $parameter can b...
exit(string $command)
An exit control allows the user to gracefully leave the object providing the kiosk mode....
const CMD_CHECK_CURRENT_ITEM_LP
mode(string $command, array $labels)
A mode control can be used to switch between different modes in the view.Uses the indizes of the labe...
locator(string $command)
A locator allows the user to see the path leading to her current location and jump back to previous i...
start(string $label, string $url, int $parameter=null)
Add a "start"-button as primary.
setListenerJS(string $check_lp_url, string $on_lp_change_url)
next(string $command, int $parameter=null)
A next control allows the user to progress to the next item in the object.The $parameter can be used ...
toggle(string $label, string $on_command, string $off_command)
A toggle can be used to switch some behaviour in the view on or of.
Global Settings of the Learning Sequence.
if(!file_exists(getcwd() . '/ilias.ini.php'))
registration confirmation script for ilias
Build controls for the view.
mode(string $command, array $labels)
A mode control can be used to switch between different modes in the view.
Build a locator for the view.
Build a nested table of contents for the view.
The URLBuilder allows views to get links that are used somewhere inline in the content.
This is how the factory for UI elements looks.