From b4dd1045c75c650e95b635d1a111351d43ca6246 Mon Sep 17 00:00:00 2001 From: Renovate Bot Date: Mon, 25 Nov 2024 09:02:01 +0000 Subject: [PATCH 01/14] chore(deps): update dependency @simplewebauthn/types to v12 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f002d50..2648b1f 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "@nextcloud/stylelint-config": "^3.0.1", "@nextcloud/typings": "^1.9.1", "@nextcloud/webpack-vue-config": "^6.0.1", - "@simplewebauthn/types": "^10.0.0", + "@simplewebauthn/types": "^12.0.0", "@types/dockerode": "^3.3.29", "@types/wait-on": "^5.3.4", "@vue/tsconfig": "^0.5.1", From b03a7f7badd3665154217c56be0372bf3b7cf67e Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Wed, 5 Mar 2025 21:54:59 +0100 Subject: [PATCH 02/14] refactor(controller): usage of attributes instead of annotations --- appinfo/info.xml | 2 +- appinfo/routes.php | 31 -------------------- lib/Controller/AdminSettingController.php | 12 ++++---- lib/Controller/AppController.php | 10 ++++--- lib/Controller/CssController.php | 11 +++---- lib/Controller/JsController.php | 22 +++++++------- lib/Controller/NavController.php | 13 ++++---- lib/Controller/PersonalSettingController.php | 13 ++++---- 8 files changed, 45 insertions(+), 69 deletions(-) delete mode 100644 appinfo/routes.php diff --git a/appinfo/info.xml b/appinfo/info.xml index cf4cfbf..32c8178 100644 --- a/appinfo/info.xml +++ b/appinfo/info.xml @@ -55,7 +55,7 @@ In case of downtime, you can download **Custom Menu** from [here](https://kim.de https://gitnet.fr/deblan/side_menu/raw/branch/master/screenshots/nc25_default_menu.png - + OCA\SideMenu\Settings\Admin diff --git a/appinfo/routes.php b/appinfo/routes.php deleted file mode 100644 index bdc3fba..0000000 --- a/appinfo/routes.php +++ /dev/null @@ -1,31 +0,0 @@ -. - */ - -return [ - 'routes' => [ - ['name' => 'App#index', 'url' => '/', 'verb' => 'GET'], - ['name' => 'Css#stylesheet', 'url' => '/css/stylesheet', 'verb' => 'GET'], - ['name' => 'Js#script', 'url' => '/js/script', 'verb' => 'GET'], - ['name' => 'Js#config', 'url' => '/js/config', 'verb' => 'GET'], - ['name' => 'Nav#items', 'url' => '/nav/items', 'verb' => 'GET'], - ['name' => 'PersonalSetting#valueSet', 'url' => '/personalSetting/valueSet', 'verb' => 'POST'], - ['name' => 'AdminSetting#removeCache', 'url' => '/admin/cache/remove', 'verb' => 'GET'], - ['name' => 'AdminSetting#exportConfiguration', 'url' => '/admin/config/export', 'verb' => 'GET'], - ], -]; diff --git a/lib/Controller/AdminSettingController.php b/lib/Controller/AdminSettingController.php index 4ecfbea..7632b4a 100644 --- a/lib/Controller/AdminSettingController.php +++ b/lib/Controller/AdminSettingController.php @@ -20,11 +20,13 @@ namespace OCA\SideMenu\Controller; use OCA\SideMenu\AppInfo\Application; use OCP\AppFramework\Controller; +use OCP\AppFramework\Http\Attribute\NoCSRFRequired; use OCP\AppFramework\Http\DataDownloadResponse; use OCP\AppFramework\Http\RedirectResponse; use OCP\IConfig; use OCP\IRequest; use OCP\IURLGenerator; +use OCP\AppFramework\Http\Attribute\FrontpageRoute; class AdminSettingController extends Controller { @@ -37,9 +39,8 @@ class AdminSettingController extends Controller parent::__construct($appName, $request); } - /** - * @NoCSRFRequired - */ + #[NoCSRFRequired] + #[FrontpageRoute(verb: 'GET', url: '/admin/cache/remove')] public function removeCache(): RedirectResponse { $this->config->setAppValue(Application::APP_ID, 'cache-categories', '[]'); @@ -49,9 +50,8 @@ class AdminSettingController extends Controller ]).'#more'); } - /** - * @NoCSRFRequired - */ + #[NoCSRFRequired] + #[FrontpageRoute(verb: 'GET', url: '/admin/config/export')] public function exportConfiguration(): DataDownloadResponse { $keys = $this->config->getAppKeys(Application::APP_ID); diff --git a/lib/Controller/AppController.php b/lib/Controller/AppController.php index dd2993e..ea7d19e 100644 --- a/lib/Controller/AppController.php +++ b/lib/Controller/AppController.php @@ -26,6 +26,9 @@ use OCP\AppFramework\Http\RedirectResponse; use OCP\IRequest; use OCP\IURLGenerator; use OCP\IUserSession; +use OCP\AppFramework\Http\Attribute\NoAdminRequired; +use OCP\AppFramework\Http\Attribute\NoCSRFRequired; +use OCP\AppFramework\Http\Attribute\FrontpageRoute; class AppController extends Controller { @@ -39,10 +42,9 @@ class AppController extends Controller parent::__construct($appName, $request); } - /** - * @NoAdminRequired - * @NoCSRFRequired - */ + #[NoCSRFRequired] + #[NoAdminRequired] + #[FrontpageRoute(verb: 'GET', url: '/')] public function index(): RedirectResponse { $user = OC::$server[IUserSession::class]->getUser(); diff --git a/lib/Controller/CssController.php b/lib/Controller/CssController.php index 93fafb3..7a186ae 100644 --- a/lib/Controller/CssController.php +++ b/lib/Controller/CssController.php @@ -29,6 +29,8 @@ use OCP\AppFramework\Http\Response; use OCP\AppFramework\Http\TemplateResponse; use OCP\IRequest; use OCP\IUserSession; +use OCP\AppFramework\Http\Attribute\PublicPage; +use OCP\AppFramework\Http\Attribute\FrontpageRoute; class CssController extends Controller { @@ -46,11 +48,10 @@ class CssController extends Controller $this->user = OC::$server[IUserSession::class]->getUser(); } - /** - * @NoAdminRequired - * @NoCSRFRequired - * @PublicPage - */ + #[NoCSRFRequired] + #[NoAdminRequired] + #[PublicPage] + #[FrontpageRoute(verb: 'GET', url: '/css/stylesheet')] public function stylesheet(): TemplateResponse { $response = new TemplateResponse(Application::APP_ID, 'css/stylesheet', $this->getConfig(), 'blank'); diff --git a/lib/Controller/JsController.php b/lib/Controller/JsController.php index a1b26e3..d3c43db 100644 --- a/lib/Controller/JsController.php +++ b/lib/Controller/JsController.php @@ -29,6 +29,10 @@ use OCP\AppFramework\Http\TemplateResponse; use OCP\IRequest; use OCP\IUserSession; use OCP\L10N\IFactory; +use OCP\AppFramework\Http\Attribute\NoCSRFRequired; +use OCP\AppFramework\Http\Attribute\NoAdminRequired; +use OCP\AppFramework\Http\Attribute\PublicPage; +use OCP\AppFramework\Http\Attribute\FrontpageRoute; class JsController extends Controller { @@ -50,11 +54,10 @@ class JsController extends Controller $this->l10nFactory = $l10nFactory; } - /** - * @NoAdminRequired - * @NoCSRFRequired - * @PublicPage - */ + #[NoCSRFRequired] + #[NoAdminRequired] + #[PublicPage] + #[FrontpageRoute(verb: 'GET', url: '/js/script')] public function script(): TemplateResponse { $response = new TemplateResponse(Application::APP_ID, 'js/script', $this->getConfig(), 'blank'); @@ -63,11 +66,10 @@ class JsController extends Controller return $response; } - /** - * @NoAdminRequired - * @NoCSRFRequired - * @PublicPage - */ + #[NoCSRFRequired] + #[NoAdminRequired] + #[PublicPage] + #[FrontpageRoute(verb: 'GET', url: '/js/config')] public function config(): JSONResponse { return new JSONResponse($this->getConfig()); diff --git a/lib/Controller/NavController.php b/lib/Controller/NavController.php index 21fb23c..0ed0dea 100644 --- a/lib/Controller/NavController.php +++ b/lib/Controller/NavController.php @@ -28,6 +28,10 @@ use OCP\AppFramework\Http\JSONResponse; use OCP\IRequest; use OCP\IUserSession; use OCP\L10N\IFactory; +use OCP\AppFramework\Http\Attribute\NoCSRFRequired; +use OCP\AppFramework\Http\Attribute\NoAdminRequired; +use OCP\AppFramework\Http\Attribute\PublicPage; +use OCP\AppFramework\Http\Attribute\FrontpageRoute; class NavController extends Controller { @@ -43,11 +47,10 @@ class NavController extends Controller parent::__construct($appName, $request); } - /** - * @NoAdminRequired - * @NoCSRFRequired - * @PublicPage - */ + #[NoCSRFRequired] + #[NoAdminRequired] + #[PublicPage] + #[FrontpageRoute(verb: 'GET', url: '/nav/items')] public function items(): JSONResponse { $user = OC::$server[IUserSession::class]->getUser(); diff --git a/lib/Controller/PersonalSettingController.php b/lib/Controller/PersonalSettingController.php index e4f6331..5ac5a47 100644 --- a/lib/Controller/PersonalSettingController.php +++ b/lib/Controller/PersonalSettingController.php @@ -24,6 +24,9 @@ use OCP\AppFramework\Controller; use OCP\IConfig; use OCP\IRequest; use OCP\IUserSession; +use OCP\AppFramework\Http\Attribute\NoCSRFRequired; +use OCP\AppFramework\Http\Attribute\NoAdminRequired; +use OCP\AppFramework\Http\Attribute\FrontpageRoute; class PersonalSettingController extends Controller { @@ -37,13 +40,9 @@ class PersonalSettingController extends Controller parent::__construct($appName, $request); } - /** - * @NoAdminRequired - * @NoCSRFRequired - * - * @param mixed $name - * @param mixed $value - */ + #[NoCSRFRequired] + #[NoAdminRequired] + #[FrontpageRoute(verb: 'POST', url: '/personalSetting/valueSet')] public function valueSet($name, $value): array { $doSave = false; From 3058c225e0415a6135938101c7d1d1ad2f6a3764 Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Wed, 5 Mar 2025 21:55:53 +0100 Subject: [PATCH 03/14] style: apply php linter --- lib/AppInfo/Application.php | 63 ++++++++++---------- lib/Controller/AdminSettingController.php | 7 ++- lib/Controller/AppController.php | 14 ++--- lib/Controller/CssController.php | 11 ++-- lib/Controller/JsController.php | 26 ++++---- lib/Controller/NavController.php | 14 ++--- lib/Controller/PersonalSettingController.php | 9 +-- lib/Service/CategoryRepository.php | 3 +- lib/Settings/Admin.php | 4 +- lib/Settings/AdminSection.php | 7 +-- lib/Settings/Personal.php | 4 +- lib/Settings/PersonalSection.php | 7 +-- 12 files changed, 80 insertions(+), 89 deletions(-) diff --git a/lib/AppInfo/Application.php b/lib/AppInfo/Application.php index b812fd7..1990bb3 100644 --- a/lib/AppInfo/Application.php +++ b/lib/AppInfo/Application.php @@ -14,7 +14,6 @@ use OCP\AppFramework\Bootstrap\IBootstrap; use OCP\AppFramework\Bootstrap\IRegistrationContext; use OCP\IUserSession; use OCP\Util; -use Psr\Container\ContainerInterface; /** * class Application. @@ -26,6 +25,7 @@ class Application extends App implements IBootstrap public const APP_ID = 'side_menu'; public const APP_NAME = 'Custom menu'; + /** * @var OC\AllConfig */ @@ -41,14 +41,39 @@ class Application extends App implements IBootstrap */ protected $user; - /** - * {@inheritdoc} - */ public function __construct(array $urlParams = []) { parent::__construct(self::APP_ID, $urlParams); } + public function register(IRegistrationContext $context): void + { + $context->registerService('AppRepository', function () { + return new AppRepository(); + }); + + $context->registerService('CategoryRepository', function () { + return new CategoryRepository(); + }); + + $context->registerService('ConfigProxy', function () { + 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(); + } + protected function isEnabled(): bool { $enabled = true; @@ -97,38 +122,10 @@ class Application extends App implements IBootstrap $cache = $this->config->getAppValue(self::APP_ID, 'cache', '0'); foreach ($assets as $value) { - $route = OC::$server->getURLGenerator()->linkToRoute($value['route'], ['v' => $cache]); + $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 () { - return new AppRepository(); - }); - - $context->registerService('CategoryRepository', function () { - return new CategoryRepository(); - }); - - $context->registerService('ConfigProxy', function () { - 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(); - } } diff --git a/lib/Controller/AdminSettingController.php b/lib/Controller/AdminSettingController.php index 7632b4a..279a34c 100644 --- a/lib/Controller/AdminSettingController.php +++ b/lib/Controller/AdminSettingController.php @@ -1,4 +1,5 @@ config->setAppValue(Application::APP_ID, 'cache-categories', '[]'); @@ -51,7 +52,7 @@ class AdminSettingController extends Controller } #[NoCSRFRequired] - #[FrontpageRoute(verb: 'GET', url: '/admin/config/export')] + #[FrontpageRoute(verb: 'GET', url: '/admin/config/export')] public function exportConfiguration(): DataDownloadResponse { $keys = $this->config->getAppKeys(Application::APP_ID); diff --git a/lib/Controller/AppController.php b/lib/Controller/AppController.php index ea7d19e..f8cb357 100644 --- a/lib/Controller/AppController.php +++ b/lib/Controller/AppController.php @@ -1,4 +1,5 @@ getUser(); + $user = \OC::$server[IUserSession::class]->getUser(); $topMenuApps = $this->config->getAppValueArray('top-menu-apps', '[]'); $hiddenApps = $this->config->getAppValueArray('big-menu-hidden-apps', '[]'); $isForced = $this->config->getAppValueBool('force', '0'); @@ -75,7 +75,7 @@ class AppController extends Controller protected function redirectToApp($app, bool $isHref = false): RedirectResponse { if (!$isHref) { - $isIgnoreFrontController = true === OC::$server->getConfig()->getSystemValue( + $isIgnoreFrontController = true === \OC::$server->getConfig()->getSystemValue( 'htaccess.IgnoreFrontController', false ); diff --git a/lib/Controller/CssController.php b/lib/Controller/CssController.php index 7a186ae..e2c9e27 100644 --- a/lib/Controller/CssController.php +++ b/lib/Controller/CssController.php @@ -1,4 +1,5 @@ user = OC::$server[IUserSession::class]->getUser(); + $this->user = \OC::$server[IUserSession::class]->getUser(); } #[NoCSRFRequired] #[NoAdminRequired] #[PublicPage] - #[FrontpageRoute(verb: 'GET', url: '/css/stylesheet')] + #[FrontpageRoute(verb: 'GET', url: '/css/stylesheet')] public function stylesheet(): TemplateResponse { $response = new TemplateResponse(Application::APP_ID, 'css/stylesheet', $this->getConfig(), 'blank'); diff --git a/lib/Controller/JsController.php b/lib/Controller/JsController.php index d3c43db..8f06345 100644 --- a/lib/Controller/JsController.php +++ b/lib/Controller/JsController.php @@ -1,4 +1,5 @@ themingDefaults = $themingDefaults; - $this->user = OC::$server[IUserSession::class]->getUser(); + $this->user = \OC::$server[IUserSession::class]->getUser(); $this->config = $config; $this->l10nFactory = $l10nFactory; } @@ -57,7 +57,7 @@ class JsController extends Controller #[NoCSRFRequired] #[NoAdminRequired] #[PublicPage] - #[FrontpageRoute(verb: 'GET', url: '/js/script')] + #[FrontpageRoute(verb: 'GET', url: '/js/script')] public function script(): TemplateResponse { $response = new TemplateResponse(Application::APP_ID, 'js/script', $this->getConfig(), 'blank'); @@ -69,7 +69,7 @@ class JsController extends Controller #[NoCSRFRequired] #[NoAdminRequired] #[PublicPage] - #[FrontpageRoute(verb: 'GET', url: '/js/config')] + #[FrontpageRoute(verb: 'GET', url: '/js/config')] public function config(): JSONResponse { return new JSONResponse($this->getConfig()); @@ -111,10 +111,10 @@ class JsController extends Controller $targetBlankApps = $userTargetBlankApps; } - $isAvatarSet = OC::$server->getAvatarManager()->getAvatar($this->user->getUid())->exists(); + $isAvatarSet = \OC::$server->getAvatarManager()->getAvatar($this->user->getUid())->exists(); if ($useAvatar && $isAvatarSet) { - $avatar = OC::$server->getURLGenerator()->linkToRoute('core.avatar.getAvatar', [ + $avatar = \OC::$server->getURLGenerator()->linkToRoute('core.avatar.getAvatar', [ 'userId' => $this->user->getUid(), 'size' => 128, 'v' => $this->config->getUserValueInt($this->user, 'avatar', 'version', 0), @@ -122,13 +122,13 @@ class JsController extends Controller } if ($this->config->getAppValueBool('show-settings', '0')) { - $settingsNav = OC::$server->getNavigationManager()->getAll('settings'); + $settingsNav = \OC::$server->getNavigationManager()->getAll('settings'); if (isset($settingsNav['settings'])) { $settings = [ 'href' => $settingsNav['settings']['href'], 'name' => $settingsNav['settings']['name'], - 'avatar' => OC::$server->getURLGenerator()->linkToRoute('core.avatar.getAvatar', [ + 'avatar' => \OC::$server->getURLGenerator()->linkToRoute('core.avatar.getAvatar', [ 'userId' => $this->user->getUid(), 'size' => 32, 'v' => $this->config->getUserValueInt($this->user, 'avatar', 'version', 0), @@ -138,7 +138,7 @@ class JsController extends Controller } } - $indexUrl = OC::$server->getURLGenerator()->linkTo('', 'index.php'); + $indexUrl = \OC::$server->getURLGenerator()->linkTo('', 'index.php'); return [ 'opener-position' => $this->config->getAppValue('opener-position', 'before'), diff --git a/lib/Controller/NavController.php b/lib/Controller/NavController.php index 0ed0dea..1d90849 100644 --- a/lib/Controller/NavController.php +++ b/lib/Controller/NavController.php @@ -1,4 +1,5 @@ getUser(); + $user = \OC::$server[IUserSession::class]->getUser(); $items = []; if (!$user) { diff --git a/lib/Controller/PersonalSettingController.php b/lib/Controller/PersonalSettingController.php index 5ac5a47..482a7c6 100644 --- a/lib/Controller/PersonalSettingController.php +++ b/lib/Controller/PersonalSettingController.php @@ -1,4 +1,5 @@ url->imagePath(Application::APP_ID, 'icon.svg'); diff --git a/lib/Settings/Personal.php b/lib/Settings/Personal.php index efa5e16..c9f3459 100644 --- a/lib/Settings/Personal.php +++ b/lib/Settings/Personal.php @@ -1,4 +1,5 @@ url->imagePath(Application::APP_ID, 'icon.svg'); From 44fd4fab529432f1e0424ad0966b06843a352a34 Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Mon, 10 Mar 2025 18:41:09 +0100 Subject: [PATCH 04/14] fix(service): add service constructor arguments --- lib/AppInfo/Application.php | 34 ++++++++++++++++++++++++++++------ 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/lib/AppInfo/Application.php b/lib/AppInfo/Application.php index 1990bb3..21fbe07 100644 --- a/lib/AppInfo/Application.php +++ b/lib/AppInfo/Application.php @@ -3,6 +3,7 @@ namespace OCA\SideMenu\AppInfo; use OC; +use OC\App\AppStore\Fetcher\CategoryFetcher; use OC\Security\CSP\ContentSecurityPolicyNonceManager; use OC\User\User; use OCA\SideMenu\Service\AppRepository; @@ -12,8 +13,13 @@ use OCP\AppFramework\App; use OCP\AppFramework\Bootstrap\IBootContext; use OCP\AppFramework\Bootstrap\IBootstrap; use OCP\AppFramework\Bootstrap\IRegistrationContext; +use OCP\EventDispatcher\IEventDispatcher; +use OCP\IConfig; +use OCP\INavigationManager; use OCP\IUserSession; +use OCP\L10N\IFactory; use OCP\Util; +use Psr\Container\ContainerInterface; /** * class Application. @@ -48,16 +54,32 @@ class Application extends App implements IBootstrap public function register(IRegistrationContext $context): void { - $context->registerService('AppRepository', function () { - return new AppRepository(); + $context->registerService(CategoryRepository::class, function (ContainerInterface $c) { + return new CategoryRepository( + $c->get(CategoryFetcher::class), + $c->get(ConfigProxy::class), + $c->get(IConfig::class), + $c->get(IFactory::class), + $c->get(IUserSession::class) + ); }); - $context->registerService('CategoryRepository', function () { - return new CategoryRepository(); + $context->registerService(AppRepository::class, function (ContainerInterface $c) { + return new AppRepository( + $c->get(\OC_App::class), + $c->get(INavigationManager::class), + $c->get(IFactory::class), + $c->get(ConfigProxy::class), + $c->get(CategoryRepository::class), + $c->get(IEventDispatcher::class), + $c->get(IUserSession::class) + ); }); - $context->registerService('ConfigProxy', function () { - return new ConfigProxy(); + $context->registerService(ConfigProxy::class, function (ContainerInterface $c) { + return new ConfigProxy( + $c->get(IConfig::class), + ); }); } From 7ab3269fbe910d3a6b1613feb8a4f4121b6b7613 Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Mon, 10 Mar 2025 18:42:12 +0100 Subject: [PATCH 05/14] fix(settings): remove non-existing and unused ILogger service --- lib/Settings/Admin.php | 1 - lib/Settings/Personal.php | 1 - 2 files changed, 2 deletions(-) diff --git a/lib/Settings/Admin.php b/lib/Settings/Admin.php index 1a5d535..539a5b1 100644 --- a/lib/Settings/Admin.php +++ b/lib/Settings/Admin.php @@ -35,7 +35,6 @@ class Admin implements ISettings { public function __construct( protected IL10N $l, - protected ILogger $logger, protected ConfigProxy $config, protected AppRepository $appRepository, protected CategoryRepository $categoryRepository, diff --git a/lib/Settings/Personal.php b/lib/Settings/Personal.php index c9f3459..888b5ac 100644 --- a/lib/Settings/Personal.php +++ b/lib/Settings/Personal.php @@ -32,7 +32,6 @@ class Personal implements ISettings { public function __construct( protected IL10N $l, - protected ILogger $logger, protected ConfigProxy $config, protected IUserSession $userSession, protected AppRepository $appRepository From 214cdaa33047c1339f0e01477f881fa50b491948 Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Mon, 10 Mar 2025 18:45:26 +0100 Subject: [PATCH 06/14] apply lint (php) --- lib/AppInfo/Application.php | 2 +- lib/Settings/Admin.php | 1 - lib/Settings/Personal.php | 1 - 3 files changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/AppInfo/Application.php b/lib/AppInfo/Application.php index 21fbe07..306d0ea 100644 --- a/lib/AppInfo/Application.php +++ b/lib/AppInfo/Application.php @@ -69,7 +69,7 @@ class Application extends App implements IBootstrap $c->get(\OC_App::class), $c->get(INavigationManager::class), $c->get(IFactory::class), - $c->get(ConfigProxy::class), + $c->get(ConfigProxy::class), $c->get(CategoryRepository::class), $c->get(IEventDispatcher::class), $c->get(IUserSession::class) diff --git a/lib/Settings/Admin.php b/lib/Settings/Admin.php index 539a5b1..7796f72 100644 --- a/lib/Settings/Admin.php +++ b/lib/Settings/Admin.php @@ -28,7 +28,6 @@ use OCA\SideMenu\Service\LangRepository; use OCA\Theming\ThemingDefaults; use OCP\AppFramework\Http\TemplateResponse; use OCP\IL10N; -use OCP\ILogger; use OCP\Settings\ISettings; class Admin implements ISettings diff --git a/lib/Settings/Personal.php b/lib/Settings/Personal.php index 888b5ac..2aebec8 100644 --- a/lib/Settings/Personal.php +++ b/lib/Settings/Personal.php @@ -24,7 +24,6 @@ use OCA\SideMenu\Service\AppRepository; use OCA\SideMenu\Service\ConfigProxy; use OCP\AppFramework\Http\TemplateResponse; use OCP\IL10N; -use OCP\ILogger; use OCP\IUserSession; use OCP\Settings\ISettings; From a15c281aaadb5bc5b8cfdba11216162df2d1b5d1 Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Mon, 10 Mar 2025 19:05:42 +0100 Subject: [PATCH 07/14] fix(appinfo): add cdata and fix urls --- appinfo/info.xml | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/appinfo/info.xml b/appinfo/info.xml index 32c8178..beb19ab 100644 --- a/appinfo/info.xml +++ b/appinfo/info.xml @@ -1,6 +1,5 @@ - - + + side_menu Custom menu Modify the display of the menu. @@ -17,7 +16,7 @@ You can report a bug or request a feature by opening an issue. Requirements: -* PHP >= 8.0 +* PHP >= 8.1 * App `theming` enabled If you like this application and if you want to support the development: @@ -32,9 +31,9 @@ Notice 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/). ]]> - 4.0.1 + 4.1.0 agpl - Simon Vieille + Simon Vieille SideMenu https://deblan.gitnet.page/side_menu_doc/ @@ -42,20 +41,20 @@ In case of downtime, you can download **Custom Menu** from [here](https://kim.de customization https://gitnet.fr/deblan/side_menu - https://matrix.to/#/!TFPucDATKODpHNVAtu:neutralnetwork.org?via=neutralnetwork.org + https://gitnet.fr/deblan/side_menu/issues https://gitnet.fr/deblan/side_menu - https://gitnet.fr/deblan/side_menu/raw/branch/master/screenshots/nc19_default_menu.png - https://gitnet.fr/deblan/side_menu/raw/branch/master/screenshots/admin_settings.png - https://gitnet.fr/deblan/side_menu/raw/branch/master/screenshots/n19_big_menu.png - https://gitnet.fr/deblan/side_menu/raw/branch/master/screenshots/nc18_menu_always_displayed.png - https://gitnet.fr/deblan/side_menu/raw/branch/master/screenshots/nc20_big_menu_responsive.png - https://gitnet.fr/deblan/side_menu/raw/branch/master/screenshots/personal_settings.png - https://gitnet.fr/deblan/side_menu/raw/branch/master/screenshots/nc25_big_menu.png - https://gitnet.fr/deblan/side_menu/raw/branch/master/screenshots/nc25_default_menu.png + + + + + + + + - - + + OCA\SideMenu\Settings\Admin From 0edde4b9b977583d1d51565703c6f074fc8f1abd Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Mon, 10 Mar 2025 19:08:16 +0100 Subject: [PATCH 08/14] fix(ci): add woodpecker 3 syntax --- .woodpecker/.publish.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.woodpecker/.publish.yml b/.woodpecker/.publish.yml index 2a4776b..d369dcf 100644 --- a/.woodpecker/.publish.yml +++ b/.woodpecker/.publish.yml @@ -18,9 +18,12 @@ steps: "Create signature": image: nextcloud:25 - secrets: [app_certificate, app_public_certificate] volumes: *volumes environment: + APP_CERTIFICATE: + from_secret: app_certificate + APP_PUBLIC_CERTIFICATE: + from_secret: app_public_certificate SQLITE_DATABASE: /var/www/data/data.db NEXTCLOUD_ADMIN_USER: admin NEXTCLOUD_ADMIN_PASSWORD: admin @@ -39,7 +42,9 @@ steps: "Create package": image: deblan/php:8.3 volumes: *volumes - secrets: [app_certificate] + environment: + APP_CERTIFICATE: + from_secret: app_certificate commands: - cd "/builds/$CI_COMMIT_SHA" - apt-get update From 45c7bd361f22316554fbd06001629b198e5a1e4b Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Mon, 10 Mar 2025 19:17:04 +0100 Subject: [PATCH 09/14] update changelog --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 80fe366..d17890b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ ## [Unreleased] +## 4.1.0 +### Added +* add compatibility with NC31 +### Fixed +* fix(service): add service constructor arguments +* fix(settings): remove non-existing and unused ILogger service +### Changed +* refactor(controller): usage of attributes instead of annotations + ## 4.0.1 ### Fixed * fix top menu labels (fix #368) From 788affe386ca9061b09399a31a3791b3995a49da Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Wed, 12 Mar 2025 17:57:49 +0100 Subject: [PATCH 10/14] fix: add missing NoCSRFRequired import in CssController (#397) --- lib/AppInfo/Application.php | 6 +++++- lib/Controller/CssController.php | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/AppInfo/Application.php b/lib/AppInfo/Application.php index 306d0ea..c5181ef 100644 --- a/lib/AppInfo/Application.php +++ b/lib/AppInfo/Application.php @@ -144,7 +144,11 @@ class Application extends App implements IBootstrap $cache = $this->config->getAppValue(self::APP_ID, 'cache', '0'); foreach ($assets as $value) { - $route = \OC::$server->getURLGenerator()->linkToRoute($value['route'], ['v' => $cache]); + $route = \OC::$server->getURLGenerator()->linkToRoute( + $value['route'], + ['v' => $cache] + ); + $value['attr'][$value['route_attr']] = $route; Util::addHeader($value['type'], $value['attr'], ''); diff --git a/lib/Controller/CssController.php b/lib/Controller/CssController.php index e2c9e27..5b3a2dd 100644 --- a/lib/Controller/CssController.php +++ b/lib/Controller/CssController.php @@ -26,6 +26,7 @@ use OCA\SideMenu\Service\ConfigProxy; use OCA\Theming\ThemingDefaults; use OCP\AppFramework\Controller; use OCP\AppFramework\Http\Attribute\FrontpageRoute; +use OCP\AppFramework\Http\Attribute\NoCSRFRequired; use OCP\AppFramework\Http\Attribute\PublicPage; use OCP\AppFramework\Http\TemplateResponse; use OCP\IRequest; From ba737434e52948d7d648d6e1ef9b7031582ebc8c Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Wed, 12 Mar 2025 17:58:29 +0100 Subject: [PATCH 11/14] update changelog --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d17890b..23139eb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ ## [Unreleased] +### Fixed +* fix: add missing NoCSRFRequired import in CssController (#397) + ## 4.1.0 ### Added * add compatibility with NC31 From 2bdea0d828a9400f0924233efd9cee80767cd732 Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Wed, 12 Mar 2025 18:20:15 +0100 Subject: [PATCH 12/14] fix(SideMenu): ncApps must be an array (#369) --- src/SideMenu.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/SideMenu.vue b/src/SideMenu.vue index 2e8bfa3..00bd3d1 100644 --- a/src/SideMenu.vue +++ b/src/SideMenu.vue @@ -86,7 +86,7 @@ export default { }, methods: { retrieveApps() { - const ncApps = loadState('core', 'apps', {}) + const ncApps = loadState('core', 'apps', []) let orders = {} let finalApps = [] From 20946bcb061f1571aa7cd4fe7e32f3cec4604247 Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Wed, 12 Mar 2025 18:21:18 +0100 Subject: [PATCH 13/14] update changelog --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 23139eb..177c03f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,8 @@ ## [Unreleased] ### Fixed -* fix: add missing NoCSRFRequired import in CssController (#397) +* fix(CssController): add missing NoCSRFRequired import (#397) +* fix(SideMenu): ncApps must be an array (#369) ## 4.1.0 ### Added From e159aff3e7cf83a49db5c93f5e65df1963e052b2 Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Wed, 12 Mar 2025 18:35:34 +0100 Subject: [PATCH 14/14] release v4.1.1 --- CHANGELOG.md | 1 + appinfo/info.xml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 177c03f..d55690a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ ## [Unreleased] +## 4.1.1 ### Fixed * fix(CssController): add missing NoCSRFRequired import (#397) * fix(SideMenu): ncApps must be an array (#369) diff --git a/appinfo/info.xml b/appinfo/info.xml index beb19ab..d6a0f5f 100644 --- a/appinfo/info.xml +++ b/appinfo/info.xml @@ -31,7 +31,7 @@ Notice 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/). ]]> - 4.1.0 + 4.1.1 agpl Simon Vieille SideMenu