Compare commits
53 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 291eaa4f83 | |||
| 794d86f69e | |||
| e61e6880a2 | |||
| 4b81fa715c | |||
| 330ee2a43e | |||
| b246fa0281 | |||
| 3bc214b72e | |||
| 64f77b102d | |||
| 9f5143cc25 | |||
| 48737c5300 | |||
| 293e4bf62b | |||
| 049e601f62 | |||
| 16ab6bfece | |||
| 7892ce98d2 | |||
| 2a1e9f5010 | |||
| 05b1b16cb1 | |||
| 0176ef22d4 | |||
| a8ecf3ea46 | |||
| 8d1842f622 | |||
| a0be3757e9 | |||
| 7b2f64c5cd | |||
| 6b1a995d5d | |||
| 814567635d | |||
| 32322a0ab2 | |||
| 95230e9e4a | |||
| e2430866e5 | |||
| 9f9f8f90c8 | |||
| 28fc33ee79 | |||
| f116b8463a | |||
| d8edbae848 | |||
| 4e0c7be2c6 | |||
| 2cb8c22be0 | |||
| 389da47cab | |||
| a6a84ee784 | |||
| 52bbd49d9a | |||
| c0b1701744 | |||
| ee98a49366 | |||
| a67688e779 | |||
| 9afde0dc9d | |||
| 0f73ad42c4 | |||
| 007ac2bb8e | |||
| 8c5b0e9834 | |||
| 59e3b6b85e | |||
| a913bd5ba2 | |||
| 2d32e542cb | |||
| 5d03fbaa49 | |||
| 015493fc08 | |||
| 992e54ac30 | |||
| 67dfb7e833 | |||
| 2ae08f7b77 | |||
| 489321081a | |||
| 66a1528341 | |||
| 64b7f3f534 |
+12
@@ -15,8 +15,14 @@ steps:
|
|||||||
- make npm-build
|
- make npm-build
|
||||||
when:
|
when:
|
||||||
branch:
|
branch:
|
||||||
|
exclude:
|
||||||
|
- master
|
||||||
|
include:
|
||||||
- develop
|
- develop
|
||||||
- feature/*
|
- feature/*
|
||||||
|
event:
|
||||||
|
- push
|
||||||
|
- pull_request
|
||||||
|
|
||||||
- name: release
|
- name: release
|
||||||
image: deblan/devenv
|
image: deblan/devenv
|
||||||
@@ -34,7 +40,13 @@ steps:
|
|||||||
- make release
|
- make release
|
||||||
when:
|
when:
|
||||||
branch:
|
branch:
|
||||||
|
exclude:
|
||||||
|
- develop
|
||||||
|
- feature/*
|
||||||
|
include:
|
||||||
- master
|
- master
|
||||||
|
event:
|
||||||
|
- push
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
- name: artifacts
|
- name: artifacts
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
version: '1'
|
|
||||||
image: deblan/devenv
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
script:
|
|
||||||
- npm install
|
|
||||||
- make npm-build
|
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
pipeline:
|
||||||
|
dependencies:
|
||||||
|
image: deblan/devenv
|
||||||
|
commands:
|
||||||
|
- npm install
|
||||||
|
when:
|
||||||
|
event: [tag, push, pull_request]
|
||||||
|
|
||||||
|
build:
|
||||||
|
image: deblan/devenv
|
||||||
|
commands:
|
||||||
|
- make npm-build
|
||||||
|
when:
|
||||||
|
event: [push, pull_request]
|
||||||
|
|
||||||
|
package:
|
||||||
|
image: deblan/devenv
|
||||||
|
volumes:
|
||||||
|
- /var/www/html/artifacts:/var/www/html/artifacts
|
||||||
|
secrets: [app_certificate]
|
||||||
|
commands:
|
||||||
|
- mkdir -p "$HOME/.nextcloud/certificates"
|
||||||
|
- echo "$APP_CERTIFICATE" > "$HOME/.nextcloud/certificates/side_menu.key"
|
||||||
|
- export VERSION=$(grep "<version>" appinfo/info.xml | grep -o "[0-9]*\.[0-9]*\.[0-9]*" --color=never)
|
||||||
|
- export RELEASE_DIRECTORY="/var/www/html/artifacts/deblan/side_menu"
|
||||||
|
- make release
|
||||||
|
when:
|
||||||
|
event: [tag]
|
||||||
|
|
||||||
|
release:
|
||||||
|
image: plugins/gitea-release
|
||||||
|
volumes:
|
||||||
|
- /var/www/html/artifacts:/var/www/html/artifacts
|
||||||
|
settings:
|
||||||
|
api_key:
|
||||||
|
from_secret: gitnet_api_key
|
||||||
|
base_url: https://gitnet.fr
|
||||||
|
files: /var/www/html/artifacts/deblan/side_menu/${CI_COMMIT_TAG/v//}/*
|
||||||
|
when:
|
||||||
|
event: [tag]
|
||||||
@@ -1,5 +1,53 @@
|
|||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
## 2.4.2
|
||||||
|
### Fixed
|
||||||
|
* fix typo
|
||||||
|
### Changed
|
||||||
|
* change ci/cd
|
||||||
|
|
||||||
|
## 2.4.1
|
||||||
|
### Fixed
|
||||||
|
* fix user setting save
|
||||||
|
|
||||||
|
## 2.4.0
|
||||||
|
### Added
|
||||||
|
* remove focus on opener after click
|
||||||
|
* add button to set default colors
|
||||||
|
* add menu hover effect
|
||||||
|
* add translations
|
||||||
|
### Fixed
|
||||||
|
* fix deprecated app.php file
|
||||||
|
* fix menu with categories header
|
||||||
|
* fix minor issues
|
||||||
|
### Changed
|
||||||
|
* change saving progression
|
||||||
|
### Removed
|
||||||
|
* Nextcloud 19 is not supported anymore
|
||||||
|
* PHP 7.3 is not supported anymore
|
||||||
|
|
||||||
|
## 2.3.5
|
||||||
|
### Fixed
|
||||||
|
* fix white square (#99)
|
||||||
|
|
||||||
|
## 2.3.4
|
||||||
|
### Fixed
|
||||||
|
* fix blank line when settings are open (#96)
|
||||||
|
|
||||||
|
## 2.3.3
|
||||||
|
### Added
|
||||||
|
* hide the scrollbar when mouse is out (menu always displayed)
|
||||||
|
### Fixed
|
||||||
|
* fix SQL Exception InvalidFieldNameException (#93)
|
||||||
|
|
||||||
|
## 2.3.2
|
||||||
|
### Fixed
|
||||||
|
- fix hidden menu
|
||||||
|
|
||||||
|
## 2.3.1
|
||||||
|
### Fixed
|
||||||
|
- fix #88: does not work with default menu
|
||||||
|
|
||||||
## 2.3.0
|
## 2.3.0
|
||||||
### Added
|
### Added
|
||||||
- fix #82: add an option to keep visible an app in both menus
|
- fix #82: add an option to keep visible an app in both menus
|
||||||
|
|||||||
@@ -15,10 +15,12 @@ You can customize colors depending of the theme (Dark theme and Breeze Dark). Co
|
|||||||
|
|
||||||
You like this app and you want to support me? ☕ [Buy me a coffee](https://www.buymeacoffee.com/deblan) or [Donate with liberapay](https://liberapay.com/deblan)
|
You like this app and you want to support me? ☕ [Buy me a coffee](https://www.buymeacoffee.com/deblan) or [Donate with liberapay](https://liberapay.com/deblan)
|
||||||
|
|
||||||
|
[](https://ci.gitnet.fr/deblan/side_menu)
|
||||||
|
|
||||||
Requirements
|
Requirements
|
||||||
------------
|
------------
|
||||||
|
|
||||||
* PHP >= 7.3
|
* PHP >= 7.4
|
||||||
* App `theming` enabled
|
* App `theming` enabled
|
||||||
|
|
||||||
Installation and upgrade
|
Installation and upgrade
|
||||||
|
|||||||
@@ -1,10 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
use OCA\SideMenu\AppInfo\Application;
|
|
||||||
|
|
||||||
$app = new Application();
|
|
||||||
|
|
||||||
if ($app->isEnabled()) {
|
|
||||||
$app->registerAssets();
|
|
||||||
$app->registerServices();
|
|
||||||
}
|
|
||||||
+4
-4
@@ -17,7 +17,7 @@ You can report a bug or request a feature by opening an issue.
|
|||||||
|
|
||||||
Requirements:
|
Requirements:
|
||||||
|
|
||||||
* PHP >= 7.3
|
* PHP >= 7.4
|
||||||
* App `theming` enabled
|
* App `theming` enabled
|
||||||
|
|
||||||
If you like this application and if you want to support the development:
|
If you like this application and if you want to support the development:
|
||||||
@@ -26,7 +26,7 @@ If you like this application and if you want to support the development:
|
|||||||
* [Donate with liberapay](https://liberapay.com/deblan)
|
* [Donate with liberapay](https://liberapay.com/deblan)
|
||||||
* [Leave a comment](https://apps.nextcloud.com/apps/side_menu#comments)
|
* [Leave a comment](https://apps.nextcloud.com/apps/side_menu#comments)
|
||||||
]]></description>
|
]]></description>
|
||||||
<version>2.3.0</version>
|
<version>2.4.2</version>
|
||||||
<licence>agpl</licence>
|
<licence>agpl</licence>
|
||||||
<author mail="contact@deblan.fr" homepage="https://www.deblan.io/">Simon Vieille</author>
|
<author mail="contact@deblan.fr" homepage="https://www.deblan.io/">Simon Vieille</author>
|
||||||
<namespace>SideMenu</namespace>
|
<namespace>SideMenu</namespace>
|
||||||
@@ -46,8 +46,8 @@ If you like this application and if you want to support the development:
|
|||||||
<screenshot>https://gitnet.fr/deblan/side_menu/raw/branch/master/screenshots/nc20_big_menu_responsive.png</screenshot>
|
<screenshot>https://gitnet.fr/deblan/side_menu/raw/branch/master/screenshots/nc20_big_menu_responsive.png</screenshot>
|
||||||
<screenshot>https://gitnet.fr/deblan/side_menu/raw/branch/master/screenshots/personal_settings.png</screenshot>
|
<screenshot>https://gitnet.fr/deblan/side_menu/raw/branch/master/screenshots/personal_settings.png</screenshot>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<nextcloud min-version="19" max-version="23"/>
|
<nextcloud min-version="20" max-version="24"/>
|
||||||
<php min-version="7.3"/>
|
<php min-version="7.4"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<settings>
|
<settings>
|
||||||
<admin>OCA\SideMenu\Settings\Admin</admin>
|
<admin>OCA\SideMenu\Settings\Admin</admin>
|
||||||
|
|||||||
@@ -129,3 +129,18 @@
|
|||||||
.side-menu-setting-form-long {
|
.side-menu-setting-form-long {
|
||||||
width: 400px;
|
width: 400px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#side-menu-save-progress {
|
||||||
|
display: inline-block;
|
||||||
|
width: 0;
|
||||||
|
height: 15px;
|
||||||
|
background: #fff;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-reset {
|
||||||
|
display: inline-block;
|
||||||
|
cursor: pointer;
|
||||||
|
position: absolute;
|
||||||
|
margin-top: 17px;
|
||||||
|
margin-left: 5px;
|
||||||
|
}
|
||||||
|
|||||||
+21
-2
@@ -29,6 +29,10 @@
|
|||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#side-menu a {
|
||||||
|
transition: 0.2s;
|
||||||
|
}
|
||||||
|
|
||||||
#side-menu.open {
|
#side-menu.open {
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
@@ -59,6 +63,8 @@
|
|||||||
.side-menu-settings img {
|
.side-menu-settings img {
|
||||||
vertical-align: bottom;
|
vertical-align: bottom;
|
||||||
margin-left: 3px;
|
margin-left: 3px;
|
||||||
|
width: 32px;
|
||||||
|
height: 32px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#side-menu.open .side-menu-settings {
|
#side-menu.open .side-menu-settings {
|
||||||
@@ -78,8 +84,8 @@
|
|||||||
margin-left: 3px !important;
|
margin-left: 3px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.side-menu-opener:active {
|
.side-menu-opener:active, .side-menu-opener:focus {
|
||||||
background-color: var(--color-background-dark) !important;
|
background-color: var(--side-menu-current-app-background-color, #444) !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.side-menu-closer {
|
.side-menu-closer {
|
||||||
@@ -151,6 +157,10 @@
|
|||||||
top: 0;
|
top: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#side-menu.side-menu-with-categories .side-menu-header {
|
||||||
|
max-width: 295px;
|
||||||
|
}
|
||||||
|
|
||||||
#side-menu.hide-opener .side-menu-logo {
|
#side-menu.hide-opener .side-menu-logo {
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
}
|
}
|
||||||
@@ -247,6 +257,11 @@
|
|||||||
.side-menu-always-displayed .side-menu-apps-list {
|
.side-menu-always-displayed .side-menu-apps-list {
|
||||||
height: calc(100vh - 49px);
|
height: calc(100vh - 49px);
|
||||||
top: 49px;
|
top: 49px;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.side-menu-always-displayed .side-menu-apps-list:hover {
|
||||||
|
overflow: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
.side-menu-always-displayed #side-menu,
|
.side-menu-always-displayed #side-menu,
|
||||||
@@ -293,6 +308,10 @@
|
|||||||
padding: 10px 0;
|
padding: 10px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.side-menu-always-displayed #body-settings, #body-settings.body-settings-side-menu {
|
||||||
|
overflow-x: visible;
|
||||||
|
}
|
||||||
|
|
||||||
@media screen and (max-width: 1024px) {
|
@media screen and (max-width: 1024px) {
|
||||||
#side-menu.side-menu-big {
|
#side-menu.side-menu-big {
|
||||||
max-width: 290px;
|
max-width: 290px;
|
||||||
|
|||||||
+57
-60
@@ -9,6 +9,9 @@ use OCA\SideMenu\Service\AppRepository;
|
|||||||
use OCA\SideMenu\Service\CategoryRepository;
|
use OCA\SideMenu\Service\CategoryRepository;
|
||||||
use OCA\SideMenu\Service\ConfigProxy;
|
use OCA\SideMenu\Service\ConfigProxy;
|
||||||
use OCP\AppFramework\App;
|
use OCP\AppFramework\App;
|
||||||
|
use OCP\AppFramework\Bootstrap\IBootContext;
|
||||||
|
use OCP\AppFramework\Bootstrap\IBootstrap;
|
||||||
|
use OCP\AppFramework\Bootstrap\IRegistrationContext;
|
||||||
use OCP\IUserSession;
|
use OCP\IUserSession;
|
||||||
use OCP\Util;
|
use OCP\Util;
|
||||||
use Psr\Container\ContainerInterface;
|
use Psr\Container\ContainerInterface;
|
||||||
@@ -18,7 +21,7 @@ use Psr\Container\ContainerInterface;
|
|||||||
*
|
*
|
||||||
* @author Simon Vieille <simon@deblan.fr>
|
* @author Simon Vieille <simon@deblan.fr>
|
||||||
*/
|
*/
|
||||||
class Application extends App
|
class Application extends App implements IBootstrap
|
||||||
{
|
{
|
||||||
public const APP_ID = 'side_menu';
|
public const APP_ID = 'side_menu';
|
||||||
|
|
||||||
@@ -44,16 +47,9 @@ class Application extends App
|
|||||||
public function __construct(array $urlParams = [])
|
public function __construct(array $urlParams = [])
|
||||||
{
|
{
|
||||||
parent::__construct(self::APP_ID, $urlParams);
|
parent::__construct(self::APP_ID, $urlParams);
|
||||||
|
|
||||||
$this->config = OC::$server->getConfig();
|
|
||||||
$this->cspnm = OC::$server->getContentSecurityPolicyNonceManager();
|
|
||||||
$this->user = OC::$server[IUserSession::class]->getUser();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
protected function isEnabled(): bool
|
||||||
* Checks if this app is enabled.
|
|
||||||
*/
|
|
||||||
public function isEnabled(): bool
|
|
||||||
{
|
{
|
||||||
$enabled = true;
|
$enabled = true;
|
||||||
$isForced = (bool) $this->config->getAppValue(self::APP_ID, 'force', '0');
|
$isForced = (bool) $this->config->getAppValue(self::APP_ID, 'force', '0');
|
||||||
@@ -74,64 +70,65 @@ class Application extends App
|
|||||||
return $enabled;
|
return $enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
protected function addAssets()
|
||||||
* Registes services.
|
|
||||||
*/
|
|
||||||
public function registerServices()
|
|
||||||
{
|
|
||||||
$container = $this->getContainer();
|
|
||||||
|
|
||||||
$container->registerService('AppRepository', function (ContainerInterface $c) {
|
|
||||||
return new AppRepository();
|
|
||||||
});
|
|
||||||
|
|
||||||
$container->registerService('CategoryRepository', function (ContainerInterface $c) {
|
|
||||||
return new CategoryRepository();
|
|
||||||
});
|
|
||||||
|
|
||||||
$container->registerService('ConfigProxy', function (ContainerInterface $c) {
|
|
||||||
return new ConfigProxy();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Registers assets.
|
|
||||||
*/
|
|
||||||
public function registerAssets()
|
|
||||||
{
|
{
|
||||||
Util::addScript(self::APP_ID, 'sideMenu');
|
Util::addScript(self::APP_ID, 'sideMenu');
|
||||||
Util::addStyle(self::APP_ID, 'sideMenu');
|
Util::addStyle(self::APP_ID, 'sideMenu');
|
||||||
|
|
||||||
$stylesheet = OC::$server->getURLGenerator()->linkToRoute(
|
$assets = [
|
||||||
'side_menu.Css.stylesheet',
|
'stylesheet' => [
|
||||||
[
|
'route' => 'side_menu.Css.stylesheet',
|
||||||
'v' => $this->config->getAppValue(self::APP_ID, 'cache', '0'),
|
'type' => 'link',
|
||||||
]
|
'route_attr' => 'href',
|
||||||
);
|
'attr' => [
|
||||||
|
|
||||||
$script = OC::$server->getURLGenerator()->linkToRoute(
|
|
||||||
'side_menu.Js.script',
|
|
||||||
[
|
|
||||||
'v' => $this->config->getAppValue(self::APP_ID, 'cache', '0'),
|
|
||||||
]
|
|
||||||
);
|
|
||||||
|
|
||||||
Util::addHeader(
|
|
||||||
'link',
|
|
||||||
[
|
|
||||||
'href' => $stylesheet,
|
|
||||||
'rel' => 'stylesheet',
|
'rel' => 'stylesheet',
|
||||||
],
|
],
|
||||||
''
|
],
|
||||||
);
|
'script' => [
|
||||||
|
'route' => 'side_menu.Js.script',
|
||||||
Util::addHeader(
|
'type' => 'script',
|
||||||
'script',
|
'route_attr' => 'src',
|
||||||
[
|
'attr' => [
|
||||||
'src' => $script,
|
|
||||||
'nonce' => $this->cspnm->getNonce(),
|
'nonce' => $this->cspnm->getNonce(),
|
||||||
],
|
],
|
||||||
''
|
],
|
||||||
);
|
];
|
||||||
|
|
||||||
|
$cache = $this->config->getAppValue(self::APP_ID, 'cache', '0');
|
||||||
|
|
||||||
|
foreach ($assets as $key => $value) {
|
||||||
|
$route = OC::$server->getURLGenerator()->linkToRoute($value['route'], ['v' => $cache]);
|
||||||
|
$value['attr'][$value['route_attr']] = $route;
|
||||||
|
|
||||||
|
Util::addHeader($value['type'], $value['attr'], '');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function register(IRegistrationContext $context): void
|
||||||
|
{
|
||||||
|
$context->registerService('AppRepository', function (ContainerInterface $c) {
|
||||||
|
return new AppRepository();
|
||||||
|
});
|
||||||
|
|
||||||
|
$context->registerService('CategoryRepository', function (ContainerInterface $c) {
|
||||||
|
return new CategoryRepository();
|
||||||
|
});
|
||||||
|
|
||||||
|
$context->registerService('ConfigProxy', function (ContainerInterface $c) {
|
||||||
|
return new ConfigProxy();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public function boot(IBootContext $context): void
|
||||||
|
{
|
||||||
|
$this->config = OC::$server->getConfig();
|
||||||
|
$this->cspnm = OC::$server->getContentSecurityPolicyNonceManager();
|
||||||
|
$this->user = OC::$server[IUserSession::class]->getUser();
|
||||||
|
|
||||||
|
if (!$this->isEnabled()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->addAssets();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -87,6 +87,7 @@ class CssController extends Controller
|
|||||||
{
|
{
|
||||||
$isForced = $this->config->getAppValueBool('force', '0');
|
$isForced = $this->config->getAppValueBool('force', '0');
|
||||||
$topMenuApps = $this->config->getAppValueArray('top-menu-apps', '[]');
|
$topMenuApps = $this->config->getAppValueArray('top-menu-apps', '[]');
|
||||||
|
$topSideMenuApps = $this->config->getAppValueArray('top-side-menu-apps', '[]');
|
||||||
|
|
||||||
$isAccessibilityAppEnabled = $this->config->getAppValueBool('enabled', '0', 'accessibility');
|
$isAccessibilityAppEnabled = $this->config->getAppValueBool('enabled', '0', 'accessibility');
|
||||||
$isBreezeDarkAppEnabled = $this->config->getAppValueBool('enabled', '0', 'breezedark');
|
$isBreezeDarkAppEnabled = $this->config->getAppValueBool('enabled', '0', 'breezedark');
|
||||||
@@ -94,11 +95,16 @@ class CssController extends Controller
|
|||||||
|
|
||||||
if ($this->user) {
|
if ($this->user) {
|
||||||
$userTopMenuApps = $this->config->getUserValueArray($this->user, 'top-menu-apps', '[]');
|
$userTopMenuApps = $this->config->getUserValueArray($this->user, 'top-menu-apps', '[]');
|
||||||
|
$userTopSideMenuApps = $this->config->getUserValueArray($this->user, 'top-side-menu-apps', '[]');
|
||||||
|
|
||||||
if (!empty($userTopMenuApps) && !$isForced) {
|
if (!empty($userTopMenuApps) && !$isForced) {
|
||||||
$topMenuApps = $userTopMenuApps;
|
$topMenuApps = $userTopMenuApps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!empty($userTopSideMenuApps) && !$isForced) {
|
||||||
|
$topSideMenuApps = $userTopSideMenuApps;
|
||||||
|
}
|
||||||
|
|
||||||
$isDarkThemeUserEnabled = $this->config->getUserValue($this->user, 'theme', '', 'accessibility') === 'dark';
|
$isDarkThemeUserEnabled = $this->config->getUserValue($this->user, 'theme', '', 'accessibility') === 'dark';
|
||||||
$isBreezeDarkUserEnabled = $this->config->getUserValue($this->user, 'theme_enabled', '', 'breezedark');
|
$isBreezeDarkUserEnabled = $this->config->getUserValue($this->user, 'theme_enabled', '', 'breezedark');
|
||||||
|
|
||||||
@@ -162,6 +168,7 @@ class CssController extends Controller
|
|||||||
'always-displayed' => $this->config->getAppValueBool('always-displayed', '0'),
|
'always-displayed' => $this->config->getAppValueBool('always-displayed', '0'),
|
||||||
'big-menu' => $this->config->getAppValueBool('big-menu', '0'),
|
'big-menu' => $this->config->getAppValueBool('big-menu', '0'),
|
||||||
'top-menu-apps' => $topMenuApps,
|
'top-menu-apps' => $topMenuApps,
|
||||||
|
'top-side-menu-apps' => $topSideMenuApps,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,7 +26,12 @@ class LangRepository
|
|||||||
$qb = $this->db->getQueryBuilder();
|
$qb = $this->db->getQueryBuilder();
|
||||||
|
|
||||||
$qb->select($qb->createFunction('DISTINCT configvalue'))
|
$qb->select($qb->createFunction('DISTINCT configvalue'))
|
||||||
->where('configkey="lang" and appid="core" and configvalue<>"en"')
|
->where('configkey=:configkey and appid=:appid and configvalue<>:configvalue')
|
||||||
|
->setParameters([
|
||||||
|
'configkey' => 'lang',
|
||||||
|
'appid' => 'core',
|
||||||
|
'configvalue' => 'en',
|
||||||
|
])
|
||||||
->from('preferences')
|
->from('preferences')
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|||||||
@@ -110,6 +110,18 @@ class Admin implements ISettings
|
|||||||
$darkModeBackgroundColorTo = $this->config->getAppValue('dark-mode-background-color-to', $darkenPrimaryColor);
|
$darkModeBackgroundColorTo = $this->config->getAppValue('dark-mode-background-color-to', $darkenPrimaryColor);
|
||||||
|
|
||||||
$parameters = [
|
$parameters = [
|
||||||
|
'defaults' => [
|
||||||
|
'background-color' => $darkenPrimaryColor,
|
||||||
|
'background-color-to' => $darkenPrimaryColor,
|
||||||
|
'current-app-background-color' => $darkenPrimaryColor2,
|
||||||
|
'text-color' => $textColor,
|
||||||
|
'loader-color' => $lightenPrimaryColor,
|
||||||
|
'dark-mode-background-color' => $darkenPrimaryColor,
|
||||||
|
'dark-mode-background-color-to' => $darkenPrimaryColor,
|
||||||
|
'dark-mode-current-app-background-color' => $darkenPrimaryColor2,
|
||||||
|
'dark-mode-text-color' => $textColor,
|
||||||
|
'dark-mode-loader-color' => $textColor,
|
||||||
|
],
|
||||||
'background-color' => $backgroundColor,
|
'background-color' => $backgroundColor,
|
||||||
'background-color-to' => $backgroundColorTo,
|
'background-color-to' => $backgroundColorTo,
|
||||||
'background-color-opacity' => $this->config->getAppValueInt('background-color-opacity', '100'),
|
'background-color-opacity' => $this->config->getAppValueInt('background-color-opacity', '100'),
|
||||||
|
|||||||
+2
-2
@@ -21,7 +21,7 @@
|
|||||||
"extends @nextcloud/browserslist-config"
|
"extends @nextcloud/browserslist-config"
|
||||||
],
|
],
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=10.0.0"
|
"node": ">=16.0.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "^7.9.0",
|
"@babel/core": "^7.9.0",
|
||||||
@@ -43,9 +43,9 @@
|
|||||||
"eslint-plugin-standard": "^4.0.1",
|
"eslint-plugin-standard": "^4.0.1",
|
||||||
"eslint-plugin-vue": "^5.2.3",
|
"eslint-plugin-vue": "^5.2.3",
|
||||||
"file-loader": "^6.0.0",
|
"file-loader": "^6.0.0",
|
||||||
"node-sass": "^4.13.1",
|
|
||||||
"sass-loader": "^8.0.2",
|
"sass-loader": "^8.0.2",
|
||||||
"stylelint": "^8.4.0",
|
"stylelint": "^8.4.0",
|
||||||
|
"sass": "^1.49.9",
|
||||||
"stylelint-config-recommended-scss": "^3.3.0",
|
"stylelint-config-recommended-scss": "^3.3.0",
|
||||||
"stylelint-scss": "^3.16.0",
|
"stylelint-scss": "^3.16.0",
|
||||||
"stylelint-webpack-plugin": "^0.10.5",
|
"stylelint-webpack-plugin": "^0.10.5",
|
||||||
|
|||||||
Binary file not shown.
|
Before Width: | Height: | Size: 195 KiB After Width: | Height: | Size: 321 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 57 KiB |
+1
-1
@@ -100,7 +100,7 @@ export default {
|
|||||||
var dataId = parent.getAttribute('data-id')
|
var dataId = parent.getAttribute('data-id')
|
||||||
dataId = dataId !== null ? dataId : ''
|
dataId = dataId !== null ? dataId : ''
|
||||||
|
|
||||||
if (!parent.classList.contains('app-hidden') && !menuIsHidden) {
|
if (!parent.classList.contains('app-top-side-menu') && !parent.classList.contains('app-hidden') && !menuIsHidden) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+23
-5
@@ -79,17 +79,20 @@ const saveSettings = (key) => {
|
|||||||
++value
|
++value
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const progress = document.querySelector('#side-menu-save-progress')
|
||||||
|
|
||||||
|
progress.style.width = '40px';
|
||||||
|
progress.style.marginLeft = '5px';
|
||||||
|
|
||||||
const callbacks = {
|
const callbacks = {
|
||||||
success: () => {
|
success: () => {
|
||||||
OC.msg.finishedSuccess(
|
const percent = parseInt((key + 1) * 100 / size);
|
||||||
selector,
|
|
||||||
t('side_menu', (key + 1) + '/' + size)
|
progress.setAttribute('value', percent)
|
||||||
)
|
|
||||||
|
|
||||||
if (key < size - 1) {
|
if (key < size - 1) {
|
||||||
saveSettings(key + 1)
|
saveSettings(key + 1)
|
||||||
} else {
|
} else {
|
||||||
OC.msg.finishedSuccess(selector, t('side_menu', 'Saved! Page is reloading...'))
|
|
||||||
location.reload()
|
location.reload()
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -131,6 +134,8 @@ const updateAppsCategoriesCustom = () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
document.addEventListener('DOMContentLoaded', () => {
|
document.addEventListener('DOMContentLoaded', () => {
|
||||||
|
$('*[data-toggle="tooltip"]').tooltip();
|
||||||
|
|
||||||
if (document.querySelector('#side-menu-categories-custom')) {
|
if (document.querySelector('#side-menu-categories-custom')) {
|
||||||
const View = Vue.extend(AdminCategoriesCustom)
|
const View = Vue.extend(AdminCategoriesCustom)
|
||||||
const adminCategoriesCustom = new View({})
|
const adminCategoriesCustom = new View({})
|
||||||
@@ -147,6 +152,19 @@ document.addEventListener('DOMContentLoaded', () => {
|
|||||||
saveSettings(0)
|
saveSettings(0)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const resets = document.querySelectorAll('.btn-reset')
|
||||||
|
|
||||||
|
for (let btn of resets) {
|
||||||
|
btn.addEventListener('click', (event) => {
|
||||||
|
const target = event.target
|
||||||
|
const values = JSON.parse(target.getAttribute('data-reset'))
|
||||||
|
|
||||||
|
for (let i in values) {
|
||||||
|
document.querySelector(`#${i}`).value = values[i]
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
const displays = document.querySelectorAll('.side-menu-display')
|
const displays = document.querySelectorAll('.side-menu-display')
|
||||||
|
|
||||||
for (let display of displays) {
|
for (let display of displays) {
|
||||||
|
|||||||
@@ -82,3 +82,12 @@
|
|||||||
"Customize application categories": "Přizpůsobte kategorie aplikací"
|
"Customize application categories": "Přizpůsobte kategorie aplikací"
|
||||||
"Apps only visible in the top menu": "Aplikace jsou viditelné pouze v horní nabídce "
|
"Apps only visible in the top menu": "Aplikace jsou viditelné pouze v horní nabídce "
|
||||||
"Apps visible in the top and side menus": "Aplikace viditelné v horní a boční nabídce"
|
"Apps visible in the top and side menus": "Aplikace viditelné v horní a boční nabídce"
|
||||||
|
"Reset to default": "Vrátit zpět na výchozí hodnoty"
|
||||||
|
"Hidden icon": "Skrytá ikona"
|
||||||
|
"Small icon": "Malá ikona"
|
||||||
|
"Normal icon": "Normální ikona"
|
||||||
|
"Big icon": "Velká ikona"
|
||||||
|
"Hidden text": "Skrytý text"
|
||||||
|
"Small text": "Malý text"
|
||||||
|
"Normal text": "Normální text"
|
||||||
|
"Big text": "Velký text"
|
||||||
|
|||||||
@@ -81,3 +81,12 @@
|
|||||||
"Customize application categories": "Anwendungskategorien anpassen"
|
"Customize application categories": "Anwendungskategorien anpassen"
|
||||||
"Apps only visible in the top menu": "Apps nur im oberen Menü sichtbar "
|
"Apps only visible in the top menu": "Apps nur im oberen Menü sichtbar "
|
||||||
"Apps visible in the top and side menus": "Apps im oberen und seitlichen Menü sichtbar"
|
"Apps visible in the top and side menus": "Apps im oberen und seitlichen Menü sichtbar"
|
||||||
|
"Reset to default": "Auf Standard zurücksetzen"
|
||||||
|
"Hidden icon": "Verstecktes Symbol"
|
||||||
|
"Small icon": "Kleines Symbol"
|
||||||
|
"Normal icon": "Normales Symbol"
|
||||||
|
"Big icon": "Große Ikone"
|
||||||
|
"Hidden text": "Versteckter Text"
|
||||||
|
"Small text": "Kleiner Text"
|
||||||
|
"Normal text": "Normaler Text"
|
||||||
|
"Big text": "Großer Text"
|
||||||
|
|||||||
@@ -15,6 +15,14 @@
|
|||||||
"Small": "Petit"
|
"Small": "Petit"
|
||||||
"Normal": "Normal"
|
"Normal": "Normal"
|
||||||
"Big": "Gros"
|
"Big": "Gros"
|
||||||
|
"Hidden icon": "Icône masqué"
|
||||||
|
"Small icon": "Petit icône"
|
||||||
|
"Normal icon": "Icône normal"
|
||||||
|
"Big icon": "Gros icône"
|
||||||
|
"Hidden text": "Text masqué"
|
||||||
|
"Small text": "Texte petit"
|
||||||
|
"Normal text": "Texte normal"
|
||||||
|
"Big text": "Gros texte"
|
||||||
"Colors": "Couleurs"
|
"Colors": "Couleurs"
|
||||||
"Background color": "Couleur de fond"
|
"Background color": "Couleur de fond"
|
||||||
"Background color of current app": "Couleur de fond de l'application en cours"
|
"Background color of current app": "Couleur de fond de l'application en cours"
|
||||||
@@ -81,3 +89,4 @@
|
|||||||
"Customize application categories": "Personnaliser les catégories des applications"
|
"Customize application categories": "Personnaliser les catégories des applications"
|
||||||
"Apps only visible in the top menu": "Applications visibles uniquement dans le menu supérieur"
|
"Apps only visible in the top menu": "Applications visibles uniquement dans le menu supérieur"
|
||||||
"Apps visible in the top and side menus": "Applications visibles dans le menus supérieur et latéral"
|
"Apps visible in the top and side menus": "Applications visibles dans le menus supérieur et latéral"
|
||||||
|
"Reset to default": "Restaurer les valeurs par défaut"
|
||||||
|
|||||||
@@ -81,3 +81,12 @@
|
|||||||
"Customize application categories": "自定义应用程序类别"
|
"Customize application categories": "自定义应用程序类别"
|
||||||
"Apps only visible in the top menu": "应用程序仅在顶部菜单中可见"
|
"Apps only visible in the top menu": "应用程序仅在顶部菜单中可见"
|
||||||
"Apps visible in the top and side menus": "顶部和侧边菜单中可见的应用程序"
|
"Apps visible in the top and side menus": "顶部和侧边菜单中可见的应用程序"
|
||||||
|
"Reset to default": "重置为默认设置"
|
||||||
|
"Hidden icon": "隐藏图标"
|
||||||
|
"Small icon": "小图标"
|
||||||
|
"Normal icon": "正常图标"
|
||||||
|
"Big icon": "大图标"
|
||||||
|
"Hidden text": "隐藏文字"
|
||||||
|
"Small text": "小文本"
|
||||||
|
"Normal text": "普通文本"
|
||||||
|
"Big text": "大文本"
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
}
|
}
|
||||||
|
|
||||||
<?php if (empty($_['top-menu-apps'])): ?>
|
<?php if (empty($_['top-menu-apps']) && empty($_['top-side-menu-apps'])): ?>
|
||||||
#appmenu {
|
#appmenu {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,6 +59,10 @@ const updateTopMenu = function() {
|
|||||||
app.classList.remove('hidden')
|
app.classList.remove('hidden')
|
||||||
app.classList.add('app-external-site')
|
app.classList.add('app-external-site')
|
||||||
|
|
||||||
|
if (topSideMenuApps.indexOf(dataId) !== -1) {
|
||||||
|
app.classList.add('app-top-side-menu')
|
||||||
|
}
|
||||||
|
|
||||||
appShown.push(app)
|
appShown.push(app)
|
||||||
|
|
||||||
navigationAppsHtml = navigationAppsHtml + app.outerHTML
|
navigationAppsHtml = navigationAppsHtml + app.outerHTML
|
||||||
@@ -67,7 +71,6 @@ const updateTopMenu = function() {
|
|||||||
if (targetBlankApps.indexOf(dataId) !== -1) {
|
if (targetBlankApps.indexOf(dataId) !== -1) {
|
||||||
querySelector('a', app).setAttribute('target', '_blank')
|
querySelector('a', app).setAttribute('target', '_blank')
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
navigationApps.innerHTML = navigationAppsHtml
|
navigationApps.innerHTML = navigationAppsHtml
|
||||||
@@ -198,7 +201,7 @@ const updateTopMenu = function() {
|
|||||||
menuCache = menu.innerHTML + menu.nextSibling.innerHTML
|
menuCache = menu.innerHTML + menu.nextSibling.innerHTML
|
||||||
}
|
}
|
||||||
|
|
||||||
for (let i = 0; i < 3000; i+= 100) {
|
for (let i = 0; i < 4000; i+= 100) {
|
||||||
setTimeout(updateTopMenu, i)
|
setTimeout(updateTopMenu, i)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -149,6 +149,8 @@ if ($_['always-displayed']) {
|
|||||||
if (a !== null) {
|
if (a !== null) {
|
||||||
a.focus()
|
a.focus()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
headerMenuOpener.blur()
|
||||||
})
|
})
|
||||||
|
|
||||||
for (let opener of sideMenuOpener) {
|
for (let opener of sideMenuOpener) {
|
||||||
@@ -171,6 +173,21 @@ if ($_['always-displayed']) {
|
|||||||
sideMenuFocus()
|
sideMenuFocus()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const sideMenuObserver = new MutationObserver((e) => {
|
||||||
|
if (body.getAttribute('id') !== 'body-settings') {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
body.classList.toggle('body-settings-side-menu', sideMenu.classList.contains('open'))
|
||||||
|
})
|
||||||
|
|
||||||
|
sideMenuObserver.observe(sideMenu, {
|
||||||
|
attributes: true,
|
||||||
|
attributeFilter: ['class'],
|
||||||
|
childList: false,
|
||||||
|
characterData: false
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
body.appendChild(sideMenuContainer)
|
body.appendChild(sideMenuContainer)
|
||||||
|
|||||||
@@ -67,6 +67,10 @@ $choicesSizes = [
|
|||||||
class="side-menu-setting side-menu-setting-live"
|
class="side-menu-setting side-menu-setting-live"
|
||||||
value="<?php print_unescaped($_['background-color-to']); ?>">
|
value="<?php print_unescaped($_['background-color-to']); ?>">
|
||||||
|
|
||||||
|
<div class="theme-undo icon icon-history btn-reset" data-toggle="tooltip" data-original-title="<?php echo p($l->t('Reset to default')); ?>" data-reset="<?php echo htmlentities(json_encode([
|
||||||
|
'side-menu-background-color' => $_['defaults']['background-color'],
|
||||||
|
'side-menu-background-color-to' => $_['defaults']['background-color-to'],
|
||||||
|
])) ?>"></div>
|
||||||
<div>
|
<div>
|
||||||
<em>
|
<em>
|
||||||
<?php p($l->t('Transparent')); ?>
|
<?php p($l->t('Transparent')); ?>
|
||||||
@@ -102,6 +106,10 @@ $choicesSizes = [
|
|||||||
type="color"
|
type="color"
|
||||||
class="side-menu-setting side-menu-setting-live"
|
class="side-menu-setting side-menu-setting-live"
|
||||||
value="<?php print_unescaped($_['current-app-background-color']); ?>">
|
value="<?php print_unescaped($_['current-app-background-color']); ?>">
|
||||||
|
|
||||||
|
<div class="theme-undo icon icon-history btn-reset" data-toggle="tooltip" data-original-title="<?php echo p($l->t('Reset to default')); ?>" data-reset="<?php echo htmlentities(json_encode([
|
||||||
|
'side-menu-current-app-background-color' => $_['defaults']['current-app-background-color'],
|
||||||
|
])) ?>"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -118,6 +126,10 @@ $choicesSizes = [
|
|||||||
type="color"
|
type="color"
|
||||||
class="side-menu-setting side-menu-setting-live"
|
class="side-menu-setting side-menu-setting-live"
|
||||||
value="<?php print_unescaped($_['text-color']); ?>">
|
value="<?php print_unescaped($_['text-color']); ?>">
|
||||||
|
|
||||||
|
<div class="theme-undo icon icon-history btn-reset" data-toggle="tooltip" data-original-title="<?php echo p($l->t('Reset to default')); ?>" data-reset="<?php echo htmlentities(json_encode([
|
||||||
|
'side-menu-text-color' => $_['defaults']['text-color'],
|
||||||
|
])) ?>"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -134,6 +146,10 @@ $choicesSizes = [
|
|||||||
type="color"
|
type="color"
|
||||||
class="side-menu-setting"
|
class="side-menu-setting"
|
||||||
value="<?php print_unescaped($_['loader-color']); ?>">
|
value="<?php print_unescaped($_['loader-color']); ?>">
|
||||||
|
|
||||||
|
<div class="theme-undo icon icon-history btn-reset" data-toggle="tooltip" data-original-title="<?php echo p($l->t('Reset to default')); ?>" data-reset="<?php echo htmlentities(json_encode([
|
||||||
|
'side-menu-loader-color' => $_['defaults']['loader-color'],
|
||||||
|
])) ?>"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -227,16 +243,23 @@ $choicesSizes = [
|
|||||||
</div>
|
</div>
|
||||||
<div class="side-menu-setting-form side-menu-setting-form-long">
|
<div class="side-menu-setting-form side-menu-setting-form-long">
|
||||||
<input
|
<input
|
||||||
|
id="side-menu-dark-mode-background-color"
|
||||||
name="dark-mode-background-color"
|
name="dark-mode-background-color"
|
||||||
type="color"
|
type="color"
|
||||||
class="side-menu-setting"
|
class="side-menu-setting"
|
||||||
value="<?php print_unescaped($_['dark-mode-background-color']); ?>">
|
value="<?php print_unescaped($_['dark-mode-background-color']); ?>">
|
||||||
<input
|
<input
|
||||||
|
id="side-menu-dark-mode-background-color-to"
|
||||||
name="dark-mode-background-color-to"
|
name="dark-mode-background-color-to"
|
||||||
type="color"
|
type="color"
|
||||||
class="side-menu-setting"
|
class="side-menu-setting"
|
||||||
value="<?php print_unescaped($_['dark-mode-background-color-to']); ?>">
|
value="<?php print_unescaped($_['dark-mode-background-color-to']); ?>">
|
||||||
|
|
||||||
|
<div class="theme-undo icon icon-history btn-reset" data-toggle="tooltip" data-original-title="<?php echo p($l->t('Reset to default')); ?>" data-reset="<?php echo htmlentities(json_encode([
|
||||||
|
'side-menu-dark-mode-background-color' => $_['defaults']['dark-mode-background-color'],
|
||||||
|
'side-menu-dark-mode-background-color-to' => $_['defaults']['dark-mode-background-color-to'],
|
||||||
|
])) ?>"></div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<em>
|
<em>
|
||||||
<?php p($l->t('Transparent')); ?>
|
<?php p($l->t('Transparent')); ?>
|
||||||
@@ -266,10 +289,15 @@ $choicesSizes = [
|
|||||||
</div>
|
</div>
|
||||||
<div class="side-menu-setting-form side-menu-setting-form-long">
|
<div class="side-menu-setting-form side-menu-setting-form-long">
|
||||||
<input
|
<input
|
||||||
|
id="side-menu-dark-mode-current-app-background-color"
|
||||||
name="dark-mode-current-app-background-color"
|
name="dark-mode-current-app-background-color"
|
||||||
type="color"
|
type="color"
|
||||||
class="side-menu-setting"
|
class="side-menu-setting"
|
||||||
value="<?php print_unescaped($_['dark-mode-current-app-background-color']); ?>">
|
value="<?php print_unescaped($_['dark-mode-current-app-background-color']); ?>">
|
||||||
|
|
||||||
|
<div class="theme-undo icon icon-history btn-reset" data-toggle="tooltip" data-original-title="<?php echo p($l->t('Reset to default')); ?>" data-reset="<?php echo htmlentities(json_encode([
|
||||||
|
'side-menu-dark-mode-current-app-background-color' => $_['defaults']['dark-mode-current-app-background-color'],
|
||||||
|
])) ?>"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -281,10 +309,15 @@ $choicesSizes = [
|
|||||||
</div>
|
</div>
|
||||||
<div class="side-menu-setting-form side-menu-setting-form-long">
|
<div class="side-menu-setting-form side-menu-setting-form-long">
|
||||||
<input
|
<input
|
||||||
|
id="side-menu-dark-mode-text-color"
|
||||||
name="dark-mode-text-color"
|
name="dark-mode-text-color"
|
||||||
type="color"
|
type="color"
|
||||||
class="side-menu-setting"
|
class="side-menu-setting"
|
||||||
value="<?php print_unescaped($_['dark-mode-text-color']); ?>">
|
value="<?php print_unescaped($_['dark-mode-text-color']); ?>">
|
||||||
|
|
||||||
|
<div class="theme-undo icon icon-history btn-reset" data-toggle="tooltip" data-original-title="<?php echo p($l->t('Reset to default')); ?>" data-reset="<?php echo htmlentities(json_encode([
|
||||||
|
'side-menu-dark-mode-text-color' => $_['defaults']['dark-mode-text-color'],
|
||||||
|
])) ?>"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -296,10 +329,15 @@ $choicesSizes = [
|
|||||||
</div>
|
</div>
|
||||||
<div class="side-menu-setting-form side-menu-setting-form-long">
|
<div class="side-menu-setting-form side-menu-setting-form-long">
|
||||||
<input
|
<input
|
||||||
|
id="side-menu-dark-mode-loader-color"
|
||||||
name="dark-mode-loader-color"
|
name="dark-mode-loader-color"
|
||||||
type="color"
|
type="color"
|
||||||
class="side-menu-setting"
|
class="side-menu-setting"
|
||||||
value="<?php print_unescaped($_['dark-mode-loader-color']); ?>">
|
value="<?php print_unescaped($_['dark-mode-loader-color']); ?>">
|
||||||
|
|
||||||
|
<div class="theme-undo icon icon-history btn-reset" data-toggle="tooltip" data-original-title="<?php echo p($l->t('Reset to default')); ?>" data-reset="<?php echo htmlentities(json_encode([
|
||||||
|
'side-menu-dark-mode-loader-color' => $_['defaults']['dark-mode-loader-color'],
|
||||||
|
])) ?>"></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -659,7 +697,7 @@ $choicesSizes = [
|
|||||||
<select id="side-menu-size-icon" name="size-icon" class="side-menu-setting">
|
<select id="side-menu-size-icon" name="size-icon" class="side-menu-setting">
|
||||||
<?php foreach ($choicesSizes as $label => $value): ?>
|
<?php foreach ($choicesSizes as $label => $value): ?>
|
||||||
<option value="<?php echo $value ?>" <?php if ($value === $_['size-icon']): ?>selected<?php endif; ?>>
|
<option value="<?php echo $value ?>" <?php if ($value === $_['size-icon']): ?>selected<?php endif; ?>>
|
||||||
<?php echo $l->t($label); ?> icon
|
<?php echo $l->t($label.' icon'); ?>
|
||||||
</option>
|
</option>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
</select>
|
</select>
|
||||||
@@ -667,7 +705,7 @@ $choicesSizes = [
|
|||||||
<select id="side-menu-size-text" name="size-text" class="side-menu-setting">
|
<select id="side-menu-size-text" name="size-text" class="side-menu-setting">
|
||||||
<?php foreach ($choicesSizes as $label => $value): ?>
|
<?php foreach ($choicesSizes as $label => $value): ?>
|
||||||
<option value="<?php echo $value ?>" <?php if ($value === $_['size-text']): ?>selected<?php endif; ?>>
|
<option value="<?php echo $value ?>" <?php if ($value === $_['size-text']): ?>selected<?php endif; ?>>
|
||||||
<?php echo $l->t($label); ?> text
|
<?php echo $l->t($label.' text'); ?>
|
||||||
</option>
|
</option>
|
||||||
<?php endforeach; ?>
|
<?php endforeach; ?>
|
||||||
</select>
|
</select>
|
||||||
@@ -837,7 +875,6 @@ $choicesSizes = [
|
|||||||
<div class="side-menu-setting-row">
|
<div class="side-menu-setting-row">
|
||||||
<div class="side-menu-setting-label">
|
<div class="side-menu-setting-label">
|
||||||
<?php p($l->t('Customize application categories')); ?>
|
<?php p($l->t('Customize application categories')); ?>
|
||||||
<small><span class="warning"><?php p($l->t('Experimental')); ?></span></small>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="side-menu-setting-form">
|
<div class="side-menu-setting-form">
|
||||||
<a class="side-menu-toggler" data-target="#apps-categories-custom-list" href="#_">
|
<a class="side-menu-toggler" data-target="#apps-categories-custom-list" href="#_">
|
||||||
@@ -957,10 +994,9 @@ $choicesSizes = [
|
|||||||
<div class="section" id="more">
|
<div class="section" id="more">
|
||||||
<button id="side-menu-save" class="btn btn-info">
|
<button id="side-menu-save" class="btn btn-info">
|
||||||
<?php p($l->t('Save')); ?>
|
<?php p($l->t('Save')); ?>
|
||||||
|
<progress max="100" value="0" id="side-menu-save-progress"></progress>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
<span id="side-menu-message" class="msg"></span>
|
|
||||||
|
|
||||||
<a href="<?php echo $urlGenerator->linkToRoute('side_menu.AdminSetting.exportConfiguration') ?>" target="_blank">
|
<a href="<?php echo $urlGenerator->linkToRoute('side_menu.AdminSetting.exportConfiguration') ?>" target="_blank">
|
||||||
<button class="btn btn-primary" >
|
<button class="btn btn-primary" >
|
||||||
<?php p($l->t('Export the configuration')); ?>
|
<?php p($l->t('Export the configuration')); ?>
|
||||||
|
|||||||
@@ -202,7 +202,10 @@ $choicesYesNo = [
|
|||||||
|
|
||||||
<div class="section">
|
<div class="section">
|
||||||
<?php if (!$_['force']): ?>
|
<?php if (!$_['force']): ?>
|
||||||
<button id="side-menu-save" class="btn btn-primary"><?php p($l->t('Save')); ?></button>
|
<button id="side-menu-save" class="btn btn-info">
|
||||||
|
<?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>
|
<span id="side-menu-message" class="msg"></span>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user