ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
LSControlBuilder Class Reference

Class LSControlBuilder. More...

+ Inheritance diagram for LSControlBuilder:
+ Collaboration diagram for LSControlBuilder:

Public Member Functions

 __construct (Factory $ui_factory, LSURLBuilder $url_builder, ilLanguage $language, LSGlobalSettings $global_settings)
 
 getExitControl ()
 
 getPreviousControl ()
 
 getNextControl ()
 
 getDoneControl ()
 
 getToggles ()
 
 getModeControls ()
 
 getControls ()
 
 getLocator ()
 
 getToc ()
 
 exit (string $command)
 An exit control allows the user to gracefully leave the object providing the kiosk mode.
Exceptions

LogicException if view wants to introduce a second exit button. More...

 
 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 to pass additional information to View::updateGet if required, e.g. about a chapter in the content.
Exceptions

LogicException if view wants to introduce a second next button. More...

 
 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 be used to pass additional information to View::updateGet if required, e.g. about a chapter in the content.
Exceptions

LogicException if view wants to introduce a second previous button. More...

 
 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 additional information to View::updateGet if required, e.g. about a chapter in the content.
Exceptions

LogicException if view wants to introduce a second done button. More...

 
 generic (string $label, string $command, int $parameter=null)
 A generic control needs to have a label that tells what it does.The $parameter can be used to pass additional information to View::updateGet if required, e.g. about a chapter in the content. More...
 
 toggle (string $label, string $on_command, string $off_command)
 A toggle can be used to switch some behaviour in the view on or of. More...
 
 mode (string $command, array $labels)
 A mode control can be used to switch between different modes in the view.Uses the indizes of the labels in the array as parameter for the command. More...
 
 locator (string $command)
 A locator allows the user to see the path leading to her current location and jump back to previous items on that path.The command will be enhanced with a parameter defined in the locator builder.
Exceptions

LogicException if view wants to introduce a second locator. More...

 
 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 object.The command will be enhanced with a parameter defined here on in the locator builder.If a parameter is defined here, the view provides an overview-page.
Exceptions

LogicException if view wants to introduce a second TOC.

Parameters
mixed$stateone of the STATE_ constants from TOCBuilder
More...
 
 start (string $label, string $url, int $parameter=null)
 Add a "start"-button as primary. More...
 
 getStartControl ()
 
 getAdditionalJS ()
 
 exit (string $command)
 An exit control allows the user to gracefully leave the object providing the kiosk mode. More...
 
 next (string $command, int $parameter=null)
 A next control allows the user to progress to the next item in the object. More...
 
 previous (string $command, int $parameter=null)
 A previous control allows the user to go back to the previous item in the object. More...
 
 done (string $command, int $parameter=null)
 A done control allows the user to mark the object as done. More...
 
 generic (string $label, string $command, int $parameter=null)
 A generic control needs to have a label that tells what it does. More...
 
 toggle (string $label, string $on_command, string $off_command)
 A toggle can be used to switch some behaviour in the view on or of. More...
 
 mode (string $command, array $labels)
 A mode control can be used to switch between different modes in the view. More...
 
 locator (string $command)
 A locator allows the user to see the path leading to her current location and jump back to previous items on that path. More...
 
 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 object. More...
 

Data Fields

const CMD_START_OBJECT = 'start_legacy_obj'
 
const CMD_CHECK_CURRENT_ITEM_LP = 'ccilp'
 
const PARAM_LP_CURRENT_ITEM_OBJID = 'ccilpobjid'
 

Protected Member Functions

 getStartSignal ()
 This is a hack and not supposed to be considered as a common way to inject JS-Code and bind it to a button. More...
 
 setListenerJS (string $signal_id, string $new_win_url, string $check_lp_url, string $on_lp_change_url)
 

Protected Attributes

 $exit_control
 
 $previous_control
 
 $next_control
 
 $done_control
 
 $controls = []
 
 $toggles = []
 
 $mode_controls = []
 
 $toc
 
 $loc
 
 $ui_factory
 
 $url_builder
 
 $start
 
 $additional_js
 
 $global_settings
 

Detailed Description

Class LSControlBuilder.

Definition at line 15 of file LSControlBuilder.php.

Constructor & Destructor Documentation

◆ __construct()

LSControlBuilder::__construct ( Factory  $ui_factory,
LSURLBuilder  $url_builder,
ilLanguage  $language,
LSGlobalSettings  $global_settings 
)

Definition at line 91 of file LSControlBuilder.php.

96 {
97 $this->ui_factory = $ui_factory;
98 $this->url_builder = $url_builder;
99 $this->lng = $language;
100 $this->global_settings = $global_settings;
101 }

References $global_settings, $language, $ui_factory, and $url_builder.

Member Function Documentation

◆ done()

LSControlBuilder::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 additional information to View::updateGet if required, e.g. about a chapter in the content.

Exceptions

LogicException if view wants to introduce a second done button.

Implements ILIAS\KioskMode\ControlBuilder.

Definition at line 211 of file LSControlBuilder.php.

212 {
213 if ($this->done_control) {
214 throw new \LogicException("Only one done-control per view...", 1);
215 }
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;
220 return $this;
221 }
Build controls for the view.

◆ exit()

LSControlBuilder::exit ( string  $command)

An exit control allows the user to gracefully leave the object providing the kiosk mode.

Exceptions

LogicException if view wants to introduce a second exit button.

Implements ILIAS\KioskMode\ControlBuilder.

Definition at line 151 of file LSControlBuilder.php.

152 {
153 if ($this->exit_control) {
154 throw new \LogicException("Only one exit-control per view...", 1);
155 }
156 $cmd = $this->url_builder->getHref($command);
157
158 $label = 'lso_player_suspend';
159 if ($command === ilLSPlayer::LSO_CMD_FINISH) {
160 $label = 'lso_player_finish';
161 }
162
163 $exit_button = $this->ui_factory->button()->shy(
164 $this->lng->txt($label),
165 $cmd
166 );
167
168 $this->exit_control = $exit_button;
169 return $this;
170 }
const LSO_CMD_FINISH

References ilLSPlayer\LSO_CMD_FINISH.

Referenced by ilLSPlayer\buildDefaultControls().

+ Here is the caller graph for this function:

◆ generic()

LSControlBuilder::generic ( string  $label,
string  $command,
int  $parameter = null 
)

A generic control needs to have a label that tells what it does.The $parameter can be used to pass additional information to View::updateGet if required, e.g. about a chapter in the content.

Implements ILIAS\KioskMode\ControlBuilder.

Definition at line 226 of file LSControlBuilder.php.

227 {
228 $cmd = $this->url_builder->getHref($command, $parameter);
229 $this->controls[] = $this->ui_factory->button()->standard($label, $cmd);
230 return $this;
231 }

◆ getAdditionalJS()

LSControlBuilder::getAdditionalJS ( )

Definition at line 339 of file LSControlBuilder.php.

339 : string
340 {
342 }

◆ getControls()

LSControlBuilder::getControls ( )

Definition at line 133 of file LSControlBuilder.php.

133 : array
134 {
135 return $this->controls;
136 }

References $controls.

◆ getDoneControl()

LSControlBuilder::getDoneControl ( )

Definition at line 118 of file LSControlBuilder.php.

119 {
120 return $this->done_control;
121 }

References $done_control.

Referenced by ilKioskPageRenderer\render().

+ Here is the caller graph for this function:

◆ getExitControl()

LSControlBuilder::getExitControl ( )

Definition at line 103 of file LSControlBuilder.php.

104 {
105 return $this->exit_control;
106 }

References $exit_control.

◆ getLocator()

LSControlBuilder::getLocator ( )

Definition at line 138 of file LSControlBuilder.php.

139 {
140 return $this->loc;
141 }

References $loc.

◆ getModeControls()

LSControlBuilder::getModeControls ( )

Definition at line 128 of file LSControlBuilder.php.

129 {
131 }

References $mode_controls.

◆ getNextControl()

LSControlBuilder::getNextControl ( )

Definition at line 113 of file LSControlBuilder.php.

114 {
115 return $this->next_control;
116 }

References $next_control.

◆ getPreviousControl()

LSControlBuilder::getPreviousControl ( )

Definition at line 108 of file LSControlBuilder.php.

109 {
111 }

References $previous_control.

◆ getStartControl()

LSControlBuilder::getStartControl ( )

Definition at line 320 of file LSControlBuilder.php.

321 {
322 return $this->start;
323 }

References $start.

◆ getStartSignal()

LSControlBuilder::getStartSignal ( )
protected

This is a hack and not supposed to be considered as a common way to inject JS-Code and bind it to a button.

However, for the time beeing and the lack of a general alternative, I think it's OK to do this for legacy(!)-objects here...

Definition at line 331 of file LSControlBuilder.php.

332 {
333 $id = uniqid();
335 return $signal;
336 }
if(!array_key_exists('StateId', $_REQUEST)) $id

References $id.

◆ getToc()

LSControlBuilder::getToc ( )

Definition at line 143 of file LSControlBuilder.php.

144 {
145 return $this->toc;
146 }

References $toc.

◆ getToggles()

LSControlBuilder::getToggles ( )

Definition at line 123 of file LSControlBuilder.php.

124 {
125 return $this->toggles;
126 }

References $toggles.

◆ locator()

LSControlBuilder::locator ( string  $command)

A locator allows the user to see the path leading to her current location and jump back to previous items on that path.The command will be enhanced with a parameter defined in the locator builder.

Exceptions

LogicException if view wants to introduce a second locator.

Implements ILIAS\KioskMode\ControlBuilder.

Definition at line 262 of file LSControlBuilder.php.

263 {
264 if ($this->loc) {
265 throw new \LogicException("Only one locator per view...", 1);
266 }
267 $this->loc = new LSLocatorBuilder($command, $this);
268 return $this->loc;
269 }
Class LSTOCBuilder.
Build a locator for the view.

References $loc.

◆ mode()

LSControlBuilder::mode ( string  $command,
array  $labels 
)

A mode control can be used to switch between different modes in the view.Uses the indizes of the labels in the array as parameter for the command.

Implements ILIAS\KioskMode\ControlBuilder.

Definition at line 249 of file LSControlBuilder.php.

250 {
251 $actions = [];
252 foreach ($labels as $parameter => $label) {
253 $actions[$label] = $this->url_builder->getHref($command, $parameter);
254 }
255 $this->mode_controls[] = $this->ui_factory->viewControl()->mode($actions, '');
256 return $this;
257 }
mode(string $command, array $labels)
A mode control can be used to switch between different modes in the view.

References ILIAS\KioskMode\ControlBuilder\mode().

+ Here is the call graph for this function:

◆ next()

LSControlBuilder::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 to pass additional information to View::updateGet if required, e.g. about a chapter in the content.

Exceptions

LogicException if view wants to introduce a second next button.

Implements ILIAS\KioskMode\ControlBuilder.

Definition at line 175 of file LSControlBuilder.php.

176 {
177 if ($this->next_control) {
178 throw new \LogicException("Only one next-control per view...", 1);
179 }
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();
185 }
186 $this->next_control = $btn;
187 return $this;
188 }

◆ previous()

LSControlBuilder::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 be used to pass additional information to View::updateGet if required, e.g. about a chapter in the content.

Exceptions

LogicException if view wants to introduce a second previous button.

Implements ILIAS\KioskMode\ControlBuilder.

Definition at line 193 of file LSControlBuilder.php.

194 {
195 if ($this->previous_control) {
196 throw new \LogicException("Only one previous-control per view...", 1);
197 }
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();
203 }
204 $this->previous_control = $btn;
205 return $this;
206 }

◆ setListenerJS()

LSControlBuilder::setListenerJS ( string  $signal_id,
string  $new_win_url,
string  $check_lp_url,
string  $on_lp_change_url 
)
protected

Definition at line 344 of file LSControlBuilder.php.

349 {
350 $interval = $this->global_settings->getPollingIntervalMilliseconds();
351 $this->additional_js =
352<<<JS
353function lso_checkLPOfObject() {
354 $.ajax({
355 url: "$check_lp_url",
356 }).done(function(data) {
357 if(window._lso_current_item_lp === -1) {
358 window._lso_current_item_lp = data;
359 }
360 if (window._lso_current_item_lp !== data) {
361 location.replace('$on_lp_change_url');
362 }
363 });
364}
365
366$(document).on('{$signal_id}', function() {
367 var il_ls_win = window.open('$new_win_url');
368});
369window._lso_current_item_lp = -1;
370lso_checkLPOfObject();
371window.setInterval(lso_checkLPOfObject, $interval);
372JS;
373 }
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...
if(!file_exists(getcwd() . '/ilias.ini.php'))
registration confirmation script for ilias
Definition: confirmReg.php:12
$this data['403_header']

References data, and if.

◆ start()

LSControlBuilder::start ( string  $label,
string  $url,
int  $parameter = null 
)

Add a "start"-button as primary.

This is NOT regular behavior, but a special feature for the LegacyView of LearningSequence's sub-objects that do not implement a KioskModeView.

The start-control is exclusively used to open an ILIAS-Object in a new windwow/tab.

Definition at line 294 of file LSControlBuilder.php.

295 {
296 if ($this->start) {
297 throw new \LogicException("Only one start-control per view...", 1);
298 }
299
300 $this_cmd = $this->url_builder->getHref(self::CMD_START_OBJECT, 0);
301 $lp_cmd = str_replace(
302 '&cmd=view&',
303 '&cmd=' . self::CMD_CHECK_CURRENT_ITEM_LP . '&',
304 $this_cmd
305 );
306
307 $current_obj_id = $parameter;
308 $lp_cmd .= '&' . self::PARAM_LP_CURRENT_ITEM_OBJID . '=' . $current_obj_id;
309
310 $signal = $this->getStartSignal();
311 $this->setListenerJS($signal->getId(), $url, $lp_cmd, $this_cmd);
312
313 $this->start = $this->ui_factory->button()
314 ->primary($label, '')
315 ->withOnClick($signal);
316
317 return $this;
318 }
getStartSignal()
This is a hack and not supposed to be considered as a common way to inject JS-Code and bind it to a b...
start(string $label, string $url, int $parameter=null)
Add a "start"-button as primary.
setListenerJS(string $signal_id, string $new_win_url, string $check_lp_url, string $on_lp_change_url)
$url

References $url.

◆ tableOfContent()

LSControlBuilder::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 object.The command will be enhanced with a parameter defined here on in the locator builder.If a parameter is defined here, the view provides an overview-page.

Exceptions

LogicException if view wants to introduce a second TOC.

Parameters
mixed$stateone of the STATE_ constants from TOCBuilder

Implements ILIAS\KioskMode\ControlBuilder.

Definition at line 274 of file LSControlBuilder.php.

279 : TOCBuilder {
280 if ($this->toc) {
281 throw new \LogicException("Only one ToC per view...", 1);
282 }
283 $this->toc = new LSTOCBuilder($this, $command, $label, $parameter, $state);
284 return $this->toc;
285 }
if(!array_key_exists('stateid', $_REQUEST)) $state
Handle linkback() response from LinkedIn.
Definition: linkback.php:10
Class LSTOCBuilder.
Build a nested table of contents for the view.
Definition: TOCBuilder.php:12

◆ toggle()

LSControlBuilder::toggle ( string  $label,
string  $on_command,
string  $off_command 
)

A toggle can be used to switch some behaviour in the view on or of.

Implements ILIAS\KioskMode\ControlBuilder.

Definition at line 236 of file LSControlBuilder.php.

237 {
238 throw new \Exception("NYI: Toggles", 1);
239
240 $cmd_on = $this->url_builder->getHref($on_command, 0);
241 $cmd_off = $this->url_builder->getHref($off_command, 0);
242 //build toggle and add to $this->toggles
243 //return $this;
244 }

Field Documentation

◆ $additional_js

LSControlBuilder::$additional_js
protected

Definition at line 84 of file LSControlBuilder.php.

◆ $controls

LSControlBuilder::$controls = []
protected

Definition at line 44 of file LSControlBuilder.php.

Referenced by getControls().

◆ $done_control

LSControlBuilder::$done_control
protected

Definition at line 39 of file LSControlBuilder.php.

Referenced by getDoneControl().

◆ $exit_control

LSControlBuilder::$exit_control
protected

Definition at line 24 of file LSControlBuilder.php.

Referenced by getExitControl().

◆ $global_settings

LSControlBuilder::$global_settings
protected

Definition at line 89 of file LSControlBuilder.php.

Referenced by __construct().

◆ $loc

LSControlBuilder::$loc
protected

Definition at line 64 of file LSControlBuilder.php.

Referenced by getLocator(), and locator().

◆ $mode_controls

LSControlBuilder::$mode_controls = []
protected

Definition at line 54 of file LSControlBuilder.php.

Referenced by getModeControls().

◆ $next_control

LSControlBuilder::$next_control
protected

Definition at line 34 of file LSControlBuilder.php.

Referenced by getNextControl().

◆ $previous_control

LSControlBuilder::$previous_control
protected

Definition at line 29 of file LSControlBuilder.php.

Referenced by getPreviousControl().

◆ $start

LSControlBuilder::$start
protected

Definition at line 79 of file LSControlBuilder.php.

◆ $toc

LSControlBuilder::$toc
protected

Definition at line 59 of file LSControlBuilder.php.

Referenced by getToc().

◆ $toggles

LSControlBuilder::$toggles = []
protected

Definition at line 49 of file LSControlBuilder.php.

Referenced by getToggles().

◆ $ui_factory

LSControlBuilder::$ui_factory
protected

Definition at line 69 of file LSControlBuilder.php.

Referenced by __construct().

◆ $url_builder

LSControlBuilder::$url_builder
protected

Definition at line 74 of file LSControlBuilder.php.

Referenced by __construct().

◆ CMD_CHECK_CURRENT_ITEM_LP

const LSControlBuilder::CMD_CHECK_CURRENT_ITEM_LP = 'ccilp'

Definition at line 18 of file LSControlBuilder.php.

Referenced by ilObjLearningSequenceGUI\executeCommand().

◆ CMD_START_OBJECT

const LSControlBuilder::CMD_START_OBJECT = 'start_legacy_obj'

Definition at line 17 of file LSControlBuilder.php.

◆ PARAM_LP_CURRENT_ITEM_OBJID

const LSControlBuilder::PARAM_LP_CURRENT_ITEM_OBJID = 'ccilpobjid'

Definition at line 19 of file LSControlBuilder.php.

Referenced by ilObjLearningSequenceGUI\executeCommand().


The documentation for this class was generated from the following file: