summaryrefslogtreecommitdiffstats
path: root/apps/files_sharing/js
diff options
context:
space:
mode:
authorBjoern Schiessle <schiessle@owncloud.com>2014-12-04 19:51:04 +0100
committerBjoern Schiessle <schiessle@owncloud.com>2014-12-19 15:20:24 +0100
commit24993280edcf66f9daa5a5e82428fefef4a3ab56 (patch)
treeede7ca0417af874185588a845fe5f7f754076f60 /apps/files_sharing/js
parentf671b232cc122cdb8e993c8b35bd5419b32a9ae4 (diff)
downloadnextcloud-server-24993280edcf66f9daa5a5e82428fefef4a3ab56.tar.gz
nextcloud-server-24993280edcf66f9daa5a5e82428fefef4a3ab56.zip
Next step in server-to-server sharing next generation, see #12285
Beside some small improvements and bug fixes this will probably the final state for OC8. To test this you need to set up two ownCloud instances. Let's say: URL: myPC/firstOwnCloud user: user1 URL: myPC/secondOwnCloud user: user2 Now user1 can share a file with user2 by entering the username and the URL to the second ownCloud to the share-drop-down, in this case "user2@myPC/secondOwnCloud". The next time user2 login he will get a notification that he received a server-to-server share with the option to accept/decline it. If he accept it the share will be mounted. In both cases a event will be send back to user1 and add a notification to the activity stream that the share was accepted/declined. If user1 decides to unshare the file again from user2 the share will automatically be removed from the second ownCloud server and user2 will see a notification in his activity stream that user1@myPC/firstOwnCloud has unshared the file/folder from him.
Diffstat (limited to 'apps/files_sharing/js')
-rw-r--r--apps/files_sharing/js/external.js95
1 files changed, 65 insertions, 30 deletions
diff --git a/apps/files_sharing/js/external.js b/apps/files_sharing/js/external.js
index 6ede2584cd9..aeb4b2461f8 100644
--- a/apps/files_sharing/js/external.js
+++ b/apps/files_sharing/js/external.js
@@ -8,16 +8,6 @@
*
*/
(function () {
- 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
- });
- };
-
/**
* Shows "add external share" dialog.
*
@@ -27,20 +17,12 @@
* @param {String} token authentication token
* @param {bool} passwordProtected true if the share is password protected
*/
- OCA.Sharing.showAddExternalDialog = function (remote, token, owner, name, passwordProtected) {
+ OCA.Sharing.showAddExternalDialog = function (share, passwordProtected, callback) {
+ var remote = share.remote;
+ var owner = share.owner;
+ var name = share.name;
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.status === 'error') {
- OC.Notification.show(result.data.message);
- } else {
- FileList.reload();
- }
- });
- }
- };
+
if (!passwordProtected) {
OC.dialogs.confirm(
t(
@@ -49,7 +31,9 @@
{name: name, owner: owner, remote: remoteClean}
),
t('files_sharing','Remote share'),
- callback,
+ function (result) {
+ callback(result, share);
+ },
true
).then(this._adjustDialog);
} else {
@@ -60,7 +44,9 @@
{name: name, owner: owner, remote: remoteClean}
),
t('files_sharing','Remote share'),
- callback,
+ function (result) {
+ callback(result, share);
+ },
true,
t('files_sharing','Remote share password'),
true
@@ -82,17 +68,66 @@ $(document).ready(function () {
// FIXME: HACK: do not init when running unit tests, need a better way
if (!window.TESTING && OCA.Files) {// only run in the files app
var params = OC.Util.History.parseUrlQuery();
+
+ //manually add server-to-server share
if (params.remote && params.token && params.owner && params.name) {
+
+ var callbackAddShare = function(result, share) {
+ var password = share.password || '';
+ if (result) {
+ //$.post(OC.generateUrl('/apps/files_sharing/api/externalShares'), {id: share.id});
+ $.post(OC.generateUrl('apps/files_sharing/external'), {
+ remote: share.remote,
+ token: share.token,
+ owner: share.owner,
+ name: share.name,
+ password: password}, function(result) {
+ if (result.status === 'error') {
+ OC.Notification.show(result.data.message);
+ } else {
+ FileList.reload();
+ }
+ });
+ }
+ };
+
// clear hash, it is unlikely that it contain any extra parameters
location.hash = '';
params.passwordProtected = parseInt(params.protected, 10) === 1;
OCA.Sharing.showAddExternalDialog(
- params.remote,
- params.token,
- params.owner,
- params.name,
- params.passwordProtected
+ params,
+ params.passwordProtected,
+ callbackAddShare
);
}
+
+ // check for new server-to-server shares which need to be approved
+ $.get(OC.generateUrl('/apps/files_sharing/api/externalShares'),
+ {},
+ function(shares) {
+ var index;
+ for (index = 0; index < shares.length; ++index) {
+ OCA.Sharing.showAddExternalDialog(
+ shares[index],
+ false,
+ function(result, share) {
+ if (result) {
+ // Accept
+ $.post(OC.generateUrl('/apps/files_sharing/api/externalShares'), {id: share.id});
+ FileList.reload();
+ } else {
+ // Delete
+ $.ajax({
+ url: OC.generateUrl('/apps/files_sharing/api/externalShares/'+share.id),
+ type: 'DELETE'
+ });
+ }
+ }
+ );
+ }
+
+ });
+
}
+
});