summaryrefslogtreecommitdiffstats
path: root/apps/files_external/js
diff options
context:
space:
mode:
authorMichael Gapczynski <GapczynskiM@gmail.com>2012-06-12 11:36:25 -0400
committerMichael Gapczynski <GapczynskiM@gmail.com>2012-06-12 11:36:43 -0400
commit5f80be7664f86115caad1ceac9ea670a7b033029 (patch)
treec76f151aea069a44d440ded7dcf53cad3de3b10d /apps/files_external/js
parent8626f04f5d9e591cf616c7a3b536409319f5718c (diff)
downloadnextcloud-server-5f80be7664f86115caad1ceac9ea670a7b033029.tar.gz
nextcloud-server-5f80be7664f86115caad1ceac9ea670a7b033029.zip
Add support for mounting Dropbox in external storage UI
Diffstat (limited to 'apps/files_external/js')
-rw-r--r--apps/files_external/js/dropbox.js53
-rw-r--r--apps/files_external/js/settings.js86
2 files changed, 100 insertions, 39 deletions
diff --git a/apps/files_external/js/dropbox.js b/apps/files_external/js/dropbox.js
new file mode 100644
index 00000000000..67f3c46a6ed
--- /dev/null
+++ b/apps/files_external/js/dropbox.js
@@ -0,0 +1,53 @@
+$(document).ready(function() {
+
+ $('#externalStorage tbody tr').each(function() {
+ if ($(this).find('.backend').data('class') == 'OC_Filestorage_Dropbox') {
+ var app_key = $(this).find('.configuration [data-parameter="app_key"]').val();
+ var app_secret = $(this).find('.configuration [data-parameter="app_secret"]').val();
+ if (app_key == '' && app_secret == '') {
+ $(this).find('.configuration').append('<a class="button dropbox">Grant access</a>');
+ } else {
+ var pos = window.location.search.indexOf('oauth_token') + 12
+ var token = $(this).find('.configuration [data-parameter="token"]');
+ if (pos != -1 && window.location.search.substr(pos, $(token).val().length) == $(token).val()) {
+ var token_secret = $(this).find('.configuration [data-parameter="token_secret"]');
+ var tr = $(this);
+ $.post(OC.filePath('files_external', 'ajax', 'dropbox.php'), { step: 2, app_key: app_key, app_secret: app_secret, request_token: $(token).val(), request_token_secret: $(token_secret).val() }, function(result) {
+ if (result && result.status == 'success') {
+ $(token).val(result.access_token);
+ $(token_secret).val(result.access_token_secret);
+ OC.MountConfig.saveStorage(tr);
+ } else {
+ OC.dialogs.alert(result.data.message, 'Error configuring Dropbox storage');
+ }
+ });
+ }
+ }
+ return false;
+ }
+ });
+
+ $('.dropbox').live('click', function(event) {
+ event.preventDefault();
+ var app_key = $(this).parent().find('[data-parameter="app_key"]').val();
+ var app_secret = $(this).parent().find('[data-parameter="app_secret"]').val();
+ if (app_key != '' && app_secret != '') {
+ var tr = $(this).parent().parent();
+ var token = $(this).parent().find('[data-parameter="token"]');
+ var token_secret = $(this).parent().find('[data-parameter="token_secret"]');
+ $.post(OC.filePath('files_external', 'ajax', 'dropbox.php'), { step: 1, app_key: app_key, app_secret: app_secret, callback: window.location.href }, function(result) {
+ if (result && result.status == 'success') {
+ $(token).val(result.data.request_token);
+ $(token_secret).val(result.data.request_token_secret);
+ OC.MountConfig.saveStorage(tr);
+ window.location = result.data.url;
+ } else {
+ OC.dialogs.alert(result.data.message, 'Error configuring Dropbox storage');
+ }
+ });
+ } else {
+ OC.dialogs.alert('Please provide a valid Dropbox app key and secret.', 'Error configuring Dropbox storage')
+ }
+ });
+
+});
diff --git a/apps/files_external/js/settings.js b/apps/files_external/js/settings.js
index 38291d5f7e2..57188a6a266 100644
--- a/apps/files_external/js/settings.js
+++ b/apps/files_external/js/settings.js
@@ -1,40 +1,5 @@
-$(document).ready(function() {
-
- $('.chzn-select').chosen();
-
- $('#selectBackend').live('change', function() {
- var tr = $(this).parent().parent();
- $('#externalStorage tbody').last().append($(tr).clone());
- var selected = $(this).find('option:selected').text();
- var backendClass = $(this).val();
- $(this).parent().text(selected);
- $(tr).find('.backend').data('class', $(this).val());
- var configurations = $(this).data('configurations');
- var td = $(tr).find('td.configuration');
- $.each(configurations, function(backend, parameters) {
- if (backend == backendClass) {
- $.each(parameters['configuration'], function(parameter, placeholder) {
- if (placeholder.indexOf('*') != -1) {
- td.append('<input type="password" data-parameter="'+parameter+'" placeholder="'+placeholder.substring(1)+'" />');
- } else if (placeholder.indexOf('!') != -1) {
- td.append('<label><input type="checkbox" data-parameter="'+parameter+'" />'+placeholder.substring(1)+'</label>');
- } else if (placeholder.indexOf('&') != -1) {
- td.append('<input type="text" class="optional" data-parameter="'+parameter+'" placeholder="'+placeholder.substring(1)+'" />');
- } else {
- td.append('<input type="text" data-parameter="'+parameter+'" placeholder="'+placeholder+'" />');
- }
- });
- return false;
- }
- });
- $('.chz-select').chosen();
- $(tr).find('td').last().attr('class', 'remove');
- $(tr).removeAttr('id');
- $(this).remove();
- });
-
- $('#externalStorage td').live('change', function() {
- var tr = $(this).parent();
+OC.MountConfig={
+ saveStorage:function(tr) {
var mountPoint = $(tr).find('.mountPoint input').val();
if (mountPoint == '') {
return false;
@@ -99,6 +64,51 @@ $(document).ready(function() {
$.post(OC.filePath('files_external', 'ajax', 'addMountPoint.php'), { mountPoint: mountPoint, class: backendClass, classOptions: classOptions, mountType: mountType, applicable: applicable, isPersonal: isPersonal });
}
}
+ }
+}
+
+$(document).ready(function() {
+
+ $('.chzn-select').chosen();
+
+ $('#selectBackend').live('change', function() {
+ var tr = $(this).parent().parent();
+ $('#externalStorage tbody').last().append($(tr).clone());
+ var selected = $(this).find('option:selected').text();
+ var backendClass = $(this).val();
+ $(this).parent().text(selected);
+ $(tr).find('.backend').data('class', backendClass);
+ var configurations = $(this).data('configurations');
+ var td = $(tr).find('td.configuration');
+ $.each(configurations, function(backend, parameters) {
+ if (backend == backendClass) {
+ $.each(parameters['configuration'], function(parameter, placeholder) {
+ if (placeholder.indexOf('*') != -1) {
+ td.append('<input type="password" data-parameter="'+parameter+'" placeholder="'+placeholder.substring(1)+'" />');
+ } else if (placeholder.indexOf('!') != -1) {
+ td.append('<label><input type="checkbox" data-parameter="'+parameter+'" />'+placeholder.substring(1)+'</label>');
+ } else if (placeholder.indexOf('&') != -1) {
+ td.append('<input type="text" class="optional" data-parameter="'+parameter+'" placeholder="'+placeholder.substring(1)+'" />');
+ } else if (placeholder.indexOf('#') != -1) {
+ td.append('<input type="hidden" data-parameter="'+parameter+'" />');
+ } else {
+ td.append('<input type="text" data-parameter="'+parameter+'" placeholder="'+placeholder+'" />');
+ }
+ });
+ if (parameters['custom']) {
+ OC.addScript('files_external', parameters['custom']);
+ }
+ return false;
+ }
+ });
+ $('.chz-select').chosen();
+ $(tr).find('td').last().attr('class', 'remove');
+ $(tr).removeAttr('id');
+ $(this).remove();
+ });
+
+ $('#externalStorage td').live('change', function() {
+ OC.MountConfig.saveStorage($(this).parent());
});
$('td.remove>img').live('click', function() {
@@ -130,8 +140,6 @@ $(document).ready(function() {
$(tr).remove();
});
-
-
$('#allowUserMounting').bind('change', function() {
if (this.checked) {
OC.AppConfig.setValue('files_external', 'allow_user_mounting', 'yes');