Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions administrator/components/com_admin/postinstall/htaccessbrotli.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<?php

/**
* @package Joomla.Administrator
* @subpackage com_admin
*
* @copyright (C) 2024 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*
* This file contains post-installation message handling for notifying users of a change
* in the default .htaccess file regarding setting the Content-Encoding header.
*/

// phpcs:disable PSR1.Files.SideEffects
\defined('_JEXEC') or die;
// phpcs:enable PSR1.Files.SideEffects

/**
* Notifies users of a change in the default .htaccess file regarding setting for brotli to prevent double compression
*
* This check returns true regardless of condition.
*
* @return boolean
*
* @since 4.4.4
*/
function admin_postinstall_htaccessbrotli_condition()
{
return true;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
--
-- Add post-installation message about setting the Content-Encoding header in .htaccess
--
INSERT IGNORE INTO `#__postinstall_messages` (`extension_id`, `title_key`, `description_key`, `action_key`, `language_extension`, `language_client_id`, `type`, `action_file`, `action`, `condition_file`, `condition_method`, `version_introduced`, `enabled`)
SELECT `extension_id`, 'COM_ADMIN_POSTINSTALL_MSG_HTACCESS_BROTLI_TITLE', 'COM_ADMIN_POSTINSTALL_MSG_HTACCESS_BROTLI_DESCRIPTION', '', 'com_admin', 1, 'message', '', '', 'admin://components/com_admin/postinstall/htaccessbrotli.php', 'admin_postinstall_htaccessbrotli_condition', '4.4.4', 1 FROM `#__extensions` WHERE `name` = 'files_joomla';
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
--
-- Add post-installation message about setting the Content-Encoding header in .htaccess
--
INSERT INTO "#__postinstall_messages" ("extension_id", "title_key", "description_key", "action_key", "language_extension", "language_client_id", "type", "action_file", "action", "condition_file", "condition_method", "version_introduced", "enabled")
SELECT "extension_id", 'COM_ADMIN_POSTINSTALL_MSG_HTACCESS_BROTLI_TITLE', 'COM_ADMIN_POSTINSTALL_MSG_HTACCESS_BROTLI_DESCRIPTION', '', 'com_admin', 1, 'message', '', '', 'admin://components/com_admin/postinstall/htaccessbrotli.php', 'admin_postinstall_htaccessbrotli_condition', '4.4.4', 1 FROM "#__extensions" WHERE "name" = 'files_joomla'
ON CONFLICT DO NOTHING;
2 changes: 2 additions & 0 deletions administrator/language/en-GB/com_admin.ini
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,8 @@ COM_ADMIN_POSTINSTALL_MSG_HTACCESS_AUTOINDEX_DESCRIPTION="<p>Before 3.9.22 the d
COM_ADMIN_POSTINSTALL_MSG_HTACCESS_AUTOINDEX_TITLE=".htaccess Update Concerning Directory Listings"
COM_ADMIN_POSTINSTALL_MSG_HTACCESS_SETCE_DESCRIPTION="<p>Before 4.2.9 the default htaccess.txt file contained erroneous code for appending the \"Content-Encoding\" HTTP header. This could result in double encoding errors when Joomla is installed in a subdirectory and both this directory and its parent directory contain an .htaccess file with this code. You should manually apply the necessary changes to any existing .htaccess file, as this file can not be updated automatically.</p><p>The old code:</p><pre>Header append Content-Encoding gzip</pre><p>The new code:</p><pre>Header set Content-Encoding gzip</pre>"
COM_ADMIN_POSTINSTALL_MSG_HTACCESS_SETCE_TITLE=".htaccess Update Concerning Setting the Content-Encoding Header"
COM_ADMIN_POSTINSTALL_MSG_HTACCESS_BROTLI_DESCRIPTION="<p>Before 4.4.4 the default htaccess.txt did not support Brotli compression. This could result in double compression errors when Joomla is installed on a server that uses Brotli compression. You should manually apply the necessary changes to any existing .htaccess file, as this file can not be updated automatically.</p><p>The old code:</p><pre>RewriteRule \"\.css\.gz$\" \"-\" [T=text/css,E=no-gzip:1]<br>RewriteRule \"\.js\.gz$\" \"-\" [T=text/javascript,E=no-gzip:1]</pre><p>The new code:</p><pre>RewriteRule \"\.css\.gz$\" \"-\" [T=text/css,E=no-gzip:1,E=no-brotli:1]<br>RewriteRule \"\.js\.gz$\" \"-\" [T=text/javascript,E=no-gzip:1,E=no-brotli:1]</pre>"
COM_ADMIN_POSTINSTALL_MSG_HTACCESS_BROTLI_TITLE=".htaccess Update Brotli Compression"
COM_ADMIN_SAVE_SUCCESS="Profile saved."
COM_ADMIN_SESSION_AUTO_START="Session Auto Start"
COM_ADMIN_SESSION_SAVE_PATH="Session Save Path"
Expand Down
9 changes: 5 additions & 4 deletions components/com_users/src/View/Profile/HtmlView.php
Original file line number Diff line number Diff line change
Expand Up @@ -139,13 +139,14 @@ public function display($tpl = null)
unset($this->data->text);

// Check for layout from menu item.
$query = Factory::getApplication()->getMenu()->getActive()->query;
$active = Factory::getApplication()->getMenu()->getActive();

if (
isset($query['layout']) && isset($query['option']) && $query['option'] === 'com_users'
&& isset($query['view']) && $query['view'] === 'profile'
$active && isset($active->query['layout'])
&& isset($active->query['option']) && $active->query['option'] === 'com_users'
&& isset($active->query['view']) && $active->query['view'] === 'profile'
) {
$this->setLayout($query['layout']);
$this->setLayout($active->query['layout']);
}

// Escape strings for HTML output
Expand Down
8 changes: 4 additions & 4 deletions htaccess.txt
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ Options -Indexes
</IfModule>
</IfModule>

## GZIP
## GZIP & BROTLI
## These directives are only enabled if the Apache mod_headers module is enabled.
## This section will check if a .gz file exists and if so will stream it
## directly or fallback to gzip any asset on the fly
Expand All @@ -157,9 +157,9 @@ Options -Indexes
RewriteCond "%{REQUEST_FILENAME}\.gz" -s
RewriteRule "^(.*)\.js" "$1\.js\.gz" [QSA]

# Serve correct content types, and prevent mod_deflate double gzip.
RewriteRule "\.css\.gz$" "-" [T=text/css,E=no-gzip:1]
RewriteRule "\.js\.gz$" "-" [T=text/javascript,E=no-gzip:1]
# Serve correct content types, and prevent mod_deflate double compression.
RewriteRule "\.css\.gz$" "-" [T=text/css,E=no-gzip:1,E=no-brotli:1]
RewriteRule "\.js\.gz$" "-" [T=text/javascript,E=no-gzip:1,E=no-brotli:1]

<FilesMatch "(\.js\.gz|\.css\.gz)$">
# Serve correct encoding type.
Expand Down
8 changes: 7 additions & 1 deletion libraries/src/MVC/View/ListView.php
Original file line number Diff line number Diff line change
Expand Up @@ -251,7 +251,13 @@ protected function addToolbar()
$bar->appendButton('Custom', $dhtml, 'batch');
}

if ($this->state->get('filter.published') == -2 && $canDo->get('core.delete')) {
if (
$canDo->get('core.delete') &&
(
$this->state->get('filter.state') == -2 ||
$this->state->get('filter.published') == -2
)
) {
ToolbarHelper::deleteList('JGLOBAL_CONFIRM_DELETE', $viewName . '.delete', 'JTOOLBAR_EMPTY_TRASH');
} elseif ($canDo->get('core.edit.state')) {
ToolbarHelper::trash($viewName . '.trash');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,10 @@ private function getPhpSupport()
'security' => '2024-12-08',
'eos' => '2025-12-08',
],
'8.3' => [
'security' => '2025-11-23',
'eos' => '2026-11-23',
],
];

// Fill our return array with default values
Expand Down