Add interface for adding a public share to a different ownCloud instance

This commit is contained in:
Robin Appelman 2014-05-14 13:29:03 +02:00 committed by Bjoern Schiessle
parent d7de35376d
commit cf5a72c103
6 changed files with 84 additions and 6 deletions

View File

@ -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';
}

View 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

View 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);
}

View 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');

View 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();
});
});

View File

@ -15,10 +15,20 @@
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">