ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
ilCharSelectorGUI Class Reference

This shows a character selector. More...

+ Collaboration diagram for ilCharSelectorGUI:

Public Member Functions

 __construct ($a_context=ilCharSelectorConfig::CONTEXT_NONE)
 Constructor. More...
 
 setConfig (ilCharSelectorConfig $a_config)
 Set the configuraton object. More...
 
 getConfig ()
 Get the configuraton object. More...
 
 addFormProperties (ilPropertyFormGUI $a_form)
 add the configuration elements to a property form More...
 
 setFormValues (ilPropertyFormGUI $a_form)
 Set the values in a property form based on the configuration. More...
 
 getFormValues (ilPropertyFormGUI $a_form)
 Set the configuration based on the values of a property form. More...
 
 addToPage ()
 Adds the the character selector to the ilias page Initializes the selector according to the state saved in the user session. More...
 
 getSelectorHTML ()
 Get the HTML code of the selector panel. More...
 
 saveState ()
 Save the selector panel state in the user session (This keeps the panel state between page moves) More...
 
 executeCommand ()
 execute command More...
 

Static Public Member Functions

static _isAllowed ()
 Check if the CharSelector is allowed for the current GUI. More...
 
static _getCurrentGUI (ilObjTest $a_test_obj=null)
 Get the GUI that is used for the currently available selector (other GUI instances may exist for configuration in property forms) More...
 

Protected Attributes

 $lng
 
 $ctrl
 
 $tpl
 

Private Attributes

 $config = null
 
 $added_to_page = false
 

Static Private Attributes

static $allowed_guis
 list of command classes for which the char selector is allowed (can also be a parent class of the actual command class) More...
 
static $current_gui
 ilCharSelectorGUI instance used for the current selector More...
 

Detailed Description

This shows a character selector.

Definition at line 10 of file class.ilCharSelectorGUI.php.

Constructor & Destructor Documentation

◆ __construct()

ilCharSelectorGUI::__construct (   $a_context = ilCharSelectorConfig::CONTEXT_NONE)

Constructor.

Parameters
stringconfiguration context

Definition at line 59 of file class.ilCharSelectorGUI.php.

References $DIC.

60  {
61  global $DIC;
62 
63  $this->lng = $DIC->language();
64  $this->ctrl = $DIC->ctrl();
65  $this->tpl = $DIC["tpl"];
66  $this->config = new ilCharSelectorConfig($a_context);
67  }
global $DIC
Definition: saml.php:7

Member Function Documentation

◆ _getCurrentGUI()

static ilCharSelectorGUI::_getCurrentGUI ( ilObjTest  $a_test_obj = null)
static

Get the GUI that is used for the currently available selector (other GUI instances may exist for configuration in property forms)

Parameters
object(optional) current running test
Returns
object

Definition at line 105 of file class.ilCharSelectorGUI.php.

References ilCharSelectorConfig\_getCurrentConfig().

Referenced by ilPropertyFormGUI\getContent(), and ilTestPlayerAbstractGUI\populateCharSelectorIfRequired().

106  {
107  if (!isset(self::$current_gui)) {
108  self::$current_gui = new ilCharSelectorGUI();
109  self::$current_gui->setConfig(ilCharSelectorConfig::_getCurrentConfig($a_test_obj));
110  }
111  return self::$current_gui;
112  }
static _getCurrentConfig(ilObjTest $a_test_obj=null)
Get the configuration that should be used for the current selector.
This shows a character selector.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ _isAllowed()

static ilCharSelectorGUI::_isAllowed ( )
static

Check if the CharSelector is allowed for the current GUI.

Returns
boolean CharSelector is allowed

Definition at line 73 of file class.ilCharSelectorGUI.php.

References $DIC, and $ilCtrl.

Referenced by ilPropertyFormGUI\getContent().

74  {
75  global $DIC;
76 
77  $ilCtrl = $DIC->ctrl();
78 
79  // get the command class
80  // with correct case for checking parent classes
81  foreach ($ilCtrl->getCallHistory() as $call) {
82  if ($call['mode'] == 'execComm') {
83  $class = $call['class'];
84  }
85  }
86 
87  // check the class and her parent classes
88  while ($class != false) {
89  if (in_array($class, self::$allowed_guis)) {
90  return true;
91  }
92  $class = get_parent_class($class);
93  }
94 
95  return false;
96  }
global $DIC
Definition: saml.php:7
global $ilCtrl
Definition: ilias.php:18
+ Here is the caller graph for this function:

◆ addFormProperties()

ilCharSelectorGUI::addFormProperties ( ilPropertyFormGUI  $a_form)

add the configuration elements to a property form

Parameters
objectproperty form

Definition at line 136 of file class.ilCharSelectorGUI.php.

References $lng, $tpl, ilPropertyFormGUI\addItem(), ilCharSelectorConfig\CONTEXT_ADMIN, ilCharSelectorConfig\CONTEXT_TEST, ilCharSelectorConfig\CONTEXT_USER, ilCharSelectorConfig\DISABLED, ilCharSelectorConfig\ENABLED, ilCharSelectorConfig\INACTIVE, ilCharSelectorConfig\INHERIT, and ilFormPropertyGUI\setInfo().

Referenced by ilObjAdvancedEditingGUI\initCharSelectorSettingsForm().

137  {
138  $lng = $this->lng;
139  $lng->loadLanguageModule('adve');
140 
141  require_once('Services/UIComponent/CharSelector/classes/class.ilCharSelectorRadioGroupInputGUI.php');
142  $availability = new ilCharSelectorRadioGroupInputGUI($lng->txt('char_selector_' . $this->config->getContext()), 'char_selector_availability');
143  $inactive = new ilRadioOption($lng->txt('char_selector_inactive_' . $this->config->getContext()), ilCharSelectorConfig::INACTIVE);
144  $inactive->setInfo($lng->txt('char_selector_inactive_info_' . $this->config->getContext()));
145  $inherit = new ilRadioOption($lng->txt('char_selector_inherit_' . $this->config->getContext()), ilCharSelectorConfig::INHERIT);
146  $inherit->setInfo($lng->txt('char_selector_inherit_info_' . $this->config->getContext()));
147  $enabled = new ilRadioOption($lng->txt('char_selector_enabled_' . $this->config->getContext()), ilCharSelectorConfig::ENABLED);
148  $enabled->setInfo($lng->txt('char_selector_enabled_info_' . $this->config->getContext()));
149  $disabled = new ilRadioOption($lng->txt('char_selector_disabled_' . $this->config->getContext()), ilCharSelectorConfig::DISABLED);
150  $disabled->setInfo($lng->txt('char_selector_disabled_info_' . $this->config->getContext()));
151 
152  $blocks = new ilSelectInputGUI($lng->txt('char_selector_blocks'), 'char_selector_blocks');
153  $blocks->setInfo($lng->txt('char_selector_blocks_info'));
154  $blocks->setOptions($this->config->getBlockOptions());
155  $blocks->setMulti(true);
156  $enabled->addSubItem($blocks);
157 
158  $custom_items = new ilTextAreaInputGUI($lng->txt('char_selector_custom_items'), 'char_selector_custom_items');
159  $tpl = new ilTemplate("tpl.char_selector_custom_info.html", true, true, "Services/UIComponent/CharSelector");
160  $tpl->setVariable('1', $lng->txt('char_selector_custom_items_info1'));
161  $tpl->setVariable('2a', $lng->txt('char_selector_custom_items_info2a'));
162  $tpl->setVariable('2b', $lng->txt('char_selector_custom_items_info2b'));
163  $tpl->setVariable('3a', $lng->txt('char_selector_custom_items_info3a'));
164  $tpl->setVariable('3b', $lng->txt('char_selector_custom_items_info3b'));
165  $tpl->setVariable('4a', $lng->txt('char_selector_custom_items_info4a'));
166  $tpl->setVariable('4b', $lng->txt('char_selector_custom_items_info4b'));
167  $tpl->setVariable('5a', $lng->txt('char_selector_custom_items_info5a'));
168  $tpl->setVariable('5b', $lng->txt('char_selector_custom_items_info5b'));
169  $tpl->setVariable('6a', $lng->txt('char_selector_custom_items_info6a'));
170  $tpl->setVariable('6b', $lng->txt('char_selector_custom_items_info6b'));
171  $custom_items->setInfo($tpl->get());
172  $enabled->addSubItem($custom_items);
173 
174  switch ($this->config->getContext()) {
176  $availability->addOption($inactive);
177  $availability->addOption($enabled);
178  $availability->addOption($disabled);
179  $a_form->addItem($availability);
180  break;
181 
184  $availability->addOption($inherit);
185  $availability->addOption($enabled);
186  $availability->addOption($disabled);
187  $a_form->addItem($availability);
188  break;
189  }
190  }
This class represents an option in a radio group.
This class represents a selection list property in a property form.
Radio input for character seelctor definition.
addItem($a_item)
Add Item (Property, SectionHeader).
const INACTIVE
Availabilities INACTIVE/INHERIT corresponds to an unconfigured selector (no database entries) ...
setInfo($a_info)
Set Information Text.
special template class to simplify handling of ITX/PEAR
This class represents a text area property in a property form.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ addToPage()

ilCharSelectorGUI::addToPage ( )

Adds the the character selector to the ilias page Initializes the selector according to the state saved in the user session.

See also
self::saveState()

Definition at line 223 of file class.ilCharSelectorGUI.php.

References $_SESSION, $ctrl, $ilCtrl, $lng, $tpl, getSelectorHTML(), and ilUtil\getStyleSheetLocation().

224  {
226  $tpl = $this->tpl;
227  $lng = $this->lng;
228 
229  // don't add the panel twice
230  if ($this->added_to_page) {
231  return;
232  }
233 
234  $lng->loadLanguageModule('adve');
235 
236  // prepare the configuration for the js script
237  $this->jsconfig = new stdClass();
238  $this->jsconfig->pages = $this->config->getCharPages();
239  $this->jsconfig->ajax_url = $ilCtrl->getLinkTargetByClass("ilcharselectorgui", "saveState", "", true);
240  $this->jsconfig->open = (int) $_SESSION['char_selector_open'];
241  $this->jsconfig->current_page = (int) $_SESSION['char_selector_current_page'];
242  $this->jsconfig->current_subpage = (int) $_SESSION['char_selector_current_subpage'];
243 
244  // provide texts to be dynamically rendered in the js script
245  $this->jstexts = new stdClass();
246  $this->jstexts->page = $lng->txt('page');
247  // fau: testNav - add texts for open/close char selector actions in the question menu
248  $this->jstexts->open= $lng->txt('char_selector_menu_open');
249  $this->jstexts->close= $lng->txt('char_selector_menu_close');
250  // fau.
251 
252  // add everything neded to the page
253  // addLightbox() is just used to add the panel template outside the body
254  // The panel template is added as <script> to be not included in the DOM by default
255  // It will be included by js below the main header when the selector is switched on
256  $tpl->addCss(ilUtil::getStyleSheetLocation('', 'char_selector_style.css', 'Services/UIComponent/CharSelector'));
257  $tpl->addJavascript('./Services/UIComponent/CharSelector/js/ilCharSelector.js');
258  $tpl->addLightbox($this->getSelectorHTML(), 2);
259  $tpl->addOnLoadCode('il.CharSelector.init(' . json_encode($this->jsconfig) . ',' . json_encode($this->jstexts) . ')');
260  $this->added_to_page = true;
261  }
$_SESSION["AccountId"]
static getStyleSheetLocation($mode="output", $a_css_name="", $a_css_location="")
get full style sheet file name (path inclusive) of current user
getSelectorHTML()
Get the HTML code of the selector panel.
global $ilCtrl
Definition: ilias.php:18
+ Here is the call graph for this function:

◆ executeCommand()

ilCharSelectorGUI::executeCommand ( )

execute command

Definition at line 315 of file class.ilCharSelectorGUI.php.

References $ctrl, and $ilCtrl.

316  {
318  $cmd = $ilCtrl->getCmd("saveState");
319  switch ($cmd) {
320  case 'saveState':
321  $this->$cmd();
322  break;
323  default:
324  return;
325  }
326  }
global $ilCtrl
Definition: ilias.php:18

◆ getConfig()

ilCharSelectorGUI::getConfig ( )

Get the configuraton object.

Returns
ilCharSelectorConfig

Definition at line 127 of file class.ilCharSelectorGUI.php.

References $config.

128  {
129  return $this->config;
130  }

◆ getFormValues()

ilCharSelectorGUI::getFormValues ( ilPropertyFormGUI  $a_form)

Set the configuration based on the values of a property form.

Parameters
objectproperty form
stringcontext of the form

Definition at line 211 of file class.ilCharSelectorGUI.php.

References ilPropertyFormGUI\getInput().

212  {
213  $this->config->setAvailability($a_form->getInput('char_selector_availability'));
214  $this->config->setAddedBlocks($a_form->getInput('char_selector_blocks'));
215  $this->config->setCustomItems($a_form->getInput('char_selector_custom_items'));
216  }
getInput($a_post_var, $ensureValidation=true)
Returns the value of a HTTP-POST variable, identified by the passed id.
+ Here is the call graph for this function:

◆ getSelectorHTML()

ilCharSelectorGUI::getSelectorHTML ( )

Get the HTML code of the selector panel.

Returns
string panel html code

Definition at line 267 of file class.ilCharSelectorGUI.php.

References $index, $lng, and $tpl.

Referenced by addToPage().

268  {
269  $lng = $this->lng;
270  $tpl = new ilTemplate("tpl.char_selector_panel.html", true, true, "Services/UIComponent/CharSelector");
271 
272  if (count($this->jsconfig->pages) > 1) {
273  $index = 0;
274  foreach ($this->jsconfig->pages as $page) {
275  $tpl->setCurrentBlock('page_option');
276  $tpl->setVariable("PAGE_INDEX", $index);
277  $tpl->setVariable("PAGE_NAME", $page[0]);
278  $tpl->parseCurrentBlock();
279  $index++;
280  }
281  }
282 
283  $tpl->setVariable('TXT_PREVIOUS_PAGE', $lng->txt('previous'));
284  $tpl->setVariable('TXT_NEXT_PAGE', $lng->txt('next'));
285  $tpl->setVariable('TXT_PAGE', $lng->txt('page'));
286 
287  $tpl->touchBlock('chars');
288  return '<script type="text/html" id="ilCharSelectorTemplate">' . $tpl->get() . '</script>';
289  }
$index
Definition: metadata.php:60
special template class to simplify handling of ITX/PEAR
+ Here is the caller graph for this function:

◆ saveState()

ilCharSelectorGUI::saveState ( )

Save the selector panel state in the user session (This keeps the panel state between page moves)

See also
self::addToPage()

Definition at line 297 of file class.ilCharSelectorGUI.php.

References $_GET, $_SESSION, array, and exit.

298  {
299  $_SESSION['char_selector_open'] = (int) $_GET['open'];
300  $_SESSION['char_selector_current_page'] = (int) $_GET['current_page'];
301  $_SESSION['char_selector_current_subpage'] = (int) $_GET['current_subpage'];
302 
303  // debugging output (normally ignored by the js part)
304  echo json_encode(array(
305  'open' => $_SESSION['char_selector_open'],
306  'current_page' => $_SESSION['char_selector_current_page'],
307  'current_subpage' => $_SESSION['char_selector_current_subpage'],
308  ));
309  exit;
310  }
$_SESSION["AccountId"]
$_GET["client_id"]
Create styles array
The data for the language used.

◆ setConfig()

ilCharSelectorGUI::setConfig ( ilCharSelectorConfig  $a_config)

Set the configuraton object.

Parameters
ilCharSelectorConfig

Definition at line 118 of file class.ilCharSelectorGUI.php.

119  {
120  $this->config = $a_config;
121  }

◆ setFormValues()

ilCharSelectorGUI::setFormValues ( ilPropertyFormGUI  $a_form)

Set the values in a property form based on the configuration.

Parameters
objectproperty form
stringcontext of the form

Definition at line 198 of file class.ilCharSelectorGUI.php.

References ilPropertyFormGUI\getItemByPostVar().

199  {
200  $a_form->getItemByPostVar('char_selector_availability')->setValue($this->config->getAvailability());
201  $a_form->getItemByPostVar('char_selector_blocks')->setValue($this->config->getAddedBlocks());
202  $a_form->getItemByPostVar('char_selector_custom_items')->setValue($this->config->getCustomItems());
203  }
getItemByPostVar($a_post_var)
Get Item by POST variable.
+ Here is the call graph for this function:

Field Documentation

◆ $added_to_page

ilCharSelectorGUI::$added_to_page = false
private

Definition at line 52 of file class.ilCharSelectorGUI.php.

◆ $allowed_guis

ilCharSelectorGUI::$allowed_guis
staticprivate
Initial value:
'assQuestionGUI',
'ilAssQuestionFeedbackEditingGUI',
'ilAssQuestionHintGUI',
'ilObjTestSettingsGeneralGUI',
'ilTestScoringGUI'
)

list of command classes for which the char selector is allowed (can also be a parent class of the actual command class)

Definition at line 31 of file class.ilCharSelectorGUI.php.

◆ $config

ilCharSelectorGUI::$config = null
private

Definition at line 47 of file class.ilCharSelectorGUI.php.

Referenced by getConfig().

◆ $ctrl

ilCharSelectorGUI::$ctrl
protected

Definition at line 20 of file class.ilCharSelectorGUI.php.

Referenced by addToPage(), and executeCommand().

◆ $current_gui

ilCharSelectorGUI::$current_gui
staticprivate

ilCharSelectorGUI instance used for the current selector

Definition at line 42 of file class.ilCharSelectorGUI.php.

◆ $lng

ilCharSelectorGUI::$lng
protected

Definition at line 15 of file class.ilCharSelectorGUI.php.

Referenced by addFormProperties(), addToPage(), and getSelectorHTML().

◆ $tpl

ilCharSelectorGUI::$tpl
protected

Definition at line 25 of file class.ilCharSelectorGUI.php.

Referenced by addFormProperties(), addToPage(), and getSelectorHTML().


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