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