forked from nextcloud/server
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Port admin federated files sharing to vue
Signed-off-by: Carl Schwan <carl@carlschwan.eu>
- Loading branch information
1 parent
87ce03d
commit 2727c57
Showing
12 changed files
with
281 additions
and
127 deletions.
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
129 changes: 129 additions & 0 deletions
129
apps/federatedfilesharing/src/components/AdminSettings.vue
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,129 @@ | ||
<!-- | ||
- @copyright 2022 Carl Schwan <carl@carlschwan.eu> | ||
- | ||
- @author Carl Schwan <carl@carlschwan.eu> | ||
- | ||
- @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/>. | ||
- | ||
--> | ||
|
||
<template> | ||
<SettingsSection :title="t('federatedfilesharing', 'Federated Cloud Sharing')" | ||
:description="t('federatedfilesharing', 'Adjust how people can share between servers. This includes shares between users on this server as well if they are using federated sharing.')" | ||
:doc-url="sharingFederatedDocUrl"> | ||
<CheckboxRadioSwitch type="switch" | ||
:checked.sync="outgoingServer2serverShareEnabled" | ||
@update:checked="update('outgoing_server2server_share_enabled', outgoingServer2serverShareEnabled)"> | ||
{{ t('federatedfilesharing', 'Allow users on this server to send shares to other servers (this option also allows WebDAV access to public shares)') }} | ||
</CheckboxRadioSwitch> | ||
|
||
<CheckboxRadioSwitch type="switch" | ||
:checked.sync="incomingServer2serverShareEnabled" | ||
@update:checked="update('incoming_server2server_share_enabled', incomingServer2serverShareEnabled)"> | ||
{{ t('federatedfilesharing', 'Allow users on this server to receive shares from other servers') }} | ||
</CheckboxRadioSwitch> | ||
|
||
<CheckboxRadioSwitch v-if="federatedGroupSharingSupported" | ||
type="switch" | ||
:checked.sync="outgoingServer2serverGroupShareEnabled" | ||
@update:checked="update('outgoing_server2server_group_share_enabled', outgoingServer2serverGroupShareEnabled)"> | ||
{{ t('federatedfilesharing', 'Allow users on this server to send shares to groups on other servers') }} | ||
</CheckboxRadioSwitch> | ||
|
||
<CheckboxRadioSwitch v-if="federatedGroupSharingSupported" | ||
type="switch" | ||
:checked.sync="incomingServer2serverGroupShareEnabled" | ||
@update:checked="update('incoming_server2server_group_share_enabled', incomingServer2serverGroupShareEnabled)"> | ||
{{ t('federatedfilesharing', 'Allow users on this server to receive group shares from other servers') }} | ||
</CheckboxRadioSwitch> | ||
|
||
<CheckboxRadioSwitch type="switch" | ||
:checked.sync="lookupServerEnabled" | ||
@update:checked="update('lookupServerEnabled', lookupServerEnabled)"> | ||
{{ t('federatedfilesharing', 'Search global and public address book for users') }} | ||
</CheckboxRadioSwitch> | ||
|
||
<CheckboxRadioSwitch type="switch" | ||
:checked.sync="lookupServerUploadEnabled" | ||
@update:checked="update('lookupServerUploadEnabled', lookupServerUploadEnabled)"> | ||
{{ t('federatedfilesharing', 'Allow users to publish their data to a global and public address book') }} | ||
</CheckboxRadioSwitch> | ||
</SettingsSection> | ||
</template> | ||
|
||
<script> | ||
import CheckboxRadioSwitch from '@nextcloud/vue/dist/Components/CheckboxRadioSwitch' | ||
import SettingsSection from '@nextcloud/vue/dist/Components/SettingsSection' | ||
import { loadState } from '@nextcloud/initial-state' | ||
import { showError } from '@nextcloud/dialogs' | ||
import axios from '@nextcloud/axios' | ||
import { generateOcsUrl } from '@nextcloud/router' | ||
import confirmPassword from '@nextcloud/password-confirmation' | ||
|
||
export default { | ||
name: 'AdminSettings', | ||
|
||
components: { | ||
CheckboxRadioSwitch, | ||
SettingsSection, | ||
}, | ||
|
||
data() { | ||
return { | ||
outgoingServer2serverShareEnabled: loadState('federatedfilesharing', 'outgoingServer2serverShareEnabled'), | ||
incomingServer2serverShareEnabled: loadState('federatedfilesharing', 'incomingServer2serverShareEnabled'), | ||
outgoingServer2serverGroupShareEnabled: loadState('federatedfilesharing', 'outgoingServer2serverGroupShareEnabled'), | ||
incomingServer2serverGroupShareEnabled: loadState('federatedfilesharing', 'incomingServer2serverGroupShareEnabled'), | ||
federatedGroupSharingSupported: loadState('federatedfilesharing', 'federatedGroupSharingSupported'), | ||
lookupServerEnabled: loadState('federatedfilesharing', 'lookupServerEnabled'), | ||
lookupServerUploadEnabled: loadState('federatedfilesharing', 'lookupServerUploadEnabled'), | ||
internalOnly: loadState('federatedfilesharing', 'internalOnly'), | ||
sharingFederatedDocUrl: loadState('federatedfilesharing', 'sharingFederatedDocUrl'), | ||
} | ||
}, | ||
methods: { | ||
async update(key, value) { | ||
await confirmPassword() | ||
|
||
const url = generateOcsUrl('/apps/provisioning_api/api/v1/config/apps/{appId}/{key}', { | ||
appId: 'files_sharing', | ||
key, | ||
}) | ||
|
||
const stringValue = value ? 'yes' : 'no' | ||
try { | ||
const { data } = await axios.post(url, { | ||
value: stringValue, | ||
}) | ||
this.handleResponse({ | ||
status: data.ocs?.meta?.status, | ||
}) | ||
} catch (e) { | ||
this.handleResponse({ | ||
errorMessage: t('federatedfilesharing', 'Unable to update federated files sharing config'), | ||
error: e, | ||
}) | ||
} | ||
}, | ||
async handleResponse({ status, errorMessage, error }) { | ||
if (status !== 'ok') { | ||
showError(errorMessage) | ||
console.error(errorMessage, error) | ||
} | ||
}, | ||
} | ||
} | ||
</script> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
/** | ||
* @copyright 2022 Carl Schwan <carl@carlschwan.eu> | ||
* | ||
* @author Carl Schwan <carl@carlschwan.eu> | ||
* | ||
* @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/>. | ||
* | ||
*/ | ||
|
||
import Vue from 'vue' | ||
import { getRequestToken } from '@nextcloud/auth' | ||
import { translate as t } from '@nextcloud/l10n' | ||
import '@nextcloud/dialogs/styles/toast.scss' | ||
import { loadState } from '@nextcloud/initial-state' | ||
|
||
import AdminSettings from './components/AdminSettings' | ||
|
||
__webpack_nonce__ = btoa(getRequestToken()) | ||
|
||
Vue.mixin({ | ||
methods: { | ||
t, | ||
}, | ||
}) | ||
|
||
const internalOnly = loadState('federatedfilesharing', 'internalOnly', false) | ||
|
||
if (!internalOnly) { | ||
const AdminSettingsView = Vue.extend(AdminSettings) | ||
new AdminSettingsView().$mount('#vue-admin-federated') | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,79 +1,26 @@ | ||
<?php | ||
/** @var \OCP\IL10N $l */ | ||
/** @var array $_ */ | ||
script('federatedfilesharing', 'settings-admin'); | ||
style('federatedfilesharing', 'settings-admin'); | ||
?> | ||
|
||
<?php if ($_['internalOnly'] === false): ?> | ||
|
||
<div id="fileSharingSettings" class="section"> | ||
<h2> | ||
<?php p($l->t('Federated Cloud Sharing'));?> | ||
</h2> | ||
<a target="_blank" rel="noreferrer noopener" class="icon-info svg" | ||
title="<?php p($l->t('Open documentation'));?>" | ||
href="<?php p(link_to_docs('admin-sharing-federated')); ?>"></a> | ||
/* | ||
* @copyright 2022 Carl Schwan <carl@carlschwan.eu> | ||
* | ||
* @author Carl Schwan <carl@carlschwan.eu> | ||
* | ||
* @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/>. | ||
*/ | ||
|
||
<p class="settings-hint"><?php p($l->t('Adjust how people can share between servers. This includes shares between users on this server as well if they are using federated sharing.')); ?></p> | ||
|
||
<p> | ||
<input type="checkbox" name="outgoing_server2server_share_enabled" id="outgoingServer2serverShareEnabled" class="checkbox" | ||
value="1" <?php if ($_['outgoingServer2serverShareEnabled']) { | ||
print_unescaped('checked="checked"'); | ||
} ?> /> | ||
<label for="outgoingServer2serverShareEnabled"> | ||
<?php p($l->t('Allow users on this server to send shares to other servers (this option also allows WebDAV access to public shares)'));?> | ||
</label> | ||
</p> | ||
<p> | ||
<input type="checkbox" name="incoming_server2server_share_enabled" id="incomingServer2serverShareEnabled" class="checkbox" | ||
value="1" <?php if ($_['incomingServer2serverShareEnabled']) { | ||
print_unescaped('checked="checked"'); | ||
} ?> /> | ||
<label for="incomingServer2serverShareEnabled"> | ||
<?php p($l->t('Allow users on this server to receive shares from other servers'));?> | ||
</label><br/> | ||
</p> | ||
<?php if ($_['federatedGroupSharingSupported']): ?> | ||
<p> | ||
<input type="checkbox" name="outgoing_server2server_group_share_enabled" id="outgoingServer2serverGroupShareEnabled" class="checkbox" | ||
value="1" <?php if ($_['outgoingServer2serverGroupShareEnabled']) { | ||
print_unescaped('checked="checked"'); | ||
} ?> /> | ||
<label for="outgoingServer2serverGroupShareEnabled"> | ||
<?php p($l->t('Allow users on this server to send shares to groups on other servers'));?> | ||
</label> | ||
</p> | ||
<p> | ||
<input type="checkbox" name="incoming_server2server_group_share_enabled" id="incomingServer2serverGroupShareEnabled" class="checkbox" | ||
value="1" <?php if ($_['incomingServer2serverGroupShareEnabled']) { | ||
print_unescaped('checked="checked"'); | ||
} ?> /> | ||
<label for="incomingServer2serverGroupShareEnabled"> | ||
<?php p($l->t('Allow users on this server to receive group shares from other servers'));?> | ||
</label><br/> | ||
</p> | ||
<?php endif; ?> | ||
<p> | ||
<input type="checkbox" name="lookupServerEnabled" id="lookupServerEnabled" class="checkbox" | ||
value="1" <?php if ($_['lookupServerEnabled']) { | ||
print_unescaped('checked="checked"'); | ||
} ?> /> | ||
<label for="lookupServerEnabled"> | ||
<?php p($l->t('Search global and public address book for users'));?> | ||
</label><br/> | ||
</p> | ||
<p> | ||
<input type="checkbox" name="lookupServerUploadEnabled" id="lookupServerUploadEnabled" class="checkbox" | ||
value="1" <?php if ($_['lookupServerUploadEnabled']) { | ||
print_unescaped('checked="checked"'); | ||
} ?> /> | ||
<label for="lookupServerUploadEnabled"> | ||
<?php p($l->t('Allow users to publish their data to a global and public address book'));?> | ||
</label><br/> | ||
</p> | ||
|
||
</div> | ||
\OCP\Util::addScript('federatedfilesharing', 'vue-settings-admin'); | ||
?> | ||
|
||
<?php endif; ?> | ||
<div id="vue-admin-federated"></div> |
Oops, something went wrong.