From 8479cf30b0d2096e4c119db85953c743e7f2b58b Mon Sep 17 00:00:00 2001
From: Xenomporio <>
Date: Wed, 29 Jun 2022 11:26:50 +0200
Subject: [PATCH] Login screen with overview graphics
---
phpwf/class.player.php | 854 +++++++++---------
www/themes/new/css/login_styles.css | 4 +-
.../new/images/login_screen_picture.jpg | Bin 0 -> 527449 bytes
www/themes/new/templates/loginpage.tpl | 38 -
4 files changed, 429 insertions(+), 467 deletions(-)
create mode 100644 www/themes/new/images/login_screen_picture.jpg
diff --git a/phpwf/class.player.php b/phpwf/class.player.php
index b7b60989..477ba8e8 100644
--- a/phpwf/class.player.php
+++ b/phpwf/class.player.php
@@ -1,430 +1,430 @@
-DefautTemplates="defaulttemplates";
- $this->DefautTheme="default";
- }
-
- function SetDefaultTemplates($path)
- {
- }
-
- function SetDefaultTheme($path)
- {
-
- }
-
- public function BuildNavigation()
- {
- if(!WithGUI() || !method_exists($this->app->Page,'CreateNavigation') || !method_exists('erpAPI','Navigation')) {
- return;
- }
-
- $this->app->Page->CreateNavigation($this->app->erp->Navigation());
- }
-
- public function Run($sessionObj)
- {
- $this->app = $sessionObj->app;
- // play application only when layer 2 said that its ok
- if(!$sessionObj->GetCheck()) {
- if($sessionObj->reason=='PLEASE_LOGIN')
- {
- $module = 'welcome';
- $action = 'login';
- $this->app->Secure->GET['module']='welcome';
- $this->app->Secure->GET['action']='login';
- }
- } else {
- $hasModuleAndAction = !empty($this->app->Secure->GET['module']) && !empty($this->app->Secure->GET['action']);
- if($hasModuleAndAction &&
- $this->app->Secure->GET['module'] === 'artikel' && $this->app->Secure->GET['action'] === 'thumbnail') {
- /** @var Artikel $obj */
- $obj = $this->app->loadModule('artikel');
- if(!empty($obj) && method_exists($obj, 'ArtikelThumbnailCache')) {
- $obj->ArtikelThumbnailCache();
- }
- }
- elseif($hasModuleAndAction &&
- $this->app->Secure->GET['module'] === 'wiki' && $this->app->Secure->GET['action'] === 'getfile') {
- /** @var Wiki $obj */
- $obj = $this->app->loadModule('wiki');
- if(!empty($obj) && method_exists($obj, 'WikiGetFileCache')) {
- $obj->WikiGetFileCache();
- }
- }
-
- if (!empty($this->app->Secure->GET['module']) && !empty($this->app->Secure->GET['action']) &&
- in_array($this->app->Secure->GET['module'],['backup', 'systemtemplates']) && $this->app->Secure->GET['action'] === 'readstatus'){
- $sessionFile = dirname(__DIR__) . DIRECTORY_SEPARATOR . 'backup' . DIRECTORY_SEPARATOR . 'session.txt';
- if(file_exists($sessionFile) && ((string) $bckSession = file_get_contents($sessionFile)) && trim($bckSession) === session_id()){
- $obj = $this->app->loadModule($this->app->Secure->GET['module']);
- $obj->ReadStatus();
- }
- }
-
- // Get actual commands from URL
- $module = $this->app->Secure->GetGET('module','module');
- $action = $this->app->Secure->GetGET('action','module');
- if($module =='') {
- $module = 'welcome';
- $action = 'main';
- }
-
-
- if($this->app->erp->isIoncube() && method_exists($this->app->erp, 'IoncubeProperty')
- && WithGUI() && !(($module=='welcome' && $action=='upgrade') || $module=='' || ($module=='welcome' && $action=='start')))
- {
- if(method_exists('erpAPI','Ioncube_getMaxUser'))
- {
- $maxuser = erpAPI::Ioncube_getMaxUser();
- }elseif(method_exists($this->app->erp, 'IoncubegetMaxUser'))
- {
- $maxuser = $this->app->erp->IoncubegetMaxUser();
- }else{
- $maxuser = 0;
- }
- if(method_exists('erpAPI','Ioncube_getMaxLightusers'))
- {
- $maxlightuser = erpAPI::Ioncube_getMaxLightusers();
- }else{
- $maxlightuser = 0;
- }
- if($maxuser)
- {
- $anzuser2 = 0;
- if($maxlightuser > 0) {
- $anzuser2 = (int)$this->app->DB->Select("SELECT count(DISTINCT u.id) FROM `user` u WHERE activ = 1 AND type = 'lightuser' ");
- $anzuser = (int)$this->app->DB->Select("SELECT count(id) FROM `user` WHERE activ = 1 AND not isnull(hwtoken) AND hwtoken <> 4") - $anzuser2;
- $anzuserzeiterfassung = (int)$this->app->DB->Select("SELECT count(*) from user where activ = 1 AND hwtoken = 4 AND type != 'lightuser'");
- }else{
- $anzuser = $this->app->DB->Select("SELECT count(*) from user where activ = 1 AND hwtoken <> 4 ");
- $anzuserzeiterfassung = (int)$this->app->DB->Select("SELECT count(*) from user where activ = 1 AND hwtoken = 4");
- }
-
- $maxmitarbeiterzeiterfassung = $this->app->erp->ModulVorhanden('mitarbeiterzeiterfassung')?$maxuser:0;
- if($anzuser > $maxuser
- || (
- ($anzuser + $anzuserzeiterfassung + $anzuser2) >
- $maxmitarbeiterzeiterfassung + $maxuser + $maxlightuser
- )
- || (($anzuser + $anzuserzeiterfassung) > $maxmitarbeiterzeiterfassung + $maxuser)
- ) {
- if(!(($module == 'welcome' &&
- ($action=='info' || $action == 'start' || $action == 'logout' || $action == '' || $action == 'main')) ||
- ($module == 'einstellungen' && ($action == 'list' || $action == '')) ||
- $module == 'benutzer'
- ))
- {
- if($this->app->erp->RechteVorhanden('benutzer','list'))
- {
- $module = 'benutzer';
- $action = 'list';
-
- if($maxlightuser > 0){
- $error = 'Es existieren mehr aktive Benutzer als Ihre Lizenz erlaubt: Benutzer ' . ($anzuser + $anzuser2) . ($maxlightuser > 0 ? ' (davon ' . $anzuser2 . ' Light-User)' : '') . ' von ' . ($maxuser + $maxlightuser) . ($maxlightuser > 0 ? ' (' . $maxlightuser . ' Light-User)' : '');
- }else{
- $error = 'Es existieren mehr aktive Benutzer als Ihre Lizenz erlaubt: Benutzer ' . ($anzuser + $anzuser2) . ($maxlightuser > 0 ? ' (davon ' . $anzuser2 . ' Zeiterfassungs-User)' : '') . ' von ' . ($maxuser + $anzuser2) . ($anzuser2 > 0 ? ' (' . $anzuser2 . ' Zeiterfassungs-User)' : '');
- }
- $error = '
'.$error.'
';
- $this->app->Tpl->Add('MESSAGE', $error);
- $this->app->Secure->GET['msg'] = $this->app->erp->base64_url_encode($error);
- }else{
- $module = 'welcome';
- $action = 'info';
- }
- $this->app->Secure->GET['module'] = $module;
- $this->app->Secure->GET['action'] = $action;
- }
- }
- }
- if(method_exists('erpAPI','Ioncube_Property'))
- {
- $deaktivateonexp = erpAPI::Ioncube_Property('deaktivateonexp');
- }else{
- $deaktivateonexp = $this->app->erp->IoncubeProperty('deaktivateonexp');
- }
- if($deaktivateonexp)
- {
- if(method_exists('erpAPI','Ioncube_HasExpired'))
- {
- $IoncubeHasExpired = erpAPI::Ioncube_HasExpired();
- }elseif(method_exists($this->app->erp, 'IoncubeHasExpired'))
- {
- $IoncubeHasExpired = $this->app->erp->IoncubeHasExpired();
- }else{
- $IoncubeHasExpired = false;
- }
- }else{
- $IoncubeHasExpired = false;
- }
- if($deaktivateonexp && $IoncubeHasExpired
- && !(($module == 'welcome' && $action='logout') || ($module == 'welcome' && $action='start') || ($module == 'welcome' && $action='main'))
- )
- {
- $module = 'welcome';
- $action = 'info';
- $this->app->Secure->GET['module'] = $module;
- $this->app->Secure->GET['action'] = $action;
- }
- }
- }
-
- if($action!="list" && $action!="css" && $action!="logo" && $action!="poll" && $module!="ajax" && $module!="protokoll" && $action!="thumbnail"){
- $this->app->erp->Protokoll();
- }
- $id = $this->app->Secure->GetGET('id');
- $lid = $this->app->Secure->GetGET('lid');
- if($module !== 'welcome' && $action !== 'poll' && $module !== 'ajax'){
- if(($module !== 'artikel' || $action !== 'thumbnail')
- && ($module !== 'wiki' || $action !== 'getfile')
- && $action !== 'editable' && $action !== 'positionen'){
- $this->app->Laender($module, $action, $id, $lid);
- }
- }
-
- // plugin instanzieren
- // start module
- if(file_exists(dirname(__DIR__).'/www/pages/'.$module.'.php')){
- if(file_exists(dirname(__DIR__).'/www/pages/'.$module.'_custom.php')){
- include_once dirname(__DIR__).'/www/pages/'.$module.'.php';
- include_once dirname(__DIR__).'/www/pages/'.$module.'_custom.php';
- //create dynamical an object
- $constr = strtoupper($module[0]) . substr($module, 1) . 'Custom';
- if(class_exists($constr))
- {
- $myApp = new $constr($this->app);
- }else{
- $constr = strtoupper($module[0]) . substr($module, 1);
- if(class_exists($constr))
- {
- $myApp = new $constr($this->app);
- }
- elseif(file_exists(dirname(__DIR__).'/www/pages/'.$module.'.php')){
- include dirname(__DIR__).'/www/pages/'.$module.'.php';
- if(class_exists($constr)){
- $myApp = new $constr($this->app);
- }
- }
- }
- if(method_exists($constr, 'AllowedVersion') && isset($this->app->User) && $this->app->User && method_exists($this->app->User, 'GetType') && $this->app->User->GetType() == 'admin')
- {
- $r2 = new ReflectionMethod($constr, 'AllowedVersion');
- if($r2->isStatic())
- {
- $allowed = $constr::AllowedVersion();
- include(dirname(__DIR__) . '/version.php');
- if((isset($allowed['max']) && ((float)$allowed['max'] < (float)$version_revision))
- ||
- (isset($allowed['versionen']) && (
- (is_array($allowed['versionen']) && !in_array($version_revision, $allowed['versionen']))
- || (!is_array($allowed['versionen']) && $allowed['versionen'] != $version_revision)
- ))
- )
- {
- $title = 'Inkompatibilität festgestellt';
- $message = 'Die Datei '.$module."_custom.php".' auf Ihrem System, ist nicht für Ihre Version geeignet';
-
- /** @var \Xentral\Modules\SystemNotification\Gateway\NotificationGateway $notifyGateway */
- $notifyGateway = $this->app->Container->get('NotificationGateway');
- if (!$notifyGateway->hasDuplicatedMessage($this->app->User->GetID(), $title, $message)) {
- /** @var \Xentral\Modules\SystemNotification\Service\NotificationServiceInterface $notifyService */
- $notifyService = $this->app->Container->get('NotificationService');
- $notifyService->create($this->app->User->GetID(), 'warning', $title, $message);
- }
- }
- }
- }
- } else {
- include_once(dirname(__DIR__)."/www/pages/".$module.".php");
- //create dynamical an object
- $constr = strtoupper($module[0]) . substr($module, 1);
- if(class_exists($constr))$myApp = new $constr($this->app);
- }
- }
- else {
- if(file_exists(dirname(__DIR__)."/www/pages/_gen/".$module.".php")){
- include_once(dirname(__DIR__)."/www/pages/_gen/".$module.".php");
- //create dynamical an object
- $constr = "Gen" . strtoupper($module[0]) . substr($module, 1);
- $myApp = new $constr($this->app);
- }
- else {
- if(file_exists(dirname(__DIR__)."/www/pages/_gen/".$module.".php")){
- include_once(dirname(__DIR__)."/www/pages/_gen/".$module.".php");
- //create dynamical an object
- $constr = "Gen" . strtoupper($module[0]) . substr($module, 1);
- $myApp = new $constr($this->app);
- }
- }
- }
- $this->app->erp->RunHook('player_run_before_include_js_css');
-
- /** @deprecated-block-start Wird später über den Installer eingebunden */
- if (class_exists('Xentral\Modules\SystemNotification\Bootstrap', true)) {
- $javascript = forward_static_call(['Xentral\\Modules\\SystemNotification\\Bootstrap', 'registerJavascript']);
- foreach ($javascript as $cacheName => $jsFiles) {
- $this->app->ModuleScriptCache->IncludeJavascriptFiles($cacheName, $jsFiles);
- }
- $stylesheets = forward_static_call(['Xentral\\Modules\\SystemNotification\\Bootstrap', 'registerStylesheets']);
- foreach ($stylesheets as $cacheName => $cssFiles) {
- $this->app->ModuleScriptCache->IncludeStylesheetFiles($cacheName, $cssFiles);
- }
- }
- if (class_exists('Xentral\Modules\Wizard\Bootstrap', true)) {
- $javascript = forward_static_call(['Xentral\\Modules\\Wizard\\Bootstrap', 'registerJavascript']);
- foreach ($javascript as $cacheName => $jsFiles) {
- $this->app->ModuleScriptCache->IncludeJavascriptFiles($cacheName, $jsFiles);
- }
- $stylesheets = forward_static_call(['Xentral\\Modules\\Wizard\\Bootstrap', 'registerStylesheets']);
- foreach ($stylesheets as $cacheName => $cssFiles) {
- $this->app->ModuleScriptCache->IncludeStylesheetFiles($cacheName, $cssFiles);
- }
- }
- if (class_exists('Xentral\\Widgets\\ClickByClickAssistant\\Bootstrap', true)) {
- $this->app->ModuleScriptCache->IncludeWidgetNew('ClickByClickAssistant');
- }
- if (class_exists('Xentral\\Widgets\\SuperSearch\\Bootstrap', true)) {
- $this->app->ModuleScriptCache->IncludeWidgetNew('SuperSearch');
- }
- /** @deprecated-block-end */
-
- $moduleClassName = strtoupper($module[0]) . substr($module, 1);
- $this->app->ModuleScriptCache->IncludeModule($moduleClassName);
- $this->app->Tpl->Add('MODULESTYLESHEET', $this->app->ModuleScriptCache->GetStylesheetHtmlTags());
- $this->app->Tpl->Add('MODULEJAVASCRIPTHEAD', $this->app->ModuleScriptCache->GetJavascriptHtmlTags('head'));
- $this->app->Tpl->Add('MODULEJAVASCRIPTBODY', $this->app->ModuleScriptCache->GetJavascriptHtmlTags('body'));
-
- $permission = true;
- if(isset($myApp) && method_exists($myApp,'CheckRights'))$permission = $myApp->CheckRights();
-
- if(!$permission)
- {
- if($this->app->User->GetID()<=0)
- {
- $this->app->erp->Systemlog("Keine gueltige Benutzer ID erhalten",1);
- @session_destroy();
- echo str_replace('BACK',"index.php?module=welcome&action=login",$this->app->Tpl->FinalParse("permissiondenied.tpl"));
- }
- else {
- $this->app->erp->Systemlog("Fehlendes Recht",1);
- echo str_replace('BACK',isset($_SERVER['HTTP_REFERER'])?$_SERVER['HTTP_REFERER']:'',$this->app->Tpl->FinalParse("permissiondenied.tpl"));
- }
- exit;
- }
-
- $this->app->calledWhenAuth($this->app->User->GetType());
- if($this->app->BuildNavigation==true)
- $this->BuildNavigation();
-
- $this->app->endtime = microtime();
-
- $right = $this->app->Secure->GetGET("right");
-
- $tmpfirmendatenfkt = 'Firmendaten';
- if(method_exists($this->app->erp,'TplFirmendaten'))$tmpfirmendatenfkt = 'TplFirmendaten';
-
-
- $firmenfarbehell = $this->app->erp->$tmpfirmendatenfkt("firmenfarbehell");
- if($firmenfarbehell =="")
- $firmenfarbehell = "#3fbac9";
- $this->app->Tpl->Set('COLOR1',$firmenfarbehell);
-
- $this->app->calledBeforeFinish();
-
- $this->app->Tpl->Set('JQUERYMIGRATESRC', './js/jquery/jquery-migrate-3.2.0.min.js');
-
- $this->app->Tpl->Set('TESTLIZENZABLAUF', '');
- if($this->app->BuildNavigation==true)
- {
- if($right==1)
- echo $this->app->Tpl->FinalParse('right.tpl');
- else
- {
- if($module==='welcome' && $action==='login'){
- if(is_file(dirname(__DIR__).'/www/themes/new/templates/loginslider.tpl')) {
- $this->app->Tpl->Set(
- 'LOGINSLIDER',
- file_get_contents(dirname(__DIR__).'/www/themes/new/templates/loginslider.tpl')
- );
- }
- else{
- $this->app->Tpl->Set(
- 'LOGINSLIDER',
- '
-
'
- );
- }
-
- $this->app->erp->RunHook('loginpage');
- echo $this->app->Tpl->FinalParse('loginpage.tpl');
- }
- elseif($module==='welcome' && $action==='passwortvergessen'){
- echo $this->app->Tpl->FinalParse('passwortvergessenpage.tpl');
- }
- else {
- $this->app->erp->addFav();
-
- $this->app->erp->HelpIconAndTooltip();
-
- if(
- ($module !== 'welcome'
- || ($action !== 'settings' && $action !== 'logout' && $action !== 'login'
- && $action !== 'start'&& $action !== 'startseite' && $action !== 'main'
- )
- )
- && ($isadminadmin = $this->app->acl->IsAdminadmin()))
- {
- header('Location: index.php?module=welcome&action=start');
- exit;
- }
-
- $this->app->HeaderBoxen();
- if($this->app->erp->UserDevice()==='smartphone'){
- echo $this->app->Tpl->FinalParse('page_smartphone.tpl');
- }
- else{
-
- $this->app->Tpl->Set('VUEJS', 'vue.min.js');
- $this->app->erp->RunHook('before_final_parse_page');
- echo $this->app->Tpl->FinalParse('page.tpl');
- }
- }
- }
- }
- else {
- if($this->app->PopupJS){
- echo $this->app->Tpl->FinalParse('popup_js.tpl');
- }
- else{
- echo $this->app->Tpl->FinalParse('popup.tpl');
- }
- }
- }
-}
+DefautTemplates="defaulttemplates";
+ $this->DefautTheme="default";
+ }
+
+ function SetDefaultTemplates($path)
+ {
+ }
+
+ function SetDefaultTheme($path)
+ {
+
+ }
+
+ public function BuildNavigation()
+ {
+ if(!WithGUI() || !method_exists($this->app->Page,'CreateNavigation') || !method_exists('erpAPI','Navigation')) {
+ return;
+ }
+
+ $this->app->Page->CreateNavigation($this->app->erp->Navigation());
+ }
+
+ public function Run($sessionObj)
+ {
+ $this->app = $sessionObj->app;
+ // play application only when layer 2 said that its ok
+ if(!$sessionObj->GetCheck()) {
+ if($sessionObj->reason=='PLEASE_LOGIN')
+ {
+ $module = 'welcome';
+ $action = 'login';
+ $this->app->Secure->GET['module']='welcome';
+ $this->app->Secure->GET['action']='login';
+ }
+ } else {
+ $hasModuleAndAction = !empty($this->app->Secure->GET['module']) && !empty($this->app->Secure->GET['action']);
+ if($hasModuleAndAction &&
+ $this->app->Secure->GET['module'] === 'artikel' && $this->app->Secure->GET['action'] === 'thumbnail') {
+ /** @var Artikel $obj */
+ $obj = $this->app->loadModule('artikel');
+ if(!empty($obj) && method_exists($obj, 'ArtikelThumbnailCache')) {
+ $obj->ArtikelThumbnailCache();
+ }
+ }
+ elseif($hasModuleAndAction &&
+ $this->app->Secure->GET['module'] === 'wiki' && $this->app->Secure->GET['action'] === 'getfile') {
+ /** @var Wiki $obj */
+ $obj = $this->app->loadModule('wiki');
+ if(!empty($obj) && method_exists($obj, 'WikiGetFileCache')) {
+ $obj->WikiGetFileCache();
+ }
+ }
+
+ if (!empty($this->app->Secure->GET['module']) && !empty($this->app->Secure->GET['action']) &&
+ in_array($this->app->Secure->GET['module'],['backup', 'systemtemplates']) && $this->app->Secure->GET['action'] === 'readstatus'){
+ $sessionFile = dirname(__DIR__) . DIRECTORY_SEPARATOR . 'backup' . DIRECTORY_SEPARATOR . 'session.txt';
+ if(file_exists($sessionFile) && ((string) $bckSession = file_get_contents($sessionFile)) && trim($bckSession) === session_id()){
+ $obj = $this->app->loadModule($this->app->Secure->GET['module']);
+ $obj->ReadStatus();
+ }
+ }
+
+ // Get actual commands from URL
+ $module = $this->app->Secure->GetGET('module','module');
+ $action = $this->app->Secure->GetGET('action','module');
+ if($module =='') {
+ $module = 'welcome';
+ $action = 'main';
+ }
+
+
+ if($this->app->erp->isIoncube() && method_exists($this->app->erp, 'IoncubeProperty')
+ && WithGUI() && !(($module=='welcome' && $action=='upgrade') || $module=='' || ($module=='welcome' && $action=='start')))
+ {
+ if(method_exists('erpAPI','Ioncube_getMaxUser'))
+ {
+ $maxuser = erpAPI::Ioncube_getMaxUser();
+ }elseif(method_exists($this->app->erp, 'IoncubegetMaxUser'))
+ {
+ $maxuser = $this->app->erp->IoncubegetMaxUser();
+ }else{
+ $maxuser = 0;
+ }
+ if(method_exists('erpAPI','Ioncube_getMaxLightusers'))
+ {
+ $maxlightuser = erpAPI::Ioncube_getMaxLightusers();
+ }else{
+ $maxlightuser = 0;
+ }
+ if($maxuser)
+ {
+ $anzuser2 = 0;
+ if($maxlightuser > 0) {
+ $anzuser2 = (int)$this->app->DB->Select("SELECT count(DISTINCT u.id) FROM `user` u WHERE activ = 1 AND type = 'lightuser' ");
+ $anzuser = (int)$this->app->DB->Select("SELECT count(id) FROM `user` WHERE activ = 1 AND not isnull(hwtoken) AND hwtoken <> 4") - $anzuser2;
+ $anzuserzeiterfassung = (int)$this->app->DB->Select("SELECT count(*) from user where activ = 1 AND hwtoken = 4 AND type != 'lightuser'");
+ }else{
+ $anzuser = $this->app->DB->Select("SELECT count(*) from user where activ = 1 AND hwtoken <> 4 ");
+ $anzuserzeiterfassung = (int)$this->app->DB->Select("SELECT count(*) from user where activ = 1 AND hwtoken = 4");
+ }
+
+ $maxmitarbeiterzeiterfassung = $this->app->erp->ModulVorhanden('mitarbeiterzeiterfassung')?$maxuser:0;
+ if($anzuser > $maxuser
+ || (
+ ($anzuser + $anzuserzeiterfassung + $anzuser2) >
+ $maxmitarbeiterzeiterfassung + $maxuser + $maxlightuser
+ )
+ || (($anzuser + $anzuserzeiterfassung) > $maxmitarbeiterzeiterfassung + $maxuser)
+ ) {
+ if(!(($module == 'welcome' &&
+ ($action=='info' || $action == 'start' || $action == 'logout' || $action == '' || $action == 'main')) ||
+ ($module == 'einstellungen' && ($action == 'list' || $action == '')) ||
+ $module == 'benutzer'
+ ))
+ {
+ if($this->app->erp->RechteVorhanden('benutzer','list'))
+ {
+ $module = 'benutzer';
+ $action = 'list';
+
+ if($maxlightuser > 0){
+ $error = 'Es existieren mehr aktive Benutzer als Ihre Lizenz erlaubt: Benutzer ' . ($anzuser + $anzuser2) . ($maxlightuser > 0 ? ' (davon ' . $anzuser2 . ' Light-User)' : '') . ' von ' . ($maxuser + $maxlightuser) . ($maxlightuser > 0 ? ' (' . $maxlightuser . ' Light-User)' : '');
+ }else{
+ $error = 'Es existieren mehr aktive Benutzer als Ihre Lizenz erlaubt: Benutzer ' . ($anzuser + $anzuser2) . ($maxlightuser > 0 ? ' (davon ' . $anzuser2 . ' Zeiterfassungs-User)' : '') . ' von ' . ($maxuser + $anzuser2) . ($anzuser2 > 0 ? ' (' . $anzuser2 . ' Zeiterfassungs-User)' : '');
+ }
+ $error = ''.$error.'
';
+ $this->app->Tpl->Add('MESSAGE', $error);
+ $this->app->Secure->GET['msg'] = $this->app->erp->base64_url_encode($error);
+ }else{
+ $module = 'welcome';
+ $action = 'info';
+ }
+ $this->app->Secure->GET['module'] = $module;
+ $this->app->Secure->GET['action'] = $action;
+ }
+ }
+ }
+ if(method_exists('erpAPI','Ioncube_Property'))
+ {
+ $deaktivateonexp = erpAPI::Ioncube_Property('deaktivateonexp');
+ }else{
+ $deaktivateonexp = $this->app->erp->IoncubeProperty('deaktivateonexp');
+ }
+ if($deaktivateonexp)
+ {
+ if(method_exists('erpAPI','Ioncube_HasExpired'))
+ {
+ $IoncubeHasExpired = erpAPI::Ioncube_HasExpired();
+ }elseif(method_exists($this->app->erp, 'IoncubeHasExpired'))
+ {
+ $IoncubeHasExpired = $this->app->erp->IoncubeHasExpired();
+ }else{
+ $IoncubeHasExpired = false;
+ }
+ }else{
+ $IoncubeHasExpired = false;
+ }
+ if($deaktivateonexp && $IoncubeHasExpired
+ && !(($module == 'welcome' && $action='logout') || ($module == 'welcome' && $action='start') || ($module == 'welcome' && $action='main'))
+ )
+ {
+ $module = 'welcome';
+ $action = 'info';
+ $this->app->Secure->GET['module'] = $module;
+ $this->app->Secure->GET['action'] = $action;
+ }
+ }
+ }
+
+ if($action!="list" && $action!="css" && $action!="logo" && $action!="poll" && $module!="ajax" && $module!="protokoll" && $action!="thumbnail"){
+ $this->app->erp->Protokoll();
+ }
+ $id = $this->app->Secure->GetGET('id');
+ $lid = $this->app->Secure->GetGET('lid');
+ if($module !== 'welcome' && $action !== 'poll' && $module !== 'ajax'){
+ if(($module !== 'artikel' || $action !== 'thumbnail')
+ && ($module !== 'wiki' || $action !== 'getfile')
+ && $action !== 'editable' && $action !== 'positionen'){
+ $this->app->Laender($module, $action, $id, $lid);
+ }
+ }
+
+ // plugin instanzieren
+ // start module
+ if(file_exists(dirname(__DIR__).'/www/pages/'.$module.'.php')){
+ if(file_exists(dirname(__DIR__).'/www/pages/'.$module.'_custom.php')){
+ include_once dirname(__DIR__).'/www/pages/'.$module.'.php';
+ include_once dirname(__DIR__).'/www/pages/'.$module.'_custom.php';
+ //create dynamical an object
+ $constr = strtoupper($module[0]) . substr($module, 1) . 'Custom';
+ if(class_exists($constr))
+ {
+ $myApp = new $constr($this->app);
+ }else{
+ $constr = strtoupper($module[0]) . substr($module, 1);
+ if(class_exists($constr))
+ {
+ $myApp = new $constr($this->app);
+ }
+ elseif(file_exists(dirname(__DIR__).'/www/pages/'.$module.'.php')){
+ include dirname(__DIR__).'/www/pages/'.$module.'.php';
+ if(class_exists($constr)){
+ $myApp = new $constr($this->app);
+ }
+ }
+ }
+ if(method_exists($constr, 'AllowedVersion') && isset($this->app->User) && $this->app->User && method_exists($this->app->User, 'GetType') && $this->app->User->GetType() == 'admin')
+ {
+ $r2 = new ReflectionMethod($constr, 'AllowedVersion');
+ if($r2->isStatic())
+ {
+ $allowed = $constr::AllowedVersion();
+ include(dirname(__DIR__) . '/version.php');
+ if((isset($allowed['max']) && ((float)$allowed['max'] < (float)$version_revision))
+ ||
+ (isset($allowed['versionen']) && (
+ (is_array($allowed['versionen']) && !in_array($version_revision, $allowed['versionen']))
+ || (!is_array($allowed['versionen']) && $allowed['versionen'] != $version_revision)
+ ))
+ )
+ {
+ $title = 'Inkompatibilität festgestellt';
+ $message = 'Die Datei '.$module."_custom.php".' auf Ihrem System, ist nicht für Ihre Version geeignet';
+
+ /** @var \Xentral\Modules\SystemNotification\Gateway\NotificationGateway $notifyGateway */
+ $notifyGateway = $this->app->Container->get('NotificationGateway');
+ if (!$notifyGateway->hasDuplicatedMessage($this->app->User->GetID(), $title, $message)) {
+ /** @var \Xentral\Modules\SystemNotification\Service\NotificationServiceInterface $notifyService */
+ $notifyService = $this->app->Container->get('NotificationService');
+ $notifyService->create($this->app->User->GetID(), 'warning', $title, $message);
+ }
+ }
+ }
+ }
+ } else {
+ include_once(dirname(__DIR__)."/www/pages/".$module.".php");
+ //create dynamical an object
+ $constr = strtoupper($module[0]) . substr($module, 1);
+ if(class_exists($constr))$myApp = new $constr($this->app);
+ }
+ }
+ else {
+ if(file_exists(dirname(__DIR__)."/www/pages/_gen/".$module.".php")){
+ include_once(dirname(__DIR__)."/www/pages/_gen/".$module.".php");
+ //create dynamical an object
+ $constr = "Gen" . strtoupper($module[0]) . substr($module, 1);
+ $myApp = new $constr($this->app);
+ }
+ else {
+ if(file_exists(dirname(__DIR__)."/www/pages/_gen/".$module.".php")){
+ include_once(dirname(__DIR__)."/www/pages/_gen/".$module.".php");
+ //create dynamical an object
+ $constr = "Gen" . strtoupper($module[0]) . substr($module, 1);
+ $myApp = new $constr($this->app);
+ }
+ }
+ }
+ $this->app->erp->RunHook('player_run_before_include_js_css');
+
+ /** @deprecated-block-start Wird später über den Installer eingebunden */
+ if (class_exists('Xentral\Modules\SystemNotification\Bootstrap', true)) {
+ $javascript = forward_static_call(['Xentral\\Modules\\SystemNotification\\Bootstrap', 'registerJavascript']);
+ foreach ($javascript as $cacheName => $jsFiles) {
+ $this->app->ModuleScriptCache->IncludeJavascriptFiles($cacheName, $jsFiles);
+ }
+ $stylesheets = forward_static_call(['Xentral\\Modules\\SystemNotification\\Bootstrap', 'registerStylesheets']);
+ foreach ($stylesheets as $cacheName => $cssFiles) {
+ $this->app->ModuleScriptCache->IncludeStylesheetFiles($cacheName, $cssFiles);
+ }
+ }
+ if (class_exists('Xentral\Modules\Wizard\Bootstrap', true)) {
+ $javascript = forward_static_call(['Xentral\\Modules\\Wizard\\Bootstrap', 'registerJavascript']);
+ foreach ($javascript as $cacheName => $jsFiles) {
+ $this->app->ModuleScriptCache->IncludeJavascriptFiles($cacheName, $jsFiles);
+ }
+ $stylesheets = forward_static_call(['Xentral\\Modules\\Wizard\\Bootstrap', 'registerStylesheets']);
+ foreach ($stylesheets as $cacheName => $cssFiles) {
+ $this->app->ModuleScriptCache->IncludeStylesheetFiles($cacheName, $cssFiles);
+ }
+ }
+ if (class_exists('Xentral\\Widgets\\ClickByClickAssistant\\Bootstrap', true)) {
+ $this->app->ModuleScriptCache->IncludeWidgetNew('ClickByClickAssistant');
+ }
+ if (class_exists('Xentral\\Widgets\\SuperSearch\\Bootstrap', true)) {
+ $this->app->ModuleScriptCache->IncludeWidgetNew('SuperSearch');
+ }
+ /** @deprecated-block-end */
+
+ $moduleClassName = strtoupper($module[0]) . substr($module, 1);
+ $this->app->ModuleScriptCache->IncludeModule($moduleClassName);
+ $this->app->Tpl->Add('MODULESTYLESHEET', $this->app->ModuleScriptCache->GetStylesheetHtmlTags());
+ $this->app->Tpl->Add('MODULEJAVASCRIPTHEAD', $this->app->ModuleScriptCache->GetJavascriptHtmlTags('head'));
+ $this->app->Tpl->Add('MODULEJAVASCRIPTBODY', $this->app->ModuleScriptCache->GetJavascriptHtmlTags('body'));
+
+ $permission = true;
+ if(isset($myApp) && method_exists($myApp,'CheckRights'))$permission = $myApp->CheckRights();
+
+ if(!$permission)
+ {
+ if($this->app->User->GetID()<=0)
+ {
+ $this->app->erp->Systemlog("Keine gueltige Benutzer ID erhalten",1);
+ @session_destroy();
+ echo str_replace('BACK',"index.php?module=welcome&action=login",$this->app->Tpl->FinalParse("permissiondenied.tpl"));
+ }
+ else {
+ $this->app->erp->Systemlog("Fehlendes Recht",1);
+ echo str_replace('BACK',isset($_SERVER['HTTP_REFERER'])?$_SERVER['HTTP_REFERER']:'',$this->app->Tpl->FinalParse("permissiondenied.tpl"));
+ }
+ exit;
+ }
+
+ $this->app->calledWhenAuth($this->app->User->GetType());
+ if($this->app->BuildNavigation==true)
+ $this->BuildNavigation();
+
+ $this->app->endtime = microtime();
+
+ $right = $this->app->Secure->GetGET("right");
+
+ $tmpfirmendatenfkt = 'Firmendaten';
+ if(method_exists($this->app->erp,'TplFirmendaten'))$tmpfirmendatenfkt = 'TplFirmendaten';
+
+
+ $firmenfarbehell = $this->app->erp->$tmpfirmendatenfkt("firmenfarbehell");
+ if($firmenfarbehell =="")
+ $firmenfarbehell = "#3fbac9";
+ $this->app->Tpl->Set('COLOR1',$firmenfarbehell);
+
+ $this->app->calledBeforeFinish();
+
+ $this->app->Tpl->Set('JQUERYMIGRATESRC', './js/jquery/jquery-migrate-3.2.0.min.js');
+
+ $this->app->Tpl->Set('TESTLIZENZABLAUF', '');
+ if($this->app->BuildNavigation==true)
+ {
+ if($right==1)
+ echo $this->app->Tpl->FinalParse('right.tpl');
+ else
+ {
+ if($module==='welcome' && $action==='login'){
+ if(is_file(dirname(__DIR__).'/www/themes/new/templates/loginslider.tpl')) {
+ $this->app->Tpl->Set(
+ 'LOGINSLIDER',
+ file_get_contents(dirname(__DIR__).'/www/themes/new/templates/loginslider.tpl')
+ );
+ }
+ else{
+ $this->app->Tpl->Set(
+ 'LOGINSLIDER',
+ '
+
'
+ );
+ }
+
+ $this->app->erp->RunHook('loginpage');
+ echo $this->app->Tpl->FinalParse('loginpage.tpl');
+ }
+ elseif($module==='welcome' && $action==='passwortvergessen'){
+ echo $this->app->Tpl->FinalParse('passwortvergessenpage.tpl');
+ }
+ else {
+ $this->app->erp->addFav();
+
+ $this->app->erp->HelpIconAndTooltip();
+
+ if(
+ ($module !== 'welcome'
+ || ($action !== 'settings' && $action !== 'logout' && $action !== 'login'
+ && $action !== 'start'&& $action !== 'startseite' && $action !== 'main'
+ )
+ )
+ && ($isadminadmin = $this->app->acl->IsAdminadmin()))
+ {
+ header('Location: index.php?module=welcome&action=start');
+ exit;
+ }
+
+ $this->app->HeaderBoxen();
+ if($this->app->erp->UserDevice()==='smartphone'){
+ echo $this->app->Tpl->FinalParse('page_smartphone.tpl');
+ }
+ else{
+
+ $this->app->Tpl->Set('VUEJS', 'vue.min.js');
+ $this->app->erp->RunHook('before_final_parse_page');
+ echo $this->app->Tpl->FinalParse('page.tpl');
+ }
+ }
+ }
+ }
+ else {
+ if($this->app->PopupJS){
+ echo $this->app->Tpl->FinalParse('popup_js.tpl');
+ }
+ else{
+ echo $this->app->Tpl->FinalParse('popup.tpl');
+ }
+ }
+ }
+}
diff --git a/www/themes/new/css/login_styles.css b/www/themes/new/css/login_styles.css
index 1cd2ed03..2ffcea56 100644
--- a/www/themes/new/css/login_styles.css
+++ b/www/themes/new/css/login_styles.css
@@ -66,17 +66,17 @@ body {
#login-slider-wrapper {
width: 61.13%;
- background: pink;
position: relative;
}
#login-slider {
position: fixed;
+ background: #4a738c;
width: 61.13%;
height: 100vh;
}
#login-slider .slide {
height: 100vh;
- background-size: cover;
+ background-size: contain;
background-repeat: no-repeat;
background-position: center center;
position: relative;
diff --git a/www/themes/new/images/login_screen_picture.jpg b/www/themes/new/images/login_screen_picture.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..8303b712e464823dea32116477fae8ff533ddb88
GIT binary patch
literal 527449
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
x|0wm^ktR&mgXB|fzwNfUanBf=sAPj
z!oJc3wL)W}8s-ItlcAn;k*Xb(P-IN>YtB5=7GqKvj9d#0_BVaxt!}-;*+h3L-
zHzGfVGuy&i5xeNGWg00`Bxta(CimdOZC1Gh#?p9v-N?L``P=Zggg&+13~QwQv2&d2
z