New implementation of share dialog
This commit is contained in:
parent
ddfc9fc001
commit
0d79560e94
|
@ -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));
|
||||
?>
|
|
@ -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 += "<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 += "<div id='permissions'style='text-align: left'>";
|
||||
html += "Permissions"
|
||||
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>";
|
||||
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 += "<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>";
|
||||
$(html).appendTo($('tr[data-file="'+filenames+'"] '));
|
||||
}
|
|
@ -118,6 +118,16 @@ class OC_Share {
|
|||
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
|
||||
|
|
Loading…
Reference in New Issue