diff --git a/apps/files_publiclink/lib_public.php b/apps/files_publiclink/lib_public.php index 21286fe4ff..0ecf909720 100644 --- a/apps/files_publiclink/lib_public.php +++ b/apps/files_publiclink/lib_public.php @@ -57,7 +57,9 @@ class OC_PublicLink{ public static function getLink($path) { $query=OC_DB::prepare("SELECT token FROM *PREFIX*publiclink WHERE user=? AND path=? LIMIT 1"); $result=$query->execute(array(OC_User::getUser(),$path))->fetchAll(); - return $result[0]['token']; + if(count($result)>0){ + return $result[0]['token']; + } } /** diff --git a/apps/files_sharing/ajax/getitem.php b/apps/files_sharing/ajax/getitem.php index 580b6ca558..3a3be404a3 100644 --- a/apps/files_sharing/ajax/getitem.php +++ b/apps/files_sharing/ajax/getitem.php @@ -4,6 +4,19 @@ $RUNTIME_NOAPPS = true; require_once('../../../lib/base.php'); require_once('../lib_share.php'); -$source = "/".OC_User::getUser()."/files".$_GET['source']; -echo json_encode(OC_Share::getMySharedItem($source)); +$userDirectory = "/".OC_User::getUser()."/files"; +$source = $userDirectory.$_GET['source']; +$users = OC_Share::getMySharedItem($source); +$source = dirname($source); +while ($source != "" && $source != "/" && $source != "." && $source != $userDirectory) { + $parentUsers = array(); + $values = array_values(OC_Share::getMySharedItem($source)); + for ($i = 0; $i < count($values); $i++) { + $parentUsers[basename($source)."-".$i] = $values[$i]; + } + $users = array_merge($users, $parentUsers); + $source = dirname($source); +} +echo json_encode($users); + ?> \ No newline at end of file diff --git a/apps/files_sharing/ajax/setpermissions.php b/apps/files_sharing/ajax/setpermissions.php new file mode 100644 index 0000000000..8e0bac0b06 --- /dev/null +++ b/apps/files_sharing/ajax/setpermissions.php @@ -0,0 +1,12 @@ + \ No newline at end of file diff --git a/apps/files_sharing/js/share.js b/apps/files_sharing/js/share.js index 5538073d0f..0b97010c4f 100644 --- a/apps/files_sharing/js/share.js +++ b/apps/files_sharing/js/share.js @@ -1,10 +1,12 @@ $(document).ready(function() { - $(this).click(function() { - if ($('#dropdown').is(':visible')) { - $('#dropdown').hide('blind', function() { - $('#dropdown').remove(); - $('tr').removeClass('mouseOver'); - }); + $(this).click(function(event) { + if ($(event.target).parents().index($('#dropdown')) == -1) { + if ($('#dropdown').is(':visible')) { + $('#dropdown').hide('blind', function() { + $('#dropdown').remove(); + $('tr').removeClass('mouseOver'); + }); + } } }); FileActions.register('all', 'Share', OC.imagePath('core', 'actions/share'), function(filename) { @@ -35,13 +37,29 @@ $(document).ready(function() { }); }); $('.permissions').live('change', function() { - // TODO Modify item ajax call + var permissions; + if (this.checked) { + permissions = 1; + } else { + permissions = 0; + } + var source = $('#dropdown').data('file'); + var uid_shared_with = $(this).parent().data('uid_shared_with'); + var data = 'source='+encodeURIComponent(source)+'&uid_shared_with='+encodeURIComponent(uid_shared_with)+'&permissions='+encodeURIComponent(permissions); + $.ajax({ + type: 'GET', + url: OC.linkTo('files_sharing','ajax/setpermissions.php'), + cache: false, + data: data + }); }); $('.unshare').live('click', function(event) { + // TODO Fix unshare event.preventDefault(); + event.stopPropagation(); var source = $('#dropdown').data('file'); - var uid_shared_with = $(this).data('uid_shared_with'); - var data='source='+encodeURIComponent(source)+'&uid_shared_with='+encodeURIComponent(uid_shared_with); + var uid_shared_with = $(this).parent().data('uid_shared_with'); + var data = 'source='+encodeURIComponent(source)+'&uid_shared_with='+encodeURIComponent(uid_shared_with); $.ajax({ type: 'GET', url: OC.linkTo('files_sharing','ajax/unshare.php'), @@ -84,13 +102,16 @@ $(document).ready(function() { }); } }); + $('#link').live('click', function() { + $(this).focus(); + $(this).select(); + }); }); function createShareDropdown(filenames, files) { var html = "