Browse Source

Show filename on share link download

Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
tags/v21.0.0beta1
John Molakvoæ (skjnldsv) 3 years ago
parent
commit
6adb19b296
No account linked to committer's email address

+ 2
- 1
apps/files_sharing/appinfo/routes.php View File

@@ -50,9 +50,10 @@ return [
],
[
'name' => 'Share#downloadShare',
'url' => '/s/{token}/download',
'url' => '/s/{token}/download/{filename}',
'verb' => 'GET',
'root' => '',
'defaults' => ['filename' => '']
],
[
'name' => 'PublicPreview#directLink',

+ 4
- 1
apps/files_sharing/lib/Controller/ShareController.php View File

@@ -414,7 +414,10 @@ class ShareController extends AuthPublicShareController {
$shareTmpl['showgridview'] = false;

$shareTmpl['hideFileList'] = $hideFileList;
$shareTmpl['downloadURL'] = $this->urlGenerator->linkToRouteAbsolute('files_sharing.sharecontroller.downloadShare', ['token' => $this->getToken()]);
$shareTmpl['downloadURL'] = $this->urlGenerator->linkToRouteAbsolute('files_sharing.sharecontroller.downloadShare', [
'token' => $this->getToken(),
'filename' => $shareIsFolder ? null : $shareNode->getName()
]);
$shareTmpl['shareUrl'] = $this->urlGenerator->linkToRouteAbsolute('files_sharing.sharecontroller.showShare', ['token' => $this->getToken()]);
$shareTmpl['maxSizeAnimateGif'] = $this->config->getSystemValue('max_filesize_animated_gifs_public_sharing', 10);
$shareTmpl['previewEnabled'] = $this->config->getSystemValue('enable_previews', true);

+ 21
- 17
apps/files_sharing/tests/Controller/ShareControllerTest.php View File

@@ -211,6 +211,7 @@ class ShareControllerTest extends \Test\TestCase {

public function testShowShare() {
$note = 'personal note';
$filename = 'file1.txt';

$this->shareController->setToken('token');

@@ -225,7 +226,7 @@ class ShareControllerTest extends \Test\TestCase {
$initiator->method('isEnabled')->willReturn(true);

$file = $this->createMock(File::class);
$file->method('getName')->willReturn('file1.txt');
$file->method('getName')->willReturn($filename);
$file->method('getMimetype')->willReturn('text/plain');
$file->method('getSize')->willReturn(33);
$file->method('isReadable')->willReturn(true);
@@ -250,14 +251,14 @@ class ShareControllerTest extends \Test\TestCase {
->setSharedBy('initiatorUID')
->setNode($file)
->setNote($note)
->setTarget('/file1.txt');
->setTarget("/$filename");

$this->session->method('exists')->with('public_link_authenticated')->willReturn(true);
$this->session->method('get')->with('public_link_authenticated')->willReturn('42');

$this->urlGenerator->expects($this->at(0))
->method('linkToRouteAbsolute')
->with('files_sharing.sharecontroller.downloadShare', ['token' => 'token'])
->with('files_sharing.sharecontroller.downloadShare', ['token' => 'token', 'filename' => $filename])
->willReturn('downloadURL');

$this->previewManager->method('isMimeSupported')->with('text/plain')->willReturn(true);
@@ -312,8 +313,8 @@ class ShareControllerTest extends \Test\TestCase {
$response = $this->shareController->showShare();
$sharedTmplParams = [
'owner' => 'ownerUID',
'filename' => 'file1.txt',
'directory_path' => '/file1.txt',
'filename' => $filename,
'directory_path' => "/$filename",
'mimetype' => 'text/plain',
'dirToken' => 'token',
'sharingToken' => 'token',
@@ -357,6 +358,7 @@ class ShareControllerTest extends \Test\TestCase {

public function testShowShareWithPrivateName() {
$note = 'personal note';
$filename = 'file1.txt';

$this->shareController->setToken('token');

@@ -371,7 +373,7 @@ class ShareControllerTest extends \Test\TestCase {
$initiator->method('isEnabled')->willReturn(true);

$file = $this->createMock(File::class);
$file->method('getName')->willReturn('file1.txt');
$file->method('getName')->willReturn($filename);
$file->method('getMimetype')->willReturn('text/plain');
$file->method('getSize')->willReturn(33);
$file->method('isReadable')->willReturn(true);
@@ -396,14 +398,14 @@ class ShareControllerTest extends \Test\TestCase {
->setSharedBy('initiatorUID')
->setNode($file)
->setNote($note)
->setTarget('/file1.txt');
->setTarget("/$filename");

$this->session->method('exists')->with('public_link_authenticated')->willReturn(true);
$this->session->method('get')->with('public_link_authenticated')->willReturn('42');

$this->urlGenerator->expects($this->at(0))
->method('linkToRouteAbsolute')
->with('files_sharing.sharecontroller.downloadShare', ['token' => 'token'])
->with('files_sharing.sharecontroller.downloadShare', ['token' => 'token', 'filename' => $filename])
->willReturn('downloadURL');

$this->previewManager->method('isMimeSupported')->with('text/plain')->willReturn(true);
@@ -458,8 +460,8 @@ class ShareControllerTest extends \Test\TestCase {
$response = $this->shareController->showShare();
$sharedTmplParams = [
'owner' => '',
'filename' => 'file1.txt',
'directory_path' => '/file1.txt',
'filename' => $filename,
'directory_path' => "/$filename",
'mimetype' => 'text/plain',
'dirToken' => 'token',
'sharingToken' => 'token',
@@ -503,6 +505,7 @@ class ShareControllerTest extends \Test\TestCase {

public function testShowShareHideDownload() {
$note = 'personal note';
$filename = 'file1.txt';

$this->shareController->setToken('token');

@@ -517,7 +520,7 @@ class ShareControllerTest extends \Test\TestCase {
$initiator->method('isEnabled')->willReturn(true);

$file = $this->getMockBuilder('OCP\Files\File')->getMock();
$file->method('getName')->willReturn('file1.txt');
$file->method('getName')->willReturn($filename);
$file->method('getMimetype')->willReturn('text/plain');
$file->method('getSize')->willReturn(33);
$file->method('isReadable')->willReturn(true);
@@ -542,7 +545,7 @@ class ShareControllerTest extends \Test\TestCase {
->setSharedBy('initiatorUID')
->setNode($file)
->setNote($note)
->setTarget('/file1.txt')
->setTarget("/$filename")
->setHideDownload(true);

$this->session->method('exists')->with('public_link_authenticated')->willReturn(true);
@@ -553,7 +556,7 @@ class ShareControllerTest extends \Test\TestCase {
// files.
$this->urlGenerator->expects($this->at(0))
->method('linkToRouteAbsolute')
->with('files_sharing.sharecontroller.downloadShare', ['token' => 'token'])
->with('files_sharing.sharecontroller.downloadShare', ['token' => 'token', 'filename' => $filename])
->willReturn('downloadURL');

$this->previewManager->method('isMimeSupported')->with('text/plain')->willReturn(true);
@@ -608,8 +611,8 @@ class ShareControllerTest extends \Test\TestCase {
$response = $this->shareController->showShare();
$sharedTmplParams = [
'owner' => 'ownerUID',
'filename' => 'file1.txt',
'directory_path' => '/file1.txt',
'filename' => $filename,
'directory_path' => "/$filename",
'mimetype' => 'text/plain',
'dirToken' => 'token',
'sharingToken' => 'token',
@@ -774,6 +777,7 @@ class ShareControllerTest extends \Test\TestCase {
public function testShowShareInvalid() {
$this->expectException(\OCP\Files\NotFoundException::class);

$filename = 'file1.txt';
$this->shareController->setToken('token');

$owner = $this->getMockBuilder(IUser::class)->getMock();
@@ -781,7 +785,7 @@ class ShareControllerTest extends \Test\TestCase {
$owner->method('getUID')->willReturn('ownerUID');

$file = $this->getMockBuilder('OCP\Files\File')->getMock();
$file->method('getName')->willReturn('file1.txt');
$file->method('getName')->willReturn($filename);
$file->method('getMimetype')->willReturn('text/plain');
$file->method('getSize')->willReturn(33);
$file->method('isShareable')->willReturn(false);
@@ -792,7 +796,7 @@ class ShareControllerTest extends \Test\TestCase {
$share->setPassword('password')
->setShareOwner('ownerUID')
->setNode($file)
->setTarget('/file1.txt');
->setTarget("/$filename");

$this->session->method('exists')->with('public_link_authenticated')->willReturn(true);
$this->session->method('get')->with('public_link_authenticated')->willReturn('42');

Loading…
Cancel
Save