Skip to content

Commit 4b3d111

Browse files
dGrammatikolaoneo
authored andcommitted
[4.0] allow jdoc:include type=message to load assets (#21558)
* dry * allow modules to enqueMessages
1 parent f20101b commit 4b3d111

File tree

10 files changed

+19
-41
lines changed

10 files changed

+19
-41
lines changed

administrator/templates/atum/component.php

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,6 @@
1616

1717
$lang = Factory::getLanguage();
1818

19-
// Alerts
20-
HTMLHelper::_('webcomponent', 'vendor/joomla-custom-elements/joomla-alert.min.js', ['relative' => true, 'version' => 'auto', 'detectBrowser' => false, 'detectDebug' => false]);
21-
2219
// Add JavaScript Frameworks
2320
HTMLHelper::_('bootstrap.framework');
2421
HTMLHelper::_('script', 'vendor/focus-visible/focus-visible.min.js', ['version' => 'auto', 'relative' => true]);

administrator/templates/atum/error_full.php

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,6 @@
4343
// Load custom CSS file
4444
HTMLHelper::_('stylesheet', 'user.css', array('version' => 'auto', 'relative' => true));
4545

46-
// Alerts
47-
HTMLHelper::_('webcomponent', 'vendor/joomla-custom-elements/joomla-alert.min.js', ['relative' => true, 'version' => 'auto', 'detectBrowser' => false, 'detectDebug' => false]);
48-
4946
// Load specific language related CSS
5047
HTMLHelper::_('stylesheet', 'administrator/language/' . $lang->getTag() . '/' . $lang->getTag() . '.css', array('version' => 'auto'));
5148

administrator/templates/atum/error_login.php

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,6 @@
3030
HTMLHelper::_('stylesheet', 'font-awesome.min.css', ['version' => 'auto', 'relative' => true]);
3131
HTMLHelper::_('stylesheet', 'template' . ($this->direction === 'rtl' ? '-rtl' : '') . '.min.css', ['version' => 'auto', 'relative' => true]);
3232

33-
// Alerts
34-
HTMLHelper::_('webcomponent', 'vendor/joomla-custom-elements/joomla-alert.min.js', ['relative' => true, 'version' => 'auto']);
35-
36-
3733
// Load custom CSS file
3834
HTMLHelper::_('stylesheet', 'user.css', array('version' => 'auto', 'relative' => true));
3935

administrator/templates/atum/index.php

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,17 +35,16 @@
3535
HTMLHelper::_('bootstrap.framework');
3636
HTMLHelper::_('script', 'vendor/focus-visible/focus-visible.min.js', ['version' => 'auto', 'relative' => true]);
3737

38-
// Load template CSS file
38+
// Load the dependencies CSS files
3939
HTMLHelper::_('stylesheet', 'bootstrap.css', ['version' => 'auto', 'relative' => true]);
4040
HTMLHelper::_('stylesheet', 'font-awesome.css', ['version' => 'auto', 'relative' => true]);
41+
42+
// Load the template CSS file
4143
HTMLHelper::_('stylesheet', 'template' . ($this->direction === 'rtl' ? '-rtl' : '') . '.css', ['version' => 'auto', 'relative' => true]);
4244

4345
// Load custom CSS file
4446
HTMLHelper::_('stylesheet', 'user.css', array('version' => 'auto', 'relative' => true));
4547

46-
// Alerts
47-
HTMLHelper::_('webcomponent', 'vendor/joomla-custom-elements/joomla-alert.min.js', ['relative' => true, 'version' => 'auto', 'detectBrowser' => false, 'detectDebug' => false]);
48-
4948
// Load specific language related CSS
5049
HTMLHelper::_('stylesheet', 'administrator/language/' . $lang->getTag() . '/' . $lang->getTag() . '.css', array('version' => 'auto'));
5150

administrator/templates/atum/login.php

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,6 @@
2727
HTMLHelper::_('stylesheet', 'font-awesome.css', ['version' => 'auto', 'relative' => true]);
2828
HTMLHelper::_('stylesheet', 'template' . ($this->direction === 'rtl' ? '-rtl' : '') . '.css', ['version' => 'auto', 'relative' => true]);
2929

30-
// Alerts
31-
HTMLHelper::_('webcomponent', 'vendor/joomla-custom-elements/joomla-alert.min.js', ['relative' => true, 'version' => 'auto']);
32-
33-
3430
// Load custom CSS file
3531
HTMLHelper::_('stylesheet', 'user.css', array('version' => 'auto', 'relative' => true));
3632

layouts/joomla/system/message.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
defined('JPATH_BASE') or die;
1111

1212
use Joomla\CMS\Application\CMSApplication;
13+
use Joomla\CMS\HTML\HTMLHelper;
1314
use Joomla\CMS\Language\Text;
1415

1516
$msgList = $displayData['msgList'];
@@ -26,6 +27,8 @@
2627
'message' => 'success'
2728
];
2829

30+
// Alerts progressive enhancement
31+
HTMLHelper::_('webcomponent', 'vendor/joomla-custom-elements/joomla-alert.min.js', ['relative' => true, 'version' => 'auto', 'detectBrowser' => false, 'detectDebug' => false]);
2932
?>
3033
<div id="system-message-container">
3134
<div id="system-message">

libraries/src/Document/HtmlDocument.php

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -749,8 +749,9 @@ protected function _parseTemplate()
749749

750750
if (preg_match_all('#<jdoc:include\ type="([^"]+)"(.*)\/>#iU', $this->_template, $matches))
751751
{
752-
$template_tags_first = array();
753-
$template_tags_last = array();
752+
$messages = [];
753+
$template_tags_first = [];
754+
$template_tags_last = [];
754755

755756
// Step through the jdocs in reverse order.
756757
for ($i = count($matches[0]) - 1; $i >= 0; $i--)
@@ -760,20 +761,21 @@ protected function _parseTemplate()
760761
$name = $attribs['name'] ?? null;
761762

762763
// Separate buffers to be executed first and last
763-
if ($type == 'module' || $type == 'modules')
764+
if ($type === 'module' || $type === 'modules')
764765
{
765-
$template_tags_first[$matches[0][$i]] = array('type' => $type, 'name' => $name, 'attribs' => $attribs);
766+
$template_tags_first[$matches[0][$i]] = ['type' => $type, 'name' => $name, 'attribs' => $attribs];
767+
}
768+
elseif ($type === 'message')
769+
{
770+
$messages = [$matches[0][$i] => ['type' => $type, 'name' => $name, 'attribs' => $attribs]];
766771
}
767772
else
768773
{
769-
$template_tags_last[$matches[0][$i]] = array('type' => $type, 'name' => $name, 'attribs' => $attribs);
774+
$template_tags_last[$matches[0][$i]] = ['type' => $type, 'name' => $name, 'attribs' => $attribs];
770775
}
771776
}
772777

773-
// Reverse the last array so the jdocs are in forward order.
774-
$template_tags_last = array_reverse($template_tags_last);
775-
776-
$this->_template_tags = $template_tags_first + $template_tags_last;
778+
$this->_template_tags = $template_tags_first + $messages + array_reverse($template_tags_last);
777779
}
778780

779781
return $this;
@@ -788,8 +790,8 @@ protected function _parseTemplate()
788790
*/
789791
protected function _renderTemplate()
790792
{
791-
$replace = array();
792-
$with = array();
793+
$replace = [];
794+
$with = [];
793795

794796
foreach ($this->_template_tags as $jdoc => $args)
795797
{

templates/cassiopeia/error.php

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,6 @@
4444
// Load custom CSS file
4545
HTMLHelper::_('stylesheet', 'user.css', array('version' => 'auto', 'relative' => true));
4646

47-
// Alerts progressive enhancement
48-
HTMLHelper::_('webcomponent', 'vendor/joomla-custom-elements/joomla-alert.min.js', ['relative' => true, 'version' => 'auto', 'detectBrowser' => false, 'detectDebug' => false]);
49-
5047
// Load specific language related CSS
5148
HTMLHelper::_('stylesheet', 'language/' . $lang->getTag() . '/' . $lang->getTag() . '.css', array('version' => 'auto'));
5249

templates/cassiopeia/index.php

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,6 @@
4444
// Load custom CSS file
4545
HTMLHelper::_('stylesheet', 'user.css', array('version' => 'auto', 'relative' => true));
4646

47-
// Alerts progressive enhancement
48-
HTMLHelper::_('webcomponent', 'vendor/joomla-custom-elements/joomla-alert.min.js', ['relative' => true, 'version' => 'auto', 'detectBrowser' => false, 'detectDebug' => false]);
49-
5047
// Load specific language related CSS
5148
HTMLHelper::_('stylesheet', 'language/' . $lang->getTag() . '/' . $lang->getTag() . '.css', array('version' => 'auto'));
5249

templates/cassiopeia/offline.php

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,10 @@
2626
// Add JavaScript Frameworks
2727
HTMLHelper::_('behavior.core');
2828

29-
// Add template js
30-
HTMLHelper::_('script', 'template.js', ['version' => 'auto', 'relative' => true]);
31-
3229
// Add Stylesheets
3330
HTMLHelper::_('stylesheet', 'template.css', ['version' => 'auto', 'relative' => true]);
3431
HTMLHelper::_('stylesheet', 'offline.css', ['version' => 'auto', 'relative' => true]);
3532

36-
// Alerts progressive enhancement
37-
HTMLHelper::_('webcomponent', 'vendor/joomla-custom-elements/joomla-alert.min.js', ['relative' => true, 'version' => 'auto', 'detectBrowser' => false, 'detectDebug' => false]);
38-
3933
// Template color
4034
if ($this->params->get('templateColor'))
4135
{

0 commit comments

Comments
 (0)