diff --git a/application/applicationextension.inc.php b/application/applicationextension.inc.php index f595a3446..d5325e861 100644 --- a/application/applicationextension.inc.php +++ b/application/applicationextension.inc.php @@ -181,9 +181,9 @@ interface iLogoutExtension extends iLoginExtension interface iLoginUIExtension extends iLoginExtension { /** - * @return LoginTwigData + * @return LoginTwigContext */ - public function GetTwigBlockData(); + public function GetTwigContext(); } diff --git a/application/loginform.class.inc.php b/application/loginform.class.inc.php index a68d7daf2..c42e4a69b 100644 --- a/application/loginform.class.inc.php +++ b/application/loginform.class.inc.php @@ -105,14 +105,14 @@ class LoginForm extends AbstractLoginFSMExtension implements iLoginUIExtension } /** - * @return LoginTwigData + * @return LoginTwigContext * @throws \Exception */ - public function GetTwigBlockData() + public function GetTwigContext() { - - $aPostedVars = array('auth_user', 'auth_pwd'); - $oLoginData = new LoginTwigData($aPostedVars); + $oLoginContext = new LoginTwigContext(); + $oLoginContext->AddPostedVar('auth_user'); + $oLoginContext->AddPostedVar('auth_pwd'); $sAuthUser = utils::ReadParam('auth_user', '', true, 'raw_data'); $sAuthPwd = utils::ReadParam('suggest_pwd', '', true, 'raw_data'); @@ -121,9 +121,9 @@ class LoginForm extends AbstractLoginFSMExtension implements iLoginUIExtension 'sAuthUser' => $sAuthUser, 'sAuthPwd' => $sAuthPwd, ); - $oLoginData->AddBlockData('login_input', new LoginBlockData('loginforminput.html.twig', $aData)); - $oLoginData->AddBlockData('login_submit', new LoginBlockData('loginformsubmit.html.twig')); - $oLoginData->AddBlockData('login_form_footer', new LoginBlockData('loginformfooter.html.twig')); + $oLoginContext->AddBlockExtension('login_input', new LoginBlockExtension('loginforminput.html.twig', $aData)); + $oLoginContext->AddBlockExtension('login_submit', new LoginBlockExtension('loginformsubmit.html.twig')); + $oLoginContext->AddBlockExtension('login_form_footer', new LoginBlockExtension('loginformfooter.html.twig')); $bEnableResetPassword = empty(MetaModel::GetConfig()->Get('forgot_password')) ? true : MetaModel::GetConfig()->Get('forgot_password'); $sResetPasswordUrl = utils::GetAbsoluteUrlAppRoot() . 'pages/UI.php?loginop=forgot_pwd'; @@ -132,8 +132,8 @@ class LoginForm extends AbstractLoginFSMExtension implements iLoginUIExtension 'bEnableResetPassword' => $bEnableResetPassword, 'sResetPasswordUrl' => $sResetPasswordUrl, ); - $oLoginData->AddBlockData('login_links', new LoginBlockData('loginformlinks.html.twig', $aData)); + $oLoginContext->AddBlockExtension('login_links', new LoginBlockExtension('loginformlinks.html.twig', $aData)); - return $oLoginData; + return $oLoginContext; } } diff --git a/application/logintwig.class.inc.php b/application/logintwig.class.inc.php index 64d98d0b3..249bbcc3d 100644 --- a/application/logintwig.class.inc.php +++ b/application/logintwig.class.inc.php @@ -9,61 +9,130 @@ use Combodo\iTop\TwigExtension; -class LoginTwigData +/** + * Twig context for modules extending the login screen + * Class LoginTwigContext + */ +class LoginTwigContext { - private $aBlockData; + /** @var array */ + private $aBlockExtension; + /** @var array */ private $aPostedVars; + /** @var string */ private $sTwigLoaderPath; - private $sCSSFile; + /** @var array */ + private $aCSSFiles; /** @var array */ private $aJsFiles; + private $sTwigNameSpace; /** - * LoginTwigData constructor. + * Build a context to display the twig files used + * to extend the login screens * - * @param array $aPostedVars - * @param string $sLoaderPath - * @param string $sCSSFile - * @param array $aJsFiles + * LoginTwigContext constructor. + * @api */ - public function __construct($aPostedVars = array(), $sLoaderPath = null, $sCSSFile = null, $aJsFiles = array()) + public function __construct() { - $this->aBlockData = array(); - $this->aPostedVars = $aPostedVars; - $this->sTwigLoaderPath = $sLoaderPath; - $this->sCSSFile = $sCSSFile; - $this->aJsFiles = $aJsFiles; + $this->aBlockExtension = array(); + $this->aPostedVars = array(); + $this->sTwigLoaderPath = null; + $this->aCSSFiles = array(); + $this->aJsFiles = array(); + $this->sTwigNameSpace = null; + } + + /** + * Set the absolute path on disk of the folder containing the twig templates + * + * @param string $sPath absolute path of twig templates directory + * @api + */ + public function SetLoaderPath($sPath) + { + $this->sTwigLoaderPath = $sPath; + } + + /** + * Add a Twig block extension + * + * @param string $sBlockName + * @param LoginBlockExtension $oBlockExtension + */ + public function AddBlockExtension($sBlockName, $oBlockExtension) + { + $this->aBlockExtension[$sBlockName] = $oBlockExtension; + } + + /** + * Add a variable intended to be posted on URL (and managed) by the module. + * Declaring the posted variables will prevent the core engine to manipulate these variables. + * + * @param string $sPostedVar Name of the posted variable + * @api + */ + public function AddPostedVar($sPostedVar) + { + $this->aPostedVars[] = $sPostedVar; + } + + /** + * Add the URL of a CSS file to link to the login screen + * + * @param string $sFile URL of the CSS file to link + * @api + */ + public function AddCSSFile($sFile) + { + $this->aCSSFiles[] = $sFile; + } + + /** + * Add the URL of a javascript file to link to the login screen + * @param string $sFile URL of the javascript file to link + * @api + */ + public function AddJsFile($sFile) + { + $this->aJsFiles[] = $sFile; } /** * @param string $sBlockName - * @param LoginBlockData $oBlockData + * + * @return \LoginBlockExtension */ - public final function AddBlockData($sBlockName, $oBlockData) + public function GetBlockExtension($sBlockName) { - $this->aBlockData[$sBlockName] = $oBlockData; + /** @var LoginBlockExtension $oBlockExtension */ + $oBlockExtension = isset($this->aBlockExtension[$sBlockName]) ? $this->aBlockExtension[$sBlockName] : null; + return $oBlockExtension; } - public final function GetBlockData($sBlockName) - { - /** @var LoginBlockData $oBlockData */ - $oBlockData = isset($this->aBlockData[$sBlockName]) ? $this->aBlockData[$sBlockName] : null; - return $oBlockData; - } - - public final function GetPostedVars() + /** + * @return array + */ + public function GetPostedVars() { return $this->aPostedVars; } - public final function GetTwigLoaderPath() + /** + * @return string + */ + public function GetTwigLoaderPath() { return $this->sTwigLoaderPath; } - public final function GetCSSFile() + /** + * @return array + */ + public function GetCSSFiles() { - return $this->sCSSFile; + return $this->aCSSFiles; } /** @@ -73,18 +142,33 @@ class LoginTwigData { return $this->aJsFiles; } + } -class LoginBlockData +/** + * Twig block description for login screen extension + * The login screen can be extended by adding twig templates + * to specific blocks of the login screens + * + * Class LoginBlockExtension + */ +class LoginBlockExtension { private $sTwig; private $aData; /** - * LoginBlockData constructor. + * Create a new twig extension block + * The given twig template can be HTML, CSS or JavaScript. + * CSS goes to the block named 'css' and is inline in the page. + * JavaScript goes to the blocks named 'script' or 'ready_script' and are inline in the page. + * HTML goes to everywhere else * - * @param string $sTwig - * @param array $aData + * LoginBlockExtension constructor. + * + * @param string $sTwig name of the twig file relative to the path given to the LoginTwigContext + * @param array $aData Data given to the twig template (into the variable {{ aData }}) + * @api */ public function __construct($sTwig, $aData = array()) { @@ -92,18 +176,22 @@ class LoginBlockData $this->aData = $aData; } - public final function GetTwig() + public function GetTwig() { return $this->sTwig; } - public final function GetData() + public function GetData() { return $this->aData; } } -class LoginTwigContext +/** + * Used by LoginWebPage to display the login screen + * Class LoginTwigRenderer + */ +class LoginTwigRenderer { private $aLoginPluginList; private $aPluginFormData; @@ -119,14 +207,20 @@ class LoginTwigContext foreach ($this->aLoginPluginList as $oLoginPlugin) { /** @var \iLoginUIExtension $oLoginPlugin */ - $oLoginData = $oLoginPlugin->GetTwigBlockData(); - $this->aPluginFormData[] = $oLoginData; - $sTwigLoaderPath = $oLoginData->GetTwigLoaderPath(); + $oLoginContext = $oLoginPlugin->GetTwigContext(); + if (is_null($oLoginContext)) + { + continue; + } + $this->aPluginFormData[] = $oLoginContext; + $sTwigLoaderPath = $oLoginContext->GetTwigLoaderPath(); if ($sTwigLoaderPath != null) { - $aTwigLoaders[] = new Twig_Loader_Filesystem($sTwigLoaderPath); + $oExtensionLoader = new Twig_Loader_Filesystem(); + $oExtensionLoader->setPaths($sTwigLoaderPath); + $aTwigLoaders[] = $oExtensionLoader; } - $this->aPostedVars = array_merge($this->aPostedVars, $oLoginData->GetPostedVars()); + $this->aPostedVars = array_merge($this->aPostedVars, $oLoginContext->GetPostedVars()); } $oCoreLoader = new Twig_Loader_Filesystem(array(), APPROOT.'templates'); @@ -178,9 +272,9 @@ class LoginTwigContext // Render CSS links foreach ($this->aPluginFormData as $oFormData) { - /** @var \LoginTwigData $oFormData */ - $sCSSFile = $oFormData->GetCSSFile(); - if (!empty($sCSSFile)) + /** @var \LoginTwigContext $oFormData */ + $aCSSFiles = $oFormData->GetCSSFiles(); + foreach ($aCSSFiles as $sCSSFile) { $oPage->add_linked_stylesheet($sCSSFile); } diff --git a/application/loginwebpage.class.inc.php b/application/loginwebpage.class.inc.php index 28bc53908..bbe2132db 100644 --- a/application/loginwebpage.class.inc.php +++ b/application/loginwebpage.class.inc.php @@ -118,7 +118,7 @@ class LoginWebPage extends NiceWebPage public function DisplayLoginForm($bFailedLogin = false) { - $oTwigContext = new LoginTwigContext(); + $oTwigContext = new LoginTwigRenderer(); $aPostedVars = array_merge(array('login_mode', 'loginop'), $oTwigContext->GetPostedVars()); $sMessage = Dict::S('UI:Login:IdentifyYourself'); @@ -171,7 +171,7 @@ class LoginWebPage extends NiceWebPage { $sAuthUser = utils::ReadParam('auth_user', '', true, 'raw_data'); - $oTwigContext = new LoginTwigContext(); + $oTwigContext = new LoginTwigRenderer(); $aVars = $oTwigContext->GetDefaultVars(); $aVars['sAuthUser'] = $sAuthUser; $aVars['bFailedToReset'] = $bFailedToReset; @@ -235,7 +235,7 @@ class LoginWebPage extends NiceWebPage throw new Exception(Dict::S('UI:ResetPwd-Error-Send')); } - $oTwigContext = new LoginTwigContext(); + $oTwigContext = new LoginTwigRenderer(); $aVars = $oTwigContext->GetDefaultVars(); $oTwigContext->Render($this, 'forgotpwdsent.html.twig', $aVars); } @@ -253,7 +253,7 @@ class LoginWebPage extends NiceWebPage UserRights::Login($sAuthUser); // Set the user's language $oUser = UserRights::GetUserObject(); - $oTwigContext = new LoginTwigContext(); + $oTwigContext = new LoginTwigRenderer(); $aVars = $oTwigContext->GetDefaultVars(); $aVars['sAuthUser'] = $sAuthUser; @@ -290,7 +290,7 @@ class LoginWebPage extends NiceWebPage UserRights::Login($sAuthUser); // Set the user's language $oUser = UserRights::GetUserObject(); - $oTwigContext = new LoginTwigContext(); + $oTwigContext = new LoginTwigRenderer(); $aVars = $oTwigContext->GetDefaultVars(); $aVars['sAuthUser'] = $sAuthUser; @@ -324,7 +324,7 @@ class LoginWebPage extends NiceWebPage public function DisplayChangePwdForm($bFailedLogin = false) { - $oTwigContext = new LoginTwigContext(); + $oTwigContext = new LoginTwigRenderer(); $aVars = $oTwigContext->GetDefaultVars(); $aVars['bFailedLogin'] = $bFailedLogin; $oTwigContext->Render($this, 'changepwdform.html.twig', $aVars); @@ -337,7 +337,7 @@ class LoginWebPage extends NiceWebPage $sTitle = empty($sTitle) ? Dict::S('UI:LogOff:ThankYou') : $sTitle; $sMessage = Dict::S('UI:LogOff:ClickHereToLoginAgain'); - $oTwigContext = new LoginTwigContext(); + $oTwigContext = new LoginTwigRenderer(); $aVars = $oTwigContext->GetDefaultVars(); $aVars['sUrl'] = $sUrl; $aVars['sTitle'] = $sTitle; diff --git a/application/utils.inc.php b/application/utils.inc.php index 1e4c20103..dfcb9034f 100644 --- a/application/utils.inc.php +++ b/application/utils.inc.php @@ -2167,4 +2167,9 @@ class utils } return $sFullPath; } + + public static function GetAbsoluteModulePath($sModule) + { + return APPROOT.'env-'.utils::GetCurrentEnvironment().'/'.$sModule.'/'; + } } diff --git a/composer.readme b/composer.readme new file mode 100644 index 000000000..20c45a532 --- /dev/null +++ b/composer.readme @@ -0,0 +1,2 @@ +to regenerate the autoload: +composer dump-autoload -a diff --git a/datamodels/2.x/authent-cas/src/CASLoginExtension.php b/datamodels/2.x/authent-cas/src/CASLoginExtension.php index 628d71fc7..4ec302be2 100644 --- a/datamodels/2.x/authent-cas/src/CASLoginExtension.php +++ b/datamodels/2.x/authent-cas/src/CASLoginExtension.php @@ -13,8 +13,8 @@ use DBObjectSet; use Dict; use iLoginUIExtension; use iLogoutExtension; -use LoginBlockData; -use LoginTwigData; +use LoginBlockExtension; +use LoginTwigContext; use LoginWebPage; use MetaModel; use phpCAS; @@ -198,23 +198,21 @@ class CASLoginExtension extends AbstractLoginFSMExtension implements iLogoutExte } /** - * @return LoginTwigData + * @return LoginTwigContext */ - public function GetTwigBlockData() + public function GetTwigContext() { - $sPath = APPROOT.'env-'.utils::GetCurrentEnvironment().'/authent-cas/view'; - $oLoginData = new LoginTwigData(array(), $sPath); + $oLoginContext = new LoginTwigContext(); + $oLoginContext->SetLoaderPath(APPROOT.'env-'.utils::GetCurrentEnvironment().'/authent-cas/view'); $aData = array( 'sLoginMode' => 'cas', 'sLabel' => Dict::S('CAS:Login:SignIn'), 'sTooltip' => Dict::S('CAS:Login:SignInTooltip'), ); - $oLoginData->AddBlockData('login_sso_buttons', new LoginBlockData('cas_sso_button.html.twig', $aData)); + $oLoginContext->AddBlockExtension('login_sso_buttons', new LoginBlockExtension('cas_sso_button.html.twig', $aData)); - $oLoginData->AddBlockData('css', new LoginBlockData('cas_css.css.twig')); - - return $oLoginData; + return $oLoginContext; } } diff --git a/datamodels/2.x/authent-cas/view/cas_css.css.twig b/datamodels/2.x/authent-cas/view/cas_css.css.twig deleted file mode 100644 index 678797a7b..000000000 --- a/datamodels/2.x/authent-cas/view/cas_css.css.twig +++ /dev/null @@ -1,2 +0,0 @@ -{# @copyright Copyright (C) 2010-2019 Combodo SARL #} -{# @license http://opensource.org/licenses/AGPL-3.0 #} diff --git a/lib/composer/autoload_classmap.php b/lib/composer/autoload_classmap.php index e1a03a404..367d3a488 100644 --- a/lib/composer/autoload_classmap.php +++ b/lib/composer/autoload_classmap.php @@ -151,6 +151,7 @@ return array( 'DBProperty' => $baseDir . '/core/dbproperty.class.inc.php', 'DBSearch' => $baseDir . '/core/dbsearch.class.php', 'DBUnionSearch' => $baseDir . '/core/dbunionsearch.class.php', + 'DailyRotatingLogFileNameBuilder' => $baseDir . '/core/log.class.inc.php', 'Dashboard' => $baseDir . '/application/dashboard.class.inc.php', 'DashboardLayout' => $baseDir . '/application/dashboardlayout.class.inc.php', 'DashboardLayoutMultiCol' => $baseDir . '/application/dashboardlayout.class.inc.php', @@ -175,6 +176,7 @@ return array( 'DataTableSettings' => $baseDir . '/application/datatable.class.inc.php', 'Datamatrix' => $vendorDir . '/combodo/tcpdf/include/barcodes/datamatrix.php', 'DateTimeFormat' => $baseDir . '/core/datetimeformat.class.inc.php', + 'DefaultLogFileNameBuilder' => $baseDir . '/core/log.class.inc.php', 'DefaultMetricComputer' => $baseDir . '/core/computing.inc.php', 'DefaultWorkingTimeComputer' => $baseDir . '/core/computing.inc.php', 'DeleteException' => $baseDir . '/core/deletionplan.class.inc.php', @@ -243,6 +245,7 @@ return array( 'HistoryBlock' => $baseDir . '/application/displayblock.class.inc.php', 'Html2Text\\Html2Text' => $baseDir . '/application/Html2Text.php', 'Html2Text\\Html2TextException' => $baseDir . '/application/Html2TextException.php', + 'ILogFileNameBuilder' => $baseDir . '/core/log.class.inc.php', 'ITopArchiveTar' => $baseDir . '/core/tar-itop.class.inc.php', 'InlineImage' => $baseDir . '/core/inlineimage.class.inc.php', 'InlineImageGC' => $baseDir . '/core/inlineimage.class.inc.php', @@ -257,9 +260,10 @@ return array( 'ListExpression' => $baseDir . '/core/oql/expression.class.inc.php', 'ListOqlExpression' => $baseDir . '/core/oql/oqlquery.class.inc.php', 'LogAPI' => $baseDir . '/core/log.class.inc.php', - 'LoginBlockData' => $baseDir . '/application/logintwig.class.inc.php', + 'LogFileNameBuilderFactory' => $baseDir . '/core/log.class.inc.php', + 'LoginBlockExtension' => $baseDir . '/application/logintwig.class.inc.php', 'LoginTwigContext' => $baseDir . '/application/logintwig.class.inc.php', - 'LoginTwigData' => $baseDir . '/application/logintwig.class.inc.php', + 'LoginTwigRenderer' => $baseDir . '/application/logintwig.class.inc.php', 'LoginWebPage' => $baseDir . '/application/loginwebpage.class.inc.php', 'MatchExpression' => $baseDir . '/core/oql/expression.class.inc.php', 'MatchOqlExpression' => $baseDir . '/core/oql/oqlquery.class.inc.php', @@ -391,6 +395,7 @@ return array( 'RestResultWithObjects' => $baseDir . '/core/restservices.class.inc.php', 'RestResultWithRelations' => $baseDir . '/core/restservices.class.inc.php', 'RestUtils' => $baseDir . '/application/applicationextension.inc.php', + 'RotatingLogFileNameBuilder' => $baseDir . '/core/log.class.inc.php', 'RowStatus' => $baseDir . '/core/bulkchange.class.inc.php', 'RowStatus_Disappeared' => $baseDir . '/core/bulkchange.class.inc.php', 'RowStatus_Issue' => $baseDir . '/core/bulkchange.class.inc.php', @@ -1878,6 +1883,7 @@ return array( 'VariableOqlExpression' => $baseDir . '/core/oql/oqlquery.class.inc.php', 'WebPage' => $baseDir . '/application/webpage.class.inc.php', 'WebPageMenuNode' => $baseDir . '/application/menunode.class.inc.php', + 'WeeklyRotatingLogFileNameBuilder' => $baseDir . '/core/log.class.inc.php', 'WizardHelper' => $baseDir . '/application/wizardhelper.class.inc.php', 'XLSXWriter' => $baseDir . '/application/xlsxwriter.class.php', 'XMLBulkExport' => $baseDir . '/core/xmlbulkexport.class.inc.php', @@ -1893,9 +1899,9 @@ return array( 'iDBObjectSetIterator' => $baseDir . '/core/dbobjectiterator.php', 'iDBObjectURLMaker' => $baseDir . '/application/applicationcontext.class.inc.php', 'iDisplay' => $baseDir . '/core/dbobject.class.php', - 'iLoginUIExtension' => $baseDir . '/application/applicationextension.inc.php', 'iLoginExtension' => $baseDir . '/application/applicationextension.inc.php', 'iLoginFSMExtension' => $baseDir . '/application/applicationextension.inc.php', + 'iLoginUIExtension' => $baseDir . '/application/applicationextension.inc.php', 'iLogoutExtension' => $baseDir . '/application/applicationextension.inc.php', 'iMetricComputer' => $baseDir . '/core/computing.inc.php', 'iNewsroomProvider' => $baseDir . '/application/newsroomprovider.class.inc.php', diff --git a/lib/composer/autoload_static.php b/lib/composer/autoload_static.php index 4d42f1855..d0bcd7557 100644 --- a/lib/composer/autoload_static.php +++ b/lib/composer/autoload_static.php @@ -372,6 +372,7 @@ class ComposerStaticInit0018331147de7601e7552f7da8e3bb8b 'DBProperty' => __DIR__ . '/../..' . '/core/dbproperty.class.inc.php', 'DBSearch' => __DIR__ . '/../..' . '/core/dbsearch.class.php', 'DBUnionSearch' => __DIR__ . '/../..' . '/core/dbunionsearch.class.php', + 'DailyRotatingLogFileNameBuilder' => __DIR__ . '/../..' . '/core/log.class.inc.php', 'Dashboard' => __DIR__ . '/../..' . '/application/dashboard.class.inc.php', 'DashboardLayout' => __DIR__ . '/../..' . '/application/dashboardlayout.class.inc.php', 'DashboardLayoutMultiCol' => __DIR__ . '/../..' . '/application/dashboardlayout.class.inc.php', @@ -396,6 +397,7 @@ class ComposerStaticInit0018331147de7601e7552f7da8e3bb8b 'DataTableSettings' => __DIR__ . '/../..' . '/application/datatable.class.inc.php', 'Datamatrix' => __DIR__ . '/..' . '/combodo/tcpdf/include/barcodes/datamatrix.php', 'DateTimeFormat' => __DIR__ . '/../..' . '/core/datetimeformat.class.inc.php', + 'DefaultLogFileNameBuilder' => __DIR__ . '/../..' . '/core/log.class.inc.php', 'DefaultMetricComputer' => __DIR__ . '/../..' . '/core/computing.inc.php', 'DefaultWorkingTimeComputer' => __DIR__ . '/../..' . '/core/computing.inc.php', 'DeleteException' => __DIR__ . '/../..' . '/core/deletionplan.class.inc.php', @@ -464,6 +466,7 @@ class ComposerStaticInit0018331147de7601e7552f7da8e3bb8b 'HistoryBlock' => __DIR__ . '/../..' . '/application/displayblock.class.inc.php', 'Html2Text\\Html2Text' => __DIR__ . '/../..' . '/application/Html2Text.php', 'Html2Text\\Html2TextException' => __DIR__ . '/../..' . '/application/Html2TextException.php', + 'ILogFileNameBuilder' => __DIR__ . '/../..' . '/core/log.class.inc.php', 'ITopArchiveTar' => __DIR__ . '/../..' . '/core/tar-itop.class.inc.php', 'InlineImage' => __DIR__ . '/../..' . '/core/inlineimage.class.inc.php', 'InlineImageGC' => __DIR__ . '/../..' . '/core/inlineimage.class.inc.php', @@ -478,9 +481,10 @@ class ComposerStaticInit0018331147de7601e7552f7da8e3bb8b 'ListExpression' => __DIR__ . '/../..' . '/core/oql/expression.class.inc.php', 'ListOqlExpression' => __DIR__ . '/../..' . '/core/oql/oqlquery.class.inc.php', 'LogAPI' => __DIR__ . '/../..' . '/core/log.class.inc.php', - 'LoginBlockData' => __DIR__ . '/../..' . '/application/logintwig.class.inc.php', + 'LogFileNameBuilderFactory' => __DIR__ . '/../..' . '/core/log.class.inc.php', + 'LoginBlockExtension' => __DIR__ . '/../..' . '/application/logintwig.class.inc.php', 'LoginTwigContext' => __DIR__ . '/../..' . '/application/logintwig.class.inc.php', - 'LoginTwigData' => __DIR__ . '/../..' . '/application/logintwig.class.inc.php', + 'LoginTwigRenderer' => __DIR__ . '/../..' . '/application/logintwig.class.inc.php', 'LoginWebPage' => __DIR__ . '/../..' . '/application/loginwebpage.class.inc.php', 'MatchExpression' => __DIR__ . '/../..' . '/core/oql/expression.class.inc.php', 'MatchOqlExpression' => __DIR__ . '/../..' . '/core/oql/oqlquery.class.inc.php', @@ -612,6 +616,7 @@ class ComposerStaticInit0018331147de7601e7552f7da8e3bb8b 'RestResultWithObjects' => __DIR__ . '/../..' . '/core/restservices.class.inc.php', 'RestResultWithRelations' => __DIR__ . '/../..' . '/core/restservices.class.inc.php', 'RestUtils' => __DIR__ . '/../..' . '/application/applicationextension.inc.php', + 'RotatingLogFileNameBuilder' => __DIR__ . '/../..' . '/core/log.class.inc.php', 'RowStatus' => __DIR__ . '/../..' . '/core/bulkchange.class.inc.php', 'RowStatus_Disappeared' => __DIR__ . '/../..' . '/core/bulkchange.class.inc.php', 'RowStatus_Issue' => __DIR__ . '/../..' . '/core/bulkchange.class.inc.php', @@ -2099,6 +2104,7 @@ class ComposerStaticInit0018331147de7601e7552f7da8e3bb8b 'VariableOqlExpression' => __DIR__ . '/../..' . '/core/oql/oqlquery.class.inc.php', 'WebPage' => __DIR__ . '/../..' . '/application/webpage.class.inc.php', 'WebPageMenuNode' => __DIR__ . '/../..' . '/application/menunode.class.inc.php', + 'WeeklyRotatingLogFileNameBuilder' => __DIR__ . '/../..' . '/core/log.class.inc.php', 'WizardHelper' => __DIR__ . '/../..' . '/application/wizardhelper.class.inc.php', 'XLSXWriter' => __DIR__ . '/../..' . '/application/xlsxwriter.class.php', 'XMLBulkExport' => __DIR__ . '/../..' . '/core/xmlbulkexport.class.inc.php', @@ -2114,9 +2120,9 @@ class ComposerStaticInit0018331147de7601e7552f7da8e3bb8b 'iDBObjectSetIterator' => __DIR__ . '/../..' . '/core/dbobjectiterator.php', 'iDBObjectURLMaker' => __DIR__ . '/../..' . '/application/applicationcontext.class.inc.php', 'iDisplay' => __DIR__ . '/../..' . '/core/dbobject.class.php', - 'iLoginUIExtension' => __DIR__ . '/../..' . '/application/applicationextension.inc.php', 'iLoginExtension' => __DIR__ . '/../..' . '/application/applicationextension.inc.php', 'iLoginFSMExtension' => __DIR__ . '/../..' . '/application/applicationextension.inc.php', + 'iLoginUIExtension' => __DIR__ . '/../..' . '/application/applicationextension.inc.php', 'iLogoutExtension' => __DIR__ . '/../..' . '/application/applicationextension.inc.php', 'iMetricComputer' => __DIR__ . '/../..' . '/core/computing.inc.php', 'iNewsroomProvider' => __DIR__ . '/../..' . '/application/newsroomprovider.class.inc.php', diff --git a/templates/login/base.html.twig b/templates/login/base.html.twig index 92c34589b..0f1913389 100644 --- a/templates/login/base.html.twig +++ b/templates/login/base.html.twig @@ -7,7 +7,7 @@