Blame view

sources/core/js/share.js 30.4 KB
03e52840d   Kload   Init
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
  OC.Share={
  	SHARE_TYPE_USER:0,
  	SHARE_TYPE_GROUP:1,
  	SHARE_TYPE_LINK:3,
  	SHARE_TYPE_EMAIL:4,
  	itemShares:[],
  	statuses:{},
  	droppedDown:false,
  	/**
  	 * Loads ALL share statuses from server, stores them in OC.Share.statuses then
  	 * calls OC.Share.updateIcons() to update the files "Share" icon to "Shared"
  	 * according to their share status and share type.
  	 */
  	loadIcons:function(itemType) {
  		// Load all share icons
  		$.get(OC.filePath('core', 'ajax', 'share.php'), { fetch: 'getItemsSharedStatuses', itemType: itemType }, function(result) {
  			if (result && result.status === 'success') {
  				OC.Share.statuses = {};
  				$.each(result.data, function(item, data) {
  					OC.Share.statuses[item] = data;
  				});
  				OC.Share.updateIcons(itemType);
  			}
  		});
  	},
  	/**
  	 * Updates the files' "Share" icons according to the known
  	 * sharing states stored in OC.Share.statuses.
  	 * (not reloaded from server)
  	 */
  	updateIcons:function(itemType){
  		var item;
  		for (item in OC.Share.statuses){
  			var data = OC.Share.statuses[item];
  
  			var hasLink = data['link'];
  			// Links override shared in terms of icon display
  			if (hasLink) {
  				var image = OC.imagePath('core', 'actions/public');
  			} else {
  				var image = OC.imagePath('core', 'actions/shared');
  			}
  			if (itemType != 'file' && itemType != 'folder') {
  				$('a.share[data-item="'+item+'"]').css('background', 'url('+image+') no-repeat center');
  			} else {
  				var file = $('tr[data-id="'+item+'"]');
  				if (file.length > 0) {
  					var action = $(file).find('.fileactions .action[data-action="Share"]');
  					var img = action.find('img').attr('src', image);
  					action.addClass('permanent');
  					action.html(' '+t('core', 'Shared')).prepend(img);
  				} else {
  					var dir = $('#dir').val();
  					if (dir.length > 1) {
  						var last = '';
  						var path = dir;
  						// Search for possible parent folders that are shared
  						while (path != last) {
  							if (path == data['path'] && !data['link']) {
  								var actions = $('.fileactions .action[data-action="Share"]');
  								$.each(actions, function(index, action) {
  									var img = $(action).find('img');
  									if (img.attr('src') != OC.imagePath('core', 'actions/public')) {
  										img.attr('src', image);
  										$(action).addClass('permanent');
  										$(action).html(' '+t('core', 'Shared')).prepend(img);
  									}
  								});
  							}
  							last = path;
  							path = OC.Share.dirname(path);
  						}
  					}
  				}
  			}
  		}
  	},
  	updateIcon:function(itemType, itemSource) {
  		var shares = false;
  		var link = false;
  		var image = OC.imagePath('core', 'actions/share');
  		$.each(OC.Share.itemShares, function(index) {
  			if (OC.Share.itemShares[index]) {
  				if (index == OC.Share.SHARE_TYPE_LINK) {
  					if (OC.Share.itemShares[index] == true) {
  						shares = true;
  						image = OC.imagePath('core', 'actions/public');
  						link = true;
  						return;
  					}
  				} else if (OC.Share.itemShares[index].length > 0) {
  					shares = true;
  					image = OC.imagePath('core', 'actions/shared');
  				}
  			}
  		});
  		if (itemType != 'file' && itemType != 'folder') {
  			$('a.share[data-item="'+itemSource+'"]').css('background', 'url('+image+') no-repeat center');
  		} else {
  			var file = $('tr').filterAttr('data-id', String(itemSource));
  			if (file.length > 0) {
  				var action = $(file).find('.fileactions .action').filterAttr('data-action', 'Share');
  				var img = action.find('img').attr('src', image);
  				if (shares) {
  					action.addClass('permanent');
  					action.html(' '+ escapeHTML(t('core', 'Shared'))).prepend(img);
  				} else {
  					action.removeClass('permanent');
  					action.html(' '+ escapeHTML(t('core', 'Share'))).prepend(img);
  				}
  			}
  		}
  		if (shares) {
  			OC.Share.statuses[itemSource] = OC.Share.statuses[itemSource] || {};
  			OC.Share.statuses[itemSource]['link'] = link;
  		} else {
  			delete OC.Share.statuses[itemSource];
  		}
  	},
  	loadItem:function(itemType, itemSource) {
  		var data = '';
  		var checkReshare = true;
  		if (typeof OC.Share.statuses[itemSource] === 'undefined') {
  			// NOTE: Check does not always work and misses some shares, fix later
31b7f2792   Kload   Upgrade to ownclo...
125
  			var checkShares = true;
03e52840d   Kload   Init
126
  		} else {
31b7f2792   Kload   Upgrade to ownclo...
127
  			var checkShares = true;
03e52840d   Kload   Init
128
129
130
131
132
133
134
135
  		}
  		$.ajax({type: 'GET', url: OC.filePath('core', 'ajax', 'share.php'), data: { fetch: 'getItem', itemType: itemType, itemSource: itemSource, checkReshare: checkReshare, checkShares: checkShares }, async: false, success: function(result) {
  			if (result && result.status === 'success') {
  				data = result.data;
  			} else {
  				data = false;
  			}
  		}});
31b7f2792   Kload   Upgrade to ownclo...
136

03e52840d   Kload   Init
137
138
  		return data;
  	},
31b7f2792   Kload   Upgrade to ownclo...
139
140
141
142
143
144
145
146
147
148
149
  	share:function(itemType, itemSource, shareType, shareWith, permissions, itemSourceName, callback) {
  		$.post(OC.filePath('core', 'ajax', 'share.php'),
  			{
  				action: 'share',
  				itemType: itemType,
  				itemSource: itemSource,
  				shareType: shareType,
  				shareWith: shareWith,
  				permissions: permissions,
  				itemSourceName: itemSourceName
  			}, function (result) {
03e52840d   Kload   Init
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
  			if (result && result.status === 'success') {
  				if (callback) {
  					callback(result.data);
  				}
  			} else {
  				if (result.data && result.data.message) {
  					var msg = result.data.message;
  				} else {
  					var msg = t('core', 'Error');
  				}
  				OC.dialogs.alert(msg, t('core', 'Error while sharing'));
  			}
  		});
  	},
  	unshare:function(itemType, itemSource, shareType, shareWith, callback) {
  		$.post(OC.filePath('core', 'ajax', 'share.php'), { action: 'unshare', itemType: itemType, itemSource: itemSource, shareType: shareType, shareWith: shareWith }, function(result) {
  			if (result && result.status === 'success') {
  				if (callback) {
  					callback();
  				}
  			} else {
  				OC.dialogs.alert(t('core', 'Error while unsharing'), t('core', 'Error'));
  			}
  		});
  	},
  	setPermissions:function(itemType, itemSource, shareType, shareWith, permissions) {
  		$.post(OC.filePath('core', 'ajax', 'share.php'), { action: 'setPermissions', itemType: itemType, itemSource: itemSource, shareType: shareType, shareWith: shareWith, permissions: permissions }, function(result) {
  			if (!result || result.status !== 'success') {
  				OC.dialogs.alert(t('core', 'Error while changing permissions'), t('core', 'Error'));
  			}
  		});
  	},
31b7f2792   Kload   Upgrade to ownclo...
182
  	showDropDown:function(itemType, itemSource, appendTo, link, possiblePermissions, filename) {
03e52840d   Kload   Init
183
  		var data = OC.Share.loadItem(itemType, itemSource);
a293d369c   Kload   Update sources to...
184
185
  		var dropDownEl;
  		var html = '<div id="dropdown" class="drop" data-item-type="'+itemType+'" data-item-source="'+itemSource+'">';
03e52840d   Kload   Init
186
187
188
189
190
191
192
193
  		if (data !== false && data.reshare !== false && data.reshare.uid_owner !== undefined) {
  			if (data.reshare.share_type == OC.Share.SHARE_TYPE_GROUP) {
  				html += '<span class="reshare">'+t('core', 'Shared with you and the group {group} by {owner}', {group: escapeHTML(data.reshare.share_with), owner: escapeHTML(data.reshare.displayname_owner)})+'</span>';
  			} else {
  				html += '<span class="reshare">'+t('core', 'Shared with you by {owner}', {owner: escapeHTML(data.reshare.displayname_owner)})+'</span>';
  			}
  			html += '<br />';
  		}
31b7f2792   Kload   Upgrade to ownclo...
194

03e52840d   Kload   Init
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
  		if (possiblePermissions & OC.PERMISSION_SHARE) {
  			// Determine the Allow Public Upload status.
  			// Used later on to determine if the
  			// respective checkbox should be checked or
  			// not.
  
  			var publicUploadEnabled = $('#filestable').data('allow-public-upload');
  			if (typeof publicUploadEnabled == 'undefined') {
  				publicUploadEnabled = 'no';
  			}
  			var allowPublicUploadStatus = false;
  
  			$.each(data.shares, function(key, value) {
  				if (value.share_type === OC.Share.SHARE_TYPE_LINK) {
  					allowPublicUploadStatus = (value.permissions & OC.PERMISSION_CREATE) ? true : false;
  					return true;
  				}
  			});
31b7f2792   Kload   Upgrade to ownclo...
213
  			html += '<input id="shareWith" type="text" placeholder="'+t('core', 'Share with user or group …')+'" />';
03e52840d   Kload   Init
214
215
  			html += '<ul id="shareWithList">';
  			html += '</ul>';
31b7f2792   Kload   Upgrade to ownclo...
216
217
  			var linksAllowed = $('#allowShareWithLink').val() === 'yes';
  			if (link && linksAllowed) {
03e52840d   Kload   Init
218
  				html += '<div id="link">';
31b7f2792   Kload   Upgrade to ownclo...
219
  				html += '<input type="checkbox" name="linkCheckbox" id="linkCheckbox" value="1" /><label for="linkCheckbox">'+t('core', 'Share link')+'</label>';
03e52840d   Kload   Init
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
  				html += '<br />';
  				html += '<input id="linkText" type="text" readonly="readonly" />';
  				html += '<input type="checkbox" name="showPassword" id="showPassword" value="1" style="display:none;" /><label for="showPassword" style="display:none;">'+t('core', 'Password protect')+'</label>';
  				html += '<div id="linkPass">';
  				html += '<input id="linkPassText" type="password" placeholder="'+t('core', 'Password')+'" />';
  				html += '</div>';
  				if (itemType === 'folder' && (possiblePermissions & OC.PERMISSION_CREATE) && publicUploadEnabled === 'yes') {
  					html += '<div id="allowPublicUploadWrapper" style="display:none;">';
  					html += '<input type="checkbox" value="1" name="allowPublicUpload" id="sharingDialogAllowPublicUpload"' + ((allowPublicUploadStatus) ? 'checked="checked"' : '') + ' />';
  					html += '<label for="sharingDialogAllowPublicUpload">' + t('core', 'Allow Public Upload') + '</label>';
  					html += '</div>';
  				}
  				html += '</div><form id="emailPrivateLink" >';
  				html += '<input id="email" style="display:none; width:62%;" value="" placeholder="'+t('core', 'Email link to person')+'" type="text" />';
  				html += '<input id="emailButton" style="display:none;" type="submit" value="'+t('core', 'Send')+'" />';
  				html += '</form>';
  			}
  
  			html += '<div id="expiration">';
  			html += '<input type="checkbox" name="expirationCheckbox" id="expirationCheckbox" value="1" /><label for="expirationCheckbox">'+t('core', 'Set expiration date')+'</label>';
  			html += '<input id="expirationDate" type="text" placeholder="'+t('core', 'Expiration date')+'" style="display:none; width:90%;" />';
  			html += '</div>';
a293d369c   Kload   Update sources to...
242
243
  			dropDownEl = $(html);
  			dropDownEl = dropDownEl.appendTo(appendTo);
03e52840d   Kload   Init
244
245
246
247
248
249
250
251
252
253
  			// Reset item shares
  			OC.Share.itemShares = [];
  			if (data.shares) {
  				$.each(data.shares, function(index, share) {
  					if (share.share_type == OC.Share.SHARE_TYPE_LINK) {
  						if ( !('file_target' in share) ) {
  							OC.Share.showLink(share.token, share.share_with, itemSource);
  						}
  					} else {
  						if (share.collection) {
31b7f2792   Kload   Upgrade to ownclo...
254
  							OC.Share.addShareWith(share.share_type, share.share_with, share.share_with_displayname, share.permissions, possiblePermissions, share.mail_send, share.collection);
03e52840d   Kload   Init
255
  						} else {
31b7f2792   Kload   Upgrade to ownclo...
256
  							OC.Share.addShareWith(share.share_type, share.share_with, share.share_with_displayname, share.permissions, possiblePermissions, share.mail_send, false);
03e52840d   Kload   Init
257
258
259
260
261
262
263
264
  						}
  					}
  					if (share.expiration != null) {
  						OC.Share.showExpirationDate(share.expiration);
  					}
  				});
  			}
  			$('#shareWith').autocomplete({minLength: 1, source: function(search, response) {
31b7f2792   Kload   Upgrade to ownclo...
265
266
267
  	//			if (cache[search.term]) {
  	//				response(cache[search.term]);
  	//			} else {
03e52840d   Kload   Init
268
269
270
271
272
273
  					$.get(OC.filePath('core', 'ajax', 'share.php'), { fetch: 'getShareWith', search: search.term, itemShares: OC.Share.itemShares }, function(result) {
  						if (result.status == 'success' && result.data.length > 0) {
  							$( "#shareWith" ).autocomplete( "option", "autoFocus", true );
  							response(result.data);
  						} else {
  							// Suggest sharing via email if valid email address
31b7f2792   Kload   Upgrade to ownclo...
274
275
276
277
  //							var pattern = new RegExp(/^[+a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/i);
  //							if (pattern.test(search.term)) {
  //								response([{label: t('core', 'Share via email:')+' '+search.term, value: {shareType: OC.Share.SHARE_TYPE_EMAIL, shareWith: search.term}}]);
  //							} else {
03e52840d   Kload   Init
278
279
  								$( "#shareWith" ).autocomplete( "option", "autoFocus", false );
  								response([t('core', 'No people found')]);
31b7f2792   Kload   Upgrade to ownclo...
280
  //							}
03e52840d   Kload   Init
281
282
  						}
  					});
31b7f2792   Kload   Upgrade to ownclo...
283
  	//			}
03e52840d   Kload   Init
284
285
286
287
288
289
290
291
  			},
  			focus: function(event, focused) {
  				event.preventDefault();
  			},
  			select: function(event, selected) {
  				event.stopPropagation();
  				var itemType = $('#dropdown').data('item-type');
  				var itemSource = $('#dropdown').data('item-source');
31b7f2792   Kload   Upgrade to ownclo...
292
  				var itemSourceName = $('#dropdown').data('item-source-name');
03e52840d   Kload   Init
293
294
295
  				var shareType = selected.item.value.shareType;
  				var shareWith = selected.item.value.shareWith;
  				$(this).val(shareWith);
31b7f2792   Kload   Upgrade to ownclo...
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
  				// Default permissions are Edit (CRUD) and Share
  				// Check if these permissions are possible
  				var permissions = OC.PERMISSION_READ;
  				if (possiblePermissions & OC.PERMISSION_UPDATE) {
  					permissions = permissions | OC.PERMISSION_UPDATE;
  				}
  				if (possiblePermissions & OC.PERMISSION_CREATE) {
  					permissions = permissions | OC.PERMISSION_CREATE;
  				}
  				if (possiblePermissions & OC.PERMISSION_DELETE) {
  					permissions = permissions | OC.PERMISSION_DELETE;
  				}
  				if (possiblePermissions & OC.PERMISSION_SHARE) {
  					permissions = permissions | OC.PERMISSION_SHARE;
  				}
  
  				OC.Share.share(itemType, itemSource, shareType, shareWith, permissions, itemSourceName, function() {
03e52840d   Kload   Init
313
314
315
316
317
318
  					OC.Share.addShareWith(shareType, shareWith, selected.item.label, permissions, possiblePermissions);
  					$('#shareWith').val('');
  					OC.Share.updateIcon(itemType, itemSource);
  				});
  				return false;
  			}
31b7f2792   Kload   Upgrade to ownclo...
319
320
321
322
323
324
325
326
327
328
329
330
331
332
  			})
  			// customize internal _renderItem function to display groups and users differently
  			.data("ui-autocomplete")._renderItem = function( ul, item ) {
  				var insert = $( "<a>" );
  				var text = (item.value.shareType == 1)? item.label + ' ('+t('core', 'group')+')' : item.label;
  				insert.text( text );
  				if(item.value.shareType == 1) {
  					insert = insert.wrapInner('<strong></strong>');
  				}
  				return $( "<li>" )
  					.addClass((item.value.shareType == 1)?'group':'user')
  					.append( insert )
  					.appendTo( ul );
  			};
03e52840d   Kload   Init
333
334
335
  		} else {
  			html += '<input id="shareWith" type="text" placeholder="'+t('core', 'Resharing is not allowed')+'" style="width:90%;" disabled="disabled"/>';
  			html += '</div>';
a293d369c   Kload   Update sources to...
336
337
  			dropDownEl = $(html);
  			dropDownEl.appendTo(appendTo);
03e52840d   Kload   Init
338
  		}
a293d369c   Kload   Update sources to...
339
  		dropDownEl.attr('data-item-source-name', filename);
03e52840d   Kload   Init
340
341
342
  		$('#dropdown').show('blind', function() {
  			OC.Share.droppedDown = true;
  		});
31b7f2792   Kload   Upgrade to ownclo...
343
344
345
  		if ($('html').hasClass('lte9')){
  			$('#dropdown input[placeholder]').placeholder();
  		}
03e52840d   Kload   Init
346
347
348
349
350
351
352
353
354
355
356
357
358
359
  		$('#shareWith').focus();
  	},
  	hideDropDown:function(callback) {
  		$('#dropdown').hide('blind', function() {
  			OC.Share.droppedDown = false;
  			$('#dropdown').remove();
  			if (typeof FileActions !== 'undefined') {
  				$('tr').removeClass('mouseOver');
  			}
  			if (callback) {
  				callback.call();
  			}
  		});
  	},
31b7f2792   Kload   Upgrade to ownclo...
360
361
362
363
  	addShareWith:function(shareType, shareWith, shareWithDisplayName, permissions, possiblePermissions, mailSend, collection) {
  		if (shareType === 1) {
  			shareWithDisplayName = shareWithDisplayName + " (" + t('core', 'group') + ')';
  		}
03e52840d   Kload   Init
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
  		if (!OC.Share.itemShares[shareType]) {
  			OC.Share.itemShares[shareType] = [];
  		}
  		OC.Share.itemShares[shareType].push(shareWith);
  		if (collection) {
  			if (collection.item_type == 'file' || collection.item_type == 'folder') {
  				var item = collection.path;
  			} else {
  				var item = collection.item_source;
  			}
  			var collectionList = $('#shareWithList li').filterAttr('data-collection', item);
  			if (collectionList.length > 0) {
  				$(collectionList).append(', '+shareWithDisplayName);
  			} else {
  				var html = '<li style="clear: both;" data-collection="'+item+'">'+t('core', 'Shared in {item} with {user}', {'item': item, user: shareWithDisplayName})+'</li>';
  				$('#shareWithList').prepend(html);
  			}
  		} else {
  			var editChecked = createChecked = updateChecked = deleteChecked = shareChecked = '';
  			if (permissions & OC.PERMISSION_CREATE) {
  				createChecked = 'checked="checked"';
  				editChecked = 'checked="checked"';
  			}
  			if (permissions & OC.PERMISSION_UPDATE) {
  				updateChecked = 'checked="checked"';
  				editChecked = 'checked="checked"';
  			}
  			if (permissions & OC.PERMISSION_DELETE) {
  				deleteChecked = 'checked="checked"';
  				editChecked = 'checked="checked"';
  			}
  			if (permissions & OC.PERMISSION_SHARE) {
  				shareChecked = 'checked="checked"';
  			}
  			var html = '<li style="clear: both;" data-share-type="'+escapeHTML(shareType)+'" data-share-with="'+escapeHTML(shareWith)+'" title="' + escapeHTML(shareWith) + '">';
31b7f2792   Kload   Upgrade to ownclo...
399
400
401
402
403
404
405
406
407
408
  			var showCrudsButton;
  			html += '<a href="#" class="unshare"><img class="svg" alt="'+t('core', 'Unshare')+'" src="'+OC.imagePath('core', 'actions/delete')+'"/></a>';
  			html += '<span class="username">' + escapeHTML(shareWithDisplayName) + '</span>';
  			var mailNotificationEnabled = $('input:hidden[name=mailNotificationEnabled]').val();
  			if (mailNotificationEnabled === 'yes') {
  				var checked = '';
  				if (mailSend === '1') {
  					checked = 'checked';
  				}
  				html += '<label><input type="checkbox" name="mailNotification" class="mailNotification" ' + checked + ' />'+t('core', 'notify by email')+'</label> ';
03e52840d   Kload   Init
409
410
  			}
  			if (possiblePermissions & OC.PERMISSION_CREATE || possiblePermissions & OC.PERMISSION_UPDATE || possiblePermissions & OC.PERMISSION_DELETE) {
31b7f2792   Kload   Upgrade to ownclo...
411
  				html += '<label><input type="checkbox" name="edit" class="permissions" '+editChecked+' />'+t('core', 'can edit')+'</label> ';
03e52840d   Kload   Init
412
  			}
31b7f2792   Kload   Upgrade to ownclo...
413
  			showCrudsButton = '<a href="#" class="showCruds"><img class="svg" alt="'+t('core', 'access control')+'" src="'+OC.imagePath('core', 'actions/triangle-s')+'"/></a>';
03e52840d   Kload   Init
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
  			html += '<div class="cruds" style="display:none;">';
  				if (possiblePermissions & OC.PERMISSION_CREATE) {
  					html += '<label><input type="checkbox" name="create" class="permissions" '+createChecked+' data-permissions="'+OC.PERMISSION_CREATE+'" />'+t('core', 'create')+'</label>';
  				}
  				if (possiblePermissions & OC.PERMISSION_UPDATE) {
  					html += '<label><input type="checkbox" name="update" class="permissions" '+updateChecked+' data-permissions="'+OC.PERMISSION_UPDATE+'" />'+t('core', 'update')+'</label>';
  				}
  				if (possiblePermissions & OC.PERMISSION_DELETE) {
  					html += '<label><input type="checkbox" name="delete" class="permissions" '+deleteChecked+' data-permissions="'+OC.PERMISSION_DELETE+'" />'+t('core', 'delete')+'</label>';
  				}
  				if (possiblePermissions & OC.PERMISSION_SHARE) {
  					html += '<label><input type="checkbox" name="share" class="permissions" '+shareChecked+' data-permissions="'+OC.PERMISSION_SHARE+'" />'+t('core', 'share')+'</label>';
  				}
  			html += '</div>';
  			html += '</li>';
31b7f2792   Kload   Upgrade to ownclo...
429
430
431
432
433
434
435
436
437
  			html = $(html).appendTo('#shareWithList');
  			// insert cruds button into last label element
  			var lastLabel = html.find('>label:last');
  			if (lastLabel.exists()){
  				lastLabel.append(showCrudsButton);
  			}
  			else{
  				html.find('.cruds').before(showCrudsButton);
  			}
03e52840d   Kload   Init
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
  			$('#expiration').show();
  		}
  	},
  	showLink:function(token, password, itemSource) {
  		OC.Share.itemShares[OC.Share.SHARE_TYPE_LINK] = true;
  		$('#linkCheckbox').attr('checked', true);
  		if (! token) {
  			//fallback to pre token link
  			var filename = $('tr').filterAttr('data-id', String(itemSource)).data('file');
  			var type = $('tr').filterAttr('data-id', String(itemSource)).data('type');
  			if ($('#dir').val() == '/') {
  				var file = $('#dir').val() + filename;
  			} else {
  				var file = $('#dir').val() + '/' + filename;
  			}
  			file = '/'+OC.currentUser+'/files'+file;
  			var link = parent.location.protocol+'//'+location.host+OC.linkTo('', 'public.php')+'?service=files&'+type+'='+encodeURIComponent(file);
  		} else {
  			//TODO add path param when showing a link to file in a subfolder of a public link share
  			var link = parent.location.protocol+'//'+location.host+OC.linkTo('', 'public.php')+'?service=files&t='+token;
  		}
  		$('#linkText').val(link);
  		$('#linkText').show('blind');
  		$('#linkText').css('display','block');
  		$('#showPassword').show();
  		$('#showPassword+label').show();
  		if (password != null) {
  			$('#linkPass').show('blind');
  			$('#showPassword').attr('checked', true);
31b7f2792   Kload   Upgrade to ownclo...
467
  			$('#linkPassText').attr('placeholder', '**********');
03e52840d   Kload   Init
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
  		}
  		$('#expiration').show();
  		$('#emailPrivateLink #email').show();
  		$('#emailPrivateLink #emailButton').show();
  		$('#allowPublicUploadWrapper').show();
  	},
  	hideLink:function() {
  		$('#linkText').hide('blind');
  		$('#showPassword').hide();
  		$('#showPassword+label').hide();
  		$('#linkPass').hide();
  		$('#emailPrivateLink #email').hide();
  		$('#emailPrivateLink #emailButton').hide();
  		$('#allowPublicUploadWrapper').hide();
  	},
  	dirname:function(path) {
  		return path.replace(/\\/g,'/').replace(/\/[^\/]*$/, '');
  	},
  	showExpirationDate:function(date) {
  		$('#expirationCheckbox').attr('checked', true);
  		$('#expirationDate').before('<br />');
  		$('#expirationDate').val(date);
  		$('#expirationDate').show();
  		$('#expirationDate').datepicker({
  			dateFormat : 'dd-mm-yy'
  		});
  	}
  };
  
  $(document).ready(function() {
  
  	if(typeof monthNames != 'undefined'){
  		$.datepicker.setDefaults({
  			monthNames: monthNames,
  			monthNamesShort: $.map(monthNames, function(v) { return v.slice(0,3)+'.'; }),
  			dayNames: dayNames,
  			dayNamesMin: $.map(dayNames, function(v) { return v.slice(0,2); }),
  			dayNamesShort: $.map(dayNames, function(v) { return v.slice(0,3)+'.'; }),
  			firstDay: firstDay
  		});
  	}
  	$(document).on('click', 'a.share', function(event) {
  		event.stopPropagation();
  		if ($(this).data('item-type') !== undefined && $(this).data('item') !== undefined) {
  			var itemType = $(this).data('item-type');
  			var itemSource = $(this).data('item');
  			var appendTo = $(this).parent().parent();
  			var link = false;
  			var possiblePermissions = $(this).data('possible-permissions');
  			if ($(this).data('link') !== undefined && $(this).data('link') == true) {
  				link = true;
  			}
  			if (OC.Share.droppedDown) {
  				if (itemSource != $('#dropdown').data('item')) {
  					OC.Share.hideDropDown(function () {
  						OC.Share.showDropDown(itemType, itemSource, appendTo, link, possiblePermissions);
  					});
  				} else {
  					OC.Share.hideDropDown();
  				}
  			} else {
  				OC.Share.showDropDown(itemType, itemSource, appendTo, link, possiblePermissions);
  			}
  		}
  	});
  
  	$(this).click(function(event) {
  		var target = $(event.target);
  		var isMatched = !target.is('.drop, .ui-datepicker-next, .ui-datepicker-prev, .ui-icon')
31b7f2792   Kload   Upgrade to ownclo...
537
  			&& !target.closest('#ui-datepicker-div').length && !target.closest('.ui-autocomplete').length;
03e52840d   Kload   Init
538
539
540
541
  		if (OC.Share.droppedDown && isMatched && $('#dropdown').has(event.target).length === 0) {
  			OC.Share.hideDropDown();
  		}
  	});
03e52840d   Kload   Init
542
  	$(document).on('click', '#dropdown .showCruds', function() {
31b7f2792   Kload   Upgrade to ownclo...
543
544
  		$(this).closest('li').find('.cruds').toggle();
  		return false;
03e52840d   Kload   Init
545
546
547
  	});
  
  	$(document).on('click', '#dropdown .unshare', function() {
31b7f2792   Kload   Upgrade to ownclo...
548
  		var $li = $(this).closest('li');
03e52840d   Kload   Init
549
550
  		var itemType = $('#dropdown').data('item-type');
  		var itemSource = $('#dropdown').data('item-source');
31b7f2792   Kload   Upgrade to ownclo...
551
552
  		var shareType = $li.data('share-type');
  		var shareWith = $li.data('share-with');
03e52840d   Kload   Init
553
  		OC.Share.unshare(itemType, itemSource, shareType, shareWith, function() {
31b7f2792   Kload   Upgrade to ownclo...
554
  			$li.remove();
03e52840d   Kload   Init
555
556
557
558
559
560
561
  			var index = OC.Share.itemShares[shareType].indexOf(shareWith);
  			OC.Share.itemShares[shareType].splice(index, 1);
  			OC.Share.updateIcon(itemType, itemSource);
  			if (typeof OC.Share.statuses[itemSource] === 'undefined') {
  				$('#expiration').hide();
  			}
  		});
31b7f2792   Kload   Upgrade to ownclo...
562
  		return false;
03e52840d   Kload   Init
563
564
565
  	});
  
  	$(document).on('change', '#dropdown .permissions', function() {
31b7f2792   Kload   Upgrade to ownclo...
566
  		var li = $(this).closest('li');
03e52840d   Kload   Init
567
  		if ($(this).attr('name') == 'edit') {
03e52840d   Kload   Init
568
569
570
571
572
573
574
  			var checkboxes = $('.permissions', li);
  			var checked = $(this).is(':checked');
  			// Check/uncheck Create, Update, and Delete checkboxes if Edit is checked/unck
  			$(checkboxes).filter('input[name="create"]').attr('checked', checked);
  			$(checkboxes).filter('input[name="update"]').attr('checked', checked);
  			$(checkboxes).filter('input[name="delete"]').attr('checked', checked);
  		} else {
03e52840d   Kload   Init
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
  			var checkboxes = $('.permissions', li);
  			// Uncheck Edit if Create, Update, and Delete are not checked
  			if (!$(this).is(':checked')
  				&& !$(checkboxes).filter('input[name="create"]').is(':checked')
  				&& !$(checkboxes).filter('input[name="update"]').is(':checked')
  				&& !$(checkboxes).filter('input[name="delete"]').is(':checked'))
  			{
  				$(checkboxes).filter('input[name="edit"]').attr('checked', false);
  			// Check Edit if Create, Update, or Delete is checked
  			} else if (($(this).attr('name') == 'create'
  					 || $(this).attr('name') == 'update'
  					 || $(this).attr('name') == 'delete'))
  			{
  				$(checkboxes).filter('input[name="edit"]').attr('checked', true);
  			}
  		}
  		var permissions = OC.PERMISSION_READ;
  		$(checkboxes).filter(':not(input[name="edit"])').filter(':checked').each(function(index, checkbox) {
  			permissions |= $(checkbox).data('permissions');
  		});
  		OC.Share.setPermissions($('#dropdown').data('item-type'),
  			$('#dropdown').data('item-source'),
31b7f2792   Kload   Upgrade to ownclo...
597
598
  			li.data('share-type'),
  			li.data('share-with'),
03e52840d   Kload   Init
599
600
601
602
603
604
  			permissions);
  	});
  
  	$(document).on('change', '#dropdown #linkCheckbox', function() {
  		var itemType = $('#dropdown').data('item-type');
  		var itemSource = $('#dropdown').data('item-source');
31b7f2792   Kload   Upgrade to ownclo...
605
  		var itemSourceName = $('#dropdown').data('item-source-name');
03e52840d   Kload   Init
606
607
  		if (this.checked) {
  			// Create a link
31b7f2792   Kload   Upgrade to ownclo...
608
  			OC.Share.share(itemType, itemSource, OC.Share.SHARE_TYPE_LINK, '', OC.PERMISSION_READ, itemSourceName, function(data) {
03e52840d   Kload   Init
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
  				OC.Share.showLink(data.token, null, itemSource);
  				OC.Share.updateIcon(itemType, itemSource);
  			});
  		} else {
  			// Delete private link
  			OC.Share.unshare(itemType, itemSource, OC.Share.SHARE_TYPE_LINK, '', function() {
  				OC.Share.hideLink();
  				OC.Share.itemShares[OC.Share.SHARE_TYPE_LINK] = false;
  				OC.Share.updateIcon(itemType, itemSource);
  				if (typeof OC.Share.statuses[itemSource] === 'undefined') {
  					$('#expiration').hide();
  				}
  			});
  		}
  	});
  
  	$(document).on('click', '#dropdown #linkText', function() {
  		$(this).focus();
  		$(this).select();
  	});
  
  	// Handle the Allow Public Upload Checkbox
  	$(document).on('click', '#sharingDialogAllowPublicUpload', function() {
  
  		// Gather data
  		var allowPublicUpload = $(this).is(':checked');
  		var itemType = $('#dropdown').data('item-type');
  		var itemSource = $('#dropdown').data('item-source');
31b7f2792   Kload   Upgrade to ownclo...
637
  		var itemSourceName = $('#dropdown').data('item-source-name');
03e52840d   Kload   Init
638
639
640
641
642
643
644
645
646
647
  		var permissions = 0;
  
  		// Calculate permissions
  		if (allowPublicUpload) {
  			permissions = OC.PERMISSION_UPDATE + OC.PERMISSION_CREATE + OC.PERMISSION_READ;
  		} else {
  			permissions = OC.PERMISSION_READ;
  		}
  
  		// Update the share information
31b7f2792   Kload   Upgrade to ownclo...
648
  		OC.Share.share(itemType, itemSource, OC.Share.SHARE_TYPE_LINK, '', permissions, itemSourceName, function(data) {
03e52840d   Kload   Init
649
650
651
652
653
654
655
656
  		});
  	});
  
  	$(document).on('click', '#dropdown #showPassword', function() {
  		$('#linkPass').toggle('blind');
  		if (!$('#showPassword').is(':checked') ) {
  			var itemType = $('#dropdown').data('item-type');
  			var itemSource = $('#dropdown').data('item-source');
31b7f2792   Kload   Upgrade to ownclo...
657
  			var itemSourceName = $('#dropdown').data('item-source-name');
03e52840d   Kload   Init
658
659
660
661
662
663
664
665
666
  			var allowPublicUpload = $('#sharingDialogAllowPublicUpload').is(':checked');
  			var permissions = 0;
  
  			// Calculate permissions
  			if (allowPublicUpload) {
  				permissions = OC.PERMISSION_UPDATE + OC.PERMISSION_CREATE + OC.PERMISSION_READ;
  			} else {
  				permissions = OC.PERMISSION_READ;
  			}
31b7f2792   Kload   Upgrade to ownclo...
667
  			OC.Share.share(itemType, itemSource, OC.Share.SHARE_TYPE_LINK, '', permissions, itemSourceName);
03e52840d   Kload   Init
668
669
670
671
672
673
674
675
676
677
678
679
680
  		} else {
  			$('#linkPassText').focus();
  		}
  	});
  
  	$(document).on('focusout keyup', '#dropdown #linkPassText', function(event) {
  		var linkPassText = $('#linkPassText');
  		if ( linkPassText.val() != '' && (event.type == 'focusout' || event.keyCode == 13) ) {
  
  			var allowPublicUpload = $('#sharingDialogAllowPublicUpload').is(':checked');
  			var dropDown = $('#dropdown');
  			var itemType = dropDown.data('item-type');
  			var itemSource = dropDown.data('item-source');
31b7f2792   Kload   Upgrade to ownclo...
681
  			var itemSourceName = $('#dropdown').data('item-source-name');
03e52840d   Kload   Init
682
683
684
685
686
687
688
689
  			var permissions = 0;
  
  			// Calculate permissions
  			if (allowPublicUpload) {
  				permissions = OC.PERMISSION_UPDATE + OC.PERMISSION_CREATE + OC.PERMISSION_READ;
  			} else {
  				permissions = OC.PERMISSION_READ;
  			}
31b7f2792   Kload   Upgrade to ownclo...
690
  			OC.Share.share(itemType, itemSource, OC.Share.SHARE_TYPE_LINK, $('#linkPassText').val(), permissions, itemSourceName, function() {
03e52840d   Kload   Init
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
  				console.log("password set to: '" + linkPassText.val() +"' by event: " + event.type);
  				linkPassText.val('');
  				linkPassText.attr('placeholder', t('core', 'Password protected'));
  			});
  		}
  	});
  
  	$(document).on('click', '#dropdown #expirationCheckbox', function() {
  		if (this.checked) {
  			OC.Share.showExpirationDate('');
  		} else {
  			var itemType = $('#dropdown').data('item-type');
  			var itemSource = $('#dropdown').data('item-source');
  			$.post(OC.filePath('core', 'ajax', 'share.php'), { action: 'setExpirationDate', itemType: itemType, itemSource: itemSource, date: '' }, function(result) {
  				if (!result || result.status !== 'success') {
  					OC.dialogs.alert(t('core', 'Error unsetting expiration date'), t('core', 'Error'));
  				}
  				$('#expirationDate').hide();
  			});
  		}
  	});
  
  	$(document).on('change', '#dropdown #expirationDate', function() {
  		var itemType = $('#dropdown').data('item-type');
  		var itemSource = $('#dropdown').data('item-source');
  		$.post(OC.filePath('core', 'ajax', 'share.php'), { action: 'setExpirationDate', itemType: itemType, itemSource: itemSource, date: $(this).val() }, function(result) {
  			if (!result || result.status !== 'success') {
  				OC.dialogs.alert(t('core', 'Error setting expiration date'), t('core', 'Error'));
  			}
  		});
  	});
  
  
  	$(document).on('submit', '#dropdown #emailPrivateLink', function(event) {
  		event.preventDefault();
  		var link = $('#linkText').val();
  		var itemType = $('#dropdown').data('item-type');
  		var itemSource = $('#dropdown').data('item-source');
  		var file = $('tr').filterAttr('data-id', String(itemSource)).data('file');
  		var email = $('#email').val();
a293d369c   Kload   Update sources to...
731
732
733
734
  		var expirationDate = '';
  		if ( $('#expirationCheckbox').is(':checked') === true ) {
  			expirationDate = $( "#expirationDate" ).val();
  		}
03e52840d   Kload   Init
735
  		if (email != '') {
31b7f2792   Kload   Upgrade to ownclo...
736
  			$('#email').prop('disabled', true);
03e52840d   Kload   Init
737
  			$('#email').val(t('core', 'Sending ...'));
31b7f2792   Kload   Upgrade to ownclo...
738
  			$('#emailButton').prop('disabled', true);
03e52840d   Kload   Init
739

a293d369c   Kload   Update sources to...
740
  			$.post(OC.filePath('core', 'ajax', 'share.php'), { action: 'email', toaddress: email, link: link, itemType: itemType, itemSource: itemSource, file: file, expiration: expirationDate},
03e52840d   Kload   Init
741
  				function(result) {
31b7f2792   Kload   Upgrade to ownclo...
742
743
  					$('#email').prop('disabled', false);
  					$('#emailButton').prop('disabled', false);
03e52840d   Kload   Init
744
745
746
747
748
749
750
751
752
753
754
  				if (result && result.status == 'success') {
  					$('#email').css('font-weight', 'bold');
  					$('#email').animate({ fontWeight: 'normal' }, 2000, function() {
  						$(this).val('');
  					}).val(t('core','Email sent'));
  				} else {
  					OC.dialogs.alert(result.data.message, t('core', 'Error while sharing'));
  				}
  			});
  		}
  	});
31b7f2792   Kload   Upgrade to ownclo...
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
  	$(document).on('click', '#dropdown input[name=mailNotification]', function() {
  		var $li = $(this).closest('li');
  		var itemType = $('#dropdown').data('item-type');
  		var itemSource = $('#dropdown').data('item-source');
  		var action = '';
  		if (this.checked) {
  			action = 'informRecipients';
  		} else {
  			action = 'informRecipientsDisabled';
  		}
  
  		var shareType = $li.data('share-type');
  		var shareWith = $li.data('share-with');
  
  		$.post(OC.filePath('core', 'ajax', 'share.php'), {action: action, recipient: shareWith, shareType: shareType, itemSource: itemSource, itemType: itemType}, function(result) {
  			if (result.status !== 'success') {
  				OC.dialogs.alert(t('core', result.data.message), t('core', 'Warning'));
  			}
  		});
  
  });
03e52840d   Kload   Init
776
777
  
  });