2011-07-27 01:27:40 +00:00
|
|
|
$(document).ready(function() {
|
2011-08-11 15:15:17 +00:00
|
|
|
if (typeof FileActions !== 'undefined') {
|
2011-08-11 11:33:43 +00:00
|
|
|
FileActions.register('all', 'Share', OC.imagePath('core', 'actions/share'), function(filename) {
|
2011-08-11 16:50:29 +00:00
|
|
|
if (($('#dropdown').length)) {
|
2011-08-11 15:52:10 +00:00
|
|
|
$('#dropdown').hide('blind', function() {
|
2011-08-11 16:03:48 +00:00
|
|
|
var dropdownFile = $('#dropdown').data('file')
|
|
|
|
var file = $('#dir').val()+'/'+filename;
|
2011-08-11 15:52:10 +00:00
|
|
|
$('#dropdown').remove();
|
|
|
|
$('tr').removeClass('mouseOver');
|
2011-08-11 16:03:48 +00:00
|
|
|
if (dropdownFile != file) {
|
|
|
|
createDropdown(filename, file);
|
|
|
|
}
|
2011-08-11 15:52:10 +00:00
|
|
|
});
|
|
|
|
} else {
|
|
|
|
createDropdown(filename, $('#dir').val()+'/'+filename);
|
|
|
|
}
|
2011-08-11 11:33:43 +00:00
|
|
|
});
|
|
|
|
};
|
2011-08-11 15:15:17 +00:00
|
|
|
|
2011-07-29 19:43:29 +00:00
|
|
|
$('.share').click(function(event) {
|
|
|
|
event.preventDefault();
|
2011-08-01 00:47:53 +00:00
|
|
|
var filenames = getSelectedFiles('name');
|
|
|
|
var length = filenames.length;
|
|
|
|
var files = '';
|
|
|
|
for (var i = 0; i < length; i++) {
|
|
|
|
files += $('#dir').val()+'/'+filenames[i]+';';
|
|
|
|
}
|
2011-08-11 15:09:14 +00:00
|
|
|
createDropdown(false, files);
|
|
|
|
});
|
|
|
|
|
|
|
|
$(this).click(function(event) {
|
2011-08-11 16:50:29 +00:00
|
|
|
if (!($(event.target).hasClass('drop')) && $(event.target).parents().index($('#dropdown')) == -1) {
|
2011-08-11 15:09:14 +00:00
|
|
|
if ($('#dropdown').is(':visible')) {
|
|
|
|
$('#dropdown').hide('blind', function() {
|
2011-08-11 20:56:09 +00:00
|
|
|
$('#dropdown').remove();
|
2011-08-11 15:09:14 +00:00
|
|
|
$('tr').removeClass('mouseOver');
|
|
|
|
});
|
|
|
|
}
|
2011-08-01 00:47:53 +00:00
|
|
|
}
|
2011-07-27 01:27:40 +00:00
|
|
|
});
|
2011-08-11 15:09:14 +00:00
|
|
|
|
|
|
|
$('#share_with').live('change', function() {
|
2011-08-09 14:34:00 +00:00
|
|
|
var source = $('#dropdown').data('file');
|
|
|
|
var uid_shared_with = $(this).val();
|
|
|
|
var permissions = 0;
|
|
|
|
var data = 'sources='+encodeURIComponent(source)+'&uid_shared_with='+encodeURIComponent(uid_shared_with)+'&permissions='+encodeURIComponent(permissions);
|
|
|
|
$.ajax({
|
|
|
|
type: 'POST',
|
|
|
|
url: OC.linkTo('files_sharing','ajax/share.php'),
|
|
|
|
cache: false,
|
2011-08-09 21:55:51 +00:00
|
|
|
data: data,
|
|
|
|
success: function() {
|
2011-08-11 18:20:50 +00:00
|
|
|
addUser(uid_shared_with, permissions, false);
|
2011-08-09 21:55:51 +00:00
|
|
|
}
|
2011-07-27 01:27:40 +00:00
|
|
|
});
|
|
|
|
});
|
2011-08-11 15:09:14 +00:00
|
|
|
|
2011-08-09 21:55:51 +00:00
|
|
|
$('#shared_list > li').live('mouseenter', function(event) {
|
|
|
|
$(':hidden', this).show();
|
|
|
|
});
|
2011-08-11 15:09:14 +00:00
|
|
|
|
2011-08-09 21:55:51 +00:00
|
|
|
$('#shared_list > li').live('mouseleave', function(event) {
|
|
|
|
$('a', this).hide();
|
|
|
|
if (!$('input:[type=checkbox]', this).is(':checked')) {
|
|
|
|
$('input:[type=checkbox]', this).hide();
|
|
|
|
$('label', this).hide();
|
|
|
|
}
|
|
|
|
});
|
2011-08-11 15:09:14 +00:00
|
|
|
|
2011-08-03 19:21:53 +00:00
|
|
|
$('.permissions').live('change', function() {
|
2011-08-11 15:09:14 +00:00
|
|
|
var permissions = (this.checked) ? 1 : 0;
|
2011-08-07 19:20:57 +00:00
|
|
|
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
|
|
|
|
});
|
2011-08-03 19:21:53 +00:00
|
|
|
});
|
2011-08-11 18:20:50 +00:00
|
|
|
|
2011-08-05 15:18:35 +00:00
|
|
|
$('.unshare').live('click', function(event) {
|
|
|
|
event.preventDefault();
|
2011-08-11 18:20:50 +00:00
|
|
|
var user = $(this).parent();
|
2011-08-03 19:21:53 +00:00
|
|
|
var source = $('#dropdown').data('file');
|
2011-08-11 18:20:50 +00:00
|
|
|
var uid_shared_with = user.data('uid_shared_with');
|
2011-08-07 19:20:57 +00:00
|
|
|
var data = 'source='+encodeURIComponent(source)+'&uid_shared_with='+encodeURIComponent(uid_shared_with);
|
2011-08-03 19:21:53 +00:00
|
|
|
$.ajax({
|
|
|
|
type: 'GET',
|
|
|
|
url: OC.linkTo('files_sharing','ajax/unshare.php'),
|
|
|
|
cache: false,
|
|
|
|
data: data,
|
|
|
|
success: function() {
|
2011-08-11 18:20:50 +00:00
|
|
|
var option = "<option value='"+uid_shared_with+"'>"+uid_shared_with+"</option>";
|
|
|
|
$(user).remove();
|
|
|
|
$(option).appendTo('#share_with');
|
|
|
|
$('#share_with').trigger('liszt:updated');
|
2011-08-03 19:21:53 +00:00
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
2011-08-11 15:09:14 +00:00
|
|
|
|
2011-08-03 19:21:53 +00:00
|
|
|
$('#makelink').live('change', function() {
|
|
|
|
if (this.checked) {
|
2011-08-11 15:09:14 +00:00
|
|
|
var data = 'path='+$('#dropdown').data('file')+'&expire=0';
|
2011-08-03 19:21:53 +00:00
|
|
|
$.ajax({
|
|
|
|
type: 'GET',
|
|
|
|
url: OC.linkTo('files_publiclink','ajax/makelink.php'),
|
|
|
|
cache: false,
|
|
|
|
data: data,
|
|
|
|
success: function(token) {
|
|
|
|
if (token) {
|
2011-08-11 20:56:09 +00:00
|
|
|
showPublicLink(token);
|
2011-08-03 19:21:53 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
} else {
|
2011-08-11 15:09:14 +00:00
|
|
|
var data = 'token='+$('#link').data('token');
|
2011-08-03 19:21:53 +00:00
|
|
|
$.ajax({
|
|
|
|
type: 'GET',
|
|
|
|
url: OC.linkTo('files_publiclink','ajax/deletelink.php'),
|
|
|
|
cache: false,
|
|
|
|
data: data,
|
|
|
|
success: function(){
|
2011-08-05 15:18:35 +00:00
|
|
|
$('#link').hide('blind');
|
2011-08-03 19:21:53 +00:00
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
2011-07-27 01:27:40 +00:00
|
|
|
});
|
2011-08-11 15:09:14 +00:00
|
|
|
|
2011-08-07 19:20:57 +00:00
|
|
|
$('#link').live('click', function() {
|
|
|
|
$(this).focus();
|
|
|
|
$(this).select();
|
|
|
|
});
|
2011-07-29 19:43:29 +00:00
|
|
|
});
|
|
|
|
|
2011-08-11 15:09:14 +00:00
|
|
|
function createDropdown(filename, files) {
|
2011-08-11 16:50:29 +00:00
|
|
|
var html = "<div id='dropdown' class='drop' data-file='"+files+"'>";
|
2011-07-29 19:43:29 +00:00
|
|
|
html += "<div id='private'>";
|
2011-08-11 15:09:14 +00:00
|
|
|
html += "<select data-placeholder='User or Group' style='width:220px;' id='share_with' class='chzen-select'>";
|
2011-08-09 14:34:00 +00:00
|
|
|
html += "<option value=''></option>";
|
|
|
|
html += "</select>";
|
2011-08-09 21:55:51 +00:00
|
|
|
html += "<ul id='shared_list'></ul>";
|
2011-07-29 19:43:29 +00:00
|
|
|
html += "</div>";
|
2011-08-02 16:19:49 +00:00
|
|
|
html += "<div id='public'>";
|
2011-08-03 19:21:53 +00:00
|
|
|
html += "<input type='checkbox' name='makelink' id='makelink' value='1' /><label for='makelink'>make public</label>";
|
2011-08-02 16:58:33 +00:00
|
|
|
html += "<input type='checkbox' name='public_link_write' id='public_link_write' value='1' /><label for='public_link_write'>allow upload</label>";
|
2011-08-03 19:21:53 +00:00
|
|
|
html += "<br />";
|
2011-08-09 21:55:51 +00:00
|
|
|
html += "<input id='link' style='display:none; width:90%;' />";
|
2011-07-29 19:43:29 +00:00
|
|
|
html += "</div>";
|
2011-08-11 15:09:14 +00:00
|
|
|
if (filename) {
|
|
|
|
$('tr[data-file="'+filename+'"]').addClass('mouseOver');
|
|
|
|
$(html).appendTo($('tr[data-file="'+filename+'"] td.filename'));
|
|
|
|
} else {
|
|
|
|
$(html).appendTo($('thead .share'));
|
|
|
|
}
|
2011-08-09 14:34:00 +00:00
|
|
|
$.getJSON(OC.linkTo('files_sharing', 'ajax/userautocomplete.php'), function(users) {
|
|
|
|
if (users) {
|
|
|
|
$.each(users, function(index, row) {
|
2011-08-11 15:09:14 +00:00
|
|
|
$(row).appendTo('#share_with');
|
2011-08-09 14:34:00 +00:00
|
|
|
});
|
2011-08-11 15:09:14 +00:00
|
|
|
$('#share_with').trigger('liszt:updated');
|
2011-08-09 14:34:00 +00:00
|
|
|
}
|
|
|
|
});
|
|
|
|
$.getJSON(OC.linkTo('files_sharing', 'ajax/getitem.php'), { source: files }, function(users) {
|
2011-08-03 19:21:53 +00:00
|
|
|
if (users) {
|
|
|
|
$.each(users, function(index, row) {
|
2011-08-10 17:38:58 +00:00
|
|
|
if (isNaN(index)) {
|
2011-08-11 15:09:14 +00:00
|
|
|
addUser(row.uid_shared_with, row.permissions, index.substr(0, index.lastIndexOf('-')));
|
2011-08-07 19:20:57 +00:00
|
|
|
} else {
|
2011-08-11 15:09:14 +00:00
|
|
|
addUser(row.uid_shared_with, row.permissions, false);
|
2011-08-03 19:21:53 +00:00
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
2011-08-09 14:34:00 +00:00
|
|
|
$.getJSON(OC.linkTo('files_publiclink', 'ajax/getlink.php'), { path: files }, function(token) {
|
2011-08-03 19:21:53 +00:00
|
|
|
if (token) {
|
2011-08-11 20:56:09 +00:00
|
|
|
showPublicLink(token);
|
2011-08-03 19:21:53 +00:00
|
|
|
}
|
2011-08-05 15:18:35 +00:00
|
|
|
});
|
2011-08-03 19:21:53 +00:00
|
|
|
$('#dropdown').show('blind');
|
2011-08-11 15:09:14 +00:00
|
|
|
$('#share_with').chosen();
|
|
|
|
}
|
|
|
|
|
|
|
|
function addUser(uid_shared_with, permissions, parentFolder) {
|
|
|
|
if (parentFolder) {
|
|
|
|
var user = "<li>Parent folder "+parentFolder+" shared with "+uid_shared_with+"</li>";
|
|
|
|
} else {
|
|
|
|
var checked = ((permissions > 0) ? "checked='checked'" : "style='display:none;'");
|
|
|
|
var style = ((permissions == 0) ? "style='display:none;'" : "");
|
|
|
|
var user = "<li data-uid_shared_with='"+uid_shared_with+"'>"+uid_shared_with;
|
|
|
|
user += "<input type='checkbox' name='permissions' id='"+uid_shared_with+"' class='permissions' "+checked+"/><label for='"+uid_shared_with+"' "+style+">can edit</label>";
|
|
|
|
user += "<a href='' title='Unshare' class='unshare' style='display:none;'><img class='svg' src='"+OC.imagePath('core','actions/delete')+"'/></a></li>";
|
|
|
|
}
|
|
|
|
$('#share_with option[value="'+uid_shared_with+'"]').remove();
|
2011-08-11 15:15:17 +00:00
|
|
|
$('#share_with').trigger('liszt:updated');
|
2011-08-11 15:09:14 +00:00
|
|
|
$(user).appendTo('#shared_list');
|
2011-08-02 16:58:33 +00:00
|
|
|
}
|
2011-08-11 20:56:09 +00:00
|
|
|
|
|
|
|
function showPublicLink(token) {
|
|
|
|
$('#makelink').attr('checked', true);
|
|
|
|
$('#link').data('token', token);
|
|
|
|
$('#link').val(parent.location.protocol+"//"+location.host+OC.linkTo('files_publiclink','get.php')+'?token='+token);
|
|
|
|
$('#link').show('blind');
|
|
|
|
}
|