Merge pull request #1852 from nextcloud/downstream-25579
Adding Open Graph Support for public shares
This commit is contained in:
commit
038d02a27d
|
@ -37,12 +37,14 @@ use OCA\Files_Sharing\Controllers\ExternalSharesController;
|
|||
use OCA\Files_Sharing\Controllers\ShareController;
|
||||
use OCA\Files_Sharing\Middleware\SharingCheckMiddleware;
|
||||
use \OCP\IContainer;
|
||||
use OCP\IServerContainer;
|
||||
|
||||
class Application extends App {
|
||||
public function __construct(array $urlParams = array()) {
|
||||
parent::__construct('files_sharing', $urlParams);
|
||||
|
||||
$container = $this->getContainer();
|
||||
/** @var IServerContainer $server */
|
||||
$server = $container->getServer();
|
||||
|
||||
/**
|
||||
|
@ -63,7 +65,9 @@ class Application extends App {
|
|||
$server->getPreviewManager(),
|
||||
$server->getRootFolder(),
|
||||
$federatedSharingApp->getFederatedShareProvider(),
|
||||
$server->getEventDispatcher()
|
||||
$server->getEventDispatcher(),
|
||||
$server->getL10N($c->query('AppName')),
|
||||
$server->getThemingDefaults()
|
||||
);
|
||||
});
|
||||
$container->registerService('ExternalSharesController', function (SimpleContainer $c) {
|
||||
|
@ -133,7 +137,7 @@ class Application extends App {
|
|||
});
|
||||
|
||||
// Execute middlewares
|
||||
$container->registerMiddleware('SharingCheckMiddleware');
|
||||
$container->registerMiddleWare('SharingCheckMiddleware');
|
||||
$container->registerMiddleWare('OCSShareAPIMiddleware');
|
||||
|
||||
$container->registerService('MountProvider', function (IContainer $c) {
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
?>
|
||||
|
||||
<?php if ($_['previewSupported']): /* This enables preview images for links (e.g. on Facebook, Google+, ...)*/?>
|
||||
<link rel="image_src" href="<?php p(\OC::$server->getURLGenerator()->linkToRoute( 'core_ajax_public_preview', array('x' => $_['previewMaxX'], 'y' => $_['previewMaxY'], 'file' => $_['directory_path'], 't' => $_['dirToken']))); ?>" />
|
||||
<link rel="image_src" href="<?php p($_['previewImage']); ?>" />
|
||||
<?php endif; ?>
|
||||
|
||||
<div id="notification-container">
|
||||
|
|
|
@ -109,7 +109,9 @@ class ShareControllerTest extends \Test\TestCase {
|
|||
$this->previewManager,
|
||||
$this->getMockBuilder('\OCP\Files\IRootFolder')->getMock(),
|
||||
$this->federatedShareProvider,
|
||||
$this->eventDispatcher
|
||||
$this->eventDispatcher,
|
||||
$this->getMockBuilder('\OCP\IL10N')->getMock(),
|
||||
$this->getMockBuilder('\OC_Defaults')->getMock()
|
||||
);
|
||||
|
||||
|
||||
|
@ -392,6 +394,8 @@ class ShareControllerTest extends \Test\TestCase {
|
|||
'hideFileList' => false,
|
||||
'shareOwner' => 'ownerDisplay',
|
||||
'disclaimer' => 'My disclaimer text',
|
||||
'shareUrl' => null,
|
||||
'previewImage' => null
|
||||
);
|
||||
|
||||
$csp = new \OCP\AppFramework\Http\ContentSecurityPolicy();
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 39 KiB |
Loading…
Reference in New Issue