Compare commits
68 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| b133ba3a97 | |||
| 2ff4fee927 | |||
| b65c0c650a | |||
| 22335700ce | |||
| 7ab2816bd9 | |||
| 396d3cfbc5 | |||
| 66e4d2989a | |||
| 9ccd11b6dc | |||
| aaf2bb55db | |||
| a7ec95da7c | |||
| 42043c5390 | |||
| 019f79d45f | |||
| 3a80215657 | |||
| 7d0b55243e | |||
| 097ccc9dc9 | |||
| 7227f59dab | |||
| 3a51e6ecd5 | |||
| 112e669723 | |||
| fc5a6a4c64 | |||
| 02afac5267 | |||
| 1eb392834c | |||
| 749f25a231 | |||
| 5df389dd42 | |||
| 04026f5c75 | |||
| dbd0de7679 | |||
| 07a1d356de | |||
| d3359337f9 | |||
| 4b9378f923 | |||
| 117e33692b | |||
| 48b2b30406 | |||
| 18e8f42dc3 | |||
| 22e5445330 | |||
| 01669f83c2 | |||
| f1c33cc626 | |||
| 87ff20aa19 | |||
| ce969b4061 | |||
| ed4ed62fb6 | |||
| 5a586c40a1 | |||
| 0544fd3765 | |||
| b141d7ba7c | |||
| 2635dd89ca | |||
| 0ee10e08e9 | |||
| 1093042a17 | |||
| 9566d32a89 | |||
| aa203bb406 | |||
| 3861d78975 | |||
| 571706986e | |||
| ed31ed3623 | |||
| 368c59a2bd | |||
| 59af6a9068 | |||
| 1965aedc43 | |||
| ab46bd7341 | |||
| 3aace8cbdd | |||
| 6425546cd1 | |||
| 3664b8979d | |||
| 83732994bb | |||
| c65d09e268 | |||
| 2da2e10017 | |||
| 8da90bbc06 | |||
| ab7b1e96fe | |||
| d4adda19b3 | |||
| f4322a8d71 | |||
| ae3db9cf7f | |||
| 05ff6d483b | |||
| dfc61140ec | |||
| 4918049270 | |||
| 4001f162b6 | |||
| 7a43ca2c75 |
@@ -1,16 +0,0 @@
|
|||||||
---
|
|
||||||
name: "New feature"
|
|
||||||
about: "Use this template if you want to request a feature"
|
|
||||||
title: "[FEATURE] "
|
|
||||||
labels:
|
|
||||||
- enhancement
|
|
||||||
---
|
|
||||||
## Feature
|
|
||||||
|
|
||||||
### Description
|
|
||||||
|
|
||||||
...
|
|
||||||
|
|
||||||
### Benefits
|
|
||||||
|
|
||||||
...
|
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
name: New feature
|
||||||
|
about: Use this template if you want to request a feature
|
||||||
|
title: "[FEATURE] "
|
||||||
|
labels:
|
||||||
|
- enhancement
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
Thanks for taking the time to fill out this feature request!
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: description
|
||||||
|
attributes:
|
||||||
|
label: Description
|
||||||
|
description: Describe the feature.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: benefits
|
||||||
|
attributes:
|
||||||
|
label: Benefits
|
||||||
|
description: Describe the benefits of this feature.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: extra
|
||||||
|
attributes:
|
||||||
|
label: More informations
|
||||||
|
description: If you want to share more things, this is here!
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
---
|
|
||||||
name: "New issue"
|
|
||||||
about: "Use this template if you have a bug"
|
|
||||||
title: "[BUG] "
|
|
||||||
labels:
|
|
||||||
- bug
|
|
||||||
---
|
|
||||||
## Issue
|
|
||||||
|
|
||||||
### Environment
|
|
||||||
|
|
||||||
* Custom menu version:
|
|
||||||
* Nextcloud version:
|
|
||||||
* PHP version:
|
|
||||||
* Web server (Nginx, Apache2):
|
|
||||||
* Web browser and version (Firefox 80, Google Chrome 74, etc):
|
|
||||||
|
|
||||||
```
|
|
||||||
Insert your configuration here. You can export the configuration using the admin page.
|
|
||||||
```
|
|
||||||
|
|
||||||
### Steps to reproduce
|
|
||||||
|
|
||||||
...
|
|
||||||
|
|
||||||
### Observed Results
|
|
||||||
|
|
||||||
...
|
|
||||||
|
|
||||||
### Expected Results
|
|
||||||
|
|
||||||
...
|
|
||||||
@@ -0,0 +1,69 @@
|
|||||||
|
name: New issue
|
||||||
|
about: Use this template if you have a bug
|
||||||
|
title: "[Bug] "
|
||||||
|
labels:
|
||||||
|
- bug
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
Thanks for taking the time to fill out this bug report!
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: environment
|
||||||
|
attributes:
|
||||||
|
label: Environment
|
||||||
|
value: |
|
||||||
|
* Custom menu version:
|
||||||
|
* Nextcloud version:
|
||||||
|
* PHP version:
|
||||||
|
* Web server (Nginx, Apache2):
|
||||||
|
* Web browser and version (Firefox 80, Google Chrome 74, etc):
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: configuration
|
||||||
|
attributes:
|
||||||
|
label: Configuration
|
||||||
|
description: Export the configuration using the admin page and copy/paste here ([documentation](https://deblan.gitnet.page/side_menu_doc/tips/#export-the-configuration)).
|
||||||
|
value: |
|
||||||
|
```
|
||||||
|
{
|
||||||
|
...
|
||||||
|
}
|
||||||
|
```
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: steps
|
||||||
|
attributes:
|
||||||
|
label: Steps to reproduce
|
||||||
|
description: How reproduce the bug?
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: resuts
|
||||||
|
attributes:
|
||||||
|
label: Observed Results
|
||||||
|
description: What happened?
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: expected
|
||||||
|
attributes:
|
||||||
|
label: Expected Results
|
||||||
|
description: What should happen?
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: extra
|
||||||
|
attributes:
|
||||||
|
label: More informations
|
||||||
|
description: If you want to share more things, this is here!
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
+26
-17
@@ -1,19 +1,34 @@
|
|||||||
pipeline:
|
pipeline:
|
||||||
dependencies:
|
dependencies:
|
||||||
image: gitnet.fr/deblan/devenv
|
image: node:16
|
||||||
|
pull: true
|
||||||
commands:
|
commands:
|
||||||
- make dep
|
- npm i
|
||||||
when:
|
when:
|
||||||
event: [tag, push, pull_request]
|
event: [tag, push, pull_request]
|
||||||
branch: [master, develop, feature/*, translations]
|
branch: [master, develop, feature/*, fix/*, translations]
|
||||||
|
|
||||||
build:
|
osv_detector:
|
||||||
image: gitnet.fr/deblan/devenv
|
image: gitnet.fr/deblan/osv-detector:v0.10
|
||||||
commands:
|
commands:
|
||||||
- make build
|
- osv-detector package-lock.json
|
||||||
|
failure: ignore
|
||||||
|
|
||||||
|
build_js:
|
||||||
|
image: node:16
|
||||||
|
commands:
|
||||||
|
- npm run build
|
||||||
when:
|
when:
|
||||||
branch: [master, develop, feature/*, translations]
|
branch: [master, develop, feature/*, fix/*, translations]
|
||||||
event: [push, pull_request]
|
event: [tag, push, pull_request]
|
||||||
|
|
||||||
|
build_php:
|
||||||
|
image: deblan/php:8.0
|
||||||
|
commands:
|
||||||
|
- php bin/generate_l10n.php
|
||||||
|
when:
|
||||||
|
branch: [master, develop, feature/*, fix/*, translations]
|
||||||
|
event: [tag, push, pull_request]
|
||||||
|
|
||||||
code_quality:
|
code_quality:
|
||||||
image: sonarsource/sonar-scanner-cli
|
image: sonarsource/sonar-scanner-cli
|
||||||
@@ -30,20 +45,14 @@ pipeline:
|
|||||||
when:
|
when:
|
||||||
event: [pull_request]
|
event: [pull_request]
|
||||||
|
|
||||||
dependency_check:
|
|
||||||
image: node:16-slim
|
|
||||||
commands:
|
|
||||||
- npm audit
|
|
||||||
failure: ignore
|
|
||||||
when:
|
|
||||||
event: [pull_request]
|
|
||||||
|
|
||||||
package:
|
package:
|
||||||
image: gitnet.fr/deblan/devenv
|
image: deblan/php:8.0
|
||||||
volumes:
|
volumes:
|
||||||
- /var/www/html/artifacts:/var/www/html/artifacts
|
- /var/www/html/artifacts:/var/www/html/artifacts
|
||||||
secrets: [app_certificate]
|
secrets: [app_certificate]
|
||||||
commands:
|
commands:
|
||||||
|
- apt-get update
|
||||||
|
- apt-get install -y zip make
|
||||||
- mkdir -p "$HOME/.nextcloud/certificates"
|
- mkdir -p "$HOME/.nextcloud/certificates"
|
||||||
- echo "$APP_CERTIFICATE" > "$HOME/.nextcloud/certificates/side_menu.key"
|
- 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 VERSION=$(grep "<version>" appinfo/info.xml | grep -o "[0-9]*\.[0-9]*\.[0-9]*" --color=never)
|
||||||
|
|||||||
@@ -1,5 +1,34 @@
|
|||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
## 3.7.2
|
||||||
|
### Added
|
||||||
|
* update pipeline conditions allowing `fix/*`
|
||||||
|
### Fixed
|
||||||
|
* fix #233: load configuration and then retrieve apps in default side menu display
|
||||||
|
|
||||||
|
## 3.7.1
|
||||||
|
### Fixed
|
||||||
|
* fix build process (#230)
|
||||||
|
|
||||||
|
## 3.7.0
|
||||||
|
### Added
|
||||||
|
* add translations (thanks to AHOHNMYC)
|
||||||
|
* add compatibility with NC26
|
||||||
|
|
||||||
|
## 3.6.0
|
||||||
|
### Added
|
||||||
|
* add hidden apps compatible with default menu (#219)
|
||||||
|
|
||||||
|
## 3.5.2
|
||||||
|
### Fixed
|
||||||
|
* add check if menu exists before adding event listeners (#210)
|
||||||
|
|
||||||
|
## 3.5.1
|
||||||
|
### Added
|
||||||
|
* add translations (thanks to p-bo adn gallegonovato)
|
||||||
|
### Fixed
|
||||||
|
* fix #189: sorting not applied on mobile
|
||||||
|
|
||||||
## 3.5.0
|
## 3.5.0
|
||||||
### Added
|
### Added
|
||||||
* add dependency check (ci)
|
* add dependency check (ci)
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ dep:
|
|||||||
npm link @nextcloud/vue || sudo npm link @nextcloud/vue
|
npm link @nextcloud/vue || sudo npm link @nextcloud/vue
|
||||||
|
|
||||||
.ONESHELL:
|
.ONESHELL:
|
||||||
release: build translations
|
release:
|
||||||
if [ -z "$$VERSION" ]; then
|
if [ -z "$$VERSION" ]; then
|
||||||
echo "VERSION required"
|
echo "VERSION required"
|
||||||
exit 1
|
exit 1
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
[](https://ci.gitnet.fr/deblan/side_menu)
|
[](https://ci.gitnet.fr/deblan/side_menu)
|
||||||
[](https://translate.codeberg.org/engage/custom-menu/)
|
[](https://translate.codeberg.org/engage/custom-menu/)
|
||||||
|

|
||||||
|
|
||||||
Allows you to modify the position of the main menu by creating a panel on the left of the interface or with a big menu on the top.
|
Allows you to modify the position of the main menu by creating a panel on the left of the interface or with a big menu on the top.
|
||||||
You can also add and sort custom categories, define apps that must be displayed in the top menu, etc. Fully customisable.
|
You can also add and sort custom categories, define apps that must be displayed in the top menu, etc. Fully customisable.
|
||||||
@@ -18,6 +19,8 @@ You can customize colors depending of the theme (Dark theme and Breeze Dark).
|
|||||||
|
|
||||||
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)
|
||||||
|
|
||||||
|
## [📘 Read the documentation](https://deblan.gitnet.page/side_menu_doc/)
|
||||||
|
|
||||||
Requirements
|
Requirements
|
||||||
------------
|
------------
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -32,12 +32,12 @@ Notice
|
|||||||
Because I believe in a free and decentralized Internet, [Gitnet](https://gitnet.fr) is **self-hosted at home**.
|
Because I believe in a free and decentralized Internet, [Gitnet](https://gitnet.fr) is **self-hosted at home**.
|
||||||
In case of downtime, you can download **Custom Menu** from [here](https://kim.deblan.fr/~side_menu/).
|
In case of downtime, you can download **Custom Menu** from [here](https://kim.deblan.fr/~side_menu/).
|
||||||
]]></description>
|
]]></description>
|
||||||
<version>3.5.0</version>
|
<version>3.7.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>
|
||||||
<documentation>
|
<documentation>
|
||||||
<admin>https://gitnet.fr/deblan/side_menu/src/branch/master/README.md</admin>
|
<admin>https://deblan.gitnet.page/side_menu_doc/</admin>
|
||||||
<developer>https://gitnet.fr/deblan/side_menu/src/branch/master/README.md</developer>
|
<developer>https://gitnet.fr/deblan/side_menu/src/branch/master/README.md</developer>
|
||||||
</documentation>
|
</documentation>
|
||||||
<category>customization</category>
|
<category>customization</category>
|
||||||
@@ -54,7 +54,7 @@ In case of downtime, you can download **Custom Menu** from [here](https://kim.de
|
|||||||
<screenshot>https://gitnet.fr/deblan/side_menu/raw/branch/master/screenshots/nc25_big_menu.png</screenshot>
|
<screenshot>https://gitnet.fr/deblan/side_menu/raw/branch/master/screenshots/nc25_big_menu.png</screenshot>
|
||||||
<screenshot>https://gitnet.fr/deblan/side_menu/raw/branch/master/screenshots/nc25_default_menu.png</screenshot>
|
<screenshot>https://gitnet.fr/deblan/side_menu/raw/branch/master/screenshots/nc25_default_menu.png</screenshot>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<nextcloud min-version="25" max-version="25"/>
|
<nextcloud min-version="25" max-version="26"/>
|
||||||
<php min-version="7.4"/>
|
<php min-version="7.4"/>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
<settings>
|
<settings>
|
||||||
|
|||||||
+10
-3
@@ -53,6 +53,7 @@
|
|||||||
:aria-label="appLabel(app)"
|
:aria-label="appLabel(app)"
|
||||||
:aria-current="app.active ? 'page' : false"
|
:aria-current="app.active ? 'page' : false"
|
||||||
:href="app.href"
|
:href="app.href"
|
||||||
|
:style="makeStyle(app)"
|
||||||
class="app-menu-popover-entry">
|
class="app-menu-popover-entry">
|
||||||
<template #icon>
|
<template #icon>
|
||||||
<div class="app-icon" :class="{ 'has-unread': app.unread > 0 }">
|
<div class="app-icon" :class="{ 'has-unread': app.unread > 0 }">
|
||||||
@@ -110,13 +111,19 @@ export default {
|
|||||||
this.observer.disconnect()
|
this.observer.disconnect()
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
appLabel() {
|
appLabel(app) {
|
||||||
return (app) => app.name
|
return app.name
|
||||||
+ (app.active ? ' (' + t('core', 'Currently open') + ')' : '')
|
+ (app.active ? ' (' + t('core', 'Currently open') + ')' : '')
|
||||||
+ (app.unread > 0 ? ' (' + n('core', '{count} notification', '{count} notifications', app.unread, { count: app.unread }) + ')' : '')
|
+ (app.unread > 0 ? ' (' + n('core', '{count} notification', '{count} notifications', app.unread, { count: app.unread }) + ')' : '')
|
||||||
},
|
},
|
||||||
appList() {
|
appList() {
|
||||||
return Object.values(this.apps)
|
let items = Object.values(this.apps)
|
||||||
|
|
||||||
|
items.sort((a, b) => {
|
||||||
|
return a.order < b.order ? -1 : 1;
|
||||||
|
})
|
||||||
|
|
||||||
|
return items
|
||||||
},
|
},
|
||||||
mainAppList() {
|
mainAppList() {
|
||||||
return this.appList().slice(0, this.appLimit)
|
return this.appList().slice(0, this.appLimit)
|
||||||
|
|||||||
+14
-8
@@ -41,6 +41,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||||||
<ul class="side-menu-apps-list">
|
<ul class="side-menu-apps-list">
|
||||||
<SideMenuApp
|
<SideMenuApp
|
||||||
v-for="(app, key) in apps"
|
v-for="(app, key) in apps"
|
||||||
|
v-if="!hiddenApps.includes(app.id)"
|
||||||
v-bind:classes="{'side-menu-app': true, 'active': app.active}"
|
v-bind:classes="{'side-menu-app': true, 'active': app.active}"
|
||||||
v-bind:key="key"
|
v-bind:key="key"
|
||||||
v-bind:icon="app.icon"
|
v-bind:icon="app.icon"
|
||||||
@@ -76,6 +77,7 @@ export default {
|
|||||||
avatar: null,
|
avatar: null,
|
||||||
forceLightIcon: false,
|
forceLightIcon: false,
|
||||||
targetBlankApps: [],
|
targetBlankApps: [],
|
||||||
|
hiddenApps: [],
|
||||||
settings: null,
|
settings: null,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -91,7 +93,11 @@ export default {
|
|||||||
|
|
||||||
for (let id in ncApps) {
|
for (let id in ncApps) {
|
||||||
if (window.topMenuApps.includes(id) && !window.topSideMenuApps.includes(id)) {
|
if (window.topMenuApps.includes(id) && !window.topSideMenuApps.includes(id)) {
|
||||||
continue;
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.hiddenApps.includes(id)) {
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
let app = ncApps[id]
|
let app = ncApps[id]
|
||||||
@@ -102,10 +108,10 @@ export default {
|
|||||||
|
|
||||||
finalApps.sort((a, b) => {
|
finalApps.sort((a, b) => {
|
||||||
if (a.order === null || b.order === null) {
|
if (a.order === null || b.order === null) {
|
||||||
return a.name < b.name ? -1 : 1;
|
return a.name < b.name ? -1 : 1
|
||||||
}
|
}
|
||||||
|
|
||||||
return a.order < b.order ? -1 : 1;
|
return a.order < b.order ? -1 : 1
|
||||||
})
|
})
|
||||||
|
|
||||||
this.apps = finalApps
|
this.apps = finalApps
|
||||||
@@ -116,6 +122,9 @@ export default {
|
|||||||
},
|
},
|
||||||
|
|
||||||
retrieveConfig() {
|
retrieveConfig() {
|
||||||
|
},
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
axios
|
axios
|
||||||
.get(OC.generateUrl('/apps/side_menu/js/config'))
|
.get(OC.generateUrl('/apps/side_menu/js/config'))
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
@@ -127,12 +136,9 @@ export default {
|
|||||||
this.logo = config['logo']
|
this.logo = config['logo']
|
||||||
this.logoLink = config['logo-link']
|
this.logoLink = config['logo-link']
|
||||||
this.settings = config['settings']
|
this.settings = config['settings']
|
||||||
})
|
this.hiddenApps = config['big-menu-hidden-apps']
|
||||||
},
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
this.retrieveConfig()
|
|
||||||
this.retrieveApps()
|
this.retrieveApps()
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -90,4 +90,4 @@
|
|||||||
"Applications kept in the top menu": "Aplikace ponechané v horní nabídce"
|
"Applications kept in the top menu": "Aplikace ponechané v horní nabídce"
|
||||||
"Applications kept in the top menu but also shown in side menu": "Aplikace ponechané v horní nabídce ale také zobrazené v té boční"
|
"Applications kept in the top menu but also shown in side menu": "Aplikace ponechané v horní nabídce ale také zobrazené v té boční"
|
||||||
"These applications must be selected in the previous option.": "Tyto aplikace je třeba vybrat v předchozí volbě."
|
"These applications must be selected in the previous option.": "Tyto aplikace je třeba vybrat v předchozí volbě."
|
||||||
"Hide labels on mouse over": "Hide labels on mouse over"
|
"Hide labels on mouse over": "Skrýt popisky při najetím ukazatele myši"
|
||||||
|
|||||||
@@ -90,4 +90,4 @@
|
|||||||
"Applications kept in the top menu": "Aplicaciones guardadas en el menú superior"
|
"Applications kept in the top menu": "Aplicaciones guardadas en el menú superior"
|
||||||
"Applications kept in the top menu but also shown in side menu": "Las aplicaciones se mantienen en el menú superior pero también se muestran en el menú lateral"
|
"Applications kept in the top menu but also shown in side menu": "Las aplicaciones se mantienen en el menú superior pero también se muestran en el menú lateral"
|
||||||
"These applications must be selected in the previous option.": "Estas aplicaciones deben ser seleccionadas en las opciones anteriores."
|
"These applications must be selected in the previous option.": "Estas aplicaciones deben ser seleccionadas en las opciones anteriores."
|
||||||
"Hide labels on mouse over": "Hide labels on mouse over"
|
"Hide labels on mouse over": "Ocultar las etiquetas al pasar el ratón"
|
||||||
|
|||||||
+21
-21
@@ -7,7 +7,7 @@
|
|||||||
: 'Используйте сочетание клавиш <span class="keyboard-key">Ctrl</span>+<span class="keyboard-key">o</span>, чтобы открыть или скрыть боковое меню. Используйте <span class="keyboard-key">Tab</span> для навигации.'
|
: 'Используйте сочетание клавиш <span class="keyboard-key">Ctrl</span>+<span class="keyboard-key">o</span>, чтобы открыть или скрыть боковое меню. Используйте <span class="keyboard-key">Tab</span> для навигации.'
|
||||||
"Top menu": "Верхнее меню"
|
"Top menu": "Верхнее меню"
|
||||||
"Apps that not must be moved in the side menu": "Приложения не перемещаемые в боковое меню"
|
"Apps that not must be moved in the side menu": "Приложения не перемещаемые в боковое меню"
|
||||||
"If there is no selection then the global configuration is applied.": "If there is no selection then the global configuration is applied."
|
"If there is no selection then the global configuration is applied.": "Если тут ничего не отмечено, применяются глобальные настройки."
|
||||||
"Experimental": "Экспериментальный"
|
"Experimental": "Экспериментальный"
|
||||||
"Save": "Сохранить"
|
"Save": "Сохранить"
|
||||||
"You like this app and you want to support me?": "Вам нравится приложение или вы хотите поддержать меня?"
|
"You like this app and you want to support me?": "Вам нравится приложение или вы хотите поддержать меня?"
|
||||||
@@ -16,11 +16,11 @@
|
|||||||
"Small": "Маленький"
|
"Small": "Маленький"
|
||||||
"Normal": "Средний"
|
"Normal": "Средний"
|
||||||
"Big": "Большой"
|
"Big": "Большой"
|
||||||
"Hidden icon": "Скрытая иконка"
|
"Hidden icon": "Без иконки"
|
||||||
"Small icon": "Маленькая иконка"
|
"Small icon": "Маленькая иконка"
|
||||||
"Normal icon": "Средняя иконка"
|
"Normal icon": "Средняя иконка"
|
||||||
"Big icon": "Большая иконка"
|
"Big icon": "Большая иконка"
|
||||||
"Hidden text": "Скрытый текст"
|
"Hidden text": "Без текста"
|
||||||
"Small text": "Маленький текст"
|
"Small text": "Маленький текст"
|
||||||
"Normal text": "Средний текст"
|
"Normal text": "Средний текст"
|
||||||
"Big text": "Большой текст"
|
"Big text": "Большой текст"
|
||||||
@@ -35,44 +35,44 @@
|
|||||||
"Transparent": "Прозрачный"
|
"Transparent": "Прозрачный"
|
||||||
"Opaque": "Непрозрачный"
|
"Opaque": "Непрозрачный"
|
||||||
"Opener": "Открывалка"
|
"Opener": "Открывалка"
|
||||||
"Default": "По-умолчанию"
|
"Default": "По умолчанию"
|
||||||
"Default (dark)": "По-умолчанию (тёмный)"
|
"Default (dark)": "По умолчанию (тёмный)"
|
||||||
"Hamburger": "Гамбургер"
|
"Hamburger": "Гамбургер"
|
||||||
"Hamburger (dark)": "Гамбургер (тёмный)"
|
"Hamburger (dark)": "Гамбургер (тёмный)"
|
||||||
"Hamburger 2": "Гамбургер 2"
|
"Hamburger 2": "Гамбургер 2"
|
||||||
"Hamburger 2 (dark)": "Гамбургер 2 (тёмный)"
|
"Hamburger 2 (dark)": "Гамбургер 2 (тёмный)"
|
||||||
"Before the logo": "Перед логотипом"
|
"Before the logo": "Перед логотипом"
|
||||||
"After the logo": "После логотипа"
|
"After the logo": "После логотипа"
|
||||||
"Position": "Позиция"
|
"Position": "Положение"
|
||||||
"Show only the opener (hidden logo)": "Показать только открывающую часть (скрытый логотип)"
|
"Show only the opener (hidden logo)": "Показать только открывающую часть (скрытый логотип)"
|
||||||
"Do not display the side menu and the opener if there is no application (eg: public pages).": "Не отображать боковое меню и открывалку, если нет приложения (например, публичные страницы)."
|
"Do not display the side menu and the opener if there is no application (eg: public pages).": "Не отображать боковое меню и открывалку, если нет приложения (например, публичные страницы)."
|
||||||
"Panel": "Панеот"
|
"Panel": "Панель"
|
||||||
"Open the menu when the mouse is hover the opener (automatically disabled on touch screens)": "Открывать меню при наведении мыши на экран (автоматически отключается на сенсорных экранах)"
|
"Open the menu when the mouse is hover the opener (automatically disabled on touch screens)": "Открывать меню при наведении мыши на экран (автоматически отключается на сенсорных экранах)"
|
||||||
"Display the big menu": "Отобразить большое меню"
|
"Display the big menu": "Отобразить большое меню"
|
||||||
"Display the logo": "Показать лого"
|
"Display the logo": "Показать логотип"
|
||||||
"Icons and texts": "Иконки и текст"
|
"Icons and texts": "Иконки и текст"
|
||||||
"Loader enabled": "Loader enabled"
|
"Loader enabled": "Загрузчик включен"
|
||||||
"Tips": "Советы"
|
"Tips": "Советы"
|
||||||
"Always displayed": "Всегда отображается"
|
"Always displayed": "Всегда отображается"
|
||||||
"This is the automatic behavior when the menu is always displayed.": "This is the automatic behavior when the menu is always displayed."
|
"This is the automatic behavior when the menu is always displayed.": "This is the automatic behavior when the menu is always displayed."
|
||||||
"Not compatible with touch screens.": "Не совместимо с сенсорными экранами"
|
"Not compatible with touch screens.": "Не совместимо с сенсорными экранами."
|
||||||
"Big menu": "Большое меню"
|
"Big menu": "Большое меню"
|
||||||
"Live preview": "Live preview"
|
"Live preview": "Live preview"
|
||||||
"Open apps in new tab": "Открывать приложения в новой вкладке"
|
"Open apps in new tab": "Открывать приложения в новой вкладке"
|
||||||
"Use the global setting": "Use the global setting"
|
"Use the global setting": "Использовать глобальные настройки"
|
||||||
"Use my selection": "Use my selection"
|
"Use my selection": "Использовать мои настройки"
|
||||||
"Show and hide the list of applications": "Показать или скрыть список приложений"
|
"Show and hide the list of applications": "Показать или скрыть список приложений"
|
||||||
"Use the avatar instead of the logo": "Использовать аватар вместо логотипа"
|
"Use the avatar instead of the logo": "Использовать аватар вместо логотипа"
|
||||||
"You do not have permission to change the settings.": "У вас нет разрешения изменять настройки"
|
"You do not have permission to change the settings.": "У вас нет разрешения изменять настройки."
|
||||||
"Force this configuration to users": "Force this configuration to users"
|
"Force this configuration to users": "Force this configuration to users"
|
||||||
"Export the configuration": "Экспортировать конфигурацию"
|
"Export the configuration": "Экспортировать конфигурацию"
|
||||||
"Purge the cache": "Очистить кэш"
|
"Purge the cache": "Очистить кэш"
|
||||||
"Show the link to settings": "Показать ссылку на настройки"
|
"Show the link to settings": "Показать ссылку на настройки"
|
||||||
"The menu is enabled by default for users": "The menu is enabled by default for users"
|
"The menu is enabled by default for users": "Это меню включено по умолчанию для пользователей"
|
||||||
"Except when the configuration is forced.": "Except when the configuration is forced."
|
"Except when the configuration is forced.": "Except when the configuration is forced."
|
||||||
"Apps that should not be displayed in the menu": "Apps that should not be displayed in the menu"
|
"Apps that should not be displayed in the menu": "Ппрограммы, скрытые из меню"
|
||||||
"This feature is only compatible with the <code>big menu</code> display.": "This feature is only compatible with the <code>big menu</code> display."
|
"This feature is only compatible with the <code>big menu</code> display.": "This feature is only compatible with the <code>big menu</code> display."
|
||||||
"The logo is a link to the default app": "The logo is a link to the default app"
|
"The logo is a link to the default app": "Логотип открывает приложение по умолчанию"
|
||||||
"Others": "Прочие"
|
"Others": "Прочие"
|
||||||
"Categories": "Категории"
|
"Categories": "Категории"
|
||||||
"Customize sorting": "Настроить сортировку"
|
"Customize sorting": "Настроить сортировку"
|
||||||
@@ -80,14 +80,14 @@
|
|||||||
"Name": "Название"
|
"Name": "Название"
|
||||||
"Customed": "Customed"
|
"Customed": "Customed"
|
||||||
"Show and hide the list of categories": "Показать или скрыть список категорий"
|
"Show and hide the list of categories": "Показать или скрыть список категорий"
|
||||||
"This parameters are used when Dark theme or Breeze Dark Theme are enabled.": "This parameters are used when Dark theme or Breeze Dark Theme are enabled."
|
"This parameters are used when Dark theme or Breeze Dark Theme are enabled.": "Эти настройки используются темами Тёмная и Тёмная Breeze."
|
||||||
"Dark mode colors": "Цвета тёмной темы"
|
"Dark mode colors": "Цвета тёмной темы"
|
||||||
"With categories": "С категориями"
|
"With categories": "С категориями"
|
||||||
"Custom categories": "Custom categories"
|
"Custom categories": "Пользовательские категории"
|
||||||
"Customize application categories": "Customize application categories"
|
"Customize application categories": "Изменить категории приложений"
|
||||||
"Reset to default": "Сбросить к значениям по-умолчанию"
|
"Reset to default": "Сбросить к значениям по умолчанию"
|
||||||
"Applications": "Приложения"
|
"Applications": "Приложения"
|
||||||
"Applications kept in the top menu": "Applications kept in the top menu"
|
"Applications kept in the top menu": "Applications kept in the top menu"
|
||||||
"Applications kept in the top menu but also shown in side menu": "Applications kept in the top menu but also shown in side menu"
|
"Applications kept in the top menu but also shown in side menu": "Applications kept in the top menu but also shown in side menu"
|
||||||
"These applications must be selected in the previous option.": "These applications must be selected in the previous option."
|
"These applications must be selected in the previous option.": "These applications must be selected in the previous option."
|
||||||
"Hide labels on mouse over": "Hide labels on mouse over"
|
"Hide labels on mouse over": "Скрыть название при наведении мыши"
|
||||||
|
|||||||
@@ -73,6 +73,10 @@ if ($_['always-displayed']) {
|
|||||||
const headerMenuOpener = document.querySelector('#header .side-menu-opener')
|
const headerMenuOpener = document.querySelector('#header .side-menu-opener')
|
||||||
const sideMenuOpener = document.querySelectorAll('#side-menu .side-menu-opener')
|
const sideMenuOpener = document.querySelectorAll('#side-menu .side-menu-opener')
|
||||||
|
|
||||||
|
if (!headerMenuOpener) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
sideMenuFocus = () => {
|
sideMenuFocus = () => {
|
||||||
let a = document.querySelector('.side-menu-app.active a', sideMenu)
|
let a = document.querySelector('.side-menu-app.active a', sideMenu)
|
||||||
|
|
||||||
@@ -174,9 +178,11 @@ if ($_['always-displayed']) {
|
|||||||
PageLoader()
|
PageLoader()
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
|
|
||||||
|
if (nextcloud) {
|
||||||
<?php if ($_['opener-position'] === 'before'): ?>
|
<?php if ($_['opener-position'] === 'before'): ?>
|
||||||
nextcloud.parentNode.insertBefore(sideMenuOpener, nextcloud)
|
nextcloud.parentNode.insertBefore(sideMenuOpener, nextcloud)
|
||||||
<?php else: ?>
|
<?php else: ?>
|
||||||
nextcloud.parentNode.insertBefore(sideMenuOpener, nextcloud.nextSibling)
|
nextcloud.parentNode.insertBefore(sideMenuOpener, nextcloud.nextSibling)
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
|
}
|
||||||
})();
|
})();
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ $choicesSizes = [
|
|||||||
|
|
||||||
$labelShowHideApps = 'Show and hide the list of applications';
|
$labelShowHideApps = 'Show and hide the list of applications';
|
||||||
$labelReset = 'Reset to default';
|
$labelReset = 'Reset to default';
|
||||||
|
$labelDefault = 'Default';
|
||||||
$labelWithCategories = 'With categories';
|
$labelWithCategories = 'With categories';
|
||||||
$labelBigMenu = 'Big menu';
|
$labelBigMenu = 'Big menu';
|
||||||
$labelAlwaysDisplayed = 'Always displayed';
|
$labelAlwaysDisplayed = 'Always displayed';
|
||||||
@@ -64,7 +65,7 @@ $labelAlwaysDisplayed = 'Always displayed';
|
|||||||
|
|
||||||
<div>
|
<div>
|
||||||
<label>
|
<label>
|
||||||
<?php p($l->t('Default')); ?>
|
<?php p($l->t($labelDefault)); ?>
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
<p>
|
<p>
|
||||||
@@ -73,7 +74,7 @@ $labelAlwaysDisplayed = 'Always displayed';
|
|||||||
data-alwaysdiplayed="0"
|
data-alwaysdiplayed="0"
|
||||||
data-bigmenu="0"
|
data-bigmenu="0"
|
||||||
data-sidewithcategories="0"
|
data-sidewithcategories="0"
|
||||||
src="<?php print_unescaped(image_path('side_menu', 'admin/layout-default.svg')); ?>" alt="<?php p($l->t('Default')); ?>">
|
src="<?php print_unescaped(image_path('side_menu', 'admin/layout-default.svg')); ?>" alt="<?php p($l->t($labelDefault)); ?>">
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
@@ -150,7 +151,7 @@ $labelAlwaysDisplayed = 'Always displayed';
|
|||||||
</h2>
|
</h2>
|
||||||
|
|
||||||
<div class="badges">
|
<div class="badges">
|
||||||
<span class="badge badge-1"><?php p($l->t('Default')); ?></span>
|
<span class="badge badge-1"><?php p($l->t($labelDefault)); ?></span>
|
||||||
<span class="badge badge-2"><?php p($l->t($labelWithCategories)); ?></span>
|
<span class="badge badge-2"><?php p($l->t($labelWithCategories)); ?></span>
|
||||||
<span class="badge badge-3"><?php p($l->t($labelBigMenu)); ?></span>
|
<span class="badge badge-3"><?php p($l->t($labelBigMenu)); ?></span>
|
||||||
<span class="badge badge-4"><?php p($l->t($labelAlwaysDisplayed)); ?></span>
|
<span class="badge badge-4"><?php p($l->t($labelAlwaysDisplayed)); ?></span>
|
||||||
@@ -312,7 +313,7 @@ $labelAlwaysDisplayed = 'Always displayed';
|
|||||||
<div class="side-menu-setting-table">
|
<div class="side-menu-setting-table">
|
||||||
<?php
|
<?php
|
||||||
$choices = [
|
$choices = [
|
||||||
'Default' => 'side-menu-opener',
|
$labelDefault => 'side-menu-opener',
|
||||||
'Default (dark)' => 'side-menu-opener-dark',
|
'Default (dark)' => 'side-menu-opener-dark',
|
||||||
'Hamburger' => 'side-menu-opener-hamburger',
|
'Hamburger' => 'side-menu-opener-hamburger',
|
||||||
'Hamburger (dark)' => 'side-menu-opener-hamburger-dark',
|
'Hamburger (dark)' => 'side-menu-opener-hamburger-dark',
|
||||||
@@ -341,7 +342,7 @@ $labelAlwaysDisplayed = 'Always displayed';
|
|||||||
</h2>
|
</h2>
|
||||||
|
|
||||||
<div class="badges">
|
<div class="badges">
|
||||||
<span class="badge badge-1"><?php p($l->t('Default')); ?></span>
|
<span class="badge badge-1"><?php p($l->t($labelDefault)); ?></span>
|
||||||
<span class="badge badge-2"><?php p($l->t($labelWithCategories)); ?></span>
|
<span class="badge badge-2"><?php p($l->t($labelWithCategories)); ?></span>
|
||||||
<span class="badge badge-3"><?php p($l->t($labelBigMenu)); ?></span>
|
<span class="badge badge-3"><?php p($l->t($labelBigMenu)); ?></span>
|
||||||
<span class="badge badge-4"><?php p($l->t($labelAlwaysDisplayed)); ?></span>
|
<span class="badge badge-4"><?php p($l->t($labelAlwaysDisplayed)); ?></span>
|
||||||
@@ -505,7 +506,7 @@ $labelAlwaysDisplayed = 'Always displayed';
|
|||||||
<div class="side-menu-setting-table">
|
<div class="side-menu-setting-table">
|
||||||
<?php
|
<?php
|
||||||
$choices = [
|
$choices = [
|
||||||
'Default' => 'side-menu-opener',
|
$labelDefault => 'side-menu-opener',
|
||||||
'Default (dark)' => 'side-menu-opener-dark',
|
'Default (dark)' => 'side-menu-opener-dark',
|
||||||
'Hamburger' => 'side-menu-opener-hamburger',
|
'Hamburger' => 'side-menu-opener-hamburger',
|
||||||
'Hamburger (dark)' => 'side-menu-opener-hamburger-dark',
|
'Hamburger (dark)' => 'side-menu-opener-hamburger-dark',
|
||||||
@@ -536,7 +537,7 @@ $labelAlwaysDisplayed = 'Always displayed';
|
|||||||
</h2>
|
</h2>
|
||||||
|
|
||||||
<div class="badges">
|
<div class="badges">
|
||||||
<span class="badge badge-1"><?php p($l->t('Default')); ?></span>
|
<span class="badge badge-1"><?php p($l->t($labelDefault)); ?></span>
|
||||||
<span class="badge badge-2"><?php p($l->t($labelWithCategories)); ?></span>
|
<span class="badge badge-2"><?php p($l->t($labelWithCategories)); ?></span>
|
||||||
<span class="badge badge-3"><?php p($l->t($labelBigMenu)); ?></span>
|
<span class="badge badge-3"><?php p($l->t($labelBigMenu)); ?></span>
|
||||||
<span class="badge badge-4"><?php p($l->t($labelAlwaysDisplayed)); ?></span>
|
<span class="badge badge-4"><?php p($l->t($labelAlwaysDisplayed)); ?></span>
|
||||||
@@ -621,7 +622,7 @@ $labelAlwaysDisplayed = 'Always displayed';
|
|||||||
<?php p($l->t('Display the logo')); ?>
|
<?php p($l->t('Display the logo')); ?>
|
||||||
|
|
||||||
<div class="badges">
|
<div class="badges">
|
||||||
<span class="badge badge-1"><?php p($l->t('Default')); ?></span>
|
<span class="badge badge-1"><?php p($l->t($labelDefault)); ?></span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="side-menu-setting-form">
|
<div class="side-menu-setting-form">
|
||||||
@@ -640,7 +641,7 @@ $labelAlwaysDisplayed = 'Always displayed';
|
|||||||
<?php p($l->t('Use the avatar instead of the logo')); ?>
|
<?php p($l->t('Use the avatar instead of the logo')); ?>
|
||||||
|
|
||||||
<div class="badges">
|
<div class="badges">
|
||||||
<span class="badge badge-1"><?php p($l->t('Default')); ?></span>
|
<span class="badge badge-1"><?php p($l->t($labelDefault)); ?></span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="side-menu-setting-form">
|
<div class="side-menu-setting-form">
|
||||||
@@ -659,7 +660,7 @@ $labelAlwaysDisplayed = 'Always displayed';
|
|||||||
<?php p($l->t('The logo is a link to the default app')); ?>
|
<?php p($l->t('The logo is a link to the default app')); ?>
|
||||||
|
|
||||||
<div class="badges">
|
<div class="badges">
|
||||||
<span class="badge badge-1"><?php p($l->t('Default')); ?></span>
|
<span class="badge badge-1"><?php p($l->t($labelDefault)); ?></span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="side-menu-setting-form">
|
<div class="side-menu-setting-form">
|
||||||
@@ -678,8 +679,10 @@ $labelAlwaysDisplayed = 'Always displayed';
|
|||||||
<?php p($l->t('Apps that should not be displayed in the menu')); ?>
|
<?php p($l->t('Apps that should not be displayed in the menu')); ?>
|
||||||
|
|
||||||
<div class="badges">
|
<div class="badges">
|
||||||
|
<span class="badge badge-1"><?php p($l->t($labelDefault)); ?></span>
|
||||||
<span class="badge badge-2"><?php p($l->t($labelWithCategories)); ?></span>
|
<span class="badge badge-2"><?php p($l->t($labelWithCategories)); ?></span>
|
||||||
<span class="badge badge-3"><?php p($l->t($labelBigMenu)); ?></span>
|
<span class="badge badge-3"><?php p($l->t($labelBigMenu)); ?></span>
|
||||||
|
<span class="badge badge-4"><?php p($l->t($labelAlwaysDisplayed)); ?></span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="side-menu-setting-form">
|
<div class="side-menu-setting-form">
|
||||||
@@ -801,7 +804,7 @@ $labelAlwaysDisplayed = 'Always displayed';
|
|||||||
</h2>
|
</h2>
|
||||||
|
|
||||||
<div class="badges">
|
<div class="badges">
|
||||||
<span class="badge badge-1"><?php p($l->t('Default')); ?></span>
|
<span class="badge badge-1"><?php p($l->t($labelDefault)); ?></span>
|
||||||
<span class="badge badge-2"><?php p($l->t($labelWithCategories)); ?></span>
|
<span class="badge badge-2"><?php p($l->t($labelWithCategories)); ?></span>
|
||||||
<span class="badge badge-3"><?php p($l->t($labelBigMenu)); ?></span>
|
<span class="badge badge-3"><?php p($l->t($labelBigMenu)); ?></span>
|
||||||
<span class="badge badge-4"><?php p($l->t($labelAlwaysDisplayed)); ?></span>
|
<span class="badge badge-4"><?php p($l->t($labelAlwaysDisplayed)); ?></span>
|
||||||
@@ -894,7 +897,7 @@ $labelAlwaysDisplayed = 'Always displayed';
|
|||||||
</h2>
|
</h2>
|
||||||
|
|
||||||
<div class="badges">
|
<div class="badges">
|
||||||
<span class="badge badge-1"><?php p($l->t('Default')); ?></span>
|
<span class="badge badge-1"><?php p($l->t($labelDefault)); ?></span>
|
||||||
<span class="badge badge-2"><?php p($l->t($labelWithCategories)); ?></span>
|
<span class="badge badge-2"><?php p($l->t($labelWithCategories)); ?></span>
|
||||||
<span class="badge badge-3"><?php p($l->t($labelBigMenu)); ?></span>
|
<span class="badge badge-3"><?php p($l->t($labelBigMenu)); ?></span>
|
||||||
<span class="badge badge-4"><?php p($l->t($labelAlwaysDisplayed)); ?></span>
|
<span class="badge badge-4"><?php p($l->t($labelAlwaysDisplayed)); ?></span>
|
||||||
@@ -1056,7 +1059,7 @@ $labelAlwaysDisplayed = 'Always displayed';
|
|||||||
</h2>
|
</h2>
|
||||||
|
|
||||||
<div class="badges">
|
<div class="badges">
|
||||||
<span class="badge badge-1"><?php p($l->t('Default')); ?></span>
|
<span class="badge badge-1"><?php p($l->t($labelDefault)); ?></span>
|
||||||
<span class="badge badge-2"><?php p($l->t($labelWithCategories)); ?></span>
|
<span class="badge badge-2"><?php p($l->t($labelWithCategories)); ?></span>
|
||||||
<span class="badge badge-3"><?php p($l->t($labelBigMenu)); ?></span>
|
<span class="badge badge-3"><?php p($l->t($labelBigMenu)); ?></span>
|
||||||
<span class="badge badge-4"><?php p($l->t($labelAlwaysDisplayed)); ?></span>
|
<span class="badge badge-4"><?php p($l->t($labelAlwaysDisplayed)); ?></span>
|
||||||
|
|||||||
Reference in New Issue
Block a user