['default' => 'border:none; color:#fff; font-size:14pt; qproperty-alignment:AlignRight'], 'clock-background-style' => ['default' => 'border:none; background:#888687'], 'clock-shadow' => ['default' => '1 1 #555 1', 'regex' => '\s*([0-9-]+(\s+[0-9-]+(\s+[#0-9a-zA-Z]+(\s+[0-9-]+)?)?)?)?\s*'], 'username-placeholder' => ['default' => 'user id'], 'password-placeholder' => ['default' => 'password'], 'shib-session-button-text' => ['default' => 'Shibboleth-Login'], 'qr-session-button-text' => ['default' => 'QR-Code Login'], 'user-session-button-text' => ['default' => 'Campus-Login'], 'guest-session-button-text' => ['default' => 'Gastsitzung'], 'guest-session-start-text' => ['default' => 'Gast-Sitzungen sind möglicherweise auf einzelne' . ' (z.B. ausschließlich interne) Webseiten beschränkt.'], 'guest-session-start-button-text' => ['default' => 'Starten einer Gastsitzung'], 'reset-timeout' => ['default' => 30, 'regex' => '[0-9]*'], ]; /* For translation scanner Dictionary::translate('ls_clock-text-style'), Dictionary::translate('ls_clock-background-style'), Dictionary::translate('ls_clock-shadow'), Dictionary::translate('ls_username-placeholder'), Dictionary::translate('ls_password-placeholder'), Dictionary::translate('ls_shib-session-button-text'), Dictionary::translate('ls_qr-session-button-text'), Dictionary::translate('ls_user-session-button-text'), Dictionary::translate('ls_guest-session-button-text'), Dictionary::translate('ls_guest-session-start-text'), Dictionary::translate('ls_guest-session-start-button-text'), Dictionary::translate('ls_reset-timeout'), */ class LoginScreen_Start extends AddModule_Base { protected function renderInternal() { /* Load or initialise session data */ if (Request::get('back', 'false', 'string') !== 'false') { /* If coming via the back button, load the session data */ $session_data = Session::get(SCRN_SESSION_DATA); if (!is_array($session_data)) { $session_data = []; } } elseif ($this->edit !== null) { $session_data = $this->edit->getData(null); Session::set(SCRN_SESSION_DATA, $session_data); } else { $session_data = []; Session::set(SCRN_SESSION_DATA, false); } if (empty($session_data)) { $session_data = []; foreach (FIELDS as $key => $value) { $session_data[$key] = $value['default']; } } $data = []; foreach (FIELDS as $key => $opts) { $data[] = [ 'field' => $key, 'value' => $session_data[$key] ?? '', 'caption' => Dictionary::translate('ls_' . $key), 'regex' => $opts['regex'] ?? null, ]; } Render::addDialog(Dictionary::translateFile('config-module', 'loginscreen_title'), false, 'loginscreen-start', [ 'next' => 'LoginScreen_Finish', 'edit' => $this->edit !== null ? $this->edit->id() : 0, 'fields' => $data, 'title' => $this->edit !== null ? $this->edit->title() : '', ]); } } class LoginScreen_Finish extends AddModule_Base { protected function preprocessInternal() { $title = trim(Request::post('title', '', 'string')); if (empty($title)) { Util::redirect('?do=sysconfig&action=addmodule&step=LoginScreen_Start&back=true'); } $session_data = Session::get(SCRN_SESSION_DATA); if (!is_array($session_data)) { $session_data = []; } $session_data['title'] = $title; /* Only create an instance if it's a new one */ if ($this->edit !== null) { $module = $this->edit; } else { $module = ConfigModule::getInstance('LoginScreen'); } $err = false; foreach (FIELDS as $key => $field) { $val = Request::post($key, '', 'string'); if (isset($field['regex']) && !preg_match("/{$field['regex']}/", $val)) { Message::addError('regex-mismatch', $val, $field['regex']); $err = true; } $session_data[$key] = $val; $module->setData($key, $val); } if ($err) { Session::set(SCRN_SESSION_DATA, $session_data); Util::redirect('?do=sysconfig&action=addmodule&step=LoginScreen_Start&back=true'); } /* Insert or update database entries */ if ($this->edit !== null) { $module->update($session_data['title']); } else { $module->insert($session_data['title']); } $task = $module->generate($this->edit === null); // Yay Session::set(SCRN_SESSION_DATA, false); if ($task !== false && $this->edit !== null) { Message::addSuccess('module-edited'); } elseif ($task !== false) { Message::addSuccess('module-added'); AddModule_Base::setStep('AddModule_Assign', $module->id()); return; } Util::redirect('?do=SysConfig'); } }