]> source.dussan.org Git - nextcloud-server.git/commitdiff
Add interface for adding a public share to a different ownCloud instance
authorRobin Appelman <icewind@owncloud.com>
Wed, 14 May 2014 11:29:03 +0000 (13:29 +0200)
committerBjoern Schiessle <schiessle@owncloud.com>
Sat, 14 Jun 2014 08:13:24 +0000 (10:13 +0200)
apps/files_sharing/ajax/testremote.php [new file with mode: 0644]
apps/files_sharing/appinfo/routes.php
apps/files_sharing/css/public.css
apps/files_sharing/js/external.js
apps/files_sharing/js/public.js
apps/files_sharing/templates/public.php

diff --git a/apps/files_sharing/ajax/testremote.php b/apps/files_sharing/ajax/testremote.php
new file mode 100644 (file)
index 0000000..10ea307
--- /dev/null
@@ -0,0 +1,17 @@
+<?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.
+ */
+
+$remote = $_GET['remote'];
+
+if (file_get_contents('https://' . $remote . '/status.php')) {
+       echo 'https';
+} elseif (file_get_contents('http://' . $remote . '/status.php')) {
+       echo 'http';
+}else{
+       echo 'false';
+}
index 2d214c879c4c5657b8a19f36dfc0a947d73263d9..8ec4382180b76deb052d30850287f60ca0b3e6db 100644 (file)
@@ -6,6 +6,7 @@ $this->create('core_ajax_public_preview', '/publicpreview')->action(
        });
 
 $this->create('sharing_external_add', '/external')->actionInclude('files_sharing/ajax/external.php');
+$this->create('sharing_external_test_remote', '/testremote')->actionInclude('files_sharing/ajax/testremote.php');
 
 // OCS API
 
index 1bafb7807441cc96713ff3f97f35e1ab12ec93e3..52b8481140d89fe81628580e7cda7f8af7fc41fd 100644 (file)
@@ -87,3 +87,17 @@ thead {
        width: 300px;
        max-width: 90%;
 }
+
+.header-right {
+       transition: opacity 500ms ease 0s;
+       -moz-transition: opacity 500ms ease 0s;
+       -ms-transition: opacity 500ms ease 0s;
+       -o-transition: opacity 500ms ease 0s;
+       -webkit-transition: opacity 500ms ease 0s;
+}
+
+.header-right:hover, .header-right.active {
+       opacity: 1;
+       -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
+       filter: alpha(opacity=100);
+}
index 0fa99a1652bba3dae36d4bec818da36e5e6e3e6b..1e46b35c53bc21ba52aeaad5b50b4e3d8a7aea35 100644 (file)
@@ -22,7 +22,7 @@ $(document).ready(function () {
                        password = password || '';
                        if (add) {
                                addExternalShare(remote, token, owner, name, password).then(function (result) {
-                                       if (result) {
+                                       if (result && result !== 'false') {
                                                FileList.reload();
                                        } else {
                                                OC.dialogs.alert('Error adding ' + name, 'Error adding share');
@@ -37,7 +37,7 @@ $(document).ready(function () {
                }
        };
 
-       if (window.FileList) {// only run in the files app
+       if (window.FileList && window.FileList.appName === 'Files') {// only run in the files app
                var hash = location.hash;
                location.hash = '';
                var remote = getParameterByName(hash, 'remote');
index a2248405d22297bb81a90265f5c61de9dbd07f84..48db89532b47830389297c79996b36e940624513 100644 (file)
@@ -186,5 +186,41 @@ $(document).ready(function() {
                        });
                };
        }
+
+       $('.save-form').submit(function (event) {
+               event.preventDefault();
+
+               var remote = $(this).find('input[type="text"]').val();
+               var token = $('#sharingToken').val();
+               var location = window.location.protocol + '//' + window.location.host + OC.webroot;
+               var owner = $('#save').data('owner');
+               var name = $('#save').data('name');
+
+               var url = remote + '/index.php/apps/files#' + 'remote=' + encodeURIComponent(location) // our location is the remote for the other server
+                       + "&token=" + encodeURIComponent(token) + "&owner=" + encodeURIComponent(owner) + "&name=" + encodeURIComponent(name);
+
+
+               if (remote.indexOf('://') > 0) {
+                       window.location = url;
+               } else {
+                       // if no protocol is specified, we automatically detect it by testing https and http
+                       // this check needs to happen on the server due to the Content Security Policy directive
+                       $.get(OC.generateUrl('apps/files_sharing/testremote'), {remote: remote}).then(function (protocol) {
+                               if (protocol !== 'http' && protocol !== 'https') {
+                                       OC.dialogs.alert(t('files_sharing', 'No ownCloud installation found at {remote}', {remote: remote}),
+                                               t('files_sharing', 'Invalid ownCloud url'));
+                               } else {
+                                       window.location = protocol + '://' + url;
+                               }
+                       });
+               }
+       });
+
+       $('#save > button').click(function () {
+               $(this).hide();
+               $('.header-right').addClass('active');
+               $('.save-form').css('display', 'inline');
+               $('#remote_address').focus();
+       });
 });
 
index 7b5f603a1053387a2c3b11a325874c498c028712..1c0570cb018a7e8d9f7f567d7eb2ec4692a87c23 100644 (file)
                                                                                                          src="<?php print_unescaped(image_path('', 'logo-wide.svg')); ?>" alt="<?php p($theme->getName()); ?>" /></a>
                <div id="logo-claim" style="display:none;"><?php p($theme->getLogoClaim()); ?></div>
                <div class="header-right">
-                       <a href="<?php p($_['downloadURL']); ?>" id="download" class="button">
-                               <img class="svg" alt="" src="<?php print_unescaped(OCP\image_path("core", "actions/download.svg")); ?>"/>
-                               <?php p($l->t('Download'))?>
-                       </a>
+                       <span id="details">
+                               <span id="save" data-owner="<?php p($_['displayName'])?>" data-name="<?php p($_['filename'])?>">
+                                       <button><?php p($l->t('Save to ownCloud')) ?></button>
+                                       <form class="save-form hidden" action="#">
+                                               <input type="text" id="remote_address" placeholder="<?php p($l->t('example.com/owncloud')) ?>"/>
+                                               <input type="submit" value="<?php p($l->t('Save')) ?>"/>
+                                       </form>
+                               </span>
+                               <a href="<?php p($_['downloadURL']); ?>" id="download" class="button">
+                                       <img class="svg" alt="" src="<?php print_unescaped(OCP\image_path("core", "actions/download.svg")); ?>"/>
+                                       <?php p($l->t('Download'))?>
+                               </a>
+                               <?php p($l->t('shared by %s', array($_['displayName']))) ?>
+                       </span>
                </div>
 </div></header>
 <div id="content">