diff options
author | Thomas Müller <thomas.mueller@tmit.eu> | 2016-07-22 16:13:26 +0200 |
---|---|---|
committer | Roeland Jago Douma <roeland@famdouma.nl> | 2016-10-21 21:42:40 +0200 |
commit | e0d919bbfcc3de5839a5134f301b879a949cf6c3 (patch) | |
tree | 2abc23f73c01e246a9815034ef7aa5b310247245 /apps/files_sharing/lib/Controllers/ShareController.php | |
parent | e8adf53f7704c2805b0637eaf571d8cc59054c3e (diff) | |
download | nextcloud-server-e0d919bbfcc3de5839a5134f301b879a949cf6c3.tar.gz nextcloud-server-e0d919bbfcc3de5839a5134f301b879a949cf6c3.zip |
Adding Open Graph Support for public shares http://ogp.me/
In case no preview is available we display the ownCloud logo
Fix unit test
Diffstat (limited to 'apps/files_sharing/lib/Controllers/ShareController.php')
-rw-r--r-- | apps/files_sharing/lib/Controllers/ShareController.php | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/apps/files_sharing/lib/Controllers/ShareController.php b/apps/files_sharing/lib/Controllers/ShareController.php index 5ccaab746fc..8e3405311e9 100644 --- a/apps/files_sharing/lib/Controllers/ShareController.php +++ b/apps/files_sharing/lib/Controllers/ShareController.php @@ -35,6 +35,8 @@ namespace OCA\Files_Sharing\Controllers; use OC_Files; use OC_Util; use OCA\FederatedFileSharing\FederatedShareProvider; +use OCP\Defaults; +use OCP\IL10N; use OCP\Template; use OCP\Share; use OCP\AppFramework\Controller; @@ -84,6 +86,10 @@ class ShareController extends Controller { protected $federatedShareProvider; /** @var EventDispatcherInterface */ protected $eventDispatcher; + /** @var IL10N */ + protected $l10n; + /** @var Defaults */ + protected $defaults; /** * @param string $appName @@ -99,6 +105,8 @@ class ShareController extends Controller { * @param IRootFolder $rootFolder * @param FederatedShareProvider $federatedShareProvider * @param EventDispatcherInterface $eventDispatcher + * @param IL10N $l10n + * @param \OC_Defaults $defaults */ public function __construct($appName, IRequest $request, @@ -112,7 +120,9 @@ class ShareController extends Controller { IPreview $previewManager, IRootFolder $rootFolder, FederatedShareProvider $federatedShareProvider, - EventDispatcherInterface $eventDispatcher) { + EventDispatcherInterface $eventDispatcher, + IL10N $l10n, + \OC_Defaults $defaults) { parent::__construct($appName, $request); $this->config = $config; @@ -126,6 +136,8 @@ class ShareController extends Controller { $this->rootFolder = $rootFolder; $this->federatedShareProvider = $federatedShareProvider; $this->eventDispatcher = $eventDispatcher; + $this->l10n = $l10n; + $this->defaults = $defaults; } /** @@ -352,12 +364,19 @@ class ShareController extends Controller { $shareTmpl['hideFileList'] = $hideFileList; $shareTmpl['shareOwner'] = $this->userManager->get($share->getShareOwner())->getDisplayName(); - $shareTmpl['downloadURL'] = $this->urlGenerator->linkToRouteAbsolute('files_sharing.sharecontroller.downloadShare', array('token' => $token)); + $shareTmpl['downloadURL'] = $this->urlGenerator->linkToRouteAbsolute('files_sharing.sharecontroller.downloadShare', ['token' => $token]); + $shareTmpl['shareUrl'] = $this->urlGenerator->linkToRouteAbsolute('files_sharing.sharecontroller.showShare', ['token' => $token]); $shareTmpl['maxSizeAnimateGif'] = $this->config->getSystemValue('max_filesize_animated_gifs_public_sharing', 10); $shareTmpl['previewEnabled'] = $this->config->getSystemValue('enable_previews', true); $shareTmpl['previewMaxX'] = $this->config->getSystemValue('preview_max_x', 1024); $shareTmpl['previewMaxY'] = $this->config->getSystemValue('preview_max_y', 1024); $shareTmpl['disclaimer'] = $this->config->getAppValue('core', 'shareapi_public_link_disclaimertext', null); + if ($shareTmpl['previewSupported']) { + $shareTmpl['previewImage'] = $this->urlGenerator->linkToRouteAbsolute( 'core_ajax_public_preview', + ['x' => 200, 'y' => 200, 'file' => $shareTmpl['directory_path'], 't' => $shareTmpl['dirToken']]); + } else { + $shareTmpl['previewImage'] = $this->urlGenerator->getAbsoluteURL($this->urlGenerator->imagePath('core', 'favicon-fb.png')); + } // Load files we need \OCP\Util::addScript('files', 'file-upload'); @@ -382,6 +401,14 @@ class ShareController extends Controller { \OCP\Util::addScript('files', 'keyboardshortcuts'); } + // OpenGraph Support: http://ogp.me/ + \OCP\Util::addHeader('meta', ['property' => "og:title", 'content' => $this->defaults->getName() . ' - ' . $this->defaults->getSlogan()]); + \OCP\Util::addHeader('meta', ['property' => "og:description", 'content' => $this->l10n->t('%s is publicly shared', [$shareTmpl['filename']])]); + \OCP\Util::addHeader('meta', ['property' => "og:site_name", 'content' => $this->defaults->getName()]); + \OCP\Util::addHeader('meta', ['property' => "og:url", 'content' => $shareTmpl['shareUrl']]); + \OCP\Util::addHeader('meta', ['property' => "og:type", 'content' => "object"]); + \OCP\Util::addHeader('meta', ['property' => "og:image", 'content' => $shareTmpl['previewImage']]); + $this->eventDispatcher->dispatch('OCA\Files_Sharing::loadAdditionalScripts'); $csp = new \OCP\AppFramework\Http\ContentSecurityPolicy(); |