diff options
author | Michael Gapczynski <GapczynskiM@gmail.com> | 2011-08-02 12:19:49 -0400 |
---|---|---|
committer | Michael Gapczynski <GapczynskiM@gmail.com> | 2011-08-02 12:19:49 -0400 |
commit | 0d79560e944d21aba25073c6632d2d0104bd38be (patch) | |
tree | e57335fd85ff79c59eb876c2ae04c905b4406317 /apps/files_sharing | |
parent | ddfc9fc001904232236baee7bf9a5a934354ac95 (diff) | |
download | nextcloud-server-0d79560e944d21aba25073c6632d2d0104bd38be.tar.gz nextcloud-server-0d79560e944d21aba25073c6632d2d0104bd38be.zip |
New implementation of share dialog
Diffstat (limited to 'apps/files_sharing')
-rw-r--r-- | apps/files_sharing/ajax/getitem.php | 10 | ||||
-rw-r--r-- | apps/files_sharing/js/share.js | 90 | ||||
-rw-r--r-- | apps/files_sharing/lib_share.php | 12 |
3 files changed, 43 insertions, 69 deletions
diff --git a/apps/files_sharing/ajax/getitem.php b/apps/files_sharing/ajax/getitem.php new file mode 100644 index 00000000000..a074510363f --- /dev/null +++ b/apps/files_sharing/ajax/getitem.php @@ -0,0 +1,10 @@ +<?php +$RUNTIME_NOAPPS = true; + +require_once('../../../lib/base.php'); +require_once('../lib_share.php'); + +$source = "/".OC_User::getUser()."/files".$_GET['source']; +error_log($source); +echo json_encode(OC_Share::getMySharedItem($source)); +?>
\ No newline at end of file diff --git a/apps/files_sharing/js/share.js b/apps/files_sharing/js/share.js index 6ca018fca0c..6b5b47f90f2 100644 --- a/apps/files_sharing/js/share.js +++ b/apps/files_sharing/js/share.js @@ -18,88 +18,42 @@ $(document).ready(function() { } createShareDialog(filenames, files); }); - $("input[name=share_type]").live('change', function() { - $('#private').toggle(); - $('#public').toggle(); - }); - $('.uid_shared_with').live('keyup', function() { + $('#uid_shared_with').live('keyup', function() { $(this).autocomplete({ - source: '../apps/files_sharing/ajax/userautocomplete.php', - minLength: 1 + source: '../apps/files_sharing/ajax/userautocomplete.php' }); }); - $('button.add-uid_shared_with').live('click', function(event) { - event.preventDefault(); - // TODO Make sure previous textbox has a valid user or group name - var html = "<br />"; - html += "<label>Share with <input placeholder='User or Group' class='uid_shared_with' /></label>"; - html += "<button class='add-uid_shared_with fancybutton'>+</button>"; - $(html).insertAfter('.add-uid_shared_with'); - $(this).html(' -  '); - $(this).removeClass('add-uid_shared_with fancybutton'); - $(this).addClass('remove-uid_shared_with fancybutton'); - }); $('button.remove-uid_shared_with').live('click', function(event) { event.preventDefault(); alert("remove"); // TODO Remove corresponding row }); - $('#expire').datepicker({ - dateFormat:'MM d, yy', - altField: '#expire_time', - altFormat: 'yy-mm-dd' - }); }); function createShareDialog(filenames, files) { - var html = "<div id='dialog' align='center'>"; - html += "<label><input type='radio' name='share_type' value='private' checked='checked' /> Private</label>"; - html += "<label><input type='radio' name='share_type' value='public' /> Public</label>"; - html += "<br />"; + var html = "<div id='dialog' style='position: absolute'>"; html += "<div id='private'>"; - html += "<label>Share with <input placeholder='User or Group' class='uid_shared_with' /></label>"; - html += "<button id='hey' class='add-uid_shared_with fancybutton'>+</button>"; - html += "<br />"; - html += "<div id='permissions'style='text-align: left'>"; - html += "Permissions" + html += "<label>Share with <input placeholder='User or Group' id='uid_shared_with' /></label>"; + html += "<label><input type='checkbox' name='permissions' value='1' /> allow editing</label><br />"; html += "<br />"; - html += "<label><input type='checkbox' name='share_permissions' value='1' /> Edit</label><br />"; - html += "<label><input type='checkbox' name='share_permissions' value='2' /> Delete</label><br />"; + html += "<div id='shared_list'></div>"; + $.getJSON(OC.linkTo('files_sharing','ajax/getitem.php'), { source: files }, function(users) { + var list = ""; + $.each(users, function(index, row) { + list += row.uid_shared_with; + list += " <label><input type='checkbox' name='share_private_permissions' value='1' /> allow editing</label><br />"; + if (row.permissions > 0) { + $('share_private_permissions').prop('checked', true); + } + }); + $(list).appendTo('#shared_list'); + }); html += "</div>"; + html += "<div id='public'>"; + html += "<label><input type='checkbox' name='public_link' value='1' /> make public</label>"; + html += "<label><input type='checkbox' name='public_link_write' value='1' /> writeable</label>"; + html += "<div id='link'>"; html += "</div>"; - html += "<div id='public' style='display: none'>"; - html += "TODO: Construct a public link"; - html += "<input placeholder='Expires' id='expire' />"; html += "</div>"; - html += "<div>"; - $(html).dialog({ - title: 'Share ' + filenames, - modal: true, - close: function(event, ui) { - $(this).remove(); - }, - buttons: { - 'Share': function() { - if ($('input[name=share_type]:checked').val() == 'public') { - // TODO Construct public link - } else { - // TODO Check all inputs are valid - var uid_shared_with = $('.uid_shared_with').val(); - var permissions = 0; - $(this).find('input:checkbox:checked').each(function() { - permissions += parseInt($(this).val()); - }); - $.ajax({ - type: 'POST', - url: '../apps/files_sharing/ajax/share.php', - cache: false, - data: '&sources='+encodeURIComponent(files)+'&uid_shared_with[]='+uid_shared_with+'&permissions='+permissions, - success: function() { - $('#dialog').dialog('close'); - } - }); - } - } - } - }); + $(html).appendTo($('tr[data-file="'+filenames+'"] ')); }
\ No newline at end of file diff --git a/apps/files_sharing/lib_share.php b/apps/files_sharing/lib_share.php index f8b00aa905d..159c45e11ef 100644 --- a/apps/files_sharing/lib_share.php +++ b/apps/files_sharing/lib_share.php @@ -117,7 +117,17 @@ class OC_Share { $query = OC_DB::prepare("SELECT uid_owner, source, permissions FROM *PREFIX*sharing WHERE target = ? AND uid_shared_with = ? LIMIT 1"); return $query->execute(array($target, OC_User::getUser()))->fetchAll(); } - + + /** + * Get the item with the specified source location + * @param $source The source location of the item + * @return An array with the users and permissions the item is shared with + */ + public static function getMySharedItem($source) { + $source = self::cleanPath($source); + $query = OC_DB::prepare("SELECT uid_shared_with, permissions FROM *PREFIX*sharing WHERE source = ? AND uid_owner = ?"); + return $query->execute(array($source, OC_User::getUser()))->fetchAll(); + } /** * Get all items the current user is sharing * @return An array with all items the user is sharing |