mirror of
https://github.com/nextcloud/server.git
synced 2026-05-28 04:32:30 -04:00
feat(files_sharing): Add toggle for federated share display area
Signed-off-by: nfebe <fenn25.fn@gmail.com>
This commit is contained in:
parent
87bad33496
commit
1c50329fdb
4 changed files with 47 additions and 10 deletions
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors
|
||||
* SPDX-FileCopyrightText: 2016 ownCloud, Inc.
|
||||
|
|
@ -37,6 +38,7 @@ use OCP\AppFramework\Bootstrap\IBootContext;
|
|||
use OCP\AppFramework\Bootstrap\IBootstrap;
|
||||
use OCP\AppFramework\Bootstrap\IRegistrationContext;
|
||||
use OCP\AppFramework\Http\Events\BeforeTemplateRenderedEvent;
|
||||
use OCP\AppFramework\Services\IInitialState;
|
||||
use OCP\Collaboration\Resources\LoadAdditionalScriptsEvent as ResourcesLoadAdditionalScriptsEvent;
|
||||
use OCP\EventDispatcher\IEventDispatcher;
|
||||
use OCP\Federation\ICloudIdManager;
|
||||
|
|
@ -47,6 +49,7 @@ use OCP\Files\Events\Node\BeforeNodeReadEvent;
|
|||
use OCP\Group\Events\GroupChangedEvent;
|
||||
use OCP\Group\Events\GroupDeletedEvent;
|
||||
use OCP\Group\Events\UserAddedEvent;
|
||||
use OCP\IAppConfig;
|
||||
use OCP\IDBConnection;
|
||||
use OCP\IGroup;
|
||||
use OCP\Share\Events\ShareCreatedEvent;
|
||||
|
|
@ -111,6 +114,9 @@ class Application extends App implements IBootstrap {
|
|||
public function boot(IBootContext $context): void {
|
||||
$context->injectFn([$this, 'registerMountProviders']);
|
||||
$context->injectFn([$this, 'registerEventsScripts']);
|
||||
$context->injectFn(function (IInitialState $initialState, IAppConfig $appConfig) {
|
||||
$initialState->provideInitialState('showFederatedSharesAsInternal', $appConfig->getValueBool(self::APP_ID, 'show_federated_shares_as_internal', false));
|
||||
});
|
||||
|
||||
Helper::registerHooks();
|
||||
|
||||
|
|
|
|||
|
|
@ -194,11 +194,11 @@ export default {
|
|||
|
||||
let shareType = []
|
||||
|
||||
const remoteTypes = [ShareType.Remote, ShareType.RemoteGroup]
|
||||
|
||||
if (this.isExternal) {
|
||||
shareType.push(ShareType.Remote)
|
||||
shareType.push(ShareType.RemoteGroup)
|
||||
shareType.push(...remoteTypes)
|
||||
} else {
|
||||
// Merge shareType array
|
||||
shareType = shareType.concat([
|
||||
ShareType.User,
|
||||
ShareType.Group,
|
||||
|
|
@ -209,10 +209,9 @@ export default {
|
|||
ShareType.ScienceMesh,
|
||||
])
|
||||
|
||||
}
|
||||
|
||||
if (getCapabilities().files_sharing.public.enabled === true && this.isExternal) {
|
||||
shareType.push(ShareType.Email)
|
||||
if (this.config.showFederatedSharesAsInternal) {
|
||||
shareType.push(...remoteTypes)
|
||||
}
|
||||
}
|
||||
|
||||
let request = null
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
* SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
*/
|
||||
import { getCapabilities } from '@nextcloud/capabilities'
|
||||
import { loadState } from '@nextcloud/initial-state'
|
||||
|
||||
type PasswordPolicyCapabilities = {
|
||||
enforceNonCommonPassword: boolean
|
||||
|
|
@ -306,4 +307,14 @@ export default class Config {
|
|||
return this._capabilities?.files_sharing?.public?.custom_tokens
|
||||
}
|
||||
|
||||
/**
|
||||
* Show federated shares as internal shares
|
||||
* @return {boolean}
|
||||
*/
|
||||
get showFederatedSharesAsInternal(): boolean {
|
||||
const showFederatedSharesAsInternal = loadState('files_sharing', 'showFederatedSharesAsInternal', false)
|
||||
|
||||
return !!showFederatedSharesAsInternal
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@
|
|||
:link-shares="linkShares"
|
||||
:reshare="reshare"
|
||||
:shares="shares"
|
||||
:placeholder="t('files_sharing', 'Share with accounts and teams')"
|
||||
:placeholder="internalShareInputPlaceholder"
|
||||
@open-sharing-details="toggleShareDetailsView" />
|
||||
|
||||
<!-- other shares list -->
|
||||
|
|
@ -90,7 +90,7 @@
|
|||
:file-info="fileInfo"
|
||||
:link-shares="linkShares"
|
||||
:is-external="true"
|
||||
:placeholder="t('files_sharing', 'Email, federated cloud id')"
|
||||
:placeholder="externalShareInputPlaceholder"
|
||||
:reshare="reshare"
|
||||
:shares="shares"
|
||||
@open-sharing-details="toggleShareDetailsView" />
|
||||
|
|
@ -249,6 +249,18 @@ export default {
|
|||
return !!(this.fileInfo.permissions & OC.PERMISSION_SHARE)
|
||||
|| !!(this.reshare && this.reshare.hasSharePermission && this.config.isResharingAllowed)
|
||||
},
|
||||
|
||||
internalShareInputPlaceholder() {
|
||||
return this.config.showFederatedSharesAsInternal
|
||||
? t('files_sharing', 'Share with accounts, teams, federated cloud id')
|
||||
: t('files_sharing', 'Share with accounts and teams')
|
||||
},
|
||||
|
||||
externalShareInputPlaceholder() {
|
||||
return this.config.showFederatedSharesAsInternal
|
||||
? t('files_sharing', 'Email')
|
||||
: t('files_sharing', 'Email, federated cloud id')
|
||||
},
|
||||
},
|
||||
|
||||
methods: {
|
||||
|
|
@ -369,7 +381,11 @@ export default {
|
|||
if ([ShareType.Link, ShareType.Email].includes(share.type)) {
|
||||
this.linkShares.push(share)
|
||||
} else if ([ShareType.Remote, ShareType.RemoteGroup].includes(share.type)) {
|
||||
this.externalShares.push(share)
|
||||
if (this.config.showFederatedSharesAsInternal) {
|
||||
this.shares.push(share)
|
||||
} else {
|
||||
this.externalShares.push(share)
|
||||
}
|
||||
} else {
|
||||
this.shares.push(share)
|
||||
}
|
||||
|
|
@ -439,6 +455,11 @@ export default {
|
|||
if (share.type === ShareType.Email) {
|
||||
this.linkShares.unshift(share)
|
||||
} else if ([ShareType.Remote, ShareType.RemoteGroup].includes(share.type)) {
|
||||
if (this.config.showFederatedSharesAsInternal) {
|
||||
this.shares.unshift(share)
|
||||
} else {
|
||||
this.externalShares.unshift(share)
|
||||
}
|
||||
this.externalShares.unshift(share)
|
||||
} else {
|
||||
this.shares.unshift(share)
|
||||
|
|
|
|||
Loading…
Reference in a new issue