mirror of
https://github.com/Combodo/iTop.git
synced 2026-02-13 07:24:13 +01:00
N°2315 - Login screen extensibility API refactor
This commit is contained in:
@@ -181,9 +181,9 @@ interface iLogoutExtension extends iLoginExtension
|
||||
interface iLoginUIExtension extends iLoginExtension
|
||||
{
|
||||
/**
|
||||
* @return LoginTwigData
|
||||
* @return LoginTwigContext
|
||||
*/
|
||||
public function GetTwigBlockData();
|
||||
public function GetTwigContext();
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -2167,4 +2167,9 @@ class utils
|
||||
}
|
||||
return $sFullPath;
|
||||
}
|
||||
|
||||
public static function GetAbsoluteModulePath($sModule)
|
||||
{
|
||||
return APPROOT.'env-'.utils::GetCurrentEnvironment().'/'.$sModule.'/';
|
||||
}
|
||||
}
|
||||
|
||||
2
composer.readme
Normal file
2
composer.readme
Normal file
@@ -0,0 +1,2 @@
|
||||
to regenerate the autoload:
|
||||
composer dump-autoload -a
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
{# @copyright Copyright (C) 2010-2019 Combodo SARL #}
|
||||
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
||||
@@ -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',
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<div id="login-body">
|
||||
{% block login_header %}
|
||||
<div id="login-header">
|
||||
{{ Macro.BlockData(aPluginFormData, 'login_header') }}
|
||||
{{ Macro.BlockExtension(aPluginFormData, 'login_header') }}
|
||||
</div>
|
||||
{% endblock login_header %}
|
||||
{% block login_logo %}
|
||||
@@ -17,16 +17,18 @@
|
||||
</a>
|
||||
</div>
|
||||
{% endblock login_logo %}
|
||||
{% block login_content_outer %}
|
||||
{% block login_content %}
|
||||
{% endblock login_content %}
|
||||
{% block login_additional_content %}
|
||||
<div id="login-additional-content">
|
||||
{{ Macro.BlockData(aPluginFormData, 'login_additional_content') }}
|
||||
{{ Macro.BlockExtension(aPluginFormData, 'login_additional_content') }}
|
||||
</div>
|
||||
{% endblock login_additional_content %}
|
||||
{% endblock login_content_outer %}
|
||||
{% block login_footer %}
|
||||
<div id="login-footer">
|
||||
{{ Macro.BlockData(aPluginFormData, 'login_footer') }}
|
||||
{{ Macro.BlockExtension(aPluginFormData, 'login_footer') }}
|
||||
</div>
|
||||
{% endblock login_footer %}
|
||||
</div>
|
||||
@@ -34,15 +36,15 @@
|
||||
|
||||
{% block script %}
|
||||
{% import "macros.twig" as Macro %}
|
||||
{{ Macro.BlockData(aPluginFormData, 'script') }}
|
||||
{{ Macro.BlockExtension(aPluginFormData, 'script') }}
|
||||
{% endblock script %}
|
||||
|
||||
{% block ready_script %}
|
||||
{% import "macros.twig" as Macro %}
|
||||
{{ Macro.BlockData(aPluginFormData, 'ready_script') }}
|
||||
{{ Macro.BlockExtension(aPluginFormData, 'ready_script') }}
|
||||
{% endblock ready_script %}
|
||||
|
||||
{% block css %}
|
||||
{% import "macros.twig" as Macro %}
|
||||
{{ Macro.BlockData(aPluginFormData, 'css') }}
|
||||
{{ Macro.BlockExtension(aPluginFormData, 'css') }}
|
||||
{% endblock css %}
|
||||
|
||||
@@ -22,32 +22,32 @@
|
||||
<div id="login-form-content">
|
||||
{% block login_sso_buttons %}
|
||||
<div id="login-sso-buttons">
|
||||
{{ Macro.BlockData(aPluginFormData, 'login_sso_buttons', '<div class="divider"><hr class="left"/>' ~ 'UI:Login:SeparatorOr'|dict_s ~ '<hr class="right"/></div>') }}
|
||||
{{ Macro.BlockExtension(aPluginFormData, 'login_sso_buttons', '<div class="divider"><hr class="left"/>' ~ 'UI:Login:SeparatorOr'|dict_s ~ '<hr class="right"/></div>') }}
|
||||
</div>
|
||||
{% endblock login_sso_buttons %}
|
||||
{% block login_input %}
|
||||
<div id="login-input">
|
||||
{{ Macro.BlockData(aPluginFormData, 'login_input') }}
|
||||
{{ Macro.BlockExtension(aPluginFormData, 'login_input') }}
|
||||
</div>
|
||||
{% endblock login_input %}
|
||||
{% block login_submit %}
|
||||
<div id="login-submit">
|
||||
{{ Macro.BlockData(aPluginFormData, 'login_submit') }}
|
||||
{{ Macro.BlockExtension(aPluginFormData, 'login_submit') }}
|
||||
</div>
|
||||
{% endblock login_submit %}
|
||||
{% block login_additional_controls %}
|
||||
<div id="login-additional-controls">
|
||||
{{ Macro.BlockData(aPluginFormData, 'login_additional_controls') }}
|
||||
{{ Macro.BlockExtension(aPluginFormData, 'login_additional_controls') }}
|
||||
</div>
|
||||
{% endblock login_additional_controls %}
|
||||
{% block login_links %}
|
||||
<div id="login-links">
|
||||
{{ Macro.BlockData(aPluginFormData, 'login_links') }}
|
||||
{{ Macro.BlockExtension(aPluginFormData, 'login_links') }}
|
||||
</div>
|
||||
{% endblock login_links %}
|
||||
{% block login_form_footer %}
|
||||
<div id="login-form-footer">
|
||||
{{ Macro.BlockData(aPluginFormData, 'login_form_footer') }}
|
||||
{{ Macro.BlockExtension(aPluginFormData, 'login_form_footer') }}
|
||||
</div>
|
||||
{% endblock login_form_footer %}
|
||||
</div>
|
||||
@@ -64,7 +64,7 @@
|
||||
|
||||
{% block login_footer %}
|
||||
<div id="login-footer">
|
||||
{{ Macro.BlockData(aPluginFormData, 'login_footer') }}
|
||||
{{ Macro.BlockExtension(aPluginFormData, 'login_footer') }}
|
||||
</div>
|
||||
{% endblock login_footer %}
|
||||
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
{# @copyright Copyright (C) 2010-2019 Combodo SARL #}
|
||||
{# @license http://opensource.org/licenses/AGPL-3.0 #}
|
||||
|
||||
{% macro BlockData(aPluginFormData, sBlockName, sText = '') %}
|
||||
{% macro BlockExtension(aPluginFormData, sBlockName, sText = '') %}
|
||||
{% set bHaveBlock = 'false' %}
|
||||
{% for oLoginData in aPluginFormData if (oLoginData is defined and oLoginData.GetBlockData(sBlockName)) %}
|
||||
{% for oLoginData in aPluginFormData if (oLoginData is defined and oLoginData.GetBlockExtension(sBlockName)) %}
|
||||
{% set bHaveBlock = 'true' %}
|
||||
{% set oBlockData = oLoginData.GetBlockData(sBlockName) %}
|
||||
{% set sTwig = oBlockData.GetTwig() %}
|
||||
{% set aData = oBlockData.GetData() %}
|
||||
{% set oBlockExtension = oLoginData.GetBlockExtension(sBlockName) %}
|
||||
{% set sTwig = oBlockExtension.GetTwig() %}
|
||||
{% set aData = oBlockExtension.GetData() %}
|
||||
{% include sTwig ignore missing %}
|
||||
{% endfor %}
|
||||
{% if bHaveBlock == 'true' %}
|
||||
|
||||
Reference in New Issue
Block a user