Skip to content

Commit

Permalink
Merge branch '4.0-dev' into markdown
Browse files Browse the repository at this point in the history
  • Loading branch information
wilsonge committed Jan 24, 2021
2 parents ea136db + ea35492 commit ace7604
Show file tree
Hide file tree
Showing 688 changed files with 6,218 additions and 4,488 deletions.
Expand Up @@ -59,7 +59,7 @@ protected function getInput()
);

return '<div class="alert alert-info">'
. '<span class="icon-info-circle" aria-hidden="true"></span><span class="sr-only">'
. '<span class="icon-info-circle" aria-hidden="true"></span><span class="visually-hidden">'
. Text::_('INFO')
. '</span>'
. Text::sprintf('PLG_SYSTEM_ACTIONLOGS_JOOMLA_ACTIONLOG_DISABLED_REDIRECT', $link)
Expand Down
Expand Up @@ -15,7 +15,6 @@
use Joomla\CMS\Factory;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Layout\FileLayout;
use Joomla\CMS\Mail\Exception\MailDisabledException;
use Joomla\CMS\Mail\MailTemplate;
use Joomla\CMS\MVC\Model\BaseDatabaseModel;
Expand Down
Expand Up @@ -34,12 +34,12 @@
<?php echo LayoutHelper::render('joomla.searchtools.default', array('view' => $this)); ?>
<?php if (empty($this->items)) : ?>
<div class="alert alert-info">
<span class="icon-info-circle" aria-hidden="true"></span><span class="sr-only"><?php echo Text::_('INFO'); ?></span>
<span class="icon-info-circle" aria-hidden="true"></span><span class="visually-hidden"><?php echo Text::_('INFO'); ?></span>
<?php echo Text::_('JGLOBAL_NO_MATCHING_RESULTS'); ?>
</div>
<?php else : ?>
<table class="table" id="logsList">
<caption class="sr-only">
<caption class="visually-hidden">
<?php echo Text::_('COM_ACTIONLOGS_TABLE_CAPTION'); ?>,
<span id="orderedBy"><?php echo Text::_('JGLOBAL_SORTED_BY'); ?> </span>,
<span id="filteredBy"><?php echo Text::_('JGLOBAL_FILTERED_BY'); ?></span>
Expand Down
43 changes: 43 additions & 0 deletions administrator/components/com_admin/forms/profile.xml
Expand Up @@ -152,6 +152,49 @@
<option value="">JOPTION_USE_DEFAULT</option>
</field>
</fieldset>
<!-- User accessibility settings -->
<fieldset name="accessibility" label="COM_ADMIN_A11Y_SETTINGS_FIELDSET_LABEL">
<field
name="a11y_mono"
type="radio"
label="COM_ADMIN_A11Y_SETTINGS_FIELD_MONOCHROME"
layout="joomla.form.field.radio.switcher"
default="0"
>
<option value="0">JNO</option>
<option value="monochrome">JYES</option>
</field>
<field
name="a11y_contrast"
type="radio"
label="COM_ADMIN_A11Y_SETTINGS_FIELD_CONTRAST"
layout="joomla.form.field.radio.switcher"
default="0"
>
<option value="0">JNO</option>
<option value="high_contrast">JYES</option>
</field>
<field
name="a11y_highlight"
type="radio"
label="COM_ADMIN_A11Y_SETTINGS_FIELD_HIGHLIGHT"
layout="joomla.form.field.radio.switcher"
default="0"
>
<option value="0">JNO</option>
<option value="highlight">JYES</option>
</field>
<field
name="a11y_font"
type="radio"
label="COM_ADMIN_A11Y_SETTINGS_FIELD_FONTSIZE"
layout="joomla.form.field.radio.switcher"
default="0"
>
<option value="0">JNO</option>
<option value="fontsize">JYES</option>
</field>
</fieldset>
</fields>
<field name="twofactor" type="hidden" />
</form>
219 changes: 212 additions & 7 deletions administrator/components/com_admin/script.php
Expand Up @@ -9,6 +9,7 @@

defined('_JEXEC') or die;

use Joomla\CMS\Component\ComponentHelper;
use Joomla\CMS\Extension\ExtensionHelper;
use Joomla\CMS\Factory;
use Joomla\CMS\Filesystem\File;
Expand All @@ -17,6 +18,8 @@
use Joomla\CMS\Language\Text;
use Joomla\CMS\Log\Log;
use Joomla\CMS\Table\Table;
use Joomla\CMS\Uri\Uri;
use Joomla\Component\Config\Administrator\Model\ComponentModel;
use Joomla\Component\Fields\Administrator\Model\FieldModel;
use Joomla\Database\ParameterType;

Expand Down Expand Up @@ -467,10 +470,24 @@ protected function updateManifestCaches()
/**
* Delete files that should not exist
*
* @return void
* @param bool $dryRun If set to true, will not actually delete files, but just report their status for use in CLI
* @param bool $suppressOutput Set to true to supress echoing any errors, and just return the $status array
*
* @return array
*/
public function deleteUnexistingFiles()
public function deleteUnexistingFiles($dryRun = false, $suppressOutput = false)
{
$status = [
'files_exist' => [],
'folders_exist' => [],
'files_deleted' => [],
'folders_deleted' => [],
'files_errors' => [],
'folders_errors' => [],
'folders_checked' => [],
'files_checked' => [],
];

$files = array(
// Joomla 4.0 Beta 1
'/administrator/components/com_actionlogs/actionlogs.php',
Expand Down Expand Up @@ -5026,7 +5043,6 @@ public function deleteUnexistingFiles()
'/templates/cassiopeia/scss/vendor/bootstrap/_card.scss',
);

// TODO There is an issue while deleting folders using the ftp mode
$folders = array(
// Joomla 4.0 Beta 1
'/templates/system/images',
Expand Down Expand Up @@ -6213,23 +6229,67 @@ public function deleteUnexistingFiles()
'/libraries/vendor/joomla/controller',
// Joomla 4.0 Beta 5
'/plugins/content/imagelazyload',
// Joomla 4.0 Beta 6
'/media/vendor/skipto/js/skipTo.js',
'/media/vendor/skipto/js/dropMenu.js',
'/media/vendor/skipto/css/SkipTo.css'
);

$status['files_checked'] = $files;
$status['folders_checked'] = $folders;

foreach ($files as $file)
{
if (File::exists(JPATH_ROOT . $file) && !File::delete(JPATH_ROOT . $file))
if ($fileExists = File::exists(JPATH_ROOT . $file))
{
echo Text::sprintf('FILES_JOOMLA_ERROR_FILE_FOLDER', $file) . '<br>';
$status['files_exist'][] = $file;

if ($dryRun === false)
{
if (File::delete(JPATH_ROOT . $file))
{
$status['files_deleted'][] = $file;
}
else
{
$status['files_errors'][] = Text::sprintf('FILES_JOOMLA_ERROR_FILE_FOLDER', $file);
}
}
}
}

foreach ($folders as $folder)
{
if (Folder::exists(JPATH_ROOT . $folder) && !Folder::delete(JPATH_ROOT . $folder))
if ($folderExists = Folder::exists(JPATH_ROOT . $folder))
{
echo Text::sprintf('FILES_JOOMLA_ERROR_FILE_FOLDER', $folder) . '<br>';
$status['folders_exist'][] = $folder;

if ($dryRun === false)
{
// TODO There is an issue while deleting folders using the ftp mode
if (Folder::delete(JPATH_ROOT . $folder))
{
$status['folders_deleted'][] = $folder;
}
else
{
$status['folders_errors'][] = Text::sprintf('FILES_JOOMLA_ERROR_FILE_FOLDER', $folder);
}
}
}
}

if ($suppressOutput === false && \count($status['folders_errors']))
{
echo implode('<br/>', $status['folders_errors']);
}

if ($suppressOutput === false && \count($status['files_errors']))
{
echo implode('<br/>', $status['files_errors']);
}

return $status;
}

/**
Expand Down Expand Up @@ -6575,6 +6635,8 @@ public function postflight($action, $installer)
}
}

$this->convertBlogLayouts();

return true;
}

Expand Down Expand Up @@ -6936,4 +6998,147 @@ private function updateContentTypes(): void
$db->execute();
}
}

/**
* Converts layout parameters for blog / featured views into the according CSS classes.
*
* @return void
*
* @since 4.0.0
*/
private function convertBlogLayouts()
{
$db = Factory::getDbo();
$query = $db->getQuery(true)
->select(
[
$db->quoteName('m.id'),
$db->quoteName('m.link'),
$db->quoteName('m.params'),
]
)
->from($db->quoteName('#__menu', 'm'))
->leftJoin($db->quoteName('#__extensions', 'e'), $db->quoteName('e.extension_id') . ' = ' . $db->quoteName('m.component_id'))
->where($db->quoteName('e.element') . ' = ' . $db->quote('com_content'));

$menuItems = $db->setQuery($query)->loadAssocList('id');
$contentParams = ComponentHelper::getParams('com_content');

foreach ($menuItems as $id => $menuItem)
{
$view = Uri::getInstance($menuItem['link'])->getVar('view');

if (!in_array($view, ['category', 'categories', 'featured']))
{
continue;
}

$params = json_decode($menuItem['params'], true);

// Don't update parameters if num_columns is unset.
if (!isset($params['num_columns']))
{
continue;
}

$useLocalCols = $params['num_columns'] !== '';

if ($useLocalCols)
{
$nColumns = (int) $params['num_columns'];
}
else
{
$nColumns = (int) $contentParams->get('num_columns', '1');
}

unset($params['num_columns']);

$order = 0;
$useLocalOrder = false;

if (isset($params['multi_column_order']))
{
if ($params['multi_column_order'] !== '')
{
$useLocalOrder = true;
$order = (int) $params['multi_column_order'];
}
else
{
$order = (int) $contentParams->get('multi_column_order', '0');
}

unset($params['multi_column_order']);
}

// Only add CSS class if columns > 1 and a local value was set for columns or order.
if ($nColumns > 1 && ($useLocalOrder || $useLocalCols))
{
// Convert to the according CSS class depending on order = "down" or "across".
$layout = ($order === 0) ? 'masonry-' : 'columns-';

if (strpos($params['blog_class'], $layout) === false)
{
$params['blog_class'] .= ' ' . $layout . $nColumns;
}
}

$newParams = json_encode($params);

$query = $db->getQuery(true)
->update($db->quoteName('#__menu'))
->set($db->quoteName('params') . ' = :params')
->where($db->quoteName('id') . ' = :id')
->bind(':params', $newParams, ParameterType::STRING)
->bind(':id', $id, ParameterType::INTEGER);

$db->setQuery($query)->execute();
}

// Update global parameters for com_content.
$nColumns = $contentParams->get('num_columns');

if ($nColumns !== null || true)
{
$nColumns = (int) $nColumns;
$order = (int) $contentParams->get('multi_column_order', '0');
$params = $contentParams->toArray();

if (!isset($params['blog_class']))
{
$params['blog_class'] = '';
}

// Convert to the according CSS class depending on order = "down" or "across".
$layout = ($order === 0) ? 'masonry-' : 'columns-';

if (strpos($params['blog_class'], $layout) === false && $nColumns > 1)
{
$params['blog_class'] .= ' ' . $layout . $nColumns;
}

unset($params['num_columns']);

$app = Factory::getApplication();
/** @var ComponentModel $configModel */
$configModel = $app->bootComponent('com_config')
->getMVCFactory()
->createModel('Component', 'Administrator', ['ignore_request' => true]);

$query = $db->getQuery(true)
->select($db->quoteName('extension_id'))
->from($db->quoteName('#__extensions'))
->where($db->quoteName('element') . ' = ' . $db->quote('com_content'));

$componentId = $db->setQuery($query)->loadResult();

$data = array(
'id' => $componentId,
'option' => 'com_content',
'params' => $params,
);
$configModel->save($data);
}
}
}
Expand Up @@ -31,10 +31,10 @@ public function writable($writable)
{
if ($writable)
{
return '<span class="badge badge-success">' . Text::_('COM_ADMIN_WRITABLE') . '</span>';
return '<span class="badge bg-success">' . Text::_('COM_ADMIN_WRITABLE') . '</span>';
}

return '<span class="badge badge-danger">' . Text::_('COM_ADMIN_UNWRITABLE') . '</span>';
return '<span class="badge bg-danger">' . Text::_('COM_ADMIN_UNWRITABLE') . '</span>';
}

/**
Expand Down
2 changes: 1 addition & 1 deletion administrator/components/com_admin/tmpl/help/default.php
Expand Up @@ -20,7 +20,7 @@
<form action="<?php echo Route::_('index.php?option=com_admin&amp;view=help'); ?>" method="post" name="adminForm" id="adminForm">
<div class="row mt-sm-3">
<div id="sidebar" class="col-md-3">
<button class="btn btn-sm btn-secondary my-2 options-menu d-md-none" type="button" data-toggle="collapse" data-target=".sidebar-nav" aria-controls="sidebar-nav" aria-expanded="false">
<button class="btn btn-sm btn-secondary my-2 options-menu d-md-none" type="button" data-bs-toggle="collapse" data-bs-target=".sidebar-nav" aria-controls="help-index" aria-expanded="false">
<span class="icon-align-justify" aria-hidden="true"></span>
<?php echo Text::_('JTOGGLE_SIDEBAR_MENU'); ?>
</button>
Expand Down

0 comments on commit ace7604

Please sign in to comment.