Revision 71875b42 src/gr/grnet/pithos/web/client/FilePermissionsDialog.java
b/src/gr/grnet/pithos/web/client/FilePermissionsDialog.java | ||
---|---|---|
73 | 73 |
|
74 | 74 |
protected PermissionsList permList; |
75 | 75 |
|
76 |
protected CheckBox readForAll; |
|
77 |
|
|
78 | 76 |
private HorizontalPanel pathPanel; |
79 | 77 |
|
80 | 78 |
private TextBox path; |
81 | 79 |
|
82 |
private Dictionary otherProperties = Dictionary.getDictionary("otherProperties"); |
|
83 |
|
|
84 | 80 |
/** |
85 | 81 |
* An image bundle for this widgets images. |
86 | 82 |
*/ |
... | ... | |
195 | 191 |
"distribute this file and that it does not violate the Terms of Use.", true); |
196 | 192 |
readForAllNote.setStylePrimaryName("pithos-readForAllNote"); |
197 | 193 |
|
198 |
readForAll = new CheckBox(); |
|
199 |
readForAll.setValue(file.isPublished()); |
|
200 |
readForAll.addClickHandler(new ClickHandler() { |
|
201 |
@Override |
|
202 |
public void onClick(ClickEvent event) { |
|
203 |
accept(); |
|
204 |
} |
|
205 |
}); |
|
206 |
|
|
207 |
// Only show the read for all permission if the user is the owner. |
|
208 |
if (file.getOwner().equals(app.getUsername())) { |
|
209 |
final HorizontalPanel permForAll = new HorizontalPanel(); |
|
210 |
permForAll.add(new Label("Public")); |
|
211 |
permForAll.add(readForAll); |
|
212 |
permForAll.setSpacing(8); |
|
213 |
permForAll.addStyleName("pithos-TabPanelBottom"); |
|
214 |
permForAll.add(readForAllNote); |
|
215 |
permPanel.add(permForAll); |
|
216 |
} |
|
217 |
|
|
218 | 194 |
pathPanel = new HorizontalPanel(); |
219 | 195 |
pathPanel.setVisible(false); |
220 | 196 |
pathPanel.setWidth("100%"); |
... | ... | |
244 | 220 |
|
245 | 221 |
@Override |
246 | 222 |
public void execute() { |
247 |
showLinkIfPublished();
|
|
223 |
showLinkIfShared();
|
|
248 | 224 |
} |
249 | 225 |
}); |
250 | 226 |
return permPanel; |
251 | 227 |
} |
252 | 228 |
|
253 |
void showLinkIfPublished() {
|
|
229 |
void showLinkIfShared() {
|
|
254 | 230 |
if (file.isShared()) { |
255 | 231 |
UrlBuilder b = Window.Location.createUrlBuilder(); |
256 |
if (file.isPublished()) { |
|
257 |
b.setPath(file.getPublicUri()); |
|
258 |
path.setText(b.buildString()); |
|
259 |
} |
|
260 |
else { |
|
261 |
b.setPath(app.getApiPath() + file.getOwner() + file.getUri()); |
|
262 |
String href = Window.Location.getHref(); |
|
263 |
boolean hasParameters = href.contains("?"); |
|
264 |
path.setText(href + (hasParameters ? "&" : "?") + "goto=" + b.buildString()); |
|
265 |
} |
|
232 |
b.setPath(app.getApiPath() + file.getOwner() + file.getUri()); |
|
233 |
String href = Window.Location.getHref(); |
|
234 |
boolean hasParameters = href.contains("?"); |
|
235 |
path.setText(href + (hasParameters ? "&" : "?") + "goto=" + b.buildString()); |
|
266 | 236 |
pathPanel.setVisible(true); |
267 | 237 |
} |
268 | 238 |
else { |
... | ... | |
275 | 245 |
*/ |
276 | 246 |
@Override |
277 | 247 |
protected void accept() { |
278 |
Boolean published = null; |
|
279 |
if (readForAll.getValue() != file.isPublished()) |
|
280 |
if (file.getOwner().equals(app.getUsername())) |
|
281 |
published = readForAll.getValue(); |
|
282 |
updateMetaData(app.getApiPath(), app.getUsername(), file.getUri() + "?update=", published, permList.getPermissions()); |
|
248 |
updateMetaData(app.getApiPath(), app.getUsername(), file.getUri() + "?update=", permList.getPermissions()); |
|
283 | 249 |
} |
284 | 250 |
|
285 |
protected void updateMetaData(String api, String owner, final String path, final Boolean published, final Map<String, Boolean[]> newPermissions) {
|
|
286 |
if (published != null || newPermissions != null) {
|
|
251 |
protected void updateMetaData(String api, String owner, final String path, final Map<String, Boolean[]> newPermissions) { |
|
252 |
if (newPermissions != null) { |
|
287 | 253 |
PostRequest updateFile = new PostRequest(api, owner, path) { |
288 | 254 |
@Override |
289 | 255 |
public void onSuccess(Resource result) { |
... | ... | |
291 | 257 |
|
292 | 258 |
@Override |
293 | 259 |
public void onSuccess(File _result) { |
294 |
showLinkIfPublished();
|
|
260 |
showLinkIfShared();
|
|
295 | 261 |
app.updateFolder(file.getParent(), true, new Command() { |
296 | 262 |
|
297 | 263 |
@Override |
... | ... | |
331 | 297 |
}; |
332 | 298 |
updateFile.setHeader("X-Auth-Token", app.getToken()); |
333 | 299 |
|
334 |
if (published != null) |
|
335 |
updateFile.setHeader("X-Object-Public", published.toString()); |
|
336 |
if (newPermissions != null) { |
|
337 |
String readPermHeader = "read="; |
|
338 |
String writePermHeader = "write="; |
|
339 |
for (String u : newPermissions.keySet()) { |
|
340 |
Boolean[] p = newPermissions.get(u); |
|
341 |
if (p[0] != null && p[0]) |
|
342 |
readPermHeader += u + ","; |
|
343 |
if (p[1] != null && p[1]) |
|
344 |
writePermHeader += u + ","; |
|
345 |
} |
|
346 |
if (readPermHeader.endsWith("=")) |
|
347 |
readPermHeader = ""; |
|
348 |
else if (readPermHeader.endsWith(",")) |
|
349 |
readPermHeader = readPermHeader.substring(0, readPermHeader.length() - 1); |
|
350 |
if (writePermHeader.endsWith("=")) |
|
351 |
writePermHeader = ""; |
|
352 |
else if (writePermHeader.endsWith(",")) |
|
353 |
writePermHeader = writePermHeader.substring(0, writePermHeader.length() - 1); |
|
354 |
String permHeader = readPermHeader + ((readPermHeader.length() > 0 && writePermHeader.length() > 0) ? ";" : "") + writePermHeader; |
|
355 |
if (permHeader.length() == 0) |
|
356 |
permHeader="~"; |
|
357 |
else |
|
358 |
permHeader = URL.encodePathSegment(permHeader); |
|
359 |
updateFile.setHeader("X-Object-Sharing", permHeader); |
|
300 |
String readPermHeader = "read="; |
|
301 |
String writePermHeader = "write="; |
|
302 |
for (String u : newPermissions.keySet()) { |
|
303 |
Boolean[] p = newPermissions.get(u); |
|
304 |
if (p[0] != null && p[0]) |
|
305 |
readPermHeader += u + ","; |
|
306 |
if (p[1] != null && p[1]) |
|
307 |
writePermHeader += u + ","; |
|
360 | 308 |
} |
309 |
if (readPermHeader.endsWith("=")) |
|
310 |
readPermHeader = ""; |
|
311 |
else if (readPermHeader.endsWith(",")) |
|
312 |
readPermHeader = readPermHeader.substring(0, readPermHeader.length() - 1); |
|
313 |
if (writePermHeader.endsWith("=")) |
|
314 |
writePermHeader = ""; |
|
315 |
else if (writePermHeader.endsWith(",")) |
|
316 |
writePermHeader = writePermHeader.substring(0, writePermHeader.length() - 1); |
|
317 |
String permHeader = readPermHeader + ((readPermHeader.length() > 0 && writePermHeader.length() > 0) ? ";" : "") + writePermHeader; |
|
318 |
if (permHeader.length() == 0) |
|
319 |
permHeader="~"; |
|
320 |
else |
|
321 |
permHeader = URL.encodePathSegment(permHeader); |
|
322 |
updateFile.setHeader("X-Object-Sharing", permHeader); |
|
361 | 323 |
Scheduler.get().scheduleDeferred(updateFile); |
362 | 324 |
} |
363 | 325 |
else |
... | ... | |
365 | 327 |
|
366 | 328 |
@Override |
367 | 329 |
public void execute() { |
368 |
if (file.isShared()) |
|
330 |
if (file.isSharedOrPublished())
|
|
369 | 331 |
app.updateMySharedRoot(); |
370 | 332 |
} |
371 | 333 |
}, true); |
Also available in: Unified diff