aboutsummaryrefslogtreecommitdiffstats
path: root/apps/files_sharing/js/external.js
blob: bc02ecfaf97e1928f7a9b530ab71e5e7681049da (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
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.status === 'error') {
						OC.Notification.show(result.data.message);
					} else {
						FileList.reload();
					}
				});
			}
		};
		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 (OCA.Files) {// 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);
		}
	}
});