Merge pull request #23431 from owncloud/use-dav-sabre-plugin-for-browser-2
Fix display of vcard and calendar object details page in browser plugin
This commit is contained in:
commit
24331be991
|
@ -27,10 +27,13 @@
|
||||||
|
|
||||||
namespace OCA\DAV\Connector\Sabre;
|
namespace OCA\DAV\Connector\Sabre;
|
||||||
|
|
||||||
|
use OC\Files\View;
|
||||||
|
use Sabre\DAV\Exception\Forbidden;
|
||||||
use Sabre\DAV\Exception\NotFound;
|
use Sabre\DAV\Exception\NotFound;
|
||||||
use Sabre\DAV\IFile;
|
use Sabre\DAV\IFile;
|
||||||
use \Sabre\DAV\PropFind;
|
use \Sabre\DAV\PropFind;
|
||||||
use \Sabre\DAV\PropPatch;
|
use \Sabre\DAV\PropPatch;
|
||||||
|
use Sabre\DAV\Tree;
|
||||||
use \Sabre\HTTP\RequestInterface;
|
use \Sabre\HTTP\RequestInterface;
|
||||||
use \Sabre\HTTP\ResponseInterface;
|
use \Sabre\HTTP\ResponseInterface;
|
||||||
use OCP\Files\StorageNotAvailableException;
|
use OCP\Files\StorageNotAvailableException;
|
||||||
|
@ -58,7 +61,7 @@ class FilesPlugin extends \Sabre\DAV\ServerPlugin {
|
||||||
private $server;
|
private $server;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var \Sabre\DAV\Tree
|
* @var Tree
|
||||||
*/
|
*/
|
||||||
private $tree;
|
private $tree;
|
||||||
|
|
||||||
|
@ -71,21 +74,29 @@ class FilesPlugin extends \Sabre\DAV\ServerPlugin {
|
||||||
private $isPublic;
|
private $isPublic;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var \OC\Files\View
|
* @var View
|
||||||
*/
|
*/
|
||||||
private $fileView;
|
private $fileView;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param \Sabre\DAV\Tree $tree
|
* @var bool
|
||||||
* @param \OC\Files\View $view
|
|
||||||
* @param bool $isPublic
|
|
||||||
*/
|
*/
|
||||||
public function __construct(\Sabre\DAV\Tree $tree,
|
private $downloadAttachment;
|
||||||
\OC\Files\View $view,
|
|
||||||
$isPublic = false) {
|
/**
|
||||||
|
* @param Tree $tree
|
||||||
|
* @param View $view
|
||||||
|
* @param bool $isPublic
|
||||||
|
* @param bool $downloadAttachment
|
||||||
|
*/
|
||||||
|
public function __construct(Tree $tree,
|
||||||
|
View $view,
|
||||||
|
$isPublic = false,
|
||||||
|
$downloadAttachment = true) {
|
||||||
$this->tree = $tree;
|
$this->tree = $tree;
|
||||||
$this->fileView = $view;
|
$this->fileView = $view;
|
||||||
$this->isPublic = $isPublic;
|
$this->isPublic = $isPublic;
|
||||||
|
$this->downloadAttachment = $downloadAttachment;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -135,7 +146,7 @@ class FilesPlugin extends \Sabre\DAV\ServerPlugin {
|
||||||
* Plugin that checks if a move can actually be performed.
|
* Plugin that checks if a move can actually be performed.
|
||||||
* @param string $source source path
|
* @param string $source source path
|
||||||
* @param string $destination destination path
|
* @param string $destination destination path
|
||||||
* @throws \Sabre\DAV\Exception\Forbidden
|
* @throws Forbidden
|
||||||
*/
|
*/
|
||||||
function checkMove($source, $destination) {
|
function checkMove($source, $destination) {
|
||||||
list($sourceDir,) = \Sabre\HTTP\URLUtil::splitPath($source);
|
list($sourceDir,) = \Sabre\HTTP\URLUtil::splitPath($source);
|
||||||
|
@ -145,11 +156,11 @@ class FilesPlugin extends \Sabre\DAV\ServerPlugin {
|
||||||
$sourceFileInfo = $this->fileView->getFileInfo($source);
|
$sourceFileInfo = $this->fileView->getFileInfo($source);
|
||||||
|
|
||||||
if ($sourceFileInfo === false) {
|
if ($sourceFileInfo === false) {
|
||||||
throw new \Sabre\DAV\Exception\NotFound($source . ' does not exist');
|
throw new NotFound($source . ' does not exist');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$sourceFileInfo->isDeletable()) {
|
if (!$sourceFileInfo->isDeletable()) {
|
||||||
throw new \Sabre\DAV\Exception\Forbidden($source . " cannot be deleted");
|
throw new Forbidden($source . " cannot be deleted");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -192,7 +203,9 @@ class FilesPlugin extends \Sabre\DAV\ServerPlugin {
|
||||||
if (!($node instanceof IFile)) return;
|
if (!($node instanceof IFile)) return;
|
||||||
|
|
||||||
// adds a 'Content-Disposition: attachment' header
|
// adds a 'Content-Disposition: attachment' header
|
||||||
$response->addHeader('Content-Disposition', 'attachment');
|
if ($this->downloadAttachment) {
|
||||||
|
$response->addHeader('Content-Disposition', 'attachment');
|
||||||
|
}
|
||||||
|
|
||||||
if ($node instanceof \OCA\DAV\Connector\Sabre\File) {
|
if ($node instanceof \OCA\DAV\Connector\Sabre\File) {
|
||||||
//Add OC-Checksum header
|
//Add OC-Checksum header
|
||||||
|
@ -233,7 +246,7 @@ class FilesPlugin extends \Sabre\DAV\ServerPlugin {
|
||||||
});
|
});
|
||||||
|
|
||||||
$propFind->handle(self::GETETAG_PROPERTYNAME, function() use ($node) {
|
$propFind->handle(self::GETETAG_PROPERTYNAME, function() use ($node) {
|
||||||
return $node->getEtag();
|
return $node->getETag();
|
||||||
});
|
});
|
||||||
|
|
||||||
$propFind->handle(self::OWNER_ID_PROPERTYNAME, function() use ($node) {
|
$propFind->handle(self::OWNER_ID_PROPERTYNAME, function() use ($node) {
|
||||||
|
|
|
@ -132,7 +132,8 @@ class ServerFactory {
|
||||||
}
|
}
|
||||||
$objectTree->init($root, $view, $this->mountManager);
|
$objectTree->init($root, $view, $this->mountManager);
|
||||||
|
|
||||||
$server->addPlugin(new \OCA\DAV\Connector\Sabre\FilesPlugin($objectTree, $view));
|
$server->addPlugin(new \OCA\DAV\Connector\Sabre\FilesPlugin($objectTree, $view, false,
|
||||||
|
!$this->config->getSystemValue('debug', false)));
|
||||||
$server->addPlugin(new \OCA\DAV\Connector\Sabre\QuotaPlugin($view));
|
$server->addPlugin(new \OCA\DAV\Connector\Sabre\QuotaPlugin($view));
|
||||||
|
|
||||||
if($this->userSession->isLoggedIn()) {
|
if($this->userSession->isLoggedIn()) {
|
||||||
|
|
|
@ -125,7 +125,8 @@ class Server {
|
||||||
$user = \OC::$server->getUserSession()->getUser();
|
$user = \OC::$server->getUserSession()->getUser();
|
||||||
if (!is_null($user)) {
|
if (!is_null($user)) {
|
||||||
$view = \OC\Files\Filesystem::getView();
|
$view = \OC\Files\Filesystem::getView();
|
||||||
$this->server->addPlugin(new FilesPlugin($this->server->tree, $view));
|
$this->server->addPlugin(new FilesPlugin($this->server->tree, $view, false,
|
||||||
|
!\OC::$server->getConfig()->getSystemValue('debug', false)));
|
||||||
|
|
||||||
$this->server->addPlugin(
|
$this->server->addPlugin(
|
||||||
new \Sabre\DAV\PropertyStorage\Plugin(
|
new \Sabre\DAV\PropertyStorage\Plugin(
|
||||||
|
|
Loading…
Reference in New Issue