merget with branch SocialISTI at version 93164
git-svn-id: http://svn.d4science-ii.research-infrastructures.eu/gcube/trunk/portlets/user/workspace-tree-widget@93182 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
c3ea887532
commit
d0ac39e546
|
@ -78,6 +78,8 @@ import org.gcube.portlets.user.workspace.client.event.SendMessageEvent;
|
|||
import org.gcube.portlets.user.workspace.client.event.SendMessageEventHandler;
|
||||
import org.gcube.portlets.user.workspace.client.event.SessionExpiredEvent;
|
||||
import org.gcube.portlets.user.workspace.client.event.SessionExpiredEventHandler;
|
||||
import org.gcube.portlets.user.workspace.client.event.SettingPermissionEvent;
|
||||
import org.gcube.portlets.user.workspace.client.event.SettingPermissionEventHandler;
|
||||
import org.gcube.portlets.user.workspace.client.event.SmartFolderSelectedEvent;
|
||||
import org.gcube.portlets.user.workspace.client.event.SmartFolderSelectedEventHandler;
|
||||
import org.gcube.portlets.user.workspace.client.event.SubTreeLoadedEvent;
|
||||
|
@ -107,6 +109,7 @@ import org.gcube.portlets.user.workspace.client.util.RequestBuilderWorkspaceVali
|
|||
import org.gcube.portlets.user.workspace.client.util.WindowOpenParameter;
|
||||
import org.gcube.portlets.user.workspace.client.view.ExplorerPanel;
|
||||
import org.gcube.portlets.user.workspace.client.view.sharing.DialogShareFolder;
|
||||
import org.gcube.portlets.user.workspace.client.view.sharing.permissions.DialogPermission;
|
||||
import org.gcube.portlets.user.workspace.client.view.tree.AsyncTreePanel;
|
||||
import org.gcube.portlets.user.workspace.client.view.windows.BulkCreatorWindow;
|
||||
import org.gcube.portlets.user.workspace.client.view.windows.DialogAddFolderAndSmart;
|
||||
|
@ -265,7 +268,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
|
|||
notifySubscriber(trashEvent);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
eventBus.addHandler(GetInfoEvent.TYPE, new GetInfoEventHandler() {
|
||||
|
||||
@Override
|
||||
|
@ -1673,6 +1676,19 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
|
|||
});
|
||||
}
|
||||
});
|
||||
|
||||
eventBus.addHandler(SettingPermissionEvent.TYPE, new SettingPermissionEventHandler() {
|
||||
|
||||
@Override
|
||||
public void onPermissionSetting(SettingPermissionEvent settingPermissionEvent) {
|
||||
|
||||
if(settingPermissionEvent.getSourceFile()!=null){
|
||||
DialogPermission dialog = new DialogPermission(settingPermissionEvent.getSourceFile());
|
||||
dialog.show();
|
||||
}else
|
||||
Info.display("Attention", "Select a VRE Folder to change permissions!");
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
@ -1918,6 +1934,7 @@ public class AppControllerExplorer implements EventHandler, TreeAppControllerInt
|
|||
}else if(event instanceof TrashEvent){
|
||||
TrashEvent trashEvent = (TrashEvent) event;
|
||||
sub.trashEvent(trashEvent.getTrashOperation(), trashEvent.getTargetFileModel());
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -33,7 +33,8 @@ public enum WorkspaceOperation {
|
|||
HISTORY("HST", "HST"), //HISTORY
|
||||
ACCREAD("ACR", "ACR"), //ACCOUNTING READ
|
||||
SHARE_LINK("SLK", "SLK"), //SHARE URL LINK
|
||||
PUBLIC_LINK("PLK", "PLK"); //PUBLIC LINK
|
||||
PUBLIC_LINK("PLK", "PLK"), //PUBLIC LINK
|
||||
VRE_CHANGE_PERIMISSIONS("CHP", "CHP");
|
||||
|
||||
|
||||
// //ID CONTEXT MENU
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
package org.gcube.portlets.user.workspace.client.event;
|
||||
|
||||
import org.gcube.portlets.user.workspace.client.model.FileModel;
|
||||
|
||||
import com.google.gwt.event.shared.GwtEvent;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||
* @Mar 14, 2014
|
||||
*
|
||||
*/
|
||||
public class SettingPermissionEvent extends GwtEvent<SettingPermissionEventHandler> {
|
||||
public static Type<SettingPermissionEventHandler> TYPE = new Type<SettingPermissionEventHandler>();
|
||||
|
||||
private FileModel targetFile = null;
|
||||
|
||||
public SettingPermissionEvent(FileModel target) {
|
||||
this.targetFile = target;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Type<SettingPermissionEventHandler> getAssociatedType() {
|
||||
return TYPE;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void dispatch(SettingPermissionEventHandler handler) {
|
||||
handler.onPermissionSetting(this);
|
||||
|
||||
}
|
||||
|
||||
public FileModel getSourceFile() {
|
||||
return targetFile;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
package org.gcube.portlets.user.workspace.client.event;
|
||||
|
||||
import com.google.gwt.event.shared.EventHandler;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||
*
|
||||
*/
|
||||
public interface SettingPermissionEventHandler extends EventHandler {
|
||||
void onPermissionSetting(SettingPermissionEvent settingPermissionEvent);
|
||||
}
|
|
@ -30,5 +30,6 @@ public enum EventsTypeEnum
|
|||
SESSION_EXPIRED,
|
||||
PASTED_EVENT,
|
||||
COPY_EVENT,
|
||||
TRASH_EVENT;
|
||||
TRASH_EVENT,
|
||||
VRE_CHANGE_PERMISSION;
|
||||
}
|
|
@ -60,4 +60,9 @@ public interface SubscriberInterface {
|
|||
*/
|
||||
void trashEvent(WorkspaceTrashOperation trashOperation, FileModel targetFileModel);
|
||||
|
||||
/**
|
||||
* @param fileModel
|
||||
*/
|
||||
void changePermission(FileModel fileModel);
|
||||
|
||||
}
|
||||
|
|
|
@ -73,12 +73,20 @@ public class InfoContactModel extends BaseModelData implements Serializable {
|
|||
}
|
||||
|
||||
|
||||
public static Comparator<InfoContactModel> COMPARATOR = new Comparator<InfoContactModel>() {
|
||||
public static Comparator<InfoContactModel> COMPARATORFULLNAME = new Comparator<InfoContactModel>() {
|
||||
// This is where the sorting happens.
|
||||
public int compare(InfoContactModel o1, InfoContactModel o2) {
|
||||
return o1.getName().compareToIgnoreCase(o2.getName());
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
public static Comparator<InfoContactModel> COMPARATORLOGINS = new Comparator<InfoContactModel>() {
|
||||
// This is where the sorting happens.
|
||||
public int compare(InfoContactModel o1, InfoContactModel o2) {
|
||||
return o1.getLogin().compareToIgnoreCase(o2.getLogin());
|
||||
}
|
||||
};
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
|
|
|
@ -204,7 +204,7 @@ public interface GWTWorkspaceService extends RemoteService{
|
|||
|
||||
String getMyLogin();
|
||||
|
||||
void updateACLForVREbyUsers(String folderId, String aclType) throws Exception;
|
||||
void updateACLForVREbyMembers(String folderId, String aclType) throws Exception;
|
||||
|
||||
/**
|
||||
* @param folderId
|
||||
|
@ -235,4 +235,12 @@ public interface GWTWorkspaceService extends RemoteService{
|
|||
*/
|
||||
String getACLsDescriptionForSharedFolderId(String folderId) throws Exception;
|
||||
|
||||
/**
|
||||
* @param folderId
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
List<InfoContactModel> getUsersManagerToSharedFolder(String folderId)
|
||||
throws Exception;
|
||||
|
||||
}
|
||||
|
|
|
@ -182,7 +182,7 @@ public interface GWTWorkspaceServiceAsync {
|
|||
|
||||
void getMyLogin(AsyncCallback<String> callback);
|
||||
|
||||
void updateACLForVREbyUsers(String folderId, String aclType,
|
||||
void updateACLForVREbyMembers(String folderId, String aclType,
|
||||
AsyncCallback<Void> callback);
|
||||
|
||||
void getUserACLForFolderId(String folderId,
|
||||
|
@ -197,4 +197,7 @@ public interface GWTWorkspaceServiceAsync {
|
|||
void getACLsDescriptionForSharedFolderId(String folderId,
|
||||
AsyncCallback<String> callback);
|
||||
|
||||
void getUsersManagerToSharedFolder(String folderId,
|
||||
AsyncCallback<List<InfoContactModel>> callback);
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,224 @@
|
|||
package org.gcube.portlets.user.workspace.client.view.sharing.permissions;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.gcube.portlets.user.workspace.client.AppControllerExplorer;
|
||||
import org.gcube.portlets.user.workspace.client.event.SettingPermissionEvent;
|
||||
import org.gcube.portlets.user.workspace.client.model.FileModel;
|
||||
import org.gcube.portlets.user.workspace.client.model.InfoContactModel;
|
||||
import org.gcube.portlets.user.workspace.client.resources.Resources;
|
||||
import org.gcube.portlets.user.workspace.client.view.sharing.PanelTogglePermission;
|
||||
import org.gcube.portlets.user.workspace.client.view.windows.InfoDisplay;
|
||||
import org.gcube.portlets.user.workspace.client.view.windows.MessageBoxAlert;
|
||||
import org.gcube.portlets.user.workspace.shared.WorkspaceACL;
|
||||
|
||||
import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
|
||||
import com.extjs.gxt.ui.client.Style.Scroll;
|
||||
import com.extjs.gxt.ui.client.Style.VerticalAlignment;
|
||||
import com.extjs.gxt.ui.client.event.ButtonEvent;
|
||||
import com.extjs.gxt.ui.client.event.SelectionListener;
|
||||
import com.extjs.gxt.ui.client.widget.Dialog;
|
||||
import com.extjs.gxt.ui.client.widget.HorizontalPanel;
|
||||
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
|
||||
import com.google.gwt.core.shared.GWT;
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
import com.google.gwt.user.client.ui.Label;
|
||||
|
||||
/**
|
||||
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||
*
|
||||
*/
|
||||
public class DialogPermission extends Dialog {
|
||||
|
||||
private int widthDialog = 400;
|
||||
private FileModel parentFolder = null;
|
||||
|
||||
private PanelTogglePermission permission;
|
||||
private HorizontalPanel hpPermission = new HorizontalPanel();
|
||||
private FileModel folder;
|
||||
|
||||
private DialogPermission INSTANCE = this;
|
||||
|
||||
public FileModel getParentFolder() {
|
||||
return parentFolder;
|
||||
}
|
||||
|
||||
public void initLayout(String folderParentName) {
|
||||
FormLayout layout = new FormLayout();
|
||||
layout.setLabelWidth(90);
|
||||
layout.setDefaultWidth(380);
|
||||
setLayout(layout);
|
||||
setModal(true);
|
||||
setScrollMode(Scroll.AUTOY);
|
||||
setBodyStyle("padding: 9px; background: none");
|
||||
setWidth(widthDialog);
|
||||
setHeight(140);
|
||||
setResizable(true);
|
||||
setButtonAlign(HorizontalAlignment.CENTER);
|
||||
setWidth(widthDialog);
|
||||
setButtons(Dialog.OKCANCEL);
|
||||
enableFormDialog(false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Use to set permission to VRE Folder
|
||||
*/
|
||||
public DialogPermission(FileModel folder) {
|
||||
|
||||
this.folder = folder;
|
||||
|
||||
Label labelProperty = new Label("Permissions");
|
||||
|
||||
hpPermission.add(labelProperty);
|
||||
hpPermission.setVerticalAlign(VerticalAlignment.MIDDLE);
|
||||
hpPermission.mask("Checking authorization");
|
||||
|
||||
|
||||
AsyncCallback<List<InfoContactModel>> callback = new AsyncCallback<List<InfoContactModel>>() {
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
new MessageBoxAlert("Alert", "Sorry, an error occurred on recovering ACLs",null);
|
||||
hpPermission.unmask();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(List<InfoContactModel> listManagers) {
|
||||
permissionControl(listManagers, true);
|
||||
hpPermission.unmask();
|
||||
}
|
||||
};
|
||||
|
||||
getUsersManagers(folder.getIdentifier(), callback);
|
||||
|
||||
//TODO GET ACL FOR USER
|
||||
AppControllerExplorer.rpcWorkspaceService.getACLs(new AsyncCallback<List<WorkspaceACL>>() {
|
||||
|
||||
@Override
|
||||
public void onSuccess(List<WorkspaceACL> result) {
|
||||
permission = new PanelTogglePermission(result);
|
||||
hpPermission.add(permission);
|
||||
hpPermission.layout();
|
||||
layout();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
new MessageBoxAlert("Alert", "Sorry, an error occurred on recovering ACLs",null);
|
||||
}
|
||||
});
|
||||
|
||||
initLayout(folder.getName());
|
||||
this.setIcon(Resources.getIconVREFolder());
|
||||
setHeading("Change permissions to folder: " + folder.getName());
|
||||
|
||||
setWidth(widthDialog);
|
||||
setButtons(Dialog.OKCANCEL);
|
||||
|
||||
add(hpPermission);
|
||||
addListners();
|
||||
getButtonById(Dialog.OK).setEnabled(false);
|
||||
enableFormDialog(false);
|
||||
}
|
||||
|
||||
public void addListners() {
|
||||
|
||||
this.getButtonById(Dialog.CANCEL).addSelectionListener(
|
||||
new SelectionListener<ButtonEvent>() {
|
||||
|
||||
@Override
|
||||
public void componentSelected(ButtonEvent ce) {
|
||||
hide();
|
||||
}
|
||||
});
|
||||
|
||||
this.getButtonById(Dialog.OK).addSelectionListener(
|
||||
new SelectionListener<ButtonEvent>() {
|
||||
|
||||
@Override
|
||||
public void componentSelected(ButtonEvent ce) {
|
||||
|
||||
AppControllerExplorer.getEventBus().fireEvent(new SettingPermissionEvent(folder));
|
||||
// hide();
|
||||
|
||||
INSTANCE.mask("Changing permissions");
|
||||
if(folder!=null && getSelectedACL().getId()!=null){
|
||||
|
||||
AppControllerExplorer.rpcWorkspaceService.updateACLForVREbyMembers(folder.getIdentifier(), getSelectedACL().getId(), new AsyncCallback<Void>() {
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
INSTANCE.hide();
|
||||
new MessageBoxAlert("Error", caught.getMessage(),null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(Void result) {
|
||||
INSTANCE.unmask();
|
||||
INSTANCE.hide();
|
||||
new InfoDisplay("Permission updated", "The permissions have been changed correctly");
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void permissionControl(List<InfoContactModel> listManagers, boolean showAlert){
|
||||
|
||||
boolean permissionsOk = false;
|
||||
for (InfoContactModel infoContactModel : listManagers) {
|
||||
|
||||
GWT.log("DialogPermission control compare between : "+infoContactModel.getLogin() +" and my login: "+AppControllerExplorer.myLogin);
|
||||
if(AppControllerExplorer.myLogin.compareToIgnoreCase(infoContactModel.getLogin())==0){
|
||||
permissionsOk = true;
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if(permissionsOk){
|
||||
enableFormDialog(true);
|
||||
}else{
|
||||
enableFormDialog(false);
|
||||
if(showAlert)
|
||||
new MessageBoxAlert("Permission denied", "You have no permissions to change sharing. You are not owner or manger of \""+folder.getName()+"\"", null);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void enableFormDialog(boolean bool){
|
||||
getButtonById(Dialog.OK).setEnabled(bool);
|
||||
|
||||
if(permission!=null)
|
||||
permission.setEnabled(bool);
|
||||
}
|
||||
|
||||
public void getUsersManagers(final String sharedFolderId,final AsyncCallback<List<InfoContactModel>> callback) {
|
||||
|
||||
AppControllerExplorer.rpcWorkspaceService.getUsersManagerToSharedFolder(sharedFolderId, new AsyncCallback<List<InfoContactModel>>() {
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable arg0) {
|
||||
GWT.log("an error occured in getting user managers by Id "+sharedFolderId + " "+arg0.getMessage());
|
||||
new MessageBoxAlert("Alert", "Sorry, an error occurred on getting users managers, try again later",null);
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(List<InfoContactModel> listManagers) {
|
||||
callback.onSuccess(listManagers);
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
public WorkspaceACL getSelectedACL(){
|
||||
if(permission!=null)
|
||||
return permission.getSelectedACL();
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -30,13 +30,12 @@ public class SmartFolderPanel extends LayoutContainer {
|
|||
|
||||
private ContentPanel cp;
|
||||
|
||||
//TODO TEMPORARY SOLUTION TO FIX SMART FOLDER
|
||||
// private SmartButton buttDocuments = new SmartButton(GXTCategoryItemInterface.SMF_DOCUMENTS, Resources.getIconDocuments(), this);
|
||||
private SmartButton buttDocuments = new SmartButton(GXTCategoryItemInterface.SMF_DOCUMENTS, Resources.getIconDocuments(), this);
|
||||
|
||||
private SmartButton buttImages = new SmartButton(GXTCategoryItemInterface.SMF_IMAGES, Resources.getIconImages(), this);
|
||||
private SmartButton buttLinks = new SmartButton(GXTCategoryItemInterface.SMF_LINKS, Resources.getIconLinks(), this);
|
||||
private SmartButton buttReports = new SmartButton(GXTCategoryItemInterface.SMF_REPORTS, Resources.getIconReport(), this);
|
||||
private SmartButton buttTimeSeries = new SmartButton(GXTCategoryItemInterface.SMF_TIMESERIES, Resources.getIconTimeSeries(), this);
|
||||
// private SmartButton buttReports = new SmartButton(GXTCategoryItemInterface.SMF_REPORTS, Resources.getIconReport(), this);
|
||||
// private SmartButton buttTimeSeries = new SmartButton(GXTCategoryItemInterface.SMF_TIMESERIES, Resources.getIconTimeSeries(), this);
|
||||
|
||||
private HashMap<String, SmartFolderModel> hashSmartFolderModel = new HashMap<String, SmartFolderModel>();
|
||||
private HashMap<String, HorizontalPanel> hashMapPanelSmartFolder = new HashMap<String, HorizontalPanel>();
|
||||
|
@ -52,13 +51,13 @@ public class SmartFolderPanel extends LayoutContainer {
|
|||
|
||||
public void reloadPanelSmartFolder(){
|
||||
cp.removeAll();
|
||||
//TODO TEMPORARY SOLUTION TO FIX SMART FOLDER
|
||||
// cp.add(buttDocuments);
|
||||
|
||||
cp.add(buttDocuments);
|
||||
|
||||
cp.add(buttImages);
|
||||
cp.add(buttLinks);
|
||||
cp.add(buttReports);
|
||||
cp.add(buttTimeSeries);
|
||||
// cp.add(buttReports);
|
||||
// cp.add(buttTimeSeries);
|
||||
cp.layout();
|
||||
addUserSmartFolder();
|
||||
|
||||
|
@ -104,27 +103,27 @@ public class SmartFolderPanel extends LayoutContainer {
|
|||
}
|
||||
});
|
||||
|
||||
//TODO TEMPORARY SOLUTION TO FIX SMART FOLDER
|
||||
// buttDocuments.setCommand(new Command() {
|
||||
|
||||
buttDocuments.setCommand(new Command() {
|
||||
@Override
|
||||
public void execute() {
|
||||
AppControllerExplorer.getEventBus().fireEvent(new SmartFolderSelectedEvent(null, GXTCategoryItemInterface.SMF_DOCUMENTS, GXTCategoryItemInterface.SMF_DOCUMENTS));
|
||||
}
|
||||
});
|
||||
|
||||
// buttReports.setCommand(new Command() {
|
||||
// @Override
|
||||
// public void execute() {
|
||||
// AppControllerExplorer.getEventBus().fireEvent(new SmartFolderSelectedEvent(null, GXTCategoryItemInterface.SMF_DOCUMENTS, GXTCategoryItemInterface.SMF_DOCUMENTS));
|
||||
// AppControllerExplorer.getEventBus().fireEvent(new SmartFolderSelectedEvent(null, GXTCategoryItemInterface.SMF_REPORTS, GXTCategoryItemInterface.SMF_REPORTS));
|
||||
// }
|
||||
// });
|
||||
//
|
||||
// buttTimeSeries.setCommand(new Command() {
|
||||
// @Override
|
||||
// public void execute() {
|
||||
// AppControllerExplorer.getEventBus().fireEvent(new SmartFolderSelectedEvent(null, GXTCategoryItemInterface.SMF_TIMESERIES, GXTCategoryItemInterface.SMF_TIMESERIES));
|
||||
// }
|
||||
// });
|
||||
|
||||
buttReports.setCommand(new Command() {
|
||||
@Override
|
||||
public void execute() {
|
||||
AppControllerExplorer.getEventBus().fireEvent(new SmartFolderSelectedEvent(null, GXTCategoryItemInterface.SMF_REPORTS, GXTCategoryItemInterface.SMF_REPORTS));
|
||||
}
|
||||
});
|
||||
|
||||
buttTimeSeries.setCommand(new Command() {
|
||||
@Override
|
||||
public void execute() {
|
||||
AppControllerExplorer.getEventBus().fireEvent(new SmartFolderSelectedEvent(null, GXTCategoryItemInterface.SMF_TIMESERIES, GXTCategoryItemInterface.SMF_TIMESERIES));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -27,6 +27,7 @@ import org.gcube.portlets.user.workspace.client.event.PasteItemEvent;
|
|||
import org.gcube.portlets.user.workspace.client.event.RefreshFolderEvent;
|
||||
import org.gcube.portlets.user.workspace.client.event.RenameItemEvent;
|
||||
import org.gcube.portlets.user.workspace.client.event.SendMessageEvent;
|
||||
import org.gcube.portlets.user.workspace.client.event.SettingPermissionEvent;
|
||||
import org.gcube.portlets.user.workspace.client.event.UnShareFolderEvent;
|
||||
import org.gcube.portlets.user.workspace.client.event.WebDavUrlEvent;
|
||||
import org.gcube.portlets.user.workspace.client.model.FileModel;
|
||||
|
@ -382,6 +383,8 @@ public class ContextMenuTree {
|
|||
|
||||
}
|
||||
});
|
||||
|
||||
contextMenu.add(share);
|
||||
|
||||
MenuItem unShare = new MenuItem();
|
||||
unShare.setId(WorkspaceOperation.UNSHARE.getId());
|
||||
|
@ -400,12 +403,8 @@ public class ContextMenuTree {
|
|||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
contextMenu.add(share);
|
||||
contextMenu.add(unShare);
|
||||
|
||||
|
||||
|
||||
MenuItem rename = new MenuItem();
|
||||
rename.setId(WorkspaceOperation.RENAME.getId());
|
||||
rename.setText("Rename Item");
|
||||
|
@ -562,6 +561,27 @@ public class ContextMenuTree {
|
|||
|
||||
contextMenu.add(downloadArchive);
|
||||
contextMenu.add(new SeparatorMenuItem());
|
||||
|
||||
MenuItem changePermission = new MenuItem();
|
||||
changePermission.setId(WorkspaceOperation.VRE_CHANGE_PERIMISSIONS.getId());
|
||||
changePermission.setText("Change Permission");
|
||||
changePermission.setIcon(Resources.getIconWriteAll());
|
||||
|
||||
changePermission.addSelectionListener(new SelectionListener<MenuEvent>() {
|
||||
public void componentSelected(MenuEvent ce) {
|
||||
for (FileModel target : listSelectedItems) {
|
||||
if(target.getIdentifier()!=null){
|
||||
eventBus.fireEvent(new SettingPermissionEvent(target));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
contextMenu.add(changePermission);
|
||||
|
||||
contextMenu.add(new SeparatorMenuItem());
|
||||
|
||||
MenuItem refreshItem = new MenuItem();
|
||||
refreshItem.setId(WorkspaceOperation.REFRESH_FOLDER.getId());
|
||||
|
@ -579,7 +599,7 @@ public class ContextMenuTree {
|
|||
|
||||
contextMenu.add(refreshItem);
|
||||
contextMenu.add(new SeparatorMenuItem());
|
||||
|
||||
|
||||
}
|
||||
|
||||
public void clearListSelectedItems() {
|
||||
|
@ -693,6 +713,8 @@ public class ContextMenuTree {
|
|||
contextMenu.getItemByItemId(WorkspaceOperation.UNSHARE.getId()).setVisible(false); //UNSHARE
|
||||
|
||||
contextMenu.getItemByItemId(WorkspaceOperation.SHARE_LINK.getId()).setVisible(false); //SHARE
|
||||
|
||||
contextMenu.getItemByItemId(WorkspaceOperation.VRE_CHANGE_PERIMISSIONS.getId()).setVisible(false); //VRE CHANGE PERMISSIONS
|
||||
|
||||
//COMMENTED AT 29/08/2013
|
||||
/*
|
||||
|
@ -722,8 +744,15 @@ public class ContextMenuTree {
|
|||
contextMenu.getItemByItemId(WorkspaceOperation.REMOVE.getId()).setVisible(false); //REMOVE
|
||||
contextMenu.getItemByItemId(WorkspaceOperation.REFRESH_FOLDER.getId()).setVisible(true); //REFRESH_FOLDER
|
||||
|
||||
if(selectedItem.isVreFolder() && CutCopyAndPaste.getCopiedIdsFilesModel()!=null)
|
||||
contextMenu.getItemByItemId(WorkspaceOperation.PASTE.getId()).setEnabled(true); //enable paste button
|
||||
//ADDED 14/03/2014
|
||||
if(selectedItem.isVreFolder()){
|
||||
contextMenu.getItemByItemId(WorkspaceOperation.VRE_CHANGE_PERIMISSIONS.getId()).setVisible(true); //REFRESH_FOLDER
|
||||
if(CutCopyAndPaste.getCopiedIdsFilesModel()!=null)
|
||||
contextMenu.getItemByItemId(WorkspaceOperation.PASTE.getId()).setEnabled(true); //enable paste button
|
||||
}
|
||||
|
||||
// if(selectedItem.isVreFolder() && CutCopyAndPaste.getCopiedIdsFilesModel()!=null)
|
||||
// contextMenu.getItemByItemId(WorkspaceOperation.PASTE.getId()).setEnabled(true); //enable paste button
|
||||
else if(selectedItem.isSpecialFolder()){
|
||||
contextMenu.getItemByItemId(WorkspaceOperation.COPY.getId()).setEnabled(false);
|
||||
contextMenu.getItemByItemId(WorkspaceOperation.PASTE.getId()).setEnabled(false);
|
||||
|
|
|
@ -1434,12 +1434,63 @@ public class GWTWorkspaceBuilder {
|
|||
|
||||
String name = "";
|
||||
|
||||
//MANAGEMENT SHARED FOLDER NAME
|
||||
if(wsFolder.isShared() && wsFolder.getType().equals(WorkspaceItemType.SHARED_FOLDER)){
|
||||
WorkspaceSharedFolder shared = (WorkspaceSharedFolder) wsFolder;
|
||||
name = shared.isVreFolder()?shared.getDisplayName():wsFolder.getName();
|
||||
}else
|
||||
name = wsFolder.getName();
|
||||
|
||||
//MANAGEMENT SPECIAL FOLDER
|
||||
// if(wsFolder.getName().compareTo("MySpecialFolders")==0 && wsFolder.getParent()!=null && wsFolder.getParent().isRoot()){
|
||||
// WorkspaceSharedFolder shared = (WorkspaceSharedFolder) wsFolder;
|
||||
// name = shared.isVreFolder()?shared.getDisplayName():wsFolder.getName();
|
||||
// }else
|
||||
// name = wsFolder.getName();
|
||||
|
||||
FolderModel folder = new FolderModel(wsFolder.getId(), name, parent, true, wsFolder.isShared(), false);
|
||||
folder.setShareable(true);
|
||||
folder.setDescription(wsFolder.getDescription());
|
||||
// folder.setOwner(wsFolder.getOwner());
|
||||
|
||||
|
||||
if(parent != null && parent.isShared()){
|
||||
folder.setShared(true);
|
||||
folder.setShareable(false);
|
||||
}
|
||||
|
||||
return folder;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* TODO ********TEMPORARY SOLUTION HL MUST MANAGE SPECIAL FOLDER AS WORKSPACESPECIALFOLDER****
|
||||
* REMOVE THIS METHOD AND ADDING INSTANCE OF AT buildGXTFolderModelItem
|
||||
* @param wsFolder
|
||||
* @param parent
|
||||
* @return
|
||||
* @throws InternalErrorException
|
||||
*/
|
||||
public FolderModel buildGXTFolderModelItemHandleSpecialFolder(WorkspaceFolder wsFolder, FileModel parent, String specialFolderName) throws InternalErrorException {
|
||||
|
||||
String name = "";
|
||||
|
||||
//MANAGEMENT SHARED FOLDER NAME
|
||||
if(wsFolder.isShared() && wsFolder.getType().equals(WorkspaceItemType.SHARED_FOLDER)){
|
||||
WorkspaceSharedFolder shared = (WorkspaceSharedFolder) wsFolder;
|
||||
name = shared.isVreFolder()?shared.getDisplayName():wsFolder.getName();
|
||||
|
||||
//MANAGEMENT SPECIAL FOLDER
|
||||
}else if(wsFolder.getName().compareTo("MySpecialFolders")==0 && wsFolder.getParent()!=null && wsFolder.getParent().isRoot()){
|
||||
//MANAGEMENT SPECIAL FOLDER
|
||||
logger.info("MANAGEMENT SPECIAL FOLDER NAME REWRITING AS: "+specialFolderName);
|
||||
if(specialFolderName!=null && !specialFolderName.isEmpty())
|
||||
name = specialFolderName;
|
||||
else
|
||||
name = wsFolder.getName();
|
||||
}else
|
||||
name = wsFolder.getName();
|
||||
|
||||
FolderModel folder = new FolderModel(wsFolder.getId(), name, parent, true, wsFolder.isShared(), false);
|
||||
folder.setShareable(true);
|
||||
folder.setDescription(wsFolder.getDescription());
|
||||
|
@ -2000,12 +2051,12 @@ public class GWTWorkspaceBuilder {
|
|||
|
||||
AccountingEntryShare acc = (AccountingEntryShare) accountingEntry;
|
||||
|
||||
List<String> listContacts = new ArrayList<String>();
|
||||
// List<String> listContacts = new ArrayList<String>();
|
||||
|
||||
if(acc.getMembers()!=null && acc.getMembers().size()>0){
|
||||
|
||||
listContacts = acc.getMembers();
|
||||
}
|
||||
// if(acc.getMembers()!=null && acc.getMembers().size()>0){
|
||||
//
|
||||
// listContacts = acc.getMembers();
|
||||
// }
|
||||
|
||||
|
||||
String msg = "";
|
||||
|
@ -2017,7 +2068,7 @@ public class GWTWorkspaceBuilder {
|
|||
// msg = acc.getItemName() +" "+GxtAccountingEntryType.SHARE.getName()+" by "+user.getName();
|
||||
|
||||
|
||||
if(listContacts.size()>0){
|
||||
if(acc.getMembers()!=null && acc.getMembers().size()>0){
|
||||
|
||||
msg+=" with "+UserUtil.separateFullNameToCommaForPortalLogin(acc.getMembers());
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@ import java.util.Calendar;
|
|||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import javax.servlet.ServletContext;
|
||||
|
@ -140,7 +141,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
|
|||
/**
|
||||
*
|
||||
* @param type the type to look for
|
||||
* @return the Category if there is correspodance, null otherwise
|
||||
* @return the Category if there is correspondance, null otherwise
|
||||
*/
|
||||
private String getSpecialFolderPath() {
|
||||
ServletContext servletContext = getServletContext();
|
||||
|
@ -1947,9 +1948,10 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
|
|||
|
||||
Workspace workspace = getWorkspace();
|
||||
|
||||
workspaceLogger.trace("shareFolder "+ folder.getIdentifier()
|
||||
//TODO TRACE
|
||||
workspaceLogger.info("shareFolder "+ folder.getIdentifier()
|
||||
+ " name: "+ folder.getName()
|
||||
// + " parent name: " + folder.getParentFileModel().getName()
|
||||
+ " parent is: " + folder.getParentFileModel()
|
||||
+ " listContacts size: " + listContacts.size());
|
||||
|
||||
// //DEBUG
|
||||
|
@ -1979,8 +1981,17 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
|
|||
sharedFolder = workspace.shareFolder(listLogin, folder.getIdentifier());
|
||||
sharedFolder.setDescription(folder.getDescription()); //SET NEW DESCRIPTION
|
||||
}
|
||||
else
|
||||
sharedFolder = workspace.createSharedFolder(folder.getName(), folder.getDescription(), listLogin, folder.getParentFileModel().getIdentifier());
|
||||
else{
|
||||
FileModel parent = folder.getParentFileModel();
|
||||
String parentId = "";
|
||||
if(parent!=null){
|
||||
parentId = parent.getIdentifier();
|
||||
}else{
|
||||
workspaceLogger.info("Parent is null, reading root ID from workspace");
|
||||
parentId = getWorkspace().getRoot().getId();
|
||||
}
|
||||
sharedFolder = workspace.createSharedFolder(folder.getName(), folder.getDescription(), listLogin, parentId);
|
||||
}
|
||||
}
|
||||
|
||||
boolean created = sharedFolder==null?false:true;
|
||||
|
@ -2194,14 +2205,18 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
|
|||
|
||||
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder();
|
||||
|
||||
String nameSpecialFolder = getNameForSpecialFolder();
|
||||
|
||||
if(includeItemAsParent==true && wsItem.getType().equals(WorkspaceItemType.FOLDER)){
|
||||
listParents.add(builder.buildGXTFolderModelItem((WorkspaceFolder) wsItem, null));
|
||||
listParents.add(builder.buildGXTFolderModelItemHandleSpecialFolder((WorkspaceFolder) wsItem, null, nameSpecialFolder));
|
||||
}
|
||||
|
||||
|
||||
|
||||
while(wsItem!=null && wsItem.getParent()!=null){
|
||||
|
||||
WorkspaceFolder wsFolder = wsItem.getParent();
|
||||
listParents.add(builder.buildGXTFolderModelItem(wsFolder, null));
|
||||
listParents.add(builder.buildGXTFolderModelItemHandleSpecialFolder(wsFolder, null, nameSpecialFolder));
|
||||
wsItem = wsFolder;
|
||||
}
|
||||
|
||||
|
@ -2246,6 +2261,62 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
|
|||
throw new Exception(e.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<InfoContactModel> getUsersManagerToSharedFolder(String folderId) throws Exception{
|
||||
|
||||
try{
|
||||
|
||||
workspaceLogger.info("Get User Manager to shared folder id: "+folderId);
|
||||
Workspace workspace = getWorkspace();
|
||||
|
||||
List<InfoContactModel> listManagers = new ArrayList<InfoContactModel>();
|
||||
|
||||
workspaceLogger.info("Adding owner..");
|
||||
InfoContactModel owner = getOwnerByItemId(folderId); //GET OWNER
|
||||
|
||||
workspaceLogger.info("Added owner: "+owner);
|
||||
listManagers.add(owner);
|
||||
|
||||
WorkspaceItem wsItem = workspace.getItem(folderId);
|
||||
|
||||
if(wsItem.isShared() && (wsItem.getType().equals(WorkspaceItemType.SHARED_FOLDER))){
|
||||
WorkspaceSharedFolder ite = (WorkspaceSharedFolder) workspace.getItemByPath(wsItem.getPath());
|
||||
|
||||
workspaceLogger.info("Retrieving administrators...");
|
||||
Map<ACLType, List<String>> aclOwner = ite.getACLOwner();
|
||||
if(aclOwner!=null){
|
||||
List<String> listLogins = new ArrayList<String>();
|
||||
workspaceLogger.info("Adding administrators...");
|
||||
for (ACLType type : aclOwner.keySet()) {
|
||||
switch (type) {
|
||||
case ADMINISTRATOR:
|
||||
listLogins.addAll(aclOwner.get(type)); //ADD ALL ADMINISTRATORS
|
||||
break;
|
||||
}
|
||||
}
|
||||
workspaceLogger.info("Added " +listLogins.size() +"administrators, converting into InfoContactModel");
|
||||
GWTWorkspaceBuilder builder = getGWTWorkspaceBuilder();
|
||||
|
||||
List<InfoContactModel> adms = builder.buildGxtInfoContactsFromPortalLogins(listLogins);
|
||||
listManagers.addAll(adms);
|
||||
|
||||
workspaceLogger.info("Returing" +listManagers.size() +"users managers");
|
||||
|
||||
return listManagers;
|
||||
|
||||
}
|
||||
}else
|
||||
throw new Exception("Source item is not shared or shared folder");
|
||||
|
||||
}catch (Exception e) {
|
||||
String error = "Sorry an error occurred on get managers ";
|
||||
workspaceLogger.error(error, e);
|
||||
throw new Exception(e.getMessage());
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String itemExistsInWorkpaceFolder(String parentId, String itemName) throws Exception {
|
||||
|
@ -2663,7 +2734,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
|
|||
* @throws Exception
|
||||
*/
|
||||
@Override
|
||||
public void updateACLForVREbyUsers(String folderId, String aclType) throws Exception{
|
||||
public void updateACLForVREbyMembers(String folderId, String aclType) throws Exception{
|
||||
try {
|
||||
|
||||
if(folderId == null)
|
||||
|
@ -2677,7 +2748,7 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
|
|||
|
||||
if(wsItem.isShared() && (wsItem.getType().equals(WorkspaceItemType.SHARED_FOLDER))){
|
||||
WorkspaceSharedFolder ite = (WorkspaceSharedFolder) workspace.getItemByPath(wsItem.getPath());
|
||||
ite.setACL(ite.getUsers(), ACLType.valueOf(aclType));
|
||||
ite.setACL(ite.getMembers(), ACLType.valueOf(aclType));
|
||||
}else
|
||||
throw new Exception("Source item is not shared or shared folder");
|
||||
|
||||
|
@ -2847,6 +2918,5 @@ public class GWTWorkspaceServiceImpl extends RemoteServiceServlet implements GWT
|
|||
throw new Exception(error);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -102,14 +102,30 @@ public class UserUtil {
|
|||
|
||||
String users = "";
|
||||
|
||||
logger.trace("SeparateFullNameToCommaForPortalLogin converting: "+listLogin);
|
||||
|
||||
//N-1 MEMBERS
|
||||
for (int i = 0; i < listLogin.size()-1; i++) {
|
||||
// logger.trace("Converting: "+i+") "+listLogin.get(i));
|
||||
users+= getUserFullName(listLogin.get(i)) + ", ";
|
||||
}
|
||||
|
||||
if(listLogin.size()>1)
|
||||
//LAST MEMBER
|
||||
if(listLogin.size()>=1){
|
||||
// logger.trace("Converting: "+(listLogin.size()-1)+") " +listLogin.get(listLogin.size()-1));
|
||||
users += getUserFullName(listLogin.get(listLogin.size()-1));
|
||||
}
|
||||
|
||||
logger.trace("SeparateFullNameToCommaForPortalLogin returning: "+users);
|
||||
|
||||
return users;
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
List<String> login = new ArrayList<String>();
|
||||
// login.add("ale");
|
||||
// login.add("pepe");
|
||||
System.out.println(separateFullNameToCommaForPortalLogin(login));
|
||||
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue