mirror of
https://gitnet.fr/deblan/side_menu.git
synced 2025-12-17 21:02:25 +01:00
scss: set root vars depending of the theme
This commit is contained in:
parent
b98bbd1053
commit
cbd8462333
3 changed files with 94 additions and 353 deletions
|
|
@ -66,10 +66,6 @@ class CssController extends Controller
|
|||
$topMenuApps = $this->config->getAppValueArray('top-menu-apps', '[]');
|
||||
$topSideMenuApps = $this->config->getAppValueArray('top-side-menu-apps', '[]');
|
||||
|
||||
$isAccessibilityAppEnabled = $this->config->getAppValueBool('enabled', '0', 'accessibility');
|
||||
$isBreezeDarkAppEnabled = $this->config->getAppValueBool('enabled', '0', 'breezedark');
|
||||
$isBreezeDarkGlobalEnabled = $this->config->getAppValueBool('theme_enabled', '0', 'breezedark');
|
||||
|
||||
if ($this->user) {
|
||||
$userTopMenuApps = $this->config->getUserValueArray($this->user, 'top-menu-apps', '[]');
|
||||
$userTopSideMenuApps = $this->config->getUserValueArray($this->user, 'top-side-menu-apps', '[]');
|
||||
|
|
@ -81,80 +77,62 @@ class CssController extends Controller
|
|||
if (!empty($userTopSideMenuApps) && !$isForced) {
|
||||
$topSideMenuApps = $userTopSideMenuApps;
|
||||
}
|
||||
|
||||
$isDarkThemeUserEnabled = 'dark' === $this->config->getUserValue($this->user, 'theme', '', 'accessibility');
|
||||
$isBreezeDarkUserEnabled = $this->config->getUserValue($this->user, 'theme_enabled', '', 'breezedark');
|
||||
|
||||
$isBreezeDarkUserEnabled = '1' === $isBreezeDarkUserEnabled
|
||||
|| ($isBreezeDarkGlobalEnabled && '' === $isBreezeDarkUserEnabled);
|
||||
} else {
|
||||
$isDarkThemeUserEnabled = false;
|
||||
$isBreezeDarkUserEnabled = false;
|
||||
}
|
||||
|
||||
$isDarkMode = ($isAccessibilityAppEnabled && $isDarkThemeUserEnabled)
|
||||
|| ($isBreezeDarkAppEnabled && $isBreezeDarkUserEnabled);
|
||||
|
||||
$lightenPrimaryColor = $this->color->getLightenPrimaryColor();
|
||||
$darkenPrimaryColor = $this->color->getDarkenPrimaryColor();
|
||||
$darkenPrimaryColor2 = $this->color->getDarkenPrimaryColor2();
|
||||
$textColor = $this->color->getTextColorPrimary();
|
||||
|
||||
if ($isDarkMode) {
|
||||
$backgroundColor = $this->config->getAppValue('dark-mode-background-color', $darkenPrimaryColor);
|
||||
$backgroundColorTo = $this->config->getAppValue('dark-mode-background-color-to', $darkenPrimaryColor);
|
||||
$currentAppBackgroundColor = $this->config->getAppValue(
|
||||
'dark-mode-current-app-background-color',
|
||||
$darkenPrimaryColor2
|
||||
);
|
||||
$loaderColor = $this->config->getAppValue('dark-mode-loader-color', $lightenPrimaryColor);
|
||||
$textColor = $this->config->getAppValue('dark-mode-text-color', $textColor);
|
||||
$iconInvertFilter = abs($this->config->getAppValueInt('dark-mode-icon-invert-filter', '0')).'%';
|
||||
$iconOpacity = abs($this->config->getAppValueInt('dark-mode-icon-opacity', '100') / 100);
|
||||
$opener = $this->config->getAppValue('dark-mode-opener', 'side-menu-opener');
|
||||
|
||||
$opacity = $this->config->getAppValueInt('dark-mode-background-color-opacity', '100');
|
||||
$backgroundOpacity = dechex($opacity * 255 / 100);
|
||||
} else {
|
||||
$backgroundColor = $this->config->getAppValue('background-color', $darkenPrimaryColor);
|
||||
$backgroundColorTo = $this->config->getAppValue('background-color-to', $darkenPrimaryColor);
|
||||
$currentAppBackgroundColor = $this->config->getAppValue(
|
||||
'current-app-background-color',
|
||||
$darkenPrimaryColor2
|
||||
);
|
||||
$loaderColor = $this->config->getAppValue('loader-color', $lightenPrimaryColor);
|
||||
$textColor = $this->config->getAppValue('text-color', $textColor);
|
||||
$iconInvertFilter = abs($this->config->getAppValueInt('icon-invert-filter', '0')).'%';
|
||||
$iconOpacity = abs($this->config->getAppValueInt('icon-opacity', '100') / 100);
|
||||
$opener = $this->config->getAppValue('opener', 'side-menu-opener');
|
||||
|
||||
$opacity = $this->config->getAppValueInt('background-color-opacity', '100');
|
||||
$backgroundOpacity = dechex($opacity * 255 / 100);
|
||||
}
|
||||
$backgroundColor = $this->config->getAppValue('background-color', $darkenPrimaryColor);
|
||||
$backgroundColorTo = $this->config->getAppValue('background-color-to', $darkenPrimaryColor);
|
||||
$opacity = $this->config->getAppValueInt('background-color-opacity', '100');
|
||||
$backgroundOpacity = dechex($opacity * 255 / 100);
|
||||
|
||||
$backgroundColor .= $backgroundOpacity;
|
||||
$backgroundColorTo .= $backgroundOpacity;
|
||||
|
||||
$darkBackgroundColor = $this->config->getAppValue('dark-mode-background-color', $darkenPrimaryColor);
|
||||
$darkBackgroundColorTo = $this->config->getAppValue('dark-mode-background-color-to', $darkenPrimaryColor);
|
||||
$darkOpacity = $this->config->getAppValueInt('dark-mode-background-color-opacity', '100');
|
||||
$darkBackgroundOpacity = dechex($opacity * 255 / 100);
|
||||
|
||||
$darkBackgroundColor .= $darkBackgroundOpacity;
|
||||
$darkBackgroundColorTo .= $darkBackgroundOpacity;
|
||||
|
||||
return [
|
||||
'vars' => [
|
||||
'background-color' => $backgroundColor,
|
||||
'background-color-to' => $backgroundColorTo,
|
||||
'current-app-background-color' => $currentAppBackgroundColor,
|
||||
'loader-color' => $loaderColor,
|
||||
'text-color' => $textColor,
|
||||
'opener' => $opener,
|
||||
'icon-invert-filter' => $iconInvertFilter,
|
||||
'icon-opacity' => $iconOpacity,
|
||||
'light' => [
|
||||
'background-color' => $backgroundColor,
|
||||
'background-color-to' => $backgroundColorTo,
|
||||
'current-app-background-color' => $this->config->getAppValue(
|
||||
'current-app-background-color',
|
||||
$darkenPrimaryColor2
|
||||
),
|
||||
'loader-color' => $this->config->getAppValue('loader-color', $lightenPrimaryColor),
|
||||
'text-color' => $this->config->getAppValue('text-color', $textColor),
|
||||
'opener' => $this->config->getAppValue('opener', 'side-menu-opener'),
|
||||
'icon-invert-filter' => abs($this->config->getAppValueInt('icon-invert-filter', '0')).'%',
|
||||
'icon-opacity' => abs($this->config->getAppValueInt('icon-opacity', '100') / 100),
|
||||
],
|
||||
'dark' => [
|
||||
'background-color' => $darkBackgroundColor,
|
||||
'background-color-to' => $darkBackgroundColorTo,
|
||||
'current-app-background-color' => $this->config->getAppValue(
|
||||
'dark-mode-current-app-background-color',
|
||||
$darkenPrimaryColor2
|
||||
),
|
||||
'loader-color' => $this->config->getAppValue('dark-mode-loader-color', $lightenPrimaryColor),
|
||||
'text-color' => $this->config->getAppValue('dark-mode-text-color', $textColor),
|
||||
'opener' => $this->config->getAppValue('dark-mode-opener', 'side-menu-opener'),
|
||||
'icon-invert-filter' => abs($this->config->getAppValueInt('dark-mode-icon-invert-filter', '0')).'%',
|
||||
'icon-opacity' => abs($this->config->getAppValueInt('dark-mode-icon-opacity', '100') / 100),
|
||||
]
|
||||
],
|
||||
'display-logo' => $this->config->getAppValueBool('display-logo', '1'),
|
||||
'opener-only' => $this->config->getAppValueBool('opener-only', '0'),
|
||||
'external-sites-in-top-menu' => $this->config->getAppValueBool('external-sites-in-top-menu', '0'),
|
||||
'size-icon' => $this->config->getAppValue('size-icon', 'normal'),
|
||||
'size-text' => $this->config->getAppValue('size-text', 'normal'),
|
||||
'always-displayed' => $this->config->getAppValueBool('always-displayed', '0'),
|
||||
'big-menu' => $this->config->getAppValueBool('big-menu', '0'),
|
||||
'top-menu-apps' => $topMenuApps,
|
||||
'top-side-menu-apps' => $topSideMenuApps,
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,42 +1,70 @@
|
|||
<?php
|
||||
|
||||
function putVars(array $vars)
|
||||
{
|
||||
foreach ($vars as $key => $value) {
|
||||
echo sprintf(
|
||||
"--side-menu-%s: %s;\n",
|
||||
$key,
|
||||
'opener' === $key
|
||||
? sprintf('url("%s")', image_path('side_menu', $value.'.svg'))
|
||||
: $value
|
||||
);
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
:root {
|
||||
<?php foreach ($_['vars'] as $key => $value): ?>
|
||||
<?php if ($key === 'opener'): ?>
|
||||
--side-menu-<?php echo $key ?>: url('<?php print_unescaped(image_path('side_menu', $value.'.svg')); ?>');
|
||||
<?php else: ?>
|
||||
--side-menu-<?php echo $key ?>: <?php echo $value ?>;
|
||||
<?php endif; ?>
|
||||
<?php endforeach; ?>
|
||||
<?php putVars($_['vars']['dark']); ?>
|
||||
}
|
||||
|
||||
<?php if ($_['opener-only']): ?>
|
||||
@media (prefers-color-scheme: light) {
|
||||
:root {
|
||||
<?php putVars($_['vars']['light']); ?>
|
||||
}
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: dark) {
|
||||
<?php putVars($_['vars']['dark']); ?>
|
||||
}
|
||||
|
||||
body[data-theme-dark], body[data-theme-dark-highcontrast] {
|
||||
<?php putVars($_['vars']['dark']); ?>
|
||||
}
|
||||
|
||||
body[data-theme-light], body[data-theme-light-highcontrast] {
|
||||
<?php putVars($_['vars']['light']); ?>
|
||||
}
|
||||
|
||||
<?php if ($_['opener-only']) { ?>
|
||||
#nextcloud {
|
||||
display: none;
|
||||
}
|
||||
<?php endif; ?>
|
||||
<?php } ?>
|
||||
|
||||
<?php if ($_['size-text'] === 'hidden'): ?>
|
||||
<?php if ('hidden' === $_['size-text']) { ?>
|
||||
.cm-apps {
|
||||
<?php if ($_['size-icon'] === 'big'): ?>
|
||||
<?php if ('big' === $_['size-icon']) { ?>
|
||||
width: 55px;
|
||||
<?php else: ?>
|
||||
<?php } else { ?>
|
||||
width: 52px;
|
||||
<?php endif; ?>
|
||||
<?php } ?>
|
||||
}
|
||||
|
||||
.cm .cm-opener {
|
||||
<?php if ($_['size-icon'] === 'big'): ?>
|
||||
<?php if ('big' === $_['size-icon']) { ?>
|
||||
margin-left: 1px;
|
||||
<?php else: ?>
|
||||
<?php } else { ?>
|
||||
margin-left: 0px;
|
||||
<?php endif; ?>
|
||||
<?php } ?>
|
||||
}
|
||||
<?php endif; ?>
|
||||
<?php } ?>
|
||||
|
||||
<?php if ($_['size-icon'] === 'hidden'): ?>
|
||||
<?php if ('hidden' === $_['size-icon']) { ?>
|
||||
.cm-app-icon {
|
||||
display: none;
|
||||
}
|
||||
<?php elseif ($_['size-icon'] === 'small'): ?>
|
||||
<?php } elseif ('small' === $_['size-icon']) { ?>
|
||||
.cm-app-icon svg {
|
||||
width: 15px;
|
||||
height: 15px;
|
||||
|
|
@ -46,7 +74,7 @@
|
|||
width: 15px;
|
||||
height: 15px;
|
||||
}
|
||||
<?php elseif ($_['size-icon'] === 'normal'): ?>
|
||||
<?php } elseif ('normal' === $_['size-icon']) { ?>
|
||||
.cm-app-icon svg {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
|
|
@ -56,7 +84,7 @@
|
|||
width: 20px;
|
||||
height: 20px;
|
||||
}
|
||||
<?php elseif ($_['size-icon'] === 'big'): ?>
|
||||
<?php } elseif ('big' === $_['size-icon']) { ?>
|
||||
.cm-app-icon svg {
|
||||
width: 23px;
|
||||
height: 23px;
|
||||
|
|
@ -66,23 +94,23 @@
|
|||
width: 23px;
|
||||
height: 23px;
|
||||
}
|
||||
<?php endif; ?>
|
||||
<?php } ?>
|
||||
|
||||
<?php if ($_['size-text'] === 'hidden'): ?>
|
||||
<?php if ('hidden' === $_['size-text']) { ?>
|
||||
.cm-app-text {
|
||||
display: none;
|
||||
}
|
||||
<?php elseif ($_['size-text'] === 'small'): ?>
|
||||
<?php } elseif ('small' === $_['size-text']) { ?>
|
||||
.cm-app-text {
|
||||
font-size: 12px;
|
||||
}
|
||||
<?php elseif ($_['size-text'] === 'big'): ?>
|
||||
<?php } elseif ('big' === $_['size-text']) { ?>
|
||||
.cm-app-text {
|
||||
font-size: 16px;
|
||||
}
|
||||
<?php endif; ?>
|
||||
<?php } ?>
|
||||
|
||||
<?php if ($_['always-displayed']): ?>
|
||||
<?php if ($_['always-displayed']) { ?>
|
||||
#content {
|
||||
left: 53px;
|
||||
width: calc(100% - (var(--body-container-margin) * 2) - 62px);
|
||||
|
|
@ -92,4 +120,4 @@
|
|||
width: calc(100% - (var(--body-container-margin) * 2) - 60px);
|
||||
margin-left: 11px;
|
||||
}
|
||||
<?php endif; ?>
|
||||
<?php } ?>
|
||||
|
|
|
|||
|
|
@ -1,265 +0,0 @@
|
|||
<?php
|
||||
/**
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
vendor_script('side_menu', 'html5sortable.min');
|
||||
script('side_menu', 'admin');
|
||||
style('side_menu', 'admin');
|
||||
|
||||
$choicesYesNo = [
|
||||
'No' => '0',
|
||||
'Yes' => '1',
|
||||
];
|
||||
|
||||
|
||||
$labelShowHideApps = 'Show and hide the list of applications';
|
||||
$labelReset = 'Reset to default';
|
||||
?>
|
||||
<div id="side-menu-section">
|
||||
<?php if ($_['force']): ?>
|
||||
<div class="section">
|
||||
<h2>
|
||||
<?php p($l->t('Menu')); ?>
|
||||
</h2>
|
||||
|
||||
<p>
|
||||
<em><?php echo $l->t('You do not have permission to change the settings.'); ?></em>
|
||||
</p>
|
||||
</div>
|
||||
<?php else: ?>
|
||||
<div class="section">
|
||||
<p>
|
||||
<em><?php echo $l->t('Use the shortcut <span class="keyboard-key">Ctrl</span>+<span class="keyboard-key">o</span> to open and to hide the side menu. Use <span class="keyboard-key">tab</span> to navigate.'); ?></em>
|
||||
</p>
|
||||
|
||||
<div class="side-menu-setting-table">
|
||||
<div class="side-menu-setting-row">
|
||||
<div class="side-menu-setting-label">
|
||||
<?php p($l->t('Enable the custom menu')); ?>
|
||||
</div>
|
||||
<div class="side-menu-setting-form">
|
||||
<select id="side-menu-enabled" name="enabled" class="side-menu-setting" data-personal>
|
||||
<?php foreach ($choicesYesNo as $label => $value): ?>
|
||||
<option value="<?php echo $value ?>" <?php if ($value === $_['enabled']): ?>selected<?php endif; ?>>
|
||||
<?php echo $l->t($label); ?>
|
||||
</option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="side-menu-setting-table">
|
||||
<div class="side-menu-setting-row">
|
||||
<div class="side-menu-setting-label">
|
||||
<?php p($l->t('Open apps in new tab')); ?>
|
||||
</div>
|
||||
<div class="side-menu-setting-form">
|
||||
<?php $choices = [
|
||||
'Use the global setting' => '1',
|
||||
'Use my selection' => '2',
|
||||
]; ?>
|
||||
|
||||
<select id="side-menu-loader-enabled" name="target-blank-mode" class="side-menu-setting" data-personal>
|
||||
<?php foreach ($choices as $label => $value): ?>
|
||||
<option value="<?php echo $value ?>" <?php if ($value === $_['target-blank-mode']): ?>selected<?php endif; ?>>
|
||||
<?php echo $l->t($label); ?>
|
||||
</option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
|
||||
<p>
|
||||
<a class="side-menu-toggler" data-target="#target-blank-apps" href="#_">
|
||||
🖱️ <?php p($l->t($labelShowHideApps)); ?>
|
||||
</a>
|
||||
</p>
|
||||
|
||||
<div class="side-menu-setting" data-name="target-blank-apps" id="target-blank-apps" data-personal data-checkbox style="display: none">
|
||||
<ul class="side-menu-setting-list">
|
||||
<?php foreach ($_['apps'] as $app): ?>
|
||||
<li class="side-menu-setting-list-item">
|
||||
<input
|
||||
type="checkbox"
|
||||
name="target-blank-apps[]"
|
||||
value="<?php echo $app['id'] ?>"
|
||||
id="target-blank-app-<?php echo $app['id'] ?>"
|
||||
<?php if (in_array($app['id'], $_['target-blank-apps'])): ?>checked<?php endif; ?>
|
||||
/>
|
||||
|
||||
<label for="target-blank-app-<?php echo $app['id'] ?>">
|
||||
<?php echo p($l->t($app['name'])); ?>
|
||||
</label>
|
||||
</li>
|
||||
<?php endforeach; ?>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="section">
|
||||
<h2>
|
||||
<?php p($l->t('Top menu')); ?>
|
||||
</h2>
|
||||
|
||||
<div class="side-menu-setting-table">
|
||||
<div class="side-menu-setting-row">
|
||||
<div class="side-menu-setting-label">
|
||||
<?php p($l->t('Applications kept in the top menu')); ?>
|
||||
<p>
|
||||
<em>
|
||||
<?php p($l->t('If there is no selection then the global configuration is applied.')); ?>
|
||||
</em>
|
||||
</p>
|
||||
</div>
|
||||
<div class="side-menu-setting-form">
|
||||
<p>
|
||||
<a class="side-menu-toggler" data-target="#top-menu-apps" href="#_">
|
||||
🖱️ <?php p($l->t($labelShowHideApps)); ?>
|
||||
</a>
|
||||
</p>
|
||||
|
||||
<div class="side-menu-setting" data-name="top-menu-apps" data-checkbox data-personal id="top-menu-apps" style="display: none">
|
||||
<ul class="side-menu-setting-list">
|
||||
<?php foreach ($_['apps'] as $app): ?>
|
||||
<li class="side-menu-setting-list-item">
|
||||
<input
|
||||
type="checkbox"
|
||||
name="top-menu-apps[]"
|
||||
value="<?php echo $app['id'] ?>"
|
||||
id="top-menu-app-<?php echo $app['id'] ?>"
|
||||
<?php if (in_array($app['id'], $_['top-menu-apps'])): ?>checked<?php endif; ?>
|
||||
/>
|
||||
|
||||
<label for="top-menu-app-<?php echo $app['id'] ?>">
|
||||
<?php echo $app['name'] ?>
|
||||
</label>
|
||||
</li>
|
||||
<?php endforeach; ?>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="side-menu-setting-table">
|
||||
<div class="side-menu-setting-row">
|
||||
<div class="side-menu-setting-label">
|
||||
<?php p($l->t('Applications kept in the top menu but also shown in side menu')); ?>
|
||||
<p>
|
||||
<em>
|
||||
<?php p($l->t('These applications must be selected in the previous option.')); ?><br>
|
||||
<?php p($l->t('If there is no selection then the global configuration is applied.')); ?>
|
||||
</em>
|
||||
</p>
|
||||
</div>
|
||||
<div class="side-menu-setting-form">
|
||||
<p>
|
||||
<a class="side-menu-toggler" data-target="#top-side-menu-apps" href="#_">
|
||||
🖱️ <?php p($l->t($labelShowHideApps)); ?>
|
||||
</a>
|
||||
</p>
|
||||
|
||||
<div class="side-menu-setting" data-name="top-side-menu-apps" data-checkbox data-personal id="top-side-menu-apps" style="display: none">
|
||||
<ul class="side-menu-setting-list">
|
||||
<?php foreach ($_['apps'] as $app): ?>
|
||||
<li class="side-menu-setting-list-item">
|
||||
<input
|
||||
type="checkbox"
|
||||
name="top-side-menu-apps[]"
|
||||
value="<?php echo $app['id'] ?>"
|
||||
id="top-side-menu-app-<?php echo $app['id'] ?>"
|
||||
<?php if (in_array($app['id'], $_['top-side-menu-apps'])): ?>checked<?php endif; ?>
|
||||
/>
|
||||
|
||||
<label for="top-side-menu-app-<?php echo $app['id'] ?>">
|
||||
<?php echo $app['name'] ?>
|
||||
</label>
|
||||
</li>
|
||||
<?php endforeach; ?>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section">
|
||||
<h2>
|
||||
<?php p($l->t('Applications')); ?>
|
||||
</h2>
|
||||
|
||||
<div class="side-menu-setting-table">
|
||||
<div class="side-menu-setting-row">
|
||||
<div class="side-menu-setting-label">
|
||||
<?php p($l->t('Customize sorting')); ?>
|
||||
</div>
|
||||
<div class="side-menu-setting-form">
|
||||
<a class="side-menu-toggler" data-target="#apps-order-list" href="#_">
|
||||
🖱️ <?php p($l->t($labelShowHideApps)); ?>
|
||||
</a>
|
||||
|
||||
<div class="theme-undo icon icon-history btn-reset btn-reset--down" data-toggle="tooltip" data-original-title="<?php echo p($l->t($labelReset)); ?>" data-reset="<?php echo htmlentities(json_encode([
|
||||
'side-menu-apps-order' => '[]',
|
||||
])) ?>"></div>
|
||||
|
||||
<div id="apps-order-list" style="display: none">
|
||||
<ul class="side-menu-setting-list">
|
||||
<?php foreach ($_['ordered-apps'] as $key => $app): ?>
|
||||
<li data-id="<?php echo $app['id']; ?>" class="side-menu-setting-list-item">
|
||||
<span class="arrow">
|
||||
⇅
|
||||
</span>
|
||||
|
||||
<?php echo p($l->t($app['name'])); ?>
|
||||
</li>
|
||||
<?php endforeach; ?>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<input type="hidden" value='<?php echo json_encode($_['apps-order']) ?>' name="apps-order" class="side-menu-setting" id="side-menu-apps-order" data-personal>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<?php endif ?>
|
||||
|
||||
<div class="section">
|
||||
<?php if (!$_['force']): ?>
|
||||
<button id="side-menu-save" class="btn btn-info" arial-label="<?php p($l->t('Save')); ?>">
|
||||
<?php p($l->t('Save')); ?>
|
||||
<progress max="100" value="0" id="side-menu-save-progress"></progress>
|
||||
</button>
|
||||
|
||||
<span id="side-menu-message" class="msg"></span>
|
||||
|
||||
<div style="height: 30px"></div>
|
||||
<?php endif ?>
|
||||
|
||||
<div>
|
||||
<span for="side-menu-opener">
|
||||
<?php p($l->t('You like this app and you want to support me?')); ?>
|
||||
|
||||
<a style="margin-left: 10px" target="_blank" href="https://www.buymeacoffee.com/deblan" rel="noopener">
|
||||
<button arial-label="<?php p($l->t('Buy me a coffee ☕')); ?>">
|
||||
<?php p($l->t('Buy me a coffee ☕')); ?>
|
||||
</button>
|
||||
</a>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
Loading…
Add table
Reference in a new issue