diff --git a/sources/application/WebPage/AjaxPage.php b/sources/application/WebPage/AjaxPage.php
index 82a77050b..a9001a921 100644
--- a/sources/application/WebPage/AjaxPage.php
+++ b/sources/application/WebPage/AjaxPage.php
@@ -19,6 +19,9 @@ class AjaxPage extends WebPage implements iTabbedPage
*/
protected $m_oTabs;
private $m_sMenu; // If set, then the menu will be updated
+ /** @var string Scripts to load entries of dictionary */
+ protected $s_dict_scripts;
+
const DEFAULT_PAGE_TEMPLATE_REL_PATH = 'pages/backoffice/ajaxpage/layout';
/**
@@ -154,6 +157,24 @@ class AjaxPage extends WebPage implements iTabbedPage
header($s_header);
}
+ // - Generate necessary dict. files
+ // Dict entries for JS
+ if ($this->bAddJSDict) {
+ if ((count($this->a_dict_entries) > 0) || (count($this->a_dict_entries_prefixes) > 0)) {
+ if (class_exists('Dict')) {
+ // The dictionary may not be available for example during the setup...
+ // Create a specific dictionary file and load it as a JS script
+ $sSignature = $this->get_dict_signature();
+ $sJSFileName = utils::GetCachePath().$sSignature.'.js';
+ if (!file_exists($sJSFileName) && is_writable(utils::GetCachePath())) {
+ file_put_contents($sJSFileName, $this->get_dict_file_content());
+ }
+ // Load the dictionary as the first javascript file, so that other JS file benefit from the translations
+ $this->s_dict_scripts = utils::GetAbsoluteUrlAppRoot().'pages/ajax.document.php?operation=dict&s='.$sSignature;
+ }
+ }
+ }
+
ConsoleBlockRenderer::AddCssJsToPage($this, $this->oContentLayout);
// Render the blocks
@@ -185,6 +206,7 @@ EOF
'aCssInline' => $this->a_styles,
'aJsFiles' => $this->a_linked_scripts,
'aJsInlineLive' => $this->a_scripts,
+ 'sDictScript' => $this->s_dict_scripts,
'aJsInlineOnDomReady' => $this->GetReadyScripts(),
'aJsInlineOnInit' => $this->a_init_scripts,
'bEscapeContent' => ($this->sContentType == 'text/html') && ($this->sContentDisposition == 'inline'),
diff --git a/templates/pages/backoffice/ajaxpage/layout.html.twig b/templates/pages/backoffice/ajaxpage/layout.html.twig
index 7187a8361..3c967b802 100644
--- a/templates/pages/backoffice/ajaxpage/layout.html.twig
+++ b/templates/pages/backoffice/ajaxpage/layout.html.twig
@@ -26,6 +26,16 @@
{% block iboPageJsFiles %}
+ {% endblock %}
+ {% else %}
+ {% block iboPageJsInlineOnDomReady %}
+ {# first load Dictionnary if exist #}
+ {% if aPage.sDictScript is not empty %}
+
- {% endblock %}
- {% else %}
- {% block iboPageJsInlineOnDomReady %}
- {% for sJsInlineOnDomReady in aPage.aJsInlineOnDomReady %}
-
- {% endfor %}
+ {% else %}
+ {% for sJsInlineOnDomReady in aPage.aJsInlineOnDomReady %}
+
+ {% endfor %}
+ {% endif %}
{% endblock %}
{% endif %}