N°3833 Fix DashletBadge in Ajax causing JS error

* switch dashlet_badge widget init from js_template to js_on_ready_template
* add phpdoc on UIBlock::DEFAULT_JS_FILES_REL_PATH
* remove old code in \AjaxPage::output (after the return statement) that is already handled with the new Twig rendering
This commit is contained in:
Pierre Goiffon
2021-03-19 11:20:03 +01:00
parent f1d05ae9b5
commit de7ac4ba31
4 changed files with 6 additions and 23 deletions

View File

@@ -16,7 +16,7 @@ class DashletBadge extends DashletContainer
public const BLOCK_CODE = 'ibo-dashlet-badge';
public const DEFAULT_HTML_TEMPLATE_REL_PATH = 'base/components/dashlet/dashlet-badge';
public const DEFAULT_JS_TEMPLATE_REL_PATH = 'base/components/dashlet/dashlet-badge';
public const DEFAULT_JS_ON_READY_TEMPLATE_REL_PATH = 'base/components/dashlet/dashlet-badge';
public const DEFAULT_JS_FILES_REL_PATH = [
'js/components/dashlet/dashlet-badge.js',
];

View File

@@ -43,7 +43,11 @@ abstract class UIBlock implements iUIBlock
public const DEFAULT_GLOBAL_TEMPLATE_REL_PATH = null;
/** @var string|null */
public const DEFAULT_HTML_TEMPLATE_REL_PATH = null;
/** @var array */
/**
* @var array list of external JS file paths to include in the page. Paths are relative to APPROOT
* **Warning** : if you need to call a JS var defined in one of this file, then this calling code MUST be in {@see DEFAULT_JS_ON_READY_TEMPLATE_REL_PATH}
* and not in {@see DEFAULT_JS_TEMPLATE_REL_PATH} ! Indeed the later is output before external files loading.
*/
public const DEFAULT_JS_FILES_REL_PATH = [];
/** @var string|null */
public const DEFAULT_JS_TEMPLATE_REL_PATH = null;

View File

@@ -237,19 +237,6 @@ EOF
echo "\n</script>\n";
}
//echo $this->s_deferred_content;
if (count($this->a_scripts) > 0) {
echo "<script type=\"text/javascript\">\n";
echo implode("\n", $this->a_scripts);
echo "\n</script>\n";
}
if (count($this->a_linked_scripts) > 0) {
echo "<script type=\"text/javascript\">\n";
foreach ($this->a_linked_scripts as $sScriptUrl) {
echo '$.getScript('.json_encode($sScriptUrl).");\n";
}
echo "\n</script>\n";
}
if (!empty($this->s_deferred_content)) {
echo "<script type=\"text/javascript\">\n";
echo "\$('body').append('".addslashes(str_replace("\n", '', $this->s_deferred_content))."');\n";
@@ -260,14 +247,6 @@ EOF
echo $this->m_aReadyScripts; // Ready Scripts are output as simple scripts
echo "\n</script>\n";
}
if (count($this->a_linked_stylesheets) > 0) {
echo "<script type=\"text/javascript\">";
foreach ($this->a_linked_stylesheets as $aStylesheet) {
$sStylesheetUrl = $aStylesheet['link'];
echo "if (!$('link[href=\"{$sStylesheetUrl}\"]').length) $('<link href=\"{$sStylesheetUrl}\" rel=\"stylesheet\">').appendTo('head');\n";
}
echo "\n</script>\n";
}
if (trim($s_captured_output) != "") {
echo self::FilterXSS($s_captured_output);