diff options
author | Carl Schwan <carl@carlschwan.eu> | 2022-05-20 17:07:21 +0200 |
---|---|---|
committer | Carl Schwan <carl@carlschwan.eu> | 2022-07-14 12:16:13 +0200 |
commit | 53db418ee90eb366dc4488afcb02c8a6d5085097 (patch) | |
tree | de00140c7fd92bf85bdf6853197abbf093396849 /apps/oauth2 | |
parent | d3f66e2310ef790794aba81f12d7ab6a035736c3 (diff) | |
download | nextcloud-server-53db418ee90eb366dc4488afcb02c8a6d5085097.tar.gz nextcloud-server-53db418ee90eb366dc4488afcb02c8a6d5085097.zip |
Cleanup oauth2 admin settings
- Use more vue components
- Add link to doc
Signed-off-by: Carl Schwan <carl@carlschwan.eu>
Diffstat (limited to 'apps/oauth2')
-rw-r--r-- | apps/oauth2/lib/Settings/Admin.php | 25 | ||||
-rw-r--r-- | apps/oauth2/src/App.vue | 32 | ||||
-rw-r--r-- | apps/oauth2/src/components/OAuthItem.vue | 17 | ||||
-rw-r--r-- | apps/oauth2/tests/Settings/AdminTest.php | 9 |
4 files changed, 60 insertions, 23 deletions
diff --git a/apps/oauth2/lib/Settings/Admin.php b/apps/oauth2/lib/Settings/Admin.php index ddf5302a1aa..aa2bd6db012 100644 --- a/apps/oauth2/lib/Settings/Admin.php +++ b/apps/oauth2/lib/Settings/Admin.php @@ -28,21 +28,23 @@ namespace OCA\OAuth2\Settings; use OCA\OAuth2\Db\ClientMapper; use OCP\AppFramework\Http\TemplateResponse; -use OCP\IInitialStateService; +use OCP\AppFramework\Services\IInitialState; use OCP\Settings\ISettings; +use OCP\IURLGenerator; class Admin implements ISettings { + private IInitialState $initialState; + private ClientMapper $clientMapper; + private IURLGenerator $urlGenerator; - /** @var IInitialStateService */ - private $initialStateService; - - /** @var ClientMapper */ - private $clientMapper; - - public function __construct(IInitialStateService $initialStateService, - ClientMapper $clientMapper) { - $this->initialStateService = $initialStateService; + public function __construct( + IInitialState $initialState, + ClientMapper $clientMapper, + IURLGenerator $urlGenerator + ) { + $this->initialState = $initialState; $this->clientMapper = $clientMapper; + $this->urlGenerator = $urlGenerator; } public function getForm(): TemplateResponse { @@ -58,7 +60,8 @@ class Admin implements ISettings { 'clientSecret' => $client->getSecret(), ]; } - $this->initialStateService->provideInitialState('oauth2', 'clients', $result); + $this->initialState->provideInitialState('clients', $result); + $this->initialState->provideInitialState('oauth2-doc-link', $this->urlGenerator->linkToDocs('admin-oauth2')); return new TemplateResponse( 'oauth2', diff --git a/apps/oauth2/src/App.vue b/apps/oauth2/src/App.vue index afb98ed77d2..3636a532ce1 100644 --- a/apps/oauth2/src/App.vue +++ b/apps/oauth2/src/App.vue @@ -20,11 +20,9 @@ - --> <template> - <div id="oauth2" class="section"> - <h2>{{ t('oauth2', 'OAuth 2.0 clients') }}</h2> - <p class="settings-hint"> - {{ t('oauth2', 'OAuth 2.0 allows external services to request access to {instanceName}.', { instanceName: OC.theme.name}) }} - </p> + <SettingsSection :title="t('oauth2', 'OAuth 2.0 clients')" + :description="t('oauth2', 'OAuth 2.0 allows external services to request access to {instanceName}.', { instanceName })" + :doc-url="oauthDocLink"> <table v-if="clients.length > 0" class="grid"> <thead> <tr> @@ -56,20 +54,28 @@ type="url" name="redirectUri" :placeholder="t('oauth2', 'Redirection URI')"> - <input type="submit" class="button" :value="t('oauth2', 'Add')"> + <Button class="inline-button"> + {{ t('oauth2', 'Add') }} + </Button> </form> - </div> + </SettingsSection> </template> <script> import axios from '@nextcloud/axios' import OAuthItem from './components/OAuthItem' import { generateUrl } from '@nextcloud/router' +import { getCapabilities } from '@nextcloud/capabilities' +import SettingsSection from '@nextcloud/vue/dist/Components/SettingsSection' +import Button from '@nextcloud/vue/dist/Components/Button' +import { loadState } from '@nextcloud/initial-state' export default { name: 'App', components: { OAuthItem, + SettingsSection, + Button, }, props: { clients: { @@ -85,8 +91,14 @@ export default { errorMsg: '', error: false, }, + oauthDocLink: loadState('oauth2', 'oauth2-doc-link'), } }, + computed: { + instanceName() { + return getCapabilities().theming.name + }, + }, methods: { deleteClient(id) { axios.delete(generateUrl('apps/oauth2/clients/{id}', { id })) @@ -122,4 +134,10 @@ export default { table { max-width: 800px; } + + /** Overwrite button height and position to be aligned with the text input */ + .inline-button { + min-height: 34px !important; + display: inline-flex !important; + } </style> diff --git a/apps/oauth2/src/components/OAuthItem.vue b/apps/oauth2/src/components/OAuthItem.vue index 72d04d2aac3..6f4c5ad0f7e 100644 --- a/apps/oauth2/src/components/OAuthItem.vue +++ b/apps/oauth2/src/components/OAuthItem.vue @@ -42,14 +42,29 @@ </table> </td> <td class="action-column"> - <span><a class="icon-delete has-tooltip" :title="t('oauth2', 'Delete')" @click="$emit('delete', id)" /></span> + <Button type="tertiary-no-background" + :aria-label="t('oauth2', 'Delete')" + @click="$emit('delete', id)"> + <template #icon> + <Delete :size="20" + :title="t('oauth2', 'Delete')" /> + </template> + </Button> </td> </tr> </template> <script> + +import Delete from 'vue-material-design-icons/Delete' +import Button from '@nextcloud/vue/dist/Components/Button' + export default { name: 'OAuthItem', + components: { + Delete, + Button, + }, props: { client: { type: Object, diff --git a/apps/oauth2/tests/Settings/AdminTest.php b/apps/oauth2/tests/Settings/AdminTest.php index 93a9c528420..fc5ebbb8365 100644 --- a/apps/oauth2/tests/Settings/AdminTest.php +++ b/apps/oauth2/tests/Settings/AdminTest.php @@ -26,7 +26,8 @@ namespace OCA\OAuth2\Tests\Settings; use OCA\OAuth2\Db\ClientMapper; use OCA\OAuth2\Settings\Admin; use OCP\AppFramework\Http\TemplateResponse; -use OCP\IInitialStateService; +use OCP\AppFramework\Services\IInitialState; +use OCP\IURLGenerator; use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; @@ -36,7 +37,7 @@ class AdminTest extends TestCase { private $admin; /** @var IInitialStateService|MockObject */ - private $initialStateService; + private $initialState; /** @var ClientMapper|MockObject */ private $clientMapper; @@ -44,10 +45,10 @@ class AdminTest extends TestCase { protected function setUp(): void { parent::setUp(); - $this->initialStateService = $this->createMock(IInitialStateService::class); + $this->initialState = $this->createMock(IInitialState::class); $this->clientMapper = $this->createMock(ClientMapper::class); - $this->admin = new Admin($this->initialStateService, $this->clientMapper); + $this->admin = new Admin($this->initialState, $this->clientMapper, $this->createMock(IURLGenerator::class)); } public function testGetForm() { |