Add interface for accpeting external shares
This commit is contained in:
parent
0156ef8166
commit
d7de35376d
|
@ -0,0 +1,28 @@
|
||||||
|
<?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();
|
||||||
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(
|
||||||
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
|
||||||
|
|
|
@ -0,0 +1,53 @@
|
||||||
|
$(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 {
|
||||||
);
|
);
|
||||||
$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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue