ILIAS  release_6 Revision v6.24-5-g0c8bfefb3b8
class.ilLTIConsumeProviderFormGUI.php
Go to the documentation of this file.
1<?php
2
3/* Copyright (c) 1998-2019 ILIAS open source, Extended GPL, see docs/LICENSE */
4
5
15{
19 protected $provider;
20
24 protected $adminContext = false;
25
31 {
33
34 $this->provider = $provider;
35 }
36
40 public function isAdminContext() : bool
41 {
43 }
44
48 public function setAdminContext(bool $adminContext)
49 {
50 $this->adminContext = $adminContext;
51 }
52
58 public function initForm($formaction, $saveCmd, $cancelCmd)
59 {
60 global $DIC; /* @var \ILIAS\DI\Container $DIC */
61 $lng = $DIC->language();
62
64 $this->addCommandButton($saveCmd, $lng->txt('save'));
65 $this->addCommandButton($cancelCmd, $lng->txt('cancel'));
66
67 if ($this->provider->getId()) {
68 $this->setTitle($lng->txt('lti_form_provider_edit'));
69 } else {
70 $this->setTitle($lng->txt('lti_form_provider_create'));
71 }
72
73 $titleInp = new ilTextInputGUI($lng->txt('lti_con_prov_title'), 'title');
74 $titleInp->setValue($this->provider->getTitle());
75 $titleInp->setRequired(true);
76 $this->addItem($titleInp);
77
78 $descInp = new ilTextInputGUI($lng->txt('lti_con_prov_description'), 'description');
79 $descInp->setValue($this->provider->getDescription());
80 $this->addItem($descInp);
81
82 $iconInp = new ilImageFileInputGUI($lng->txt('lti_con_prov_icon'), 'icon');
83 $iconInp->setInfo($lng->txt('obj_tile_image_info'));
85 $iconInp->setUseCache(false);
86 if ($this->provider->hasProviderIcon() && $this->provider->getProviderIcon()->exists()) {
87 $iconInp->setImage($this->provider->getProviderIcon()->getAbsoluteFilePath());
88 } else {
89 $iconInp->setImage('');//todo default image?
90 }
91 $this->addItem($iconInp);
92
93 if ($this->isAdminContext()) {
94 $availabilityInp = new ilRadioGroupInputGUI($lng->txt('lti_con_prov_availability'), 'availability');
95 $availabilityInp->setValue($this->provider->getAvailability());
96 $availabilityInp->setRequired(true);
97 $optionCreate = new ilRadioOption(
98 $lng->txt('lti_con_prov_availability_create'),
100 );
101 $availabilityInp->addOption($optionCreate);
102 $optionCreate = new ilRadioOption(
103 $lng->txt('lti_con_prov_availability_existing'),
105 );
106 $availabilityInp->addOption($optionCreate);
107 $optionCreate = new ilRadioOption(
108 $lng->txt('lti_con_prov_availability_non'),
110 );
111 $availabilityInp->addOption($optionCreate);
112 $this->addItem($availabilityInp);
113 }
114
115
116 $sectionHeader = new ilFormSectionHeaderGUI();
117 $sectionHeader->setTitle($lng->txt('lti_con_prov_authentication'));
118 $this->addItem($sectionHeader);
119
120
121 $providerUrlInp = new ilTextInputGUI($lng->txt('lti_con_prov_url'), 'provider_url');
122 $providerUrlInp->setValue($this->provider->getProviderUrl());
123 $providerUrlInp->setRequired(true);
124 $this->addItem($providerUrlInp);
125 //Abfrage ob Key und secret von Objekterstellern eingegeben werden soll
126 $item = new ilCheckboxInputGUI($lng->txt('lti_con_prov_provider_key_global'), 'provider_key_global');
127 $item->setValue("1");
128 if (!$this->provider->isProviderKeyCustomizable()) {
129 $item->setChecked(true);
130 }
131 $item->setInfo($lng->txt('lti_con_prov_provider_key_global_info'));
132
133 $providerKeyInp = new ilTextInputGUI($lng->txt('lti_con_prov_key'), 'provider_key');
134 $providerKeyInp->setValue($this->provider->getProviderKey());
135 $providerKeyInp->setRequired(true);
136 $item->addSubItem($providerKeyInp);
137
138 $providerSecretInp = new ilTextInputGUI($lng->txt('lti_con_prov_secret'), 'provider_secret');
139 $providerSecretInp->setValue($this->provider->getProviderSecret());
140 $providerSecretInp->setRequired(true);
141 $item->addSubItem($providerSecretInp);
142
143 $this->addItem($item);
144
145 //privacy-settings
146
147 $sectionHeader = new ilFormSectionHeaderGUI();
148 $sectionHeader->setTitle($lng->txt('lti_con_prov_privacy_settings'));
149 $this->addItem($sectionHeader);
150
151 $item = new ilRadioGroupInputGUI($DIC->language()->txt('conf_privacy_ident'), 'privacy_ident');
152 $op = new ilRadioOption(
153 $DIC->language()->txt('conf_privacy_ident_il_uuid_user_id'),
155 );
156 $op->setInfo($DIC->language()->txt('conf_privacy_ident_il_uuid_user_id_info'));
157 $item->addOption($op);
158 $op = new ilRadioOption(
159 $DIC->language()->txt('conf_privacy_ident_il_uuid_login'),
161 );
162 $op->setInfo($DIC->language()->txt('conf_privacy_ident_il_uuid_login_info'));
163 $item->addOption($op);
164 $op = new ilRadioOption(
165 $DIC->language()->txt('conf_privacy_ident_il_uuid_ext_account'),
167 );
168 $op->setInfo($DIC->language()->txt('conf_privacy_ident_il_uuid_ext_account_info'));
169 $item->addOption($op);
170 $op = new ilRadioOption(
171 $DIC->language()->txt('conf_privacy_ident_il_uuid_SHA256'),
173 );
174 $op->setInfo($DIC->language()->txt('conf_privacy_ident_il_uuid_SHA256_info'));
175 $item->addOption($op);
176 $op = new ilRadioOption(
177 $DIC->language()->txt('conf_privacy_ident_real_email'),
179 );
180 $op->setInfo($DIC->language()->txt('conf_privacy_ident_real_email_info'));
181 $item->addOption($op);
182 $item->setValue($this->provider->getPrivacyIdent());
183 $item->setInfo(
184 $DIC->language()->txt('conf_privacy_ident_info') . ' ' . ilCmiXapiUser::getIliasUuid()
185 );
186 $item->setRequired(false);
187 $this->addItem($item);
188
189 $item = new ilRadioGroupInputGUI($DIC->language()->txt('conf_privacy_name'), 'privacy_name');
190 $op = new ilRadioOption($DIC->language()->txt('conf_privacy_name_none'), ilLTIConsumeProvider::PRIVACY_NAME_NONE);
191 $op->setInfo($DIC->language()->txt('conf_privacy_name_none_info'));
192 $item->addOption($op);
193 $op = new ilRadioOption($DIC->language()->txt('conf_privacy_name_firstname'), ilLTIConsumeProvider::PRIVACY_NAME_FIRSTNAME);
194 $op->setInfo($DIC->language()->txt('conf_privacy_name_firstname_info'));
195 $item->addOption($op);
196 $op = new ilRadioOption($DIC->language()->txt('conf_privacy_name_lastname'), ilLTIConsumeProvider::PRIVACY_NAME_LASTNAME);
197 $op->setInfo($DIC->language()->txt('conf_privacy_name_lastname_info'));
198 $item->addOption($op);
199 $op = new ilRadioOption($DIC->language()->txt('conf_privacy_name_fullname'), ilLTIConsumeProvider::PRIVACY_NAME_FULLNAME);
200 $op->setInfo($DIC->language()->txt('conf_privacy_name_fullname_info'));
201 $item->addOption($op);
202 $item->setValue($this->provider->getPrivacyName());
203 $item->setInfo($DIC->language()->txt('conf_privacy_name_info'));
204 $item->setRequired(false);
205 $this->addItem($item);
206
207 $includeUserImage = new ilCheckboxInputGUI($lng->txt('lti_con_prov_inc_usr_pic'), 'inc_usr_pic');
208 $includeUserImage->setInfo($lng->txt('lti_con_prov_inc_usr_pic_info'));
209 $includeUserImage->setChecked($this->provider->getIncludeUserPicture());
210 $this->addItem($includeUserImage);
211
212 $item = new ilCheckboxInputGUI($lng->txt('lti_con_prov_external_provider'), 'is_external_provider');
213 $item->setValue("1");
214 if ($this->provider->IsExternalProvider()) {
215 $item->setChecked(true);
216 }
217 $item->setInfo($lng->txt('lti_con_prov_external_provider_info'));
218 $this->addItem($item);
219
220
221 $sectionHeader = new ilFormSectionHeaderGUI();
222 $sectionHeader->setTitle($lng->txt('lti_con_prov_learning_progress_options'));
223 $this->addItem($sectionHeader);
224 $item = new ilCheckboxInputGUI($lng->txt('lti_con_prov_has_outcome_service'), 'has_outcome_service');
225 $item->setValue("1");
226 if ($this->provider->getHasOutcome()) {
227 $item->setChecked(true);
228 }
229 $item->setInfo($lng->txt('lti_con_prov_has_outcome_service_info'));
230 $masteryScore = new ilNumberInputGUI($lng->txt('lti_con_prov_mastery_score_default'), 'mastery_score');
231 $masteryScore->setInfo($lng->txt('lti_con_prov_mastery_score_default_info'));
232 $masteryScore->setSuffix('%');
233 $masteryScore->allowDecimals(true);
234 $masteryScore->setDecimals(2);
235 $masteryScore->setMinvalueShouldBeGreater(false);
236 $masteryScore->setMinValue(0);
237 $masteryScore->setMaxvalueShouldBeLess(false);
238 $masteryScore->setMaxValue(100);
239 $masteryScore->setSize(4);
240 $masteryScore->setValue($this->provider->getMasteryScorePercent());
241 $item->addSubItem($masteryScore);
242 $this->addItem($item);
243
244
245 $sectionHeader = new ilFormSectionHeaderGUI();
246 $sectionHeader->setTitle($lng->txt('lti_con_prov_launch_options'));
247 $this->addItem($sectionHeader);
248
249 $item = new ilCheckboxInputGUI($lng->txt('lti_con_prov_use_provider_id'), 'use_provider_id');
250 $item->setValue("1");
251 if ($this->provider->getUseProviderId()) {
252 $item->setChecked(true);
253 }
254 $item->setInfo($lng->txt('lti_con_prov_use_provider_id_info'));
255
256 $this->addItem($item);
257
258 $item = new ilCheckboxInputGUI($lng->txt('lti_con_prov_always_learner'), 'always_learner');
259 $item->setValue("1");
260 if ($this->provider->getAlwaysLearner()) {
261 $item->setChecked(true);
262 }
263 $item->setInfo($lng->txt('lti_con_prov_always_learner_info'));
264 $this->addItem($item);
265
266 $item = new ilCheckboxInputGUI($lng->txt('lti_con_prov_use_xapi'), 'use_xapi');
267 $item->setValue("1");
268 if ($this->provider->getUseXapi()) {
269 $item->setChecked(true);
270 }
271 $item->setInfo($lng->txt('lti_con_prov_use_xapi_info'));
272
273 $subitem = new ilTextInputGUI($lng->txt('lti_con_prov_xapi_launch_url'), 'xapi_launch_url');
274 $subitem->setValue($this->provider->getXapiLaunchUrl());
275 $subitem->setInfo($lng->txt('lti_con_prov_xapi_launch_url_info'));
276 $subitem->setRequired(true);
277 $subitem->setMaxLength(255);
278 $item->addSubItem($subitem);
279
280 $subitem = new ilTextInputGUI($lng->txt('lti_con_prov_xapi_launch_key'), 'xapi_launch_key');
281 $subitem->setValue($this->provider->getXapiLaunchKey());
282 $subitem->setInfo($lng->txt('lti_con_prov_xapi_launch_key_info'));
283 $subitem->setRequired(true);
284 $subitem->setMaxLength(64);
285 $item->addSubItem($subitem);
286
287 $subitem = new ilTextInputGUI($lng->txt('lti_con_prov_xapi_launch_secret'), 'xapi_launch_secret');
288 $subitem->setValue($this->provider->getXapiLaunchSecret());
289 $subitem->setInfo($lng->txt('lti_con_prov_xapi_launch_secret_info'));
290 $subitem->setRequired(true);
291 $subitem->setMaxLength(64);
292 $item->addSubItem($subitem);
293
294 $subitem = new ilTextInputGUI($lng->txt('lti_con_prov_xapi_activity_id'), 'xapi_activity_id');
295 $subitem->setValue($this->provider->getXapiActivityId());
296 $subitem->setInfo($lng->txt('lti_con_prov_xapi_activity_id_info'));
297 $subitem->setMaxLength(128);
298 $item->addSubItem($subitem);
299
300 $this->addItem($item);
301
302 $item = new ilTextAreaInputGUI($lng->txt('lti_con_prov_custom_params'), 'custom_params');
303 $item->setValue($this->provider->getCustomParams());
304 $item->setRows(6);
305 $item->setInfo($lng->txt('lti_con_prov_custom_params_info'));
306 $this->addItem($item);
307
308 $sectionHeader = new ilFormSectionHeaderGUI();
309 $sectionHeader->setTitle($lng->txt('lti_con_prov_group_options'));
310 $this->addItem($sectionHeader);
311
312 $item = new ilTextInputGUI($lng->txt('lti_con_prov_keywords'), 'keywords');
313 $item->setValue($this->provider->getKeywords());
314 $item->setInfo($lng->txt('lti_con_prov_keywords_info'));
315 $item->setMaxLength(1000);
316 $this->addItem($item);
317
318 $category = new ilRadioGroupInputGUI($DIC->language()->txt('lti_con_prov_category'), 'category');
319 $category->setInfo($DIC->language()->txt('lti_con_prov_category_info'));
320 $category->setValue($this->provider->getCategory());
321 $category->setRequired(true);
322 foreach (ilLTIConsumeProvider::getCategoriesSelectOptions() as $value => $label) {
323 $category->addOption(new ilRadioOption($label, $value));
324 }
325 $this->addItem($category);
326
327 $sectionHeader = new ilFormSectionHeaderGUI();
328 $sectionHeader->setTitle($lng->txt('lti_con_prov_hints'));
329 $this->addItem($sectionHeader);
330
331 $remarksInp = new ilTextAreaInputGUI($lng->txt('lti_con_prov_remarks'), 'remarks');
332 $remarksInp->setValue($this->provider->getRemarks());
333 $remarksInp->setRows(6);
334 $this->addItem($remarksInp);
335 }
336
338 {
339 $provider->setTitle($this->getInput('title'));
340 $provider->setDescription($this->getInput('description'));
341
342 $provider->setProviderIconUploadInput($this->getItemByPostVar('icon'));
343
344
345 $provider->setHasOutcome((bool) $this->getInput('has_outcome_service'));
346 $provider->setMasteryScorePercent($this->getInput('mastery_score'));
347
348 if ($this->isAdminContext()) {
349 $provider->setAvailability($this->getInput('availability'));
350 }
351
352 if ($this->getInput('provider_key_global') == 1) {
353 $provider->setProviderKeyCustomizable(false);
354 $provider->setProviderKey($this->getInput('provider_key'));
355 $provider->setProviderSecret($this->getInput('provider_secret'));
356 } else {
357 $provider->setProviderKeyCustomizable(true);
358 }
359 $provider->setPrivacyIdent($this->getInput('privacy_ident'));
360 $provider->setPrivacyName($this->getInput('privacy_name'));
361 $provider->setIncludeUserPicture((bool) $this->getInput('inc_usr_pic'));
362 $provider->setIsExternalProvider((bool) $this->getInput('is_external_provider'));
363
364 $provider->setAlwaysLearner((bool) $this->getInput('always_learner'));
365
366 $provider->setUseProviderId((bool) $this->getInput('use_provider_id'));
367 $provider->setXapiActivityId($this->getInput('xapi_activity_id'));
368
369 $provider->setUseXapi((bool) $this->getInput('use_xapi'));
370 $provider->setXapiLaunchUrl($this->getInput('xapi_launch_url'));
371 $provider->setXapiLaunchKey($this->getInput('xapi_launch_key'));
372 $provider->setXapiLaunchSecret($this->getInput('xapi_launch_secret'));
373 $provider->setCustomParams($this->getInput('custom_params'));
374 $provider->setKeywords($this->getInput('keywords'));
375
376 if ($provider->isValidCategory($this->getInput('category'))) {
377 $provider->setCategory($this->getInput('category'));
378 }
379
380 if (null !== $this->getInput('provider_url')) {
381 $provider->setProviderUrl($this->getInput('provider_url'));
382 }
383 if ($provider->isProviderKeyCustomizable()) {
384 $provider->setProviderKey($this->getInput('provider_key'));
385 $provider->setProviderSecret($this->getInput('provider_secret'));
386 }
387 $provider->setRemarks($this->getInput('remarks'));
388 }
389}
An exception for terminatinating execution or to throw for unit testing.
This class represents a checkbox property in a property form.
setFormAction($a_formaction)
Set FormAction.
This class represents a section header in a property form.
This class represents an image file property in a property form.
initForm($formaction, $saveCmd, $cancelCmd)
__construct(ilLTIConsumeProvider $provider)
ilLTIConsumeProviderFormGUI constructor.
initProvider(ilLTIConsumeProvider $provider)
setProviderUrl(string $provider_url)
setUseProviderId(bool $use_provider_id)
setCustomParams(string $custom_params)
setProviderIconUploadInput(ilImageFileInputGUI $providerIconUploadInput)
setDescription(string $description)
setXapiLaunchSecret(string $xapi_launch_secret)
setMasteryScorePercent(float $mastery_score_percent)
setIncludeUserPicture(bool $include_user_picture)
setIsExternalProvider(bool $is_external_provider)
setXapiLaunchUrl(string $xapi_launch_url)
setAlwaysLearner(bool $always_learner)
setProviderKeyCustomizable(bool $provider_key_customizable)
setXapiActivityId(string $xapi_activity_id)
setXapiLaunchKey(string $xapi_launch_key)
setProviderSecret(string $provider_secret)
setPrivacyName(string $privacy_name)
This class represents a number property in a property form.
This class represents a property form user interface.
addItem($a_item)
Add Item (Property, SectionHeader).
addCommandButton($a_cmd, $a_text, $a_id="")
Add Command button.
getInput($a_post_var, $ensureValidation=true)
Returns the value of a HTTP-POST variable, identified by the passed id.
getItemByPostVar($a_post_var)
Get Item by POST variable.
setTitle($a_title)
Set Title.
This class represents a property in a property form.
This class represents an option in a radio group.
This class represents a text area property in a property form.
This class represents a text property in a property form.
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc
$DIC
Definition: xapitoken.php:46