Skip to content
Snippets Groups Projects
Commit d7de3537 authored by Robin Appelman's avatar Robin Appelman Committed by Bjoern Schiessle
Browse files

Add interface for accpeting external shares

parent 0156ef81
Branches
No related tags found
No related merge requests found
<?php
/**
* Copyright (c) 2014 Robin Appelman <icewind@owncloud.com>
* This file is licensed under the Affero General Public License version 3 or
* later.
* See the COPYING-README file.
*/
OCP\JSON::callCheck();
OCP\JSON::checkLoggedIn();
$token = $_POST['token'];
$remote = $_POST['remote'];
$owner = $_POST['owner'];
$name = $_POST['name'];
$password = $_POST['password'];
$externalManager = new \OCA\Files_Sharing\External\Manager(
\OC::$server->getDatabaseConnection(),
\OC\Files\Filesystem::getMountManager(),
\OC\Files\Filesystem::getLoader(),
\OC::$server->getUserSession()
);
$mount = $externalManager->addShare($remote, $token, $password, $name, $owner);
$result = $mount->getStorage()->file_exists('');
echo json_encode($result);
...@@ -23,7 +23,10 @@ $externalManager->setup(); ...@@ -23,7 +23,10 @@ $externalManager->setup();
OCP\Util::connectHook('OC_Filesystem', 'setup', '\OC\Files\Storage\Shared', 'setup'); OCP\Util::connectHook('OC_Filesystem', 'setup', '\OC\Files\Storage\Shared', 'setup');
OCP\Share::registerBackend('file', 'OC_Share_Backend_File'); OCP\Share::registerBackend('file', 'OC_Share_Backend_File');
OCP\Share::registerBackend('folder', 'OC_Share_Backend_Folder', 'file'); OCP\Share::registerBackend('folder', 'OC_Share_Backend_Folder', 'file');
OCP\Util::addScript('files_sharing', 'share'); OCP\Util::addScript('files_sharing', 'share');
OCP\Util::addScript('files_sharing', 'external');
\OC_Hook::connect('OC_Filesystem', 'post_write', '\OC\Files\Cache\Shared_Updater', 'writeHook'); \OC_Hook::connect('OC_Filesystem', 'post_write', '\OC\Files\Cache\Shared_Updater', 'writeHook');
\OC_Hook::connect('OC_Filesystem', 'post_delete', '\OC\Files\Cache\Shared_Updater', 'postDeleteHook'); \OC_Hook::connect('OC_Filesystem', 'post_delete', '\OC\Files\Cache\Shared_Updater', 'postDeleteHook');
\OC_Hook::connect('OC_Filesystem', 'delete', '\OC\Files\Cache\Shared_Updater', 'deleteHook'); \OC_Hook::connect('OC_Filesystem', 'delete', '\OC\Files\Cache\Shared_Updater', 'deleteHook');
......
...@@ -5,6 +5,8 @@ $this->create('core_ajax_public_preview', '/publicpreview')->action( ...@@ -5,6 +5,8 @@ $this->create('core_ajax_public_preview', '/publicpreview')->action(
require_once __DIR__ . '/../ajax/publicpreview.php'; require_once __DIR__ . '/../ajax/publicpreview.php';
}); });
$this->create('sharing_external_add', '/external')->actionInclude('files_sharing/ajax/external.php');
// OCS API // OCS API
//TODO: SET: mail notification, waiting for PR #4689 to be accepted //TODO: SET: mail notification, waiting for PR #4689 to be accepted
......
$(document).ready(function () {
var getParameterByName = function (query, name) {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp("[\\#&]" + name + "=([^&#]*)"),
results = regex.exec(query);
return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
};
var addExternalShare = function (remote, token, owner, name, password) {
return $.post(OC.generateUrl('apps/files_sharing/external'), {
remote : remote,
token : token,
owner : owner,
name : name,
password: password
});
};
var showAddExternalDialog = function (remote, token, owner, name, passwordProtected) {
var remoteClean = (remote.substr(0, 8) === 'https://') ? remote.substr(8) : remote.substr(7);
var callback = function (add, password) {
password = password || '';
if (add) {
addExternalShare(remote, token, owner, name, password).then(function (result) {
if (result) {
FileList.reload();
} else {
OC.dialogs.alert('Error adding ' + name, 'Error adding share');
}
});
}
};
if (!passwordProtected) {
OC.dialogs.confirm('Add ' + name + ' from ' + owner + '@' + remoteClean, 'Add Share', callback, true);
} else {
OC.dialogs.prompt('Add ' + name + ' from ' + owner + '@' + remoteClean, 'Add Share', callback, true, 'Password', true);
}
};
if (window.FileList) {// only run in the files app
var hash = location.hash;
location.hash = '';
var remote = getParameterByName(hash, 'remote');
var owner = getParameterByName(hash, 'owner');
var name = getParameterByName(hash, 'name');
var token = getParameterByName(hash, 'token');
var passwordProtected = parseInt(getParameterByName(hash, 'protected'), 10);
if (remote && token && owner && name) {
showAddExternalDialog(remote, token, owner, name, passwordProtected);
}
}
});
...@@ -65,6 +65,7 @@ class Manager { ...@@ -65,6 +65,7 @@ class Manager {
); );
$mount = new Mount(self::STORAGE, $mountPoint, $options, $this->storageLoader); $mount = new Mount(self::STORAGE, $mountPoint, $options, $this->storageLoader);
$this->mountManager->addMount($mount); $this->mountManager->addMount($mount);
return $mount;
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment