diff options
author | John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com> | 2020-04-17 08:26:00 +0200 |
---|---|---|
committer | John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com> | 2020-04-17 08:26:00 +0200 |
commit | 111346e29d957c631bc7f892f597e3f805932435 (patch) | |
tree | 36b640f2097ce0a6e577adce010b2db045d63553 | |
parent | 872e74b8ec7a67dd6db597ea4e742c3faa169c93 (diff) |
Fix app init & initialstate
Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
-rw-r--r-- | appinfo/app.php | 54 | ||||
-rw-r--r-- | appinfo/info.xml | 10 | ||||
-rw-r--r-- | lib/AppInfo/Application.php | 70 | ||||
-rw-r--r-- | lib/Controller/PageController.php | 17 | ||||
-rw-r--r-- | src/models/rfcProps.js | 6 | ||||
-rw-r--r-- | src/services/initialstate.js | 42 |
6 files changed, 110 insertions, 89 deletions
diff --git a/appinfo/app.php b/appinfo/app.php index 3ad6cea1..f9e8863b 100644 --- a/appinfo/app.php +++ b/appinfo/app.php @@ -1,41 +1,27 @@ <?php /** - * Nextcloud - contacts + * @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com> * - * This file is licensed under the Affero General Public License version 3 or - * later. See the COPYING file. + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. * - * @author Hendrik Leppelsack <hendrik@leppelsack.de> - * @copyright Hendrik Leppelsack 2015 */ -namespace OCA\Contacts\AppInfo; - -use OCP\AppFramework\App; - -$app = new App('contacts'); -$container = $app->getContainer(); - -$container->query('OCP\INavigationManager')->add(function () use ($container) { - $urlGenerator = $container->query('OCP\IURLGenerator'); - $l10n = $container->query('OCP\IL10N'); - return [ - // the string under which your app will be referenced in Nextcloud - 'id' => 'contacts', - - // sorting weight for the navigation. The higher the number, the higher - // will it be listed in the navigation - 'order' => 4, - - // the route that will be shown on startup - 'href' => $urlGenerator->linkToRoute('contacts.page.index'), - - // the icon that will be shown in the navigation - // this file needs to exist in img/ - 'icon' => $urlGenerator->imagePath('contacts', 'app.svg'), +use OCA\Contacts\AppInfo\Application; - // the title of your application. This will be used in the - // navigation or on the settings page of your app - 'name' => $l10n->t('Contacts'), - ]; -}); +$app = \OC::$server->query(Application::class); +$app->register(); diff --git a/appinfo/info.xml b/appinfo/info.xml index 15e2b9a8..3be7b1d9 100644 --- a/appinfo/info.xml +++ b/appinfo/info.xml @@ -11,25 +11,33 @@ * 👥 **Sharing of Adressbooks!** You want to share your contacts with your friends or coworkers? No problem! * 🙈 **We’re not reinventing the wheel!** Based on the great and open SabreDAV library. </description> + <version>3.3.0</version> <licence>agpl</licence> + <author>John Molakvoæ</author> <author>Team Popcorn</author> + <documentation> <user>https://docs.nextcloud.com/server/stable/user_manual/pim/contacts.html</user> <admin>https://docs.nextcloud.com/server/stable/admin_manual/configuration_server/occ_command.html?highlight=occ%20commands#dav-label</admin> <developer>https://github.com/nextcloud/contacts#build-the-app</developer> </documentation> + <screenshot>https://raw.githubusercontent.com/nextcloud/screenshots/master/apps/Contacts/contacts.png</screenshot> + <category>office</category> <category>social</category> <category>organization</category> + <website>https://github.com/nextcloud/contacts#readme</website> <bugs>https://github.com/nextcloud/contacts/issues</bugs> <repository type="git">https://github.com/nextcloud/contacts.git</repository> - <screenshot>https://raw.githubusercontent.com/nextcloud/screenshots/master/apps/Contacts/contacts.png</screenshot> + + <dependencies> <nextcloud min-version="17" max-version="19" /> </dependencies> + <contactsmenu> <provider>OCA\Contacts\ContactsMenu\Providers\DetailsProvider</provider> </contactsmenu> diff --git a/lib/AppInfo/Application.php b/lib/AppInfo/Application.php new file mode 100644 index 00000000..3f382cf9 --- /dev/null +++ b/lib/AppInfo/Application.php @@ -0,0 +1,70 @@ +<?php +/** + * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com> + * + * @author John Molakvoæ <skjnldsv@protonmail.com> + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ +namespace OCA\Contacts\AppInfo; +use OCP\AppFramework\App; +use OCP\IURLGenerator; +use OCP\IL10N; +use OCP\INavigationManager; + +class Application extends App { + + const APP_ID = 'contacts'; + + public function __construct() { + parent::__construct(self::APP_ID); + } + + public function register() { + $server = $this->getContainer()->getServer(); + + /** @var INavigationManager $navigationManager */ + $navigationManager = $server->query(INavigationManager::class); + + /** @var IURLGenerator $urlGenerator */ + $urlGenerator = $server->query(IURLGenerator::class); + + /** @var IL10N $l10n */ + $l10n = $server->getL10N(self::APP_ID); + + $navigationManager->add([ + // the string under which your app will be referenced in Nextcloud + 'id' => self::APP_ID, + + // sorting weight for the navigation. The higher the number, the higher + // will it be listed in the navigation + 'order' => 4, + + // the route that will be shown on startup + 'href' => $urlGenerator->linkToRoute('contacts.page.index'), + + // the icon that will be shown in the navigation + // this file needs to exist in img/ + 'icon' => $urlGenerator->imagePath(self::APP_ID, 'app.svg'), + + // the title of your application. This will be used in the + // navigation or on the settings page of your app + 'name' => $l10n->t('Contacts'), + ]); + + } +} diff --git a/lib/Controller/PageController.php b/lib/Controller/PageController.php index add97dfb..4878e283 100644 --- a/lib/Controller/PageController.php +++ b/lib/Controller/PageController.php @@ -25,7 +25,7 @@ namespace OCA\Contacts\Controller; use OCP\AppFramework\Controller; use OCP\AppFramework\Http\TemplateResponse; -// use OCP\IInitialStateService; +use OCP\IInitialStateService; use OCP\IConfig; use OCP\L10N\IFactory; use OCP\IRequest; @@ -45,12 +45,12 @@ class PageController extends Controller { public function __construct(string $AppName, IRequest $request, IConfig $config, - // IInitialStateService $initialStateService, + IInitialStateService $initialStateService, IFactory $languageFactory) { parent::__construct($AppName, $request); $this->appName = $AppName; - // $this->initialStateService = $initialStateService; + $this->initialStateService = $initialStateService; $this->languageFactory = $languageFactory; $this->config = $config; } @@ -64,12 +64,9 @@ class PageController extends Controller { public function index(): TemplateResponse { $locales = $this->languageFactory->findAvailableLocales(); $defaultProfile = $this->config->getAppValue($this->appName, 'defaultProfile', 'HOME'); - // TODO: use initialStateService once min-version is 16! - // $this->initialStateService->provideInitialState($this->appName, 'locales', $locales); - // $this->initialStateService->provideInitialState($this->appName, 'defaultProfile', $defaultProfile); - return new TemplateResponse( - 'contacts', - 'main', - ['locales' => json_encode($locales), 'defaultProfile'=> json_encode($defaultProfile)]); // templates/main.php + + $this->initialStateService->provideInitialState($this->appName, 'locales', $locales); + $this->initialStateService->provideInitialState($this->appName, 'defaultProfile', $defaultProfile); + return new TemplateResponse($this->appName, 'main'); } } diff --git a/src/models/rfcProps.js b/src/models/rfcProps.js index fcf44247..e74d17c5 100644 --- a/src/models/rfcProps.js +++ b/src/models/rfcProps.js @@ -20,8 +20,7 @@ * */ import { VCardTime } from 'ical.js' -// import { loadState } from '@nextcloud/initial-state' -import { loadState } from '../services/initialstate' +import { loadState } from '@nextcloud/initial-state' import ActionCopyNtoFN from '../components/Actions/ActionCopyNtoFN' import ActionToggleYear from '../components/Actions/ActionToggleYear' @@ -37,6 +36,9 @@ const locales = localesState })) : [] +console.debug('Initial state loaded', 'defaultProfileState', defaultProfileState) +console.debug('Initial state loaded', 'localesState', localesState) + const properties = { nickname: { readableName: t('contacts', 'Nickname'), diff --git a/src/services/initialstate.js b/src/services/initialstate.js deleted file mode 100644 index 6687236f..00000000 --- a/src/services/initialstate.js +++ /dev/null @@ -1,42 +0,0 @@ -/** - * @copyright Copyright (c) 2019 Roeland Jago Douma <roeland@famdouma.nl> - * - * @author Roeland Jago Douma <roeland@famdouma.nl> - * - * @license GNU AGPL version 3 or any later version - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - -/** - * @namespace OCP.InitialState - */ - -export function loadState(app, key) { - const elem = document.querySelector(`#initial-state-${app}-${key}`) - if (elem === null) { - const msg = `Could not find initial state ${key} of ${app}` - console.debug(msg) - throw new Error(msg) - } - - try { - return JSON.parse(atob(elem.value)) - } catch (e) { - const msg = `Could not parse initial state ${key} of ${app}` - console.debug(msg) - throw new Error(msg) - } -} |