ILIAS  release_8 Revision v8.25
ilAuthLoginPageEditorGUI Class Reference

Login page editor settings GUI ILIAS page editor or richtext editor. More...

+ Collaboration diagram for ilAuthLoginPageEditorGUI:

Public Member Functions

 __construct (int $a_ref_id)
 
 getSettings ()
 
 getRefId ()
 
 executeCommand ()
 ilCtrl execute command More...
 

Protected Member Functions

 forwardToPageObject ()
 Forward to page editor. More...
 
 show ()
 Show current activated editor. More...
 
 addEditorSwitch ()
 Show editor switch. More...
 
 switchIPE ()
 Switch editor mode to ILIAS Page editor. More...
 
 switchRTE ()
 Switch editor mode to richtext editor. More...
 
 activate ()
 Activate languages. More...
 
 showIliasEditor ()
 Show ILIAS page editor summary. More...
 
 showRichtextEditor ()
 Show richtext editor @global ilRbacSystem $rbacsystem @global ilLanguage $lng @global ilSetting $ilSetting. More...
 
 saveLoginInfo ()
 saves the login information data More...
 
 initLoginForm ()
 Init login form. More...
 

Protected Attributes

ILIAS Style Content Object ObjectFacade $content_style_domain
 

Private Member Functions

 setDefLangFirst (string $a_def_language, array $a_languages)
 returns an array of all installed languages, default language at the first position More...
 

Private Attributes

ilCtrl $ctrl
 
ilLanguage $lng
 
ilGlobalTemplateInterface $tpl
 
ilTabsGUI $tabs
 
ilToolbarGUI $toolbar
 
ilRbacSystem $rbacsystem
 
ilSetting $setting
 
ilErrorHandling $ilErr
 
ilPropertyFormGUI $form
 
int $ref_id
 
ilAuthLoginPageEditorSettings $settings
 
ilSetting $loginSettings = null
 
string $redirect_source = null
 
int $key = null
 
array $visible_languages = []
 
array $languages = []
 

Detailed Description

Login page editor settings GUI ILIAS page editor or richtext editor.

Author
Stefan Meyer meyer.nosp@m.@lei.nosp@m.fos.c.nosp@m.om

@ilCtrl_isCalledBy ilAuthLoginPageEditorGUI: ilObjAuthSettingsGUI @ilCtrl_Calls ilAuthLoginPageEditorGUI: ilLoginPageGUI

Definition at line 30 of file class.ilAuthLoginPageEditorGUI.php.

Constructor & Destructor Documentation

◆ __construct()

ilAuthLoginPageEditorGUI::__construct ( int  $a_ref_id)

Definition at line 53 of file class.ilAuthLoginPageEditorGUI.php.

54 {
55 global $DIC;
56
57 $this->ctrl = $DIC->ctrl();
58 $this->tpl = $DIC->ui()->mainTemplate();
59 $this->tabs = $DIC->tabs();
60 $this->toolbar = $DIC->toolbar();
61 $this->rbacsystem = $DIC->rbac()->system();
62 $this->setting = $DIC->settings();
63 $this->ilErr = $DIC['ilErr'];
64
65 $this->lng = $DIC['lng'];
66
67 $this->lng->loadLanguageModule('auth');
68 $this->ref_id = $a_ref_id;
69
71 $this->content_style_domain = $DIC->contentStyle()
72 ->domain()
73 ->styleForRefId($a_ref_id);
74
75 $query_wrapper = $DIC->http()->wrapper()->query();
76 $post_wrapper = $DIC->http()->wrapper()->post();
77 $is_post_request = $DIC->http()->request()->getMethod() === "POST";
78 $refinery = $DIC->refinery();
79
80 if ($query_wrapper->has("redirectSource")) {
81 $this->redirect_source = $query_wrapper->retrieve("redirectSource", $refinery->kindlyTo()->string());
82 }
83 if ($post_wrapper->has("key")) {
84 $this->key = $post_wrapper->retrieve("key", $refinery->kindlyTo()->int());
85 } elseif ($query_wrapper->has("key")) {
86 $this->key = $query_wrapper->retrieve("key", $refinery->kindlyTo()->int());
87 }
88 if ($is_post_request) {
89 if ($post_wrapper->has("visible_languages")) {
90 $this->visible_languages = $post_wrapper->retrieve("visible_languages", $refinery->kindlyTo()->listOf($refinery->kindlyTo()->string()));
91 }
92 if ($post_wrapper->has("languages")) {
93 $this->languages = $post_wrapper->retrieve("languages", $refinery->kindlyTo()->listOf($refinery->kindlyTo()->string()));
94 }
95 }
96 }
global $DIC
Definition: feed.php:28
Refinery Factory $refinery

References $DIC, ILIAS\Repository\$refinery, ILIAS\Repository\ctrl(), ilAuthLoginPageEditorSettings\getInstance(), ILIAS\Repository\lng(), ILIAS\Repository\settings(), ILIAS\Repository\tabs(), and ILIAS\Repository\toolbar().

+ Here is the call graph for this function:

Member Function Documentation

◆ activate()

ilAuthLoginPageEditorGUI::activate ( )
protected

Activate languages.

Definition at line 255 of file class.ilAuthLoginPageEditorGUI.php.

255 : void
256 {
258 foreach ($this->visible_languages as $lang_key) {
259 $settings->enableIliasEditor($lang_key, in_array($lang_key, $this->languages, true));
260 }
261 $settings->update();
262
263 $this->tpl->setOnScreenMessage('success', $this->lng->txt('settings_saved'), true);
264 $this->ctrl->redirect($this, 'show');
265 }
ilAuthLoginPageEditorSettings $settings
enableIliasEditor(string $a_langkey, bool $a_status)
Enable editor for language.

References $settings, ILIAS\Repository\ctrl(), ilAuthLoginPageEditorSettings\enableIliasEditor(), ilAuthLoginPageEditorSettings\getInstance(), ILIAS\Repository\lng(), and ilAuthLoginPageEditorSettings\update().

+ Here is the call graph for this function:

◆ addEditorSwitch()

ilAuthLoginPageEditorGUI::addEditorSwitch ( )
protected

Show editor switch.

Definition at line 206 of file class.ilAuthLoginPageEditorGUI.php.

206 : void
207 {
208 $this->toolbar->setFormAction($this->ctrl->getFormAction($this));
209 switch ($this->getSettings()->getMode()) {
211
212 $this->toolbar->addButton(
213 $this->lng->txt('login_page_switch_ipe'),
214 $this->ctrl->getLinkTarget($this, 'switchIPE')
215 );
216 break;
217
219
220 $this->toolbar->addButton(
221 $this->lng->txt('login_page_switch_rte'),
222 $this->ctrl->getLinkTarget($this, 'switchRTE')
223 );
224 break;
225 }
226 }

References ILIAS\Repository\ctrl(), getSettings(), ILIAS\Repository\lng(), ilAuthLoginPageEditorSettings\MODE_IPE, ilAuthLoginPageEditorSettings\MODE_RTE, and ILIAS\Repository\toolbar().

Referenced by show().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ executeCommand()

ilAuthLoginPageEditorGUI::executeCommand ( )

ilCtrl execute command

Definition at line 111 of file class.ilAuthLoginPageEditorGUI.php.

111 : void
112 {
113 switch ($this->ctrl->getNextClass($this)) {
114 case 'illoginpagegui':
115 $this->tabs->clearTargets();
116 $this->tabs->setBackTarget(
117 $this->lng->txt('back'),
118 $this->ctrl->getLinkTarget($this, 'show'),
119 '_top'
120 );
121
122 if ($this->redirect_source !== "ilinternallinkgui") {
123 $this->forwardToPageObject();
124 }
125 break;
126
127 default:
128 if (!$cmd = $this->ctrl->getCmd()) {
129 $cmd = 'show';
130 }
131 $this->$cmd();
132 break;
133 }
134 }
forwardToPageObject()
Forward to page editor.

References ILIAS\Repository\ctrl(), forwardToPageObject(), ILIAS\Repository\lng(), and ILIAS\Repository\tabs().

+ Here is the call graph for this function:

◆ forwardToPageObject()

ilAuthLoginPageEditorGUI::forwardToPageObject ( )
protected

Forward to page editor.

Definition at line 140 of file class.ilAuthLoginPageEditorGUI.php.

140 : void
141 {
142 $this->ctrl->saveParameter($this, 'key');
143
144 $this->lng->loadLanguageModule("content");
145
146 if (!ilLoginPage::_exists('auth', $this->key)) {
147 // doesn't exist -> create new one
148 $new_page_object = new ilLoginPage();
149 $new_page_object->setParentId($this->key);
150 $new_page_object->setId($this->key);
151 $new_page_object->createFromXML();
152 }
153
154 $this->tpl->addCss(ilObjStyleSheet::getContentStylePath(0));
155 $this->tpl->addCss(ilObjStyleSheet::getSyntaxStylePath());
156
157
158 $this->ctrl->setReturnByClass('illoginpagegui', "edit");
159 $page_gui = new ilLoginPageGUI($this->key);
160
161 $page_gui->setTemplateTargetVar("ADM_CONTENT");
162 //TODO check what should go here $link_xml is undefined
163 //$page_gui->setLinkXML($link_xml);
164 //$page_gui->enableChangeComments($this->content_object->isActiveHistoryUserComments());
165 //$page_gui->setFileDownloadLink($this->ctrl->getLinkTarget($this, "downloadFile"));
166 //$page_gui->setFullscreenLink($this->ctrl->getLinkTarget($this, "showMediaFullscreen"));
167 //$page_gui->setLinkParams($this->ctrl->getUrlParameterString()); // todo
168 // $page_gui->setSourcecodeDownloadScript($this->ctrl->getLinkTarget($this, ""));
169 $page_gui->setStyleId($this->content_style_domain->getEffectiveStyleId());
170 $page_gui->setTemplateOutput(false);
171 //$page_gui->setLocator($contObjLocator);
172
173 // style tab
174 //$page_gui->setTabHook($this, "addPageTabs");
175
176 if ($this->ctrl->getCmd() === 'editPage') {
177 $this->ctrl->setCmd('edit');
178 }
179 $html = $this->ctrl->forwardCommand($page_gui);
180
181 if ($html !== "") {
182 $this->tpl->setContent($html);
183 }
184 }
Login page GUI class.
Login page object.
static getContentStylePath(int $a_style_id, bool $add_random=true, bool $add_token=true)
get content style path static (to avoid full reading)
static _exists(string $a_parent_type, int $a_id, string $a_lang="", bool $a_no_cache=false)
Checks whether page exists.

References ilPageObject\_exists(), ILIAS\Repository\ctrl(), ilObjStyleSheet\getContentStylePath(), ilObjStyleSheet\getSyntaxStylePath(), and ILIAS\Repository\lng().

Referenced by executeCommand().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getRefId()

ilAuthLoginPageEditorGUI::getRefId ( )

Definition at line 103 of file class.ilAuthLoginPageEditorGUI.php.

103 : int
104 {
105 return $this->ref_id;
106 }

References $ref_id.

◆ getSettings()

ilAuthLoginPageEditorGUI::getSettings ( )

Definition at line 98 of file class.ilAuthLoginPageEditorGUI.php.

References $settings.

Referenced by addEditorSwitch(), show(), switchIPE(), and switchRTE().

+ Here is the caller graph for this function:

◆ initLoginForm()

ilAuthLoginPageEditorGUI::initLoginForm ( )
protected

Init login form.

Definition at line 340 of file class.ilAuthLoginPageEditorGUI.php.

340 : void
341 {
342 $this->form = new ilPropertyFormGUI();
343 $this->form->setFormAction($this->ctrl->getFormAction($this, 'saveLoginInfo'));
344 $this->form->setTableWidth('80%');
345 $this->form->setTitle($this->lng->txt('login_information'));
346
347 $this->form->addCommandButton('saveLoginInfo', $this->lng->txt('save'));
348
349 if ($ldap_id = ilLDAPServer::_getFirstActiveServer()) {
350 $select = new ilSelectInputGUI($this->lng->txt('default_auth_mode'), 'default_auth_mode');
351 $select->setValue($this->setting->get('default_auth_mode', (string) ilAuthUtils::AUTH_LOCAL));
352 $select->setInfo($this->lng->txt('default_auth_mode_info'));
353 $options[ilAuthUtils::AUTH_LOCAL] = $this->lng->txt('auth_local');
354 if ($ldap_id) {
355 $options[ilAuthUtils::AUTH_LDAP] = $this->lng->txt('auth_ldap');
356 }
357 $select->setOptions($options);
358 $this->form->addItem($select);
359 }
360
361 if (!is_object($this->loginSettings)) {
362 $this->loginSettings = new ilSetting("login_settings");
363 }
364
365 $login_settings = $this->loginSettings->getAll();
366 $languages = $this->lng->getInstalledLanguages();
367 $def_language = $this->lng->getDefaultLanguage();
368
369 foreach ($this->setDefLangFirst($def_language, $languages) as $lang_key) {
370 $add = "";
371 if ($lang_key === $def_language) {
372 $add = " (" . $this->lng->txt("default") . ")";
373 }
374
375 $textarea = new ilTextAreaInputGUI(
376 $this->lng->txt("meta_l_" . $lang_key) . $add,
377 'login_message_' . $lang_key
378 );
379 $textarea->setRows(10);
380 $msg_login_lang = "login_message_" . $lang_key;
381 if (isset($login_settings[$msg_login_lang])) {
382 $textarea->setValue($login_settings[$msg_login_lang]);
383 }
384 $textarea->setUseRte(true);
385 $textarea->setRteTagSet("extended");
386 $this->form->addItem($textarea);
387
388 unset($login_settings["login_message_" . $lang_key]);
389 }
390
391 foreach ($login_settings as $key => $message) {
392 $lang_key = substr($key, strrpos($key, "_") + 1, strlen($key) - strrpos($key, "_"));
393
394 $textarea = new ilTextAreaInputGUI(
395 $this->lng->txt("meta_l_" . $lang_key),
396 'login_message_' . $lang_key
397 );
398 $textarea->setRows(10);
399 $textarea->setValue($message);
400 $textarea->setUseRte(true);
401 $textarea->setRteTagSet("extended");
402 if (!in_array($lang_key, $languages, true)) {
403 $textarea->setAlert($this->lng->txt("not_installed"));
404 }
405 $this->form->addItem($textarea);
406 }
407 }
setDefLangFirst(string $a_def_language, array $a_languages)
returns an array of all installed languages, default language at the first position
static _getFirstActiveServer()
Get first active server.
This class represents a property form user interface.
This class represents a selection list property in a property form.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This class represents a text area property in a property form.
form( $class_path, string $cmd)
$message
Definition: xapiexit.php:32

References $key, $languages, $message, ilLDAPServer\_getFirstActiveServer(), ilAuthUtils\AUTH_LDAP, ilAuthUtils\AUTH_LOCAL, ILIAS\Repository\ctrl(), ILIAS\Repository\form(), ILIAS\Repository\lng(), and setDefLangFirst().

Referenced by saveLoginInfo(), and showRichtextEditor().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ saveLoginInfo()

ilAuthLoginPageEditorGUI::saveLoginInfo ( )
protected

saves the login information data

Author
Michael Jansen

Definition at line 311 of file class.ilAuthLoginPageEditorGUI.php.

311 : void
312 {
313 if (!$this->rbacsystem->checkAccess("write", $this->getRefId())) {
314 $this->ilErr->raiseError($this->lng->txt("permission_denied"), $this->ilErr->MESSAGE);
315 }
316
317 $this->initLoginForm();
318 if ($this->form->checkInput()) {
319 // @todo: Move settings ilAuthLoginPageSettings
320 $this->loginSettings = new ilSetting("login_settings");
321 foreach ($this->lng->getInstalledLanguages() as $lang_key) {
322 $settingKey = "login_message_" . $lang_key;
323 if ($this->form->getInput($settingKey)) {
324 $this->loginSettings->set($settingKey, $this->form->getInput($settingKey));
325 }
326 }
327 if ($this->form->getInput('default_auth_mode')) {
328 $this->setting->set('default_auth_mode', $this->form->getInput('default_auth_mode'));
329 }
330
331 $this->tpl->setOnScreenMessage('success', $this->lng->txt("login_information_settings_saved"), true);
332 }
333
334 $this->ctrl->redirect($this, 'show');
335 }

References ILIAS\Repository\ctrl(), ILIAS\Repository\form(), initLoginForm(), and ILIAS\Repository\lng().

+ Here is the call graph for this function:

◆ setDefLangFirst()

ilAuthLoginPageEditorGUI::setDefLangFirst ( string  $a_def_language,
array  $a_languages 
)
private

returns an array of all installed languages, default language at the first position

Parameters
string$a_def_languageDefault language of the current installation
array$a_languagesArray of all installed languages
Returns
array $languages Array of the installed languages, default language at first position or an empty array, if $a_a_def_language is empty
Author
Michael Jansen

Definition at line 417 of file class.ilAuthLoginPageEditorGUI.php.

417 : array
418 {
419 $languages = [];
420 if ($a_def_language !== "") {
421 $languages[] = $a_def_language;
422
423 foreach ($a_languages as $val) {
424 if (!in_array($val, $languages, true)) {
425 $languages[] = $val;
426 }
427 }
428 }
429
430 return $languages;
431 }

References $languages.

Referenced by initLoginForm().

+ Here is the caller graph for this function:

◆ show()

ilAuthLoginPageEditorGUI::show ( )
protected

Show current activated editor.

Definition at line 189 of file class.ilAuthLoginPageEditorGUI.php.

189 : void
190 {
191 $this->addEditorSwitch();
192
193 switch ($this->getSettings()->getMode()) {
195 $this->showRichtextEditor();
196 break;
198 $this->showIliasEditor();
199 break;
200 }
201 }
showIliasEditor()
Show ILIAS page editor summary.
showRichtextEditor()
Show richtext editor @global ilRbacSystem $rbacsystem @global ilLanguage $lng @global ilSetting $ilSe...

References addEditorSwitch(), getSettings(), ilAuthLoginPageEditorSettings\MODE_IPE, ilAuthLoginPageEditorSettings\MODE_RTE, showIliasEditor(), and showRichtextEditor().

+ Here is the call graph for this function:

◆ showIliasEditor()

ilAuthLoginPageEditorGUI::showIliasEditor ( )
protected

Show ILIAS page editor summary.

Definition at line 270 of file class.ilAuthLoginPageEditorGUI.php.

270 : void
271 {
272 $tbl = new ilAuthLoginPageEditorTableGUI($this, 'show');
273 $tbl->parse();
274
275 $this->tpl->setContent($tbl->getHTML());
276 }

Referenced by show().

+ Here is the caller graph for this function:

◆ showRichtextEditor()

ilAuthLoginPageEditorGUI::showRichtextEditor ( )
protected

Show richtext editor @global ilRbacSystem $rbacsystem @global ilLanguage $lng @global ilSetting $ilSetting.

Author
Michael Jansen

Definition at line 285 of file class.ilAuthLoginPageEditorGUI.php.

285 : void
286 {
287 if (!$this->rbacsystem->checkAccess("visible,read", $this->getRefId())) {
288 $this->ilErr->raiseError($this->lng->txt("permission_denied"), $this->ilErr->MESSAGE);
289 }
290 $this->lng->loadLanguageModule("meta");
291
292 $this->tpl->addBlockFile(
293 "ADM_CONTENT",
294 "adm_content",
295 "tpl.auth_login_messages.html",
296 "Services/Authentication"
297 );
298 $this->tpl->setVariable("FORMACTION", $this->ctrl->getFormAction($this));
299 $this->tpl->setVariable("TXT_HEADLINE", $this->lng->txt("login_information"));
300 $this->tpl->setVariable("TXT_DESCRIPTION", $this->lng->txt("login_information_desc"));
301 $this->tpl->setVariable("TXT_SUBMIT", $this->lng->txt("save"));
302 $this->initLoginForm();
303 $this->tpl->setVariable('LOGIN_INFO', $this->form->getHTML());
304 }

References ILIAS\Repository\ctrl(), ILIAS\Repository\form(), initLoginForm(), and ILIAS\Repository\lng().

Referenced by show().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ switchIPE()

ilAuthLoginPageEditorGUI::switchIPE ( )
protected

Switch editor mode to ILIAS Page editor.

Definition at line 231 of file class.ilAuthLoginPageEditorGUI.php.

231 : void
232 {
234 $this->getSettings()->update();
235
236 $this->tpl->setOnScreenMessage('success', $this->lng->txt('login_page_editor_switched'), true);
237 $this->ctrl->redirect($this, 'show');
238 }

References ILIAS\Repository\ctrl(), getSettings(), ILIAS\Repository\lng(), and ilAuthLoginPageEditorSettings\MODE_IPE.

+ Here is the call graph for this function:

◆ switchRTE()

ilAuthLoginPageEditorGUI::switchRTE ( )
protected

Switch editor mode to richtext editor.

Definition at line 243 of file class.ilAuthLoginPageEditorGUI.php.

243 : void
244 {
246 $this->getSettings()->update();
247
248 $this->tpl->setOnScreenMessage('success', $this->lng->txt('login_page_editor_switched'), true);
249 $this->ctrl->redirect($this, 'show');
250 }

References ILIAS\Repository\ctrl(), getSettings(), ILIAS\Repository\lng(), and ilAuthLoginPageEditorSettings\MODE_RTE.

+ Here is the call graph for this function:

Field Documentation

◆ $content_style_domain

ILIAS Style Content Object ObjectFacade ilAuthLoginPageEditorGUI::$content_style_domain
protected

Definition at line 45 of file class.ilAuthLoginPageEditorGUI.php.

◆ $ctrl

ilCtrl ilAuthLoginPageEditorGUI::$ctrl
private

Definition at line 32 of file class.ilAuthLoginPageEditorGUI.php.

◆ $form

ilPropertyFormGUI ilAuthLoginPageEditorGUI::$form
private

Definition at line 40 of file class.ilAuthLoginPageEditorGUI.php.

◆ $ilErr

ilErrorHandling ilAuthLoginPageEditorGUI::$ilErr
private

Definition at line 39 of file class.ilAuthLoginPageEditorGUI.php.

◆ $key

int ilAuthLoginPageEditorGUI::$key = null
private

Definition at line 49 of file class.ilAuthLoginPageEditorGUI.php.

Referenced by initLoginForm().

◆ $languages

array ilAuthLoginPageEditorGUI::$languages = []
private

Definition at line 51 of file class.ilAuthLoginPageEditorGUI.php.

Referenced by initLoginForm(), and setDefLangFirst().

◆ $lng

ilLanguage ilAuthLoginPageEditorGUI::$lng
private

Definition at line 33 of file class.ilAuthLoginPageEditorGUI.php.

◆ $loginSettings

ilSetting ilAuthLoginPageEditorGUI::$loginSettings = null
private

Definition at line 44 of file class.ilAuthLoginPageEditorGUI.php.

◆ $rbacsystem

ilRbacSystem ilAuthLoginPageEditorGUI::$rbacsystem
private

Definition at line 37 of file class.ilAuthLoginPageEditorGUI.php.

◆ $redirect_source

string ilAuthLoginPageEditorGUI::$redirect_source = null
private

Definition at line 48 of file class.ilAuthLoginPageEditorGUI.php.

◆ $ref_id

int ilAuthLoginPageEditorGUI::$ref_id
private

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

Referenced by getRefId().

◆ $setting

ilSetting ilAuthLoginPageEditorGUI::$setting
private

Definition at line 38 of file class.ilAuthLoginPageEditorGUI.php.

◆ $settings

ilAuthLoginPageEditorSettings ilAuthLoginPageEditorGUI::$settings
private

Definition at line 43 of file class.ilAuthLoginPageEditorGUI.php.

Referenced by activate(), and getSettings().

◆ $tabs

ilTabsGUI ilAuthLoginPageEditorGUI::$tabs
private

Definition at line 35 of file class.ilAuthLoginPageEditorGUI.php.

◆ $toolbar

ilToolbarGUI ilAuthLoginPageEditorGUI::$toolbar
private

Definition at line 36 of file class.ilAuthLoginPageEditorGUI.php.

◆ $tpl

ilGlobalTemplateInterface ilAuthLoginPageEditorGUI::$tpl
private

Definition at line 34 of file class.ilAuthLoginPageEditorGUI.php.

◆ $visible_languages

array ilAuthLoginPageEditorGUI::$visible_languages = []
private

Definition at line 50 of file class.ilAuthLoginPageEditorGUI.php.


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