N°2311 - Login Page extensibility

This commit is contained in:
Eric
2019-09-06 17:40:29 +02:00
parent 20aa1bfdd6
commit ee621c1b92
10 changed files with 61 additions and 37 deletions

View File

@@ -121,6 +121,7 @@ class LoginForm extends AbstractLoginFSMExtension implements iLoginDataExtension
);
$oLoginData->AddBlockData('login_input', new LoginBlockData('loginforminput.html.twig', $aData));
$oLoginData->AddBlockData('login_submit', new LoginBlockData('loginformsubmit.html.twig'));
$oLoginData->AddBlockData('login_footer', new LoginBlockData('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';

View File

@@ -157,34 +157,21 @@ class LoginTwigContext
public function Render(NiceWebPage $oPage, $sTwigFile, $aVars = array())
{
$sType = 'html';
$oTemplate = $this->GetTwig()->load($sTwigFile);
$oPage->add($oTemplate->renderBlock('body', $aVars));
$oPage->add_script($oTemplate->renderBlock('script', $aVars));
$oPage->add_ready_script($oTemplate->renderBlock('ready_script', $aVars));
$oPage->add_style($oTemplate->renderBlock('css', $aVars));
if (preg_match('/.*\.(html|ready\.js|js)\.twig/U', $sTwigFile, $matches))
// Render CSS links
foreach ($this->aPluginFormData as $oFormData)
{
$sType = $matches[1];
}
switch ($sType)
{
case 'html':
$oPage->add($this->GetTwig()->render($sTwigFile, $aVars));
// Render CSS links
foreach ($this->aPluginFormData as $oFormData)
{
/** @var \LoginTwigData $oFormData */
$sCSSFile = $oFormData->GetCSSFile();
if (!empty($sCSSFile))
{
$oPage->add_linked_stylesheet($sCSSFile);
}
}
break;
case 'js':
$oPage->add_script($this->GetTwig()->render($sTwigFile, $aVars));
break;
case 'ready.js':
$oPage->add_ready_script($this->GetTwig()->render($sTwigFile, $aVars));
break;
/** @var \LoginTwigData $oFormData */
$sCSSFile = $oFormData->GetCSSFile();
if (!empty($sCSSFile))
{
$oPage->add_linked_stylesheet($sCSSFile);
}
}
}

View File

@@ -175,7 +175,6 @@ class LoginWebPage extends NiceWebPage
$aVars['sFailureReason'] = $sFailureReason;
$oTwigContext->Render($this, 'forgotpwdform.html.twig', $aVars);
$oTwigContext->Render($this, 'forgotpwdform.ready.js.twig');
}
protected function ForgotPwdGo()
@@ -277,7 +276,6 @@ class LoginWebPage extends NiceWebPage
}
$oTwigContext->Render($this, 'resetpwdform.html.twig', $aVars);
$oTwigContext->Render($this, 'resetpwdform.js.twig');
}
public function DoResetPassword()
@@ -326,7 +324,6 @@ class LoginWebPage extends NiceWebPage
$oTwigContext = new LoginTwigContext();
$aVars = $oTwigContext->GetDefaultVars();
$aVars['bFailedLogin'] = $bFailedLogin;
$oTwigContext->Render($this, 'changepwdform.js.twig');
$oTwigContext->Render($this, 'changepwdform.html.twig', $aVars);
}

View File

@@ -1,7 +1,9 @@
{# @copyright Copyright (C) 2010-2019 Combodo SARL #}
{# @license http://opensource.org/licenses/AGPL-3.0 #}
{% block body %}
{% import "macros.twig" as Macro %}
{% block login_logo %}
<div id="login-logo">
<a href="{{ sIconUrl }}">
@@ -12,6 +14,23 @@
{% block login_content %}
{% endblock login_content %}
{% block login_footer %}
<div id="login-footer"></div>
<div id="login-footer">
{{ Macro.BlockData(aPluginFormData, 'login_footer') }}
</div>
{% endblock login_footer %}
{% endblock body %}
{% block script %}
{% import "macros.twig" as Macro %}
{{ Macro.BlockData(aPluginFormData, 'script') }}
{% endblock script %}
{% block ready_script %}
{% import "macros.twig" as Macro %}
{{ Macro.BlockData(aPluginFormData, 'ready_script') }}
{% endblock ready_script %}
{% block css %}
{% import "macros.twig" as Macro %}
{{ Macro.BlockData(aPluginFormData, 'css') }}
{% endblock css %}

View File

@@ -3,9 +3,8 @@
{% extends "base.html.twig" %}
{% import "macros.twig" as Macro %}
{% block login_content %}
{% import "macros.twig" as Macro %}
<div id="login">
{% block login_title %}
<div id="login-title">
@@ -49,6 +48,11 @@
{% endblock login_content %}
{% block login_footer %}
{{ Macro.BlockData(aPluginFormData, 'login_footer') }}
<div id="login-footer">
{{ Macro.BlockData(aPluginFormData, 'login_footer') }}
</div>
{% endblock login_footer %}

View File

@@ -0,0 +1,4 @@
{# @copyright Copyright (C) 2010-2019 Combodo SARL #}
{# @license http://opensource.org/licenses/AGPL-3.0 #}
{{ 'UI:Login:About'|dict_s }}

View File

@@ -3,13 +3,12 @@
{% macro BlockData(aPluginFormData, sBlockName, sText = '') %}
{% set bHaveBlock = 'false' %}
{% for oLoginData in aPluginFormData if oLoginData.GetBlockData(sBlockName) %}
{% set oBlockData = oLoginData.GetBlockData(sBlockName) %}
{% for oLoginData in aPluginFormData if (oLoginData is defined and oLoginData.GetBlockData(sBlockName)) %}
{% set bHaveBlock = 'true' %}
{% set oBlockData = oLoginData.GetBlockData(sBlockName) %}
{% set sTwig = oBlockData.GetTwig() %}
{% set aData = oBlockData.GetData() %}
{% set sContent = include(sTwig ? sTwig : '') %}
{{ sContent|raw }}
{% include sTwig ignore missing %}
{% endfor %}
{% if bHaveBlock == 'true' %}
{{ sText|raw }}

View File

@@ -20,3 +20,7 @@
</form>
</div>
{% endblock %}
{% block script %}
{% include 'changepwdform.js.twig' %}
{% endblock script %}

View File

@@ -19,3 +19,8 @@
</form>
</div>
{% endblock %}
{% block ready_script %}
{% include 'forgotpwdform.ready.js.twig' %}
{% endblock ready_script %}

View File

@@ -25,3 +25,7 @@
{% endif %}
</div
{% endblock %}
{% block script %}
{% include 'resetpwdform.js.twig' %}
{% endblock script %}