first commit

This commit is contained in:
2025-06-17 11:53:18 +02:00
commit 9f0f7ba12b
8804 changed files with 1369176 additions and 0 deletions

View File

@ -0,0 +1,63 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage Templates.Atum
*
* @copyright (C) 2012 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
use Joomla\CMS\HTML\HTMLHelper;
/** @var \Joomla\CMS\Document\HtmlDocument $this */
$wa = $this->getWebAssetManager();
// Get the hue value
preg_match('#^hsla?\(([0-9]+)[\D]+([0-9]+)[\D]+([0-9]+)[\D]+([0-9](?:.\d+)?)?\)$#i', $this->params->get('hue', 'hsl(214, 63%, 20%)'), $matches);
$linkColor = $this->params->get('link-color', '#2a69b8');
list($r, $g, $b) = sscanf($linkColor, "#%02x%02x%02x");
// Enable assets
$wa->usePreset('template.atum.' . ($this->direction === 'rtl' ? 'rtl' : 'ltr'))
->useStyle('template.active.language')
->useStyle('template.user')
->addInlineStyle(':root {
--hue: ' . $matches[1] . ';
--template-bg-light: ' . $this->params->get('bg-light', 'var(--template-bg-light)') . ';
--template-text-dark: ' . $this->params->get('text-dark', 'var(--template-text-dark)') . ';
--template-text-light: ' . $this->params->get('text-light', 'var(--template-text-light)') . ';
--link-color: ' . $linkColor . ';
--link-color-rgb: ' . $r . ',' . $g . ',' . $b . ';
--template-special-color: ' . $this->params->get('special-color', 'var(--template-special-color)') . ';
}');
// No template.js for modals
$wa->disableScript('template.atum');
// Override 'template.active' asset to set correct ltr/rtl dependency
$wa->registerStyle('template.active', '', [], [], ['template.atum.' . ($this->direction === 'rtl' ? 'rtl' : 'ltr')]);
// Browsers support SVG favicons
$this->addHeadLink(HTMLHelper::_('image', 'joomla-favicon.svg', '', [], true, 1), 'icon', 'rel', ['type' => 'image/svg+xml']);
$this->addHeadLink(HTMLHelper::_('image', 'favicon.ico', '', [], true, 1), 'alternate icon', 'rel', ['type' => 'image/vnd.microsoft.icon']);
$this->addHeadLink(HTMLHelper::_('image', 'joomla-favicon-pinned.svg', '', [], true, 1), 'mask-icon', 'rel', ['color' => '#000']);
?>
<!DOCTYPE html>
<html lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>">
<head>
<jdoc:include type="metas" />
<jdoc:include type="styles" />
<jdoc:include type="scripts" />
</head>
<body class="contentpane component">
<jdoc:include type="message" />
<jdoc:include type="component" />
</body>
</html>

View File

@ -0,0 +1,13 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage Templates.Atum
*
* @copyright (C) 2012 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
require_once __DIR__ . '/index.php';

View File

@ -0,0 +1,24 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage Templates.Atum
* @copyright (C) 2017 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
* @since 4.0.0
*/
defined('_JEXEC') or die;
use Joomla\CMS\Factory;
/** @var \Joomla\CMS\Document\ErrorDocument $this */
// Authenticated versus guest have different displays
$user = Factory::getUser();
if ($user->guest) {
require __DIR__ . '/error_login.php';
} else {
require __DIR__ . '/error_full.php';
}

View File

@ -0,0 +1,193 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage Templates.Atum
* @copyright (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
* @since 4.0.0
*/
defined('_JEXEC') or die;
use Joomla\CMS\Factory;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Layout\LayoutHelper;
use Joomla\CMS\Uri\Uri;
/** @var \Joomla\CMS\Document\ErrorDocument $this */
$app = Factory::getApplication();
$input = $app->getInput();
$wa = $this->getWebAssetManager();
// Detecting Active Variables
$option = $input->get('option', '');
$view = $input->get('view', '');
$layout = $input->get('layout', 'default');
$task = $input->get('task', 'display');
$cpanel = $option === 'com_cpanel';
$hiddenMenu = $app->getInput()->get('hidemainmenu');
// Browsers support SVG favicons
$this->addHeadLink(HTMLHelper::_('image', 'joomla-favicon.svg', '', [], true, 1), 'icon', 'rel', ['type' => 'image/svg+xml']);
$this->addHeadLink(HTMLHelper::_('image', 'favicon.ico', '', [], true, 1), 'alternate icon', 'rel', ['type' => 'image/vnd.microsoft.icon']);
$this->addHeadLink(HTMLHelper::_('image', 'joomla-favicon-pinned.svg', '', [], true, 1), 'mask-icon', 'rel', ['color' => '#000']);
// Template params
$logoBrandLarge = $this->params->get('logoBrandLarge')
? Uri::root(false) . htmlspecialchars($this->params->get('logoBrandLarge'), ENT_QUOTES)
: Uri::root(false) . 'media/templates/administrator/atum/images/logos/brand-large.svg';
$logoBrandSmall = $this->params->get('logoBrandSmall')
? Uri::root(false) . htmlspecialchars($this->params->get('logoBrandSmall'), ENT_QUOTES)
: Uri::root(false) . 'media/templates/administrator/atum/images/logos/brand-small.svg';
$logoBrandLargeAlt = empty($this->params->get('logoBrandLargeAlt')) && empty($this->params->get('emptyLogoBrandLargeAlt'))
? ''
: htmlspecialchars($this->params->get('logoBrandLargeAlt', ''), ENT_COMPAT, 'UTF-8');
$logoBrandSmallAlt = empty($this->params->get('logoBrandSmallAlt')) && empty($this->params->get('emptyLogoBrandSmallAlt'))
? ''
: htmlspecialchars($this->params->get('logoBrandSmallAlt', ''), ENT_COMPAT, 'UTF-8');
// Get the hue value
preg_match('#^hsla?\(([0-9]+)[\D]+([0-9]+)[\D]+([0-9]+)[\D]+([0-9](?:.\d+)?)?\)$#i', $this->params->get('hue', 'hsl(214, 63%, 20%)'), $matches);
$linkColor = $this->params->get('link-color', '#2a69b8');
list($r, $g, $b) = sscanf($linkColor, "#%02x%02x%02x");
// Enable assets
$wa->usePreset('template.atum.' . ($this->direction === 'rtl' ? 'rtl' : 'ltr'))
->useStyle('template.active.language')
->useStyle('template.user')
->addInlineStyle(':root {
--hue: ' . $matches[1] . ';
--template-bg-light: ' . $this->params->get('bg-light', '#f0f4fb') . ';
--template-text-dark: ' . $this->params->get('text-dark', '#495057') . ';
--template-text-light: ' . $this->params->get('text-light', '#ffffff') . ';
--link-color: ' . $linkColor . ';
--link-color-rgb: ' . $r . ',' . $g . ',' . $b . ';
--template-special-color: ' . $this->params->get('special-color', '#001B4C') . ';
}');
// Override 'template.active' asset to set correct ltr/rtl dependency
$wa->registerStyle('template.active', '', [], [], ['template.atum.' . ($this->direction === 'rtl' ? 'rtl' : 'ltr')]);
// Set some meta data
$this->setMetaData('viewport', 'width=device-width, initial-scale=1');
$monochrome = (bool) $this->params->get('monochrome');
// @see administrator/templates/atum/html/layouts/status.php
$statusModules = LayoutHelper::render('status', ['modules' => 'status']);
?>
<!DOCTYPE html>
<html lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>">
<head>
<jdoc:include type="metas" />
<jdoc:include type="styles" />
<jdoc:include type="scripts" />
</head>
<body class="admin <?php echo $option . ' view-' . $view . ' layout-' . $layout . ($task ? ' task-' . $task : '') . ($monochrome ? ' monochrome' : ''); ?>">
<noscript>
<div class="alert alert-danger" role="alert">
<?php echo Text::_('JGLOBAL_WARNJAVASCRIPT'); ?>
</div>
</noscript>
<header id="header" class="header d-flex">
<div class="header-title d-flex">
<div class="d-flex align-items-center">
<div class="logo">
<?php echo HTMLHelper::_('image', $logoBrandLarge, $logoBrandLargeAlt, ['loading' => 'eager', 'decoding' => 'async'], false, 0); ?>
<?php echo HTMLHelper::_('image', $logoBrandSmall, $logoBrandSmallAlt, ['class' => 'logo-collapsed', 'loading' => 'eager', 'decoding' => 'async'], false, 0); ?>
</div>
</div>
<jdoc:include type="modules" name="title" />
</div>
<?php echo $statusModules; ?>
</header>
<div id="wrapper" class="d-flex wrapper<?php echo $hiddenMenu ? '0' : ''; ?>">
<div class="container-fluid container-main">
<?php if (!$cpanel) : ?>
<a class="btn btn-subhead d-md-none d-lg-none d-xl-none" data-bs-toggle="collapse"
data-bs-target=".subhead-collapse"><?php echo Text::_('TPL_ATUM_TOOLBAR'); ?>
<span class="icon-wrench"></span></a>
<div id="subhead" class="subhead mb-3">
<div id="container-collapse" class="container-collapse"></div>
<div class="row">
<div class="col-md-12">
<jdoc:include type="modules" name="toolbar" style="none" />
</div>
</div>
</div>
<?php endif; ?>
<section id="content" class="content">
<jdoc:include type="message" />
<jdoc:include type="modules" name="top" style="html5" />
<div class="row">
<div class="col-md-12">
<h1><?php echo Text::_('JERROR_AN_ERROR_HAS_OCCURRED'); ?></h1>
<blockquote class="blockquote">
<span class="badge bg-secondary"><?php echo $this->error->getCode(); ?></span>
<?php echo htmlspecialchars($this->error->getMessage(), ENT_QUOTES, 'UTF-8'); ?>
</blockquote>
<?php if ($this->debug) : ?>
<div>
<?php echo $this->renderBacktrace(); ?>
<?php // Check if there are more Exceptions and render their data as well ?>
<?php if ($this->error->getPrevious()) : ?>
<?php $loop = true; ?>
<?php // Reference $this->_error here and in the loop as setError() assigns errors to this property and we need this for the backtrace to work correctly ?>
<?php // Make the first assignment to setError() outside the loop so the loop does not skip Exceptions ?>
<?php $this->setError($this->_error->getPrevious()); ?>
<?php while ($loop === true) : ?>
<p><strong><?php echo Text::_('JERROR_LAYOUT_PREVIOUS_ERROR'); ?></strong></p>
<p><?php echo htmlspecialchars($this->_error->getMessage(), ENT_QUOTES, 'UTF-8'); ?></p>
<?php echo $this->renderBacktrace(); ?>
<?php $loop = $this->setError($this->_error->getPrevious()); ?>
<?php endwhile; ?>
<?php // Reset the main error object to the base error ?>
<?php $this->setError($this->error); ?>
<?php endif; ?>
</div>
<?php endif; ?>
<p>
<a href="<?php echo $this->baseurl; ?>" class="btn btn-secondary">
<span class="icon-dashboard" aria-hidden="true"></span>
<?php echo Text::_('JGLOBAL_TPL_CPANEL_LINK_TEXT'); ?></a>
</p>
</div>
<?php if ($this->countModules('bottom')) : ?>
<jdoc:include type="modules" name="bottom" style="html5" />
<?php endif; ?>
</div>
</section>
</div>
<?php if (!$hiddenMenu) : ?>
<button class="navbar-toggler toggler-burger collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#sidebar-wrapper" aria-controls="sidebar-wrapper" aria-expanded="false" aria-label="<?php echo Text::_('JTOGGLE_SIDEBAR_MENU'); ?>">
<span class="navbar-toggler-icon"></span>
</button>
<div id="sidebar-wrapper" class="sidebar-wrapper sidebar-menu" <?php echo $hiddenMenu ? 'data-hidden="' . $hiddenMenu . '"' : ''; ?>>
<div id="sidebarmenu">
<div class="sidebar-toggle item item-level-1">
<a id="menu-collapse" href="#" aria-label="<?php echo Text::_('JTOGGLE_SIDEBAR_MENU'); ?>">
<span id="menu-collapse-icon" class="icon-toggle-off icon-fw" aria-hidden="true"></span>
<span class="sidebar-item-title"><?php echo Text::_('JTOGGLE_SIDEBAR_MENU'); ?></span>
</a>
</div>
<jdoc:include type="modules" name="menu" style="none" />
</div>
</div>
<?php endif; ?>
</div>
<jdoc:include type="modules" name="debug" style="none" />
</body>
</html>

View File

@ -0,0 +1,171 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage Templates.Atum
* @copyright (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
* @since 4.0.0
*/
defined('_JEXEC') or die;
use Joomla\CMS\Factory;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Layout\LayoutHelper;
use Joomla\CMS\Uri\Uri;
/** @var \Joomla\CMS\Document\ErrorDocument $this */
$app = Factory::getApplication();
$input = $app->getInput();
$wa = $this->getWebAssetManager();
// Detecting Active Variables
$option = $input->get('option', '');
$view = $input->get('view', '');
$layout = $input->get('layout', 'default');
$task = $input->get('task', 'display');
// Browsers support SVG favicons
$this->addHeadLink(HTMLHelper::_('image', 'joomla-favicon.svg', '', [], true, 1), 'icon', 'rel', ['type' => 'image/svg+xml']);
$this->addHeadLink(HTMLHelper::_('image', 'favicon.ico', '', [], true, 1), 'alternate icon', 'rel', ['type' => 'image/vnd.microsoft.icon']);
$this->addHeadLink(HTMLHelper::_('image', 'joomla-favicon-pinned.svg', '', [], true, 1), 'mask-icon', 'rel', ['color' => '#000']);
// Template params
$logoBrandLarge = $this->params->get('logoBrandLarge')
? Uri::root(false) . htmlspecialchars($this->params->get('logoBrandLarge'), ENT_QUOTES)
: Uri::root(false) . 'media/templates/administrator/atum/images/logos/brand-large.svg';
$logoBrandSmall = $this->params->get('logoBrandSmall')
? Uri::root(false) . htmlspecialchars($this->params->get('logoBrandSmall'), ENT_QUOTES)
: Uri::root(false) . 'media/templates/administrator/atum/images/logos/brand-small.svg';
$logoBrandLargeAlt = empty($this->params->get('logoBrandLargeAlt')) && empty($this->params->get('emptyLogoBrandLargeAlt'))
? ''
: htmlspecialchars($this->params->get('logoBrandLargeAlt', ''), ENT_COMPAT, 'UTF-8');
$logoBrandSmallAlt = empty($this->params->get('logoBrandSmallAlt')) && empty($this->params->get('emptyLogoBrandSmallAlt'))
? ''
: htmlspecialchars($this->params->get('logoBrandSmallAlt', ''), ENT_COMPAT, 'UTF-8');
$loginLogo = $this->params->get('loginLogo')
? Uri::root(false) . $this->params->get('loginLogo')
: Uri::root(false) . 'media/templates/administrator/atum/images/logos/login.svg';
$loginLogoAlt = empty($this->params->get('loginLogoAlt')) && empty($this->params->get('emptyLoginLogoAlt'))
? ''
: htmlspecialchars($this->params->get('loginLogoAlt', ''), ENT_COMPAT, 'UTF-8');
// Get the hue value
preg_match('#^hsla?\(([0-9]+)[\D]+([0-9]+)[\D]+([0-9]+)[\D]+([0-9](?:.\d+)?)?\)$#i', $this->params->get('hue', 'hsl(214, 63%, 20%)'), $matches);
$linkColor = $this->params->get('link-color', '#2a69b8');
list($r, $g, $b) = sscanf($linkColor, "#%02x%02x%02x");
// Enable assets
$wa->usePreset('template.atum.' . ($this->direction === 'rtl' ? 'rtl' : 'ltr'))
->useStyle('template.active.language')
->useStyle('template.user')
->addInlineStyle(':root {
--hue: ' . $matches[1] . ';
--template-bg-light: ' . $this->params->get('bg-light', '#f0f4fb') . ';
--template-text-dark: ' . $this->params->get('text-dark', '#495057') . ';
--template-text-light: ' . $this->params->get('text-light', '#ffffff') . ';
--link-color: ' . $linkColor . ';
--link-color-rgb: ' . $r . ',' . $g . ',' . $b . ';
--template-special-color: ' . $this->params->get('special-color', '#001B4C') . ';
}');
// Override 'template.active' asset to set correct ltr/rtl dependency
$wa->registerStyle('template.active', '', [], [], ['template.atum.' . ($this->direction === 'rtl' ? 'rtl' : 'ltr')]);
// Set some meta data
$this->setMetaData('viewport', 'width=device-width, initial-scale=1');
$monochrome = (bool) $this->params->get('monochrome');
// @see administrator/templates/atum/html/layouts/status.php
$statusModules = LayoutHelper::render('status', ['modules' => 'status']);
?>
<!DOCTYPE html>
<html lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>">
<head>
<jdoc:include type="metas" />
<jdoc:include type="styles" />
<jdoc:include type="scripts" />
</head>
<body class="admin <?php echo $option . ' view-' . $view . ' layout-' . $layout . ($task ? ' task-' . $task : '') . ($monochrome ? ' monochrome' : ''); ?>">
<noscript>
<div class="alert alert-danger" role="alert">
<?php echo Text::_('JGLOBAL_WARNJAVASCRIPT'); ?>
</div>
</noscript>
<header id="header" class="header d-flex">
<div class="header-title d-flex">
<div class="d-flex align-items-center">
<div class="logo">
<?php echo HTMLHelper::_('image', $logoBrandLarge, $logoBrandLargeAlt, ['loading' => 'eager', 'decoding' => 'async'], false, 0); ?>
<?php echo HTMLHelper::_('image', $logoBrandSmall, $logoBrandSmallAlt, ['class' => 'logo-collapsed', 'loading' => 'eager', 'decoding' => 'async'], false, 0); ?>
</div>
</div>
<jdoc:include type="modules" name="title" />
</div>
<?php echo $statusModules; ?>
</header>
<div id="wrapper" class="d-flex wrapper">
<div class="container-fluid container-main">
<section id="content" class="content h-100">
<main class="d-flex justify-content-center align-items-center h-100">
<div id="element-box" class="card">
<div class="card-body">
<div class="main-brand d-flex align-items-center justify-content-center">
<?php echo HTMLHelper::_('image', $loginLogo, $loginLogoAlt, ['loading' => 'eager', 'decoding' => 'async'], false, 0); ?>
</div>
<h1><?php echo Text::_('JERROR_AN_ERROR_HAS_OCCURRED'); ?></h1>
<jdoc:include type="message" />
<blockquote class="blockquote">
<span class="badge bg-secondary"><?php echo $this->error->getCode(); ?></span>
<?php echo htmlspecialchars($this->error->getMessage(), ENT_QUOTES, 'UTF-8'); ?>
</blockquote>
<?php if ($this->debug) : ?>
<div>
<?php echo $this->renderBacktrace(); ?>
<?php // Check if there are more Exceptions and render their data as well ?>
<?php if ($this->error->getPrevious()) : ?>
<?php $loop = true; ?>
<?php // Reference $this->_error here and in the loop as setError() assigns errors to this property and we need this for the backtrace to work correctly ?>
<?php // Make the first assignment to setError() outside the loop so the loop does not skip Exceptions ?>
<?php $this->setError($this->_error->getPrevious()); ?>
<?php while ($loop === true) : ?>
<p><strong><?php echo Text::_('JERROR_LAYOUT_PREVIOUS_ERROR'); ?></strong></p>
<p><?php echo htmlspecialchars($this->_error->getMessage(), ENT_QUOTES, 'UTF-8'); ?></p>
<?php echo $this->renderBacktrace(); ?>
<?php $loop = $this->setError($this->_error->getPrevious()); ?>
<?php endwhile; ?>
<?php // Reset the main error object to the base error ?>
<?php $this->setError($this->error); ?>
<?php endif; ?>
</div>
<?php endif; ?>
</div>
</div>
</main>
</section>
</div>
<div id="sidebar-wrapper" class="sidebar-wrapper">
<div id="main-brand" class="main-brand">
<h1><?php echo $app->get('sitename'); ?></h1>
<a href="<?php echo Uri::root(); ?>"><?php echo Text::_('TPL_ATUM_LOGIN_SIDEBAR_VIEW_WEBSITE'); ?></a>
</div>
<div id="sidebar">
<jdoc:include type="modules" name="sidebar" style="body" />
</div>
</div>
</div>
<jdoc:include type="modules" name="debug" style="none" />
</body>
</html>

View File

@ -0,0 +1,71 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage Templates.Atum
*
* @copyright (C) 2019 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
use Joomla\CMS\Factory;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Router\Route;
use Joomla\CMS\Uri\Uri;
$module = $displayData['module'];
$params = $displayData['params'];
if ((string) $module->content === '') {
return;
}
$id = $module->id;
// Permission checks
$user = Factory::getUser();
$canEdit = $user->authorise('core.edit', 'com_modules.module.' . $id) && $user->authorise('core.manage', 'com_modules');
$canChange = $user->authorise('core.edit.state', 'com_modules.module.' . $id) && $user->authorise('core.manage', 'com_modules');
$moduleTag = $params->get('module_tag', 'div');
$bootstrapSize = (int) $params->get('bootstrap_size', 6);
$moduleClass = $bootstrapSize ? 'col-md-' . $bootstrapSize : 'col-md-12';
$headerTag = htmlspecialchars($params->get('header_tag', 'h2'), ENT_QUOTES, 'UTF-8');
$moduleClassSfx = $params->get('moduleclass_sfx', '');
// Temporarily store header class in variable
$headerClass = $params->get('header_class');
$headerClass = $headerClass ? ' ' . htmlspecialchars($headerClass, ENT_QUOTES, 'UTF-8') : '';
?>
<div class="<?php echo $moduleClass; ?> module-wrapper">
<<?php echo $moduleTag; ?> class="card pt-3<?php echo $moduleClassSfx; ?>">
<?php if ($canEdit || $canChange) : ?>
<?php $dropdownPosition = Factory::getLanguage()->isRtl() ? 'start' : 'end'; ?>
<div class="module-actions dropdown">
<button type="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false" class="btn" id="dropdownMenuButton-<?php echo $id; ?>">
<span class="icon-cogs" aria-hidden="true"></span>
<span class="visually-hidden"><?php echo Text::sprintf('JACTION_EDIT_MODULE', $module->title); ?></span>
</button>
<div class="dropdown-menu dropdown-menu-<?php echo $dropdownPosition; ?>" aria-labelledby="dropdownMenuButton-<?php echo $id; ?>">
<?php if ($canEdit) : ?>
<?php $uri = Uri::getInstance(); ?>
<?php $url = Route::_('index.php?option=com_modules&task=module.edit&id=' . $id . '&return=' . base64_encode($uri)); ?>
<a class="dropdown-item" href="<?php echo $url; ?>"><?php echo Text::_('JACTION_EDIT'); ?></a>
<?php endif; ?>
<?php if ($canChange) : ?>
<button type="button" class="dropdown-item unpublish-module" data-module-id="<?php echo $id; ?>"><?php echo Text::_('JACTION_UNPUBLISH'); ?></button>
<?php endif; ?>
</div>
</div>
<?php endif; ?>
<?php if ($module->showtitle) : ?>
<<?php echo $headerTag; ?> class="card-header<?php echo $headerClass; ?>"><?php echo $module->title; ?></<?php echo $headerTag; ?>>
<?php endif; ?>
<div class="module-body">
<?php echo $module->content; ?>
</div>
</<?php echo $moduleTag; ?>>
</div>

View File

@ -0,0 +1,24 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage Templates.Atum
*
* @copyright (C) 2019 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*
* Module chrome for rendering the module in a submenu
*/
defined('_JEXEC') or die;
$module = $displayData['module'];
if ((string) $module->content === '') {
return;
}
?>
<div class="header-item d-flex">
<?php echo $module->content; ?>
</div>

View File

@ -0,0 +1,25 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage Templates.Atum
*
* @copyright (C) 2019 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*
* Module chrome for rendering the module in a submenu
*/
defined('_JEXEC') or die;
$module = $displayData['module'];
if ((string) $module->content === '') {
return;
}
?>
<div class="card-header">
<h6><?php echo $module->title; ?></h6>
</div>
<?php echo $module->content; ?>

View File

@ -0,0 +1,87 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage Templates.Atum
*
* @copyright (C) 2019 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
use Joomla\CMS\Factory;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Router\Route;
use Joomla\CMS\Uri\Uri;
$module = $displayData['module'];
$params = $displayData['params'];
$attribs = $displayData['attribs'];
if ((string) $module->content === '') {
return;
}
$id = $module->id;
// Permission checks
$user = Factory::getUser();
$canEdit = $user->authorise('core.edit', 'com_modules.module.' . $id) && $user->authorise('core.manage', 'com_modules');
$canChange = $user->authorise('core.edit.state', 'com_modules.module.' . $id) && $user->authorise('core.manage', 'com_modules');
$moduleTag = $params->get('module_tag', 'div');
$bootstrapSize = (int) $params->get('bootstrap_size', 12);
$moduleClass = $bootstrapSize ? 'col-md-' . $bootstrapSize : 'col-md-12';
$headerTag = htmlspecialchars($params->get('header_tag', 'h2'), ENT_QUOTES, 'UTF-8');
$moduleClassSfx = $params->get('moduleclass_sfx', '');
// Add class from attributes if any
if (!empty($attribs['class'])) {
$moduleClass .= ' ' . htmlspecialchars($attribs['class'], ENT_QUOTES, 'UTF-8');
}
// Temporarily store header class in variable
$headerClass = $params->get('header_class') ? ' class="' . htmlspecialchars($params->get('header_class'), ENT_QUOTES, 'UTF-8') . '"' : '';
// Get the module icon
$headerIcon = $params->get('header_icon') ? '<span class="' . htmlspecialchars($params->get('header_icon'), ENT_QUOTES, 'UTF-8') . '" aria-hidden="true"></span>' : '';
?>
<div class="<?php echo $moduleClass; ?> module-wrapper">
<<?php echo $moduleTag; ?> class="card mb-3 <?php echo $moduleClassSfx; ?>">
<?php if ($canEdit || $canChange || $headerIcon || $module->showtitle) : ?>
<div class="card-header">
<?php if ($canEdit || $canChange) : ?>
<?php $dropdownPosition = Factory::getLanguage()->isRtl() ? 'start' : 'end'; ?>
<div class="module-actions dropdown">
<button type="button" data-bs-toggle="dropdown" data-bs-display="static" aria-haspopup="true" aria-expanded="false" class="btn" id="dropdownMenuButton-<?php echo $id; ?>">
<span class="icon-cogs" aria-hidden="true"></span>
<span class="visually-hidden"><?php echo Text::sprintf('JACTION_EDIT_MODULE', $module->title); ?></span>
</button>
<div class="dropdown-menu dropdown-menu-<?php echo $dropdownPosition; ?>" aria-labelledby="dropdownMenuButton-<?php echo $id; ?>">
<?php if ($canEdit) : ?>
<?php $uri = Uri::getInstance(); ?>
<?php $url = Route::_('index.php?option=com_modules&task=module.edit&id=' . $id . '&return=' . base64_encode($uri)); ?>
<a class="dropdown-item" href="<?php echo $url; ?>"><?php echo Text::_('JACTION_EDIT'); ?></a>
<?php endif; ?>
<?php if ($canChange) : ?>
<button type="button" class="dropdown-item unpublish-module" data-module-id="<?php echo $id; ?>"><?php echo Text::_('JACTION_UNPUBLISH'); ?></button>
<?php endif; ?>
</div>
</div>
<?php endif; ?>
<?php if ($module->showtitle) : ?>
<<?php echo $headerTag; ?><?php echo $headerClass; ?>>
<?php echo $headerIcon; ?>
<?php echo htmlspecialchars($module->title, ENT_QUOTES, 'UTF-8'); ?>
</<?php echo $headerTag; ?>>
<?php endif; ?>
</div>
<?php endif; ?>
<div class="card-body">
<?php echo $module->content; ?>
</div>
</<?php echo $moduleTag; ?>>
</div>

View File

@ -0,0 +1,67 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage Templates.Atum
*
* @copyright (C) 2019 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
*
* Module chrome for rendering the module in a submenu
*/
defined('_JEXEC') or die;
use Joomla\CMS\Factory;
use Joomla\CMS\Helper\ModuleHelper;
use Joomla\CMS\Language\Text;
$modulePosition = $displayData['modules'];
$renderer = Factory::getDocument()->loadRenderer('module');
$modules = ModuleHelper::getModules($modulePosition);
$moduleHtml = [];
$moduleCollapsedHtml = [];
foreach ($modules as $key => $mod) {
$out = $renderer->render($mod);
if ($out !== '') {
if (strpos($out, 'data-bs-toggle="modal"') !== false) {
$dom = new \DOMDocument();
$dom->loadHTML('<?xml encoding="utf-8" ?>' . $out);
$els = $dom->getElementsByTagName('a');
if ($els[0]) {
$moduleCollapsedHtml[] = $dom->saveHTML($els[0]);
} else {
$moduleCollapsedHtml[] = $out;
}
} else {
$moduleCollapsedHtml[] = $out;
}
$moduleHtml[] = $out;
}
}
?>
<div class="header-items d-flex ms-auto">
<?php
foreach ($moduleHtml as $mod) {
echo '<div class="header-item">' . $mod . '</div>';
}
?>
<div class="header-more d-none" id="header-more-items" >
<button class="header-more-btn dropdown-toggle" type="button" title="<?php echo Text::_('TPL_ATUM_MORE_ELEMENTS'); ?>" data-bs-toggle="dropdown" aria-expanded="false">
<div class="header-item-icon"><span class="icon-ellipsis-h" aria-hidden="true"></span></div>
<div class="visually-hidden"><?php echo Text::_('TPL_ATUM_MORE_ELEMENTS'); ?></div>
</button>
<div class="header-dd-items dropdown-menu">
<?php
foreach ($moduleCollapsedHtml as $key => $mod) {
echo '<div class="header-dd-item dropdown-item" data-item="' . $key . '">' . $mod . '</div>';
}
?>
</div>
</div>
</div>

View File

@ -0,0 +1,200 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage Templates.Atum
* @copyright (C) 2016 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
* @since 4.0.0
*/
defined('_JEXEC') or die;
use Joomla\CMS\Factory;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Layout\LayoutHelper;
use Joomla\CMS\Router\Route;
use Joomla\CMS\Uri\Uri;
/** @var \Joomla\CMS\Document\HtmlDocument $this */
$app = Factory::getApplication();
$input = $app->getInput();
$wa = $this->getWebAssetManager();
// Detecting Active Variables
$option = $input->get('option', '');
$view = $input->get('view', '');
$layout = $input->get('layout', 'default');
$task = $input->get('task', 'display');
$cpanel = $option === 'com_cpanel' || ($option === 'com_admin' && $view === 'help');
$hiddenMenu = $app->getInput()->get('hidemainmenu');
$sidebarState = $input->cookie->get('atumSidebarState', '');
// Getting user accessibility settings
$a11y_mono = (bool) $app->getIdentity()->getParam('a11y_mono', '');
$a11y_contrast = (bool) $app->getIdentity()->getParam('a11y_contrast', '');
$a11y_highlight = (bool) $app->getIdentity()->getParam('a11y_highlight', '');
$a11y_font = (bool) $app->getIdentity()->getParam('a11y_font', '');
// Browsers support SVG favicons
$this->addHeadLink(HTMLHelper::_('image', 'joomla-favicon.svg', '', [], true, 1), 'icon', 'rel', ['type' => 'image/svg+xml']);
$this->addHeadLink(HTMLHelper::_('image', 'favicon.ico', '', [], true, 1), 'alternate icon', 'rel', ['type' => 'image/vnd.microsoft.icon']);
$this->addHeadLink(HTMLHelper::_('image', 'joomla-favicon-pinned.svg', '', [], true, 1), 'mask-icon', 'rel', ['color' => '#000']);
// Template params
$logoBrandLarge = $this->params->get('logoBrandLarge')
? Uri::root(false) . htmlspecialchars($this->params->get('logoBrandLarge'), ENT_QUOTES)
: Uri::root(false) . 'media/templates/administrator/atum/images/logos/brand-large.svg';
$logoBrandSmall = $this->params->get('logoBrandSmall')
? Uri::root(false) . htmlspecialchars($this->params->get('logoBrandSmall'), ENT_QUOTES)
: Uri::root(false) . 'media/templates/administrator/atum/images/logos/brand-small.svg';
$logoBrandLargeAlt = empty($this->params->get('logoBrandLargeAlt')) && empty($this->params->get('emptyLogoBrandLargeAlt'))
? ''
: htmlspecialchars($this->params->get('logoBrandLargeAlt', ''), ENT_COMPAT, 'UTF-8');
$logoBrandSmallAlt = empty($this->params->get('logoBrandSmallAlt')) && empty($this->params->get('emptyLogoBrandSmallAlt'))
? ''
: htmlspecialchars($this->params->get('logoBrandSmallAlt', ''), ENT_COMPAT, 'UTF-8');
// Get the hue value
preg_match('#^hsla?\(([0-9]+)[\D]+([0-9]+)[\D]+([0-9]+)[\D]+([0-9](?:.\d+)?)?\)$#i', $this->params->get('hue', 'hsl(214, 63%, 20%)'), $matches);
$linkColor = $this->params->get('link-color', '#2a69b8');
list($r, $g, $b) = sscanf($linkColor, "#%02x%02x%02x");
$linkColorDark = $this->params->get('link-color-dark', '#7fa5d4');
list($rd, $gd, $bd) = sscanf($linkColorDark, "#%02x%02x%02x");
// Enable assets
$wa->usePreset('template.atum.' . ($this->direction === 'rtl' ? 'rtl' : 'ltr'))
->useStyle('template.active.language')
->useStyle('template.user')
->addInlineStyle(':root {
--hue: ' . $matches[1] . ';
--template-bg-light: ' . $this->params->get('bg-light', '#f0f4fb') . ';
--template-text-dark: ' . $this->params->get('text-dark', '#495057') . ';
--template-text-light: ' . $this->params->get('text-light', '#ffffff') . ';
--link-color: ' . $linkColor . ';
--link-color-rgb: ' . $r . ',' . $g . ',' . $b . ';
--template-special-color: ' . $this->params->get('special-color', '#001B4C') . ';
}')
->addInlineStyle('@media (prefers-color-scheme: dark) { :root {
--link-color: ' . $linkColorDark . ';
--link-color-rgb: ' . $rd . ',' . $gd . ',' . $bd . ';
}}');
// Override 'template.active' asset to set correct ltr/rtl dependency
$wa->registerStyle('template.active', '', [], [], ['template.atum.' . ($this->direction === 'rtl' ? 'rtl' : 'ltr')]);
// Set some meta data
$this->setMetaData('viewport', 'width=device-width, initial-scale=1');
$monochrome = (bool) $this->params->get('monochrome');
Text::script('TPL_ATUM_MORE_ELEMENTS');
// @see administrator/templates/atum/html/layouts/status.php
$statusModules = LayoutHelper::render('status', ['modules' => 'status']);
?>
<!DOCTYPE html>
<html lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>"<?php echo $a11y_font ? ' class="a11y_font"' : ''; ?>>
<head>
<jdoc:include type="metas" />
<jdoc:include type="styles" />
<jdoc:include type="scripts" />
</head>
<body class="admin <?php echo $option . ' view-' . $view . ' layout-' . $layout . ($task ? ' task-' . $task : '') . ($monochrome || $a11y_mono ? ' monochrome' : '') . ($a11y_contrast ? ' a11y_contrast' : '') . ($a11y_highlight ? ' a11y_highlight' : ''); ?>">
<noscript>
<div class="alert alert-danger" role="alert">
<?php echo Text::_('JGLOBAL_WARNJAVASCRIPT'); ?>
</div>
</noscript>
<jdoc:include type="modules" name="customtop" style="none" />
<?php // Header ?>
<header id="header" class="header">
<div class="header-inside">
<div class="header-title d-flex">
<div class="d-flex align-items-center">
<?php // No home link in edit mode (so users can not jump out) and control panel (for a11y reasons) ?>
<?php if ($hiddenMenu || $cpanel) : ?>
<div class="logo <?php echo $sidebarState === 'closed' ? 'small' : ''; ?>">
<?php echo HTMLHelper::_('image', $logoBrandLarge, $logoBrandLargeAlt, ['loading' => 'eager', 'decoding' => 'async'], false, 0); ?>
<?php echo HTMLHelper::_('image', $logoBrandSmall, $logoBrandSmallAlt, ['class' => 'logo-collapsed', 'loading' => 'eager', 'decoding' => 'async'], false, 0); ?>
</div>
<?php else : ?>
<a class="logo <?php echo $sidebarState === 'closed' ? 'small' : ''; ?>" href="<?php echo Route::_('index.php'); ?>">
<?php echo HTMLHelper::_('image', $logoBrandLarge, Text::_('TPL_ATUM_BACK_TO_CONTROL_PANEL'), ['loading' => 'eager', 'decoding' => 'async'], false, 0); ?>
<?php echo HTMLHelper::_('image', $logoBrandSmall, Text::_('TPL_ATUM_BACK_TO_CONTROL_PANEL'), ['class' => 'logo-collapsed', 'loading' => 'eager', 'decoding' => 'async'], false, 0); ?>
</a>
<?php endif; ?>
</div>
<jdoc:include type="modules" name="title" />
</div>
<?php echo $statusModules; ?>
</div>
</header>
<?php // Wrapper ?>
<div id="wrapper" class="d-flex wrapper<?php echo $hiddenMenu ? '0' : ''; ?> <?php echo $sidebarState; ?>">
<?php // Sidebar ?>
<?php if (!$hiddenMenu) : ?>
<?php HTMLHelper::_('bootstrap.collapse', '.toggler-burger'); ?>
<button class="navbar-toggler toggler-burger collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#sidebar-wrapper" aria-controls="sidebar-wrapper" aria-expanded="false" aria-label="<?php echo Text::_('JTOGGLE_SIDEBAR_MENU'); ?>">
<span class="navbar-toggler-icon"></span>
</button>
<div id="sidebar-wrapper" class="sidebar-wrapper sidebar-menu" <?php echo $hiddenMenu ? 'data-hidden="' . $hiddenMenu . '"' : ''; ?>>
<div id="sidebarmenu" class="sidebar-sticky">
<div class="sidebar-toggle item item-level-1">
<a id="menu-collapse" href="#" aria-label="<?php echo Text::_('JTOGGLE_SIDEBAR_MENU'); ?>">
<span id="menu-collapse-icon" class="<?php echo $sidebarState === 'closed' ? 'icon-toggle-on' : 'icon-toggle-off'; ?> icon-fw" aria-hidden="true"></span>
<span class="sidebar-item-title"><?php echo Text::_('JTOGGLE_SIDEBAR_MENU'); ?></span>
</a>
</div>
<jdoc:include type="modules" name="menu" style="none" />
</div>
</div>
<?php endif; ?>
<?php // container-fluid ?>
<div class="container-fluid container-main">
<?php if (!$cpanel) : ?>
<?php // Subheader ?>
<?php HTMLHelper::_('bootstrap.collapse', '.toggler-toolbar'); ?>
<button class="navbar-toggler toggler-toolbar toggler-burger collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#subhead-container" aria-controls="subhead-container" aria-expanded="false" aria-label="<?php echo Text::_('TPL_ATUM_TOOLBAR'); ?>">
<span class="toggler-toolbar-icon"></span>
</button>
<div id="subhead-container" class="subhead mb-3">
<div class="row">
<div class="col-md-12">
<jdoc:include type="modules" name="toolbar" style="none" />
</div>
</div>
</div>
<?php endif; ?>
<section id="content" class="content">
<?php // Begin Content ?>
<jdoc:include type="modules" name="top" style="html5" />
<div class="row">
<div class="col-md-12">
<main>
<jdoc:include type="message" />
<jdoc:include type="component" />
</main>
</div>
<?php if ($this->countModules('bottom')) : ?>
<jdoc:include type="modules" name="bottom" style="html5" />
<?php endif; ?>
</div>
<?php // End Content ?>
</section>
</div>
</div>
<jdoc:include type="modules" name="debug" style="none" />
</body>
</html>

View File

@ -0,0 +1,124 @@
{
"$schema": "https://developer.joomla.org/schemas/json-schema/web_assets.json",
"name": "atum",
"version": "4.0.0",
"description": "This file contains details of the assets used by Atum, the default Joomla 4 administrator template.",
"license": "GPL-2.0-or-later",
"assets": [
{
"name": "template.atum.ltr",
"description": "The css file to be used when the site is left to right (LTR).",
"type": "style",
"uri": "template.min.css",
"dependencies": [
"fontawesome"
]
},
{
"name": "template.atum.rtl",
"description": "The css file to be used when the site is right to left (RTL).",
"type": "style",
"uri": "template-rtl.min.css",
"dependencies": [
"fontawesome"
]
},
{
"name": "template.active.language",
"description": "An asset to allow language specific css, eg 'language/[lang-CODE]/[lang-CODE].css', to use it as a dependency to the active template",
"type": "style",
"uri": "",
"class": "LangActiveAssetItem",
"client": "administrator",
"dependencies": [
"template.active"
]
},
{
"name": "template.user",
"description": "A file where a user can add their own css.",
"type": "style",
"uri": "user.css",
"weight": 500,
"dependencies": [
"template.active",
"template.active.language"
]
},
{
"name": "template.atum",
"description": "The file containing the javascript for this template.",
"type": "script",
"uri": "media/templates/administrator/atum/js/template.min.js",
"dependencies": [
"core"
],
"attributes": {
"type": "module"
}
},
{
"name": "template.active",
"description": "A dummy asset to allow extensions to use it as a dependency to the active template",
"type": "script",
"uri": "",
"dependencies": [
"template.atum"
]
},
{
"name": "template.atum.base",
"type": "preset",
"dependencies": [
"core#script",
"template.atum#script"
]
},
{
"name": "template.atum.ltr",
"type": "preset",
"dependencies": [
"template.atum.base",
"template.atum.ltr#style"
]
},
{
"name": "template.atum.rtl",
"type": "preset",
"dependencies": [
"template.atum.base",
"template.atum.rtl#style"
]
},
{
"name": "searchtools",
"type": "style",
"uri": "system/searchtools/searchtools.min.css"
},
{
"name": "awesomplete",
"type": "style",
"uri": "vendor/awesomplete/awesomplete.min.css"
},
{
"name": "choicesjs",
"type": "style",
"uri": "vendor/choicesjs/choices.min.css"
},
{
"name": "webcomponent.joomla-alert",
"type": "style",
"uri": "vendor/joomla-custom-elements/joomla-alert.min.css"
},
{
"name": "webcomponent.joomla-tab",
"type": "style",
"uri": "vendor/joomla-custom-elements/joomla-tab.min.css"
},
{
"name": "minicolors",
"type": "style",
"uri": "vendor/minicolors/jquery.minicolors.css"
}
]
}

View File

@ -0,0 +1,147 @@
<?php
/**
* @package Joomla.Administrator
* @subpackage Templates.Atum
* @copyright (C) 2016 Open Source Matters, Inc. <https://www.joomla.org>
* @license GNU General Public License version 2 or later; see LICENSE.txt
* @since 4.0.0
*/
defined('_JEXEC') or die;
use Joomla\CMS\Factory;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Layout\LayoutHelper;
use Joomla\CMS\Uri\Uri;
/** @var \Joomla\CMS\Document\HtmlDocument $this */
$app = Factory::getApplication();
$input = $app->getInput();
$wa = $this->getWebAssetManager();
// Detecting Active Variables
$option = $input->get('option', '');
$view = $input->get('view', '');
$layout = $input->get('layout', 'default');
$task = $input->get('task', 'display');
// Browsers support SVG favicons
$this->addHeadLink(HTMLHelper::_('image', 'joomla-favicon.svg', '', [], true, 1), 'icon', 'rel', ['type' => 'image/svg+xml']);
$this->addHeadLink(HTMLHelper::_('image', 'favicon.ico', '', [], true, 1), 'alternate icon', 'rel', ['type' => 'image/vnd.microsoft.icon']);
$this->addHeadLink(HTMLHelper::_('image', 'joomla-favicon-pinned.svg', '', [], true, 1), 'mask-icon', 'rel', ['color' => '#000']);
// Template params
$logoBrandLarge = $this->params->get('logoBrandLarge')
? Uri::root(false) . htmlspecialchars($this->params->get('logoBrandLarge'), ENT_QUOTES)
: Uri::root(false) . 'media/templates/administrator/atum/images/logos/brand-large.svg';
$loginLogo = $this->params->get('loginLogo')
? Uri::root(false) . $this->params->get('loginLogo')
: Uri::root(false) . 'media/templates/administrator/atum/images/logos/login.svg';
$logoBrandSmall = $this->params->get('logoBrandSmall')
? Uri::root(false) . htmlspecialchars($this->params->get('logoBrandSmall'), ENT_QUOTES)
: Uri::root(false) . 'media/templates/administrator/atum/images/logos/brand-small.svg';
$logoBrandLargeAlt = empty($this->params->get('logoBrandLargeAlt')) && empty($this->params->get('emptyLogoBrandLargeAlt'))
? ''
: htmlspecialchars($this->params->get('logoBrandLargeAlt', ''), ENT_COMPAT, 'UTF-8');
$logoBrandSmallAlt = empty($this->params->get('logoBrandSmallAlt')) && empty($this->params->get('emptyLogoBrandSmallAlt'))
? '' : htmlspecialchars($this->params->get('logoBrandSmallAlt', ''), ENT_COMPAT, 'UTF-8');
$loginLogoAlt = empty($this->params->get('loginLogoAlt')) && empty($this->params->get('emptyLoginLogoAlt'))
? ''
: htmlspecialchars($this->params->get('loginLogoAlt', ''), ENT_COMPAT, 'UTF-8');
// Get the hue value
preg_match('#^hsla?\(([0-9]+)[\D]+([0-9]+)[\D]+([0-9]+)[\D]+([0-9](?:.\d+)?)?\)$#i', $this->params->get('hue', 'hsl(214, 63%, 20%)'), $matches);
// Enable assets
$wa->usePreset('template.atum.' . ($this->direction === 'rtl' ? 'rtl' : 'ltr'))
->useStyle('template.active.language')
->useStyle('template.user')
->addInlineStyle(':root {
--hue: ' . $matches[1] . ';
--template-bg-light: ' . $this->params->get('bg-light', '#f0f4fb') . ';
--template-text-dark: ' . $this->params->get('text-dark', '#495057') . ';
--template-text-light: ' . $this->params->get('text-light', '#ffffff') . ';
--link-color: ' . $this->params->get('link-color', '#2a69b8') . ';
--template-special-color: ' . $this->params->get('special-color', '#001B4C') . ';
}');
// Override 'template.active' asset to set correct ltr/rtl dependency
$wa->registerStyle('template.active', '', [], [], ['template.atum.' . ($this->direction === 'rtl' ? 'rtl' : 'ltr')]);
// Set some meta data
$this->setMetaData('viewport', 'width=device-width, initial-scale=1');
$monochrome = (bool) $this->params->get('monochrome');
// Add cookie alert message
Text::script('JGLOBAL_WARNCOOKIES');
// @see administrator/templates/atum/html/layouts/status.php
$statusModules = LayoutHelper::render('status', ['modules' => 'status']);
HTMLHelper::_('bootstrap.dropdown');
?>
<!DOCTYPE html>
<html lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>">
<head>
<jdoc:include type="metas" />
<jdoc:include type="styles" />
<jdoc:include type="scripts" />
</head>
<body class="admin <?php echo $option . ' view-' . $view . ' layout-' . $layout . ($task ? ' task-' . $task : '') . ($monochrome ? ' monochrome' : ''); ?>">
<noscript>
<div class="alert alert-danger" role="alert">
<?php echo Text::_('JGLOBAL_WARNJAVASCRIPT'); ?>
</div>
</noscript>
<header id="header" class="header d-flex">
<div class="header-title d-flex">
<div class="d-flex align-items-center">
<div class="logo">
<?php echo HTMLHelper::_('image', $logoBrandLarge, $logoBrandLargeAlt, ['loading' => 'eager', 'decoding' => 'async'], false, 0); ?>
<?php echo HTMLHelper::_('image', $logoBrandSmall, $logoBrandSmallAlt, ['class' => 'logo-collapsed', 'loading' => 'eager', 'decoding' => 'async'], false, 0); ?>
</div>
</div>
<jdoc:include type="modules" name="title" />
</div>
<?php echo $statusModules; ?>
</header>
<div id="wrapper" class="wrapper flex-grow-1">
<div class="container-fluid container-main">
<section id="content" class="content h-100">
<div class="login_message">
<jdoc:include type="message" />
</div>
<main class="d-flex justify-content-center align-items-center h-100">
<div class="login">
<div class="main-brand logo text-center">
<?php echo HTMLHelper::_('image', $loginLogo, $loginLogoAlt, ['loading' => 'eager', 'decoding' => 'async'], false, 0); ?>
</div>
<jdoc:include type="component" />
</div>
</main>
</section>
</div>
<div id="sidebar-wrapper" class="sidebar-wrapper px-3 pb-3">
<div id="main-brand" class="main-brand">
<h1><?php echo $app->get('sitename'); ?></h1>
<h2><?php echo Text::_('TPL_ATUM_BACKEND_LOGIN'); ?></h2>
</div>
<div id="sidebar">
<jdoc:include type="modules" name="sidebar" style="body" />
</div>
</div>
</div>
<jdoc:include type="modules" name="debug" style="none" />
</body>
</html>

View File

@ -0,0 +1,174 @@
<?xml version="1.0" encoding="UTF-8"?>
<extension type="template" client="administrator">
<name>atum</name>
<version>1.0</version>
<creationDate>2016-09</creationDate>
<author>Joomla! Project</author>
<authorEmail>admin@joomla.org</authorEmail>
<copyright>(C) 2016 Open Source Matters, Inc.</copyright>
<description>TPL_ATUM_XML_DESCRIPTION</description>
<inheritable>1</inheritable>
<files>
<filename>component.php</filename>
<filename>cpanel.php</filename>
<filename>error.php</filename>
<filename>error_full.php</filename>
<filename>error_login.php</filename>
<filename>index.php</filename>
<filename>joomla.asset.json</filename>
<filename>login.php</filename>
<filename>templateDetails.xml</filename>
<folder>html</folder>
</files>
<media destination="templates/administrator/atum" folder="media">
<folder>js</folder>
<folder>css</folder>
<folder>scss</folder>
<folder>images</folder>
</media>
<positions>
<!-- used directly in the template -->
<position>bottom</position>
<position>debug</position>
<position>menu</position>
<position>sidebar</position>
<position>status</position>
<position>title</position>
<position>top</position>
<position>toolbar</position>
<!-- used directly in a component and included here so the position will appear in the list of available positions -->
<position>cpanel</position>
<position>icon</position>
<position>login</position>
<position>customtop</position>
</positions>
<languages folder="language">
<language tag="en-GB">en-GB/tpl_atum.ini</language>
<language tag="en-GB">en-GB/tpl_atum.sys.ini</language>
</languages>
<config>
<fields name="params">
<fieldset name="colors" label="TPL_ATUM_COLORS_SETTINGS_LABEL">
<field
name="hue"
type="color"
label="TPL_ATUM_COLORS_HUE"
format="hue"
control="slider"
preview="true"
saveFormat="hsl"
default="hsl(214,63%,20%)"
/>
<field
name="bg-light"
type="color"
label="TPL_ATUM_COLORS_SETTINGS_BG_LIGHT_LABEL"
default="#f0f4fb"
filter="color"
/>
<field
name="text-dark"
type="color"
label="TPL_ATUM_COLORS_SETTINGS_TEXT_DARK_LABEL"
default="#495057"
filter="color"
/>
<field
name="text-light"
type="color"
label="TPL_ATUM_COLORS_SETTINGS_TEXT_LIGHT_LABEL"
default="#ffffff"
filter="color"
/>
<field
name="link-color"
type="color"
label="TPL_ATUM_COLORS_SETTINGS_LINK_COLOR_LABEL"
default="#2a69b8"
filter="color"
/>
<field
name="link-color-dark"
type="color"
label="TPL_ATUM_COLORS_SETTINGS_LINK_COLOR_DARK_LABEL"
default="#7fa5d4"
filter="color"
/>
<field
name="special-color"
type="color"
label="TPL_ATUM_COLORS_SETTINGS_SPECIAL_COLOR_LABEL"
default="#001B4C"
filter="color"
/>
<field
name="monochrome"
type="radio"
label="TPL_ATUM_COLORS_SETTINGS_MONOCHROME_LABEL"
layout="joomla.form.field.radio.switcher"
default="0"
>
<option value="0">JNO</option>
<option value="1">JYES</option>
</field>
</fieldset>
<fieldset name="images" label="TPL_ATUM_IMAGE_SETTINGS_LABEL">
<fieldset name="loginLogo" label="TPL_ATUM_LOGIN_LOGO_LABEL">
<field
name="loginLogo"
type="media"
label="TPL_ATUM_IMAGE_LABEL"
/>
<field
name="loginLogoAlt"
type="text"
label="TPL_ATUM_LOGO_ALT_LABEL"
/>
<field
name="emptyLoginLogoAlt"
type="checkbox"
label="TPL_ATUM_LOGO_ALT_EMPTY_LABEL"
description="TPL_ATUM_LOGO_ALT_EMPTY_DESC"
/>
</fieldset>
<fieldset name="logoBrandLarge" label="TPL_ATUM_SITE_LOGO_LABEL">
<field
name="logoBrandLarge"
type="media"
label="TPL_ATUM_IMAGE_LABEL"
/>
<field
name="logoBrandLargeAlt"
type="text"
label="TPL_ATUM_LOGO_ALT_LABEL"
/>
<field
name="emptyLogoBrandLargeAlt"
type="checkbox"
label="TPL_ATUM_LOGO_ALT_EMPTY_LABEL"
description="TPL_ATUM_LOGO_ALT_EMPTY_DESC"
/>
</fieldset>
<fieldset name="logoBrandSmall" label="TPL_ATUM_SITE_LOGO_SMALL_LABEL">
<field
name="logoBrandSmall"
type="media"
label="TPL_ATUM_IMAGE_LABEL"
/>
<field
name="logoBrandSmallAlt"
type="text"
label="TPL_ATUM_LOGO_ALT_LABEL"
/>
<field
name="emptyLogoBrandSmallAlt"
type="checkbox"
label="TPL_ATUM_LOGO_ALT_EMPTY_LABEL"
description="TPL_ATUM_LOGO_ALT_EMPTY_DESC"
/>
</fieldset>
</fieldset>
</fields>
</config>
</extension>