Compare commits
36 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| e1567b0689 | |||
| 135f27cc32 | |||
| c5e1a8d37b | |||
| 27f8888a90 | |||
| 6583883e2d | |||
| 0a556670b1 | |||
| aa139bc671 | |||
| b9264d7e05 | |||
| 88c14b6aec | |||
| 2be53211b8 | |||
| dca727c120 | |||
| 361badff6b | |||
| 917288eb54 | |||
| b133ba3a97 | |||
| 2ff4fee927 | |||
| b65c0c650a | |||
| 22335700ce | |||
| 7ab2816bd9 | |||
| 396d3cfbc5 | |||
| 66e4d2989a | |||
| 9ccd11b6dc | |||
| aaf2bb55db | |||
| a7ec95da7c | |||
| 42043c5390 | |||
| 019f79d45f | |||
| 3a80215657 | |||
| 7d0b55243e | |||
| 097ccc9dc9 | |||
| 7227f59dab | |||
| 3a51e6ecd5 | |||
| 112e669723 | |||
| fc5a6a4c64 | |||
| 02afac5267 | |||
| 1eb392834c | |||
| 749f25a231 | |||
| 5df389dd42 |
+45
-14
@@ -1,27 +1,56 @@
|
|||||||
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]
|
||||||
|
|
||||||
osv_detector:
|
osv-detector:
|
||||||
image: gitnet.fr/deblan/docker-osv-detector:v0.9
|
image: gitnet.fr/deblan/osv-detector:v0.10
|
||||||
commands:
|
commands:
|
||||||
- osv-detector package-lock.json
|
- osv-detector package-lock.json
|
||||||
failure: ignore
|
failure: ignore
|
||||||
|
|
||||||
build:
|
build-js:
|
||||||
image: gitnet.fr/deblan/devenv
|
image: node:16
|
||||||
commands:
|
commands:
|
||||||
- make build
|
- 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]
|
||||||
|
|
||||||
code_quality:
|
build-translations:
|
||||||
|
image: deblan/php:8.0
|
||||||
|
commands:
|
||||||
|
- php bin/generate_l10n.php
|
||||||
|
when:
|
||||||
|
branch: [master, develop, feature/*, fix/*, translations]
|
||||||
|
event: [tag, push, pull_request]
|
||||||
|
|
||||||
|
create-signature:
|
||||||
|
image: nextcloud:25
|
||||||
|
secrets: [app_certificate, app_public_certificate]
|
||||||
|
environment:
|
||||||
|
SQLITE_DATABASE: /var/www/data/data.db
|
||||||
|
NEXTCLOUD_ADMIN_USER: admin
|
||||||
|
NEXTCLOUD_ADMIN_PASSWORD: admin
|
||||||
|
commands:
|
||||||
|
- echo "$APP_CERTIFICATE" > "/tmp/side_menu.key"
|
||||||
|
- echo "$APP_PUBLIC_CERTIFICATE" > "/tmp/side_menu.crt"
|
||||||
|
- mkdir /tmp/app
|
||||||
|
- cp -r README.md CHANGELOG.md appinfo css lib img l10n js src templates screenshots vendor /tmp/app
|
||||||
|
- /usr/src/nextcloud/occ integrity:sign-app
|
||||||
|
--privateKey=/tmp/side_menu.key
|
||||||
|
--certificate=/tmp/side_menu.crt
|
||||||
|
--path=/tmp/app
|
||||||
|
- mv /tmp/app/appinfo/signature.json appinfo/
|
||||||
|
when:
|
||||||
|
event: [tag]
|
||||||
|
|
||||||
|
check-code-quality:
|
||||||
image: sonarsource/sonar-scanner-cli
|
image: sonarsource/sonar-scanner-cli
|
||||||
secrets: [sonar_token, sonar_host, sonar_project]
|
secrets: [sonar_token, sonar_host, sonar_project]
|
||||||
commands:
|
commands:
|
||||||
@@ -36,12 +65,14 @@ pipeline:
|
|||||||
when:
|
when:
|
||||||
event: [pull_request]
|
event: [pull_request]
|
||||||
|
|
||||||
package:
|
create-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)
|
||||||
@@ -50,7 +81,7 @@ pipeline:
|
|||||||
when:
|
when:
|
||||||
event: [tag]
|
event: [tag]
|
||||||
|
|
||||||
release:
|
push-release:
|
||||||
image: plugins/gitea-release
|
image: plugins/gitea-release
|
||||||
volumes:
|
volumes:
|
||||||
- /var/www/html/artifacts:/var/www/html/artifacts
|
- /var/www/html/artifacts:/var/www/html/artifacts
|
||||||
|
|||||||
@@ -1,5 +1,25 @@
|
|||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
## 3.7.4
|
||||||
|
### Fixed
|
||||||
|
* fix Integrity failed (#247)
|
||||||
|
|
||||||
|
## 3.7.3
|
||||||
|
### Fixed
|
||||||
|
* fix #244: use app href for redirection
|
||||||
|
### Added
|
||||||
|
* add signature on build
|
||||||
|
|
||||||
|
## 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
|
## 3.7.0
|
||||||
### Added
|
### Added
|
||||||
* add translations (thanks to AHOHNMYC)
|
* add translations (thanks to AHOHNMYC)
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
+1
-1
@@ -32,7 +32,7 @@ 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.7.0</version>
|
<version>3.7.4</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>
|
||||||
|
|||||||
@@ -78,29 +78,33 @@ class AppController extends Controller
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->redirectToApp($app['id']);
|
return $this->redirectToApp($app, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->redirectToApp('files');
|
return $this->redirectToApp('files');
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function redirectToApp($appId): RedirectResponse
|
protected function redirectToApp($app, bool $isHref = false): RedirectResponse
|
||||||
{
|
{
|
||||||
$isIgnoreFrontController = true === OC::$server->getConfig()->getSystemValue(
|
if (!$isHref) {
|
||||||
'htaccess.IgnoreFrontController',
|
$isIgnoreFrontController = true === OC::$server->getConfig()->getSystemValue(
|
||||||
false
|
'htaccess.IgnoreFrontController',
|
||||||
);
|
false
|
||||||
|
);
|
||||||
|
|
||||||
$isFrontControllerActive = 'true' === getenv('front_controller_active');
|
$isFrontControllerActive = 'true' === getenv('front_controller_active');
|
||||||
|
|
||||||
if ($isIgnoreFrontController || $isFrontControllerActive) {
|
if ($isIgnoreFrontController || $isFrontControllerActive) {
|
||||||
$path = '/apps/%s/';
|
$path = '/apps/%s/';
|
||||||
|
} else {
|
||||||
|
$path = '/index.php/apps/%s/';
|
||||||
|
}
|
||||||
|
|
||||||
|
$url = $this->urlGenerator->getAbsoluteURL(sprintf($path, $app));
|
||||||
} else {
|
} else {
|
||||||
$path = '/index.php/apps/%s/';
|
$url = $app['href'];
|
||||||
}
|
}
|
||||||
|
|
||||||
$url = $this->urlGenerator->getAbsoluteURL(sprintf($path, $appId));
|
|
||||||
|
|
||||||
return new RedirectResponse($url);
|
return new RedirectResponse($url);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+21
-18
@@ -93,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]
|
||||||
@@ -104,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
|
||||||
@@ -118,24 +122,23 @@ export default {
|
|||||||
},
|
},
|
||||||
|
|
||||||
retrieveConfig() {
|
retrieveConfig() {
|
||||||
axios
|
|
||||||
.get(OC.generateUrl('/apps/side_menu/js/config'))
|
|
||||||
.then((response) => {
|
|
||||||
const config = response.data
|
|
||||||
|
|
||||||
this.targetBlankApps = config['target-blank-apps']
|
|
||||||
this.forceLightIcon = config['force-light-icon']
|
|
||||||
this.avatar = config['avatar']
|
|
||||||
this.logo = config['logo']
|
|
||||||
this.logoLink = config['logo-link']
|
|
||||||
this.settings = config['settings']
|
|
||||||
this.hiddenApps = config['big-menu-hidden-apps']
|
|
||||||
})
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
this.retrieveConfig()
|
axios
|
||||||
this.retrieveApps()
|
.get(OC.generateUrl('/apps/side_menu/js/config'))
|
||||||
|
.then((response) => {
|
||||||
|
const config = response.data
|
||||||
|
|
||||||
|
this.targetBlankApps = config['target-blank-apps']
|
||||||
|
this.forceLightIcon = config['force-light-icon']
|
||||||
|
this.avatar = config['avatar']
|
||||||
|
this.logo = config['logo']
|
||||||
|
this.logoLink = config['logo-link']
|
||||||
|
this.settings = config['settings']
|
||||||
|
this.hiddenApps = config['big-menu-hidden-apps']
|
||||||
|
this.retrieveApps()
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
Reference in New Issue
Block a user