mirror of
https://github.com/nextcloud/server.git
synced 2026-04-24 15:53:36 -04:00
Merge pull request #20740 from nextcloud/backport/20262/stable18
[stable18] Allow to navigate to others with access from the sidebar
This commit is contained in:
commit
cfd6f0b6fb
16 changed files with 99 additions and 54 deletions
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2
apps/files_sharing/js/dist/collaboration.js
vendored
2
apps/files_sharing/js/dist/collaboration.js
vendored
|
|
@ -1,2 +1,2 @@
|
|||
!function(e){var n={};function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:r})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,n){if(1&n&&(e=t(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(t.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var o in e)t.d(r,o,function(n){return e[n]}.bind(null,o));return r},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p="/js/",t(t.s=283)}({283:function(e,n,r){r.p=OC.linkTo("files_sharing","js/dist/"),r.nc=btoa(OC.requestToken),window.OCP.Collaboration.registerType("file",{action:function(){return new Promise((function(e,n){OC.dialogs.filepicker(t("files_sharing","Link to a file"),(function(t){OC.Files.getClient().getFileInfo(t).then((function(n,t){e(t.id)})).fail((function(){n(new Error("Cannot get fileinfo"))}))}),!1,null,!1,OC.dialogs.FILEPICKER_TYPE_CHOOSE,"",{allowDirectoryChooser:!0})}))},typeString:t("files_sharing","Link to a file"),typeIconClass:"icon-files-dark"})}});
|
||||
!function(e){var n={};function t(r){if(n[r])return n[r].exports;var o=n[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,t),o.l=!0,o.exports}t.m=e,t.c=n,t.d=function(e,n,r){t.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:r})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,n){if(1&n&&(e=t(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(t.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var o in e)t.d(r,o,function(n){return e[n]}.bind(null,o));return r},t.n=function(e){var n=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(n,"a",n),n},t.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},t.p="/js/",t(t.s=297)}({297:function(e,n,r){r.p=OC.linkTo("files_sharing","js/dist/"),r.nc=btoa(OC.requestToken),window.OCP.Collaboration.registerType("file",{action:function(){return new Promise((function(e,n){OC.dialogs.filepicker(t("files_sharing","Link to a file"),(function(t){OC.Files.getClient().getFileInfo(t).then((function(n,t){e(t.id)})).fail((function(){n(new Error("Cannot get fileinfo"))}))}),!1,null,!1,OC.dialogs.FILEPICKER_TYPE_CHOOSE,"",{allowDirectoryChooser:!0})}))},typeString:t("files_sharing","Link to a file"),typeIconClass:"icon-files-dark"})}});
|
||||
//# sourceMappingURL=collaboration.js.map
|
||||
File diff suppressed because one or more lines are too long
2
apps/files_sharing/js/dist/files_sharing.js
vendored
2
apps/files_sharing/js/dist/files_sharing.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
68
apps/files_sharing/js/dist/files_sharing_tab.js
vendored
68
apps/files_sharing/js/dist/files_sharing_tab.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
2
apps/files_sharing/js/dist/main.js
vendored
2
apps/files_sharing/js/dist/main.js
vendored
|
|
@ -1,4 +1,4 @@
|
|||
!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="/js/",r(r.s=828)}({828:function(e,t){
|
||||
!function(e){var t={};function r(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,r),o.l=!0,o.exports}r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)r.d(n,o,function(t){return e[t]}.bind(null,o));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="/js/",r(r.s=900)}({900:function(e,t){
|
||||
/**
|
||||
* @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>
|
||||
*
|
||||
|
|
|
|||
2
apps/files_sharing/js/dist/main.js.map
vendored
2
apps/files_sharing/js/dist/main.js.map
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -840,8 +840,12 @@ class ShareAPIController extends OCSController {
|
|||
throw new OCSNotFoundException($this->l->t('Could not lock path'));
|
||||
}
|
||||
|
||||
// current User has resharing rights ?
|
||||
$this->confirmSharingRights($node);
|
||||
if (!($node->getPermissions() & Constants::PERMISSION_SHARE)) {
|
||||
throw new SharingRightsException('no sharing rights on this item');
|
||||
}
|
||||
|
||||
// The current top parent we have access to
|
||||
$parent = $node;
|
||||
|
||||
// initiate real owner.
|
||||
$owner = $node->getOwner()
|
||||
|
|
@ -869,10 +873,25 @@ class ShareAPIController extends OCSController {
|
|||
$nodes[] = $node;
|
||||
}
|
||||
|
||||
// The user that is requesting this list
|
||||
$currentUserFolder = $this->rootFolder->getUserFolder($this->currentUser);
|
||||
|
||||
// for each nodes, retrieve shares.
|
||||
$shares = [];
|
||||
|
||||
foreach ($nodes as $node) {
|
||||
$getShares = $this->getFormattedShares($owner, $node, false, true);
|
||||
|
||||
$currentUserNodes = $currentUserFolder->getById($node->getId());
|
||||
if (!empty($currentUserNodes)) {
|
||||
$parent = array_pop($currentUserNodes);
|
||||
}
|
||||
|
||||
$subPath = $currentUserFolder->getRelativePath($parent->getPath());
|
||||
foreach ($getShares as &$share) {
|
||||
$share['via_fileid'] = $parent->getId();
|
||||
$share['via_path'] = $subPath;
|
||||
}
|
||||
$this->mergeFormattedShares($shares, $getShares);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -35,10 +35,10 @@
|
|||
<ActionText icon="icon-user">
|
||||
{{ t('files_sharing', 'Added by {initiator}', { initiator: share.ownerDisplayName }) }}
|
||||
</ActionText>
|
||||
<ActionLink v-if="share.canDelete && share.fileSource"
|
||||
<ActionLink v-if="share.viaPath && share.viaFileid"
|
||||
icon="icon-folder"
|
||||
:href="fileTargetUrl">
|
||||
{{ t('files_sharing', 'Via folder') }}
|
||||
:href="viaFileTargetUrl">
|
||||
{{ t('files_sharing', 'Via “{folder}”', {folder: viaFolderName} ) }}
|
||||
</ActionLink>
|
||||
<ActionButton v-if="share.canDelete"
|
||||
icon="icon-close"
|
||||
|
|
@ -49,6 +49,7 @@
|
|||
</template>
|
||||
|
||||
<script>
|
||||
import { basename } from '@nextcloud/paths'
|
||||
import { generateUrl } from '@nextcloud/router'
|
||||
import Avatar from 'nextcloud-vue/dist/Components/Avatar'
|
||||
import ActionButton from 'nextcloud-vue/dist/Components/ActionButton'
|
||||
|
|
@ -81,11 +82,15 @@ export default {
|
|||
},
|
||||
|
||||
computed: {
|
||||
fileTargetUrl() {
|
||||
viaFileTargetUrl() {
|
||||
return generateUrl('/f/{fileid}', {
|
||||
fileid: this.share.fileSource,
|
||||
fileid: this.share.viaFileid,
|
||||
})
|
||||
},
|
||||
|
||||
viaFolderName() {
|
||||
return basename(this.share.viaPath)
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
|
|
|
|||
|
|
@ -467,6 +467,26 @@ export default class Share {
|
|||
return this.#share.can_delete === true
|
||||
}
|
||||
|
||||
/**
|
||||
* Top level accessible shared folder fileid for the current user
|
||||
* @returns {string}
|
||||
* @readonly
|
||||
* @memberof Share
|
||||
*/
|
||||
get viaFileid() {
|
||||
return this.#share.via_fileid
|
||||
}
|
||||
|
||||
/**
|
||||
* Top level accessible shared folder path for the current user
|
||||
* @returns {string}
|
||||
* @readonly
|
||||
* @memberof Share
|
||||
*/
|
||||
get viaPath() {
|
||||
return this.#share.via_path
|
||||
}
|
||||
|
||||
// TODO: SORT THOSE PROPERTIES
|
||||
get label() {
|
||||
return this.#share.label
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@
|
|||
<!-- Inherited shares list -->
|
||||
<SharingEntryInherited v-for="share in shares"
|
||||
:key="share.id"
|
||||
:file-info="fileInfo"
|
||||
:share="share" />
|
||||
</ul>
|
||||
</template>
|
||||
|
|
|
|||
Loading…
Reference in a new issue