added multi drag edit permissions
updated pom version git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/widgets/workspace-sharing-widget@111495 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
d24ad689a5
commit
87bb5e589d
|
@ -0,0 +1,117 @@
|
|||
/**
|
||||
*
|
||||
*/
|
||||
package org.gcube.portlets.widgets.workspacesharingwidget.client;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.gcube.portlets.widgets.workspacesharingwidget.client.permissions.MessageBoxAlert;
|
||||
import org.gcube.portlets.widgets.workspacesharingwidget.client.permissions.PanelTogglePermission;
|
||||
import org.gcube.portlets.widgets.workspacesharingwidget.shared.InfoContactModel;
|
||||
import org.gcube.portlets.widgets.workspacesharingwidget.shared.WorkspaceACL;
|
||||
|
||||
import com.extjs.gxt.ui.client.widget.Dialog;
|
||||
import com.extjs.gxt.ui.client.widget.HorizontalPanel;
|
||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* A dialog to drag and edit permissions of a workspace folder
|
||||
*
|
||||
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||
* @Jan 27, 2015
|
||||
*
|
||||
*/
|
||||
public class MultiDragContactsEditPermissions extends SimpleMultiDragWorkspaceContact{
|
||||
|
||||
private PanelTogglePermission permission;
|
||||
private HorizontalPanel hpPermission = new HorizontalPanel();
|
||||
private Dialog dialog;
|
||||
/**
|
||||
* @param load
|
||||
* @param workspaceItemId
|
||||
* @param readGroupsFromHL
|
||||
* @param readGroupsFromPortal
|
||||
* @param hiddenMySelf
|
||||
*/
|
||||
public MultiDragContactsEditPermissions(LOAD_CONTACTS_AS load, String workspaceItemId, boolean readGroupsFromHL, boolean readGroupsFromPortal, boolean hiddenMySelf) {
|
||||
super(load, workspaceItemId, readGroupsFromHL, readGroupsFromPortal,hiddenMySelf);
|
||||
|
||||
dialog = super.getMultiDragContact();
|
||||
dialog.setHeight(dialog.getHeight()+100);
|
||||
dialog.mask("Loading");
|
||||
//TODO GET ACL FOR USER
|
||||
WorkspaceSharingController.rpcWorkspaceSharingService.getACLs(new AsyncCallback<List<WorkspaceACL>>() {
|
||||
|
||||
@Override
|
||||
public void onSuccess(List<WorkspaceACL> result) {
|
||||
permission = new PanelTogglePermission(result);
|
||||
hpPermission.add(permission);
|
||||
hpPermission.layout();
|
||||
dialog.unmask();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFailure(Throwable caught) {
|
||||
new MessageBoxAlert("Alert", "Sorry, an error occurred on recovering ACLs",null);
|
||||
// dialog.unmask();
|
||||
}
|
||||
});
|
||||
|
||||
dialog.add(permission);
|
||||
}
|
||||
|
||||
public Dialog getDialog() {
|
||||
return dialog;
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.gcube.portlets.widgets.workspacesharingwidget.client.SimpleMultiDragWorkspaceContact#show()
|
||||
*/
|
||||
@Override
|
||||
public void show() {
|
||||
dialog.show();
|
||||
}
|
||||
|
||||
/**
|
||||
* The HL ID of the selected ACL
|
||||
* @return
|
||||
*/
|
||||
public String getSelectedAclId(){
|
||||
if(permission.getSelectedACL()!=null)
|
||||
return permission.getSelectedACL().getId();
|
||||
|
||||
return null;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* The selected ACL
|
||||
* @return
|
||||
*/
|
||||
public WorkspaceACL getSelectedAcl(){
|
||||
if(permission.getSelectedACL()!=null)
|
||||
return permission.getSelectedACL();
|
||||
|
||||
return null;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public List<InfoContactModel> getTargetContacts() {
|
||||
return super.getTargetContacts();
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public List<InfoContactModel> getTargetContactsWithMyLogin() {
|
||||
return super.getTargetContactsWithMyLogin();
|
||||
}
|
||||
|
||||
}
|
|
@ -200,6 +200,10 @@ public class SimpleMultiDragWorkspaceContact {
|
|||
}
|
||||
};
|
||||
|
||||
/**
|
||||
*
|
||||
* @return the multi drag Dialog
|
||||
*/
|
||||
public Dialog getMultiDragContact() {
|
||||
return multiDragContact;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,34 @@
|
|||
package org.gcube.portlets.widgets.workspacesharingwidget.client.permissions;
|
||||
|
||||
import com.extjs.gxt.ui.client.event.Listener;
|
||||
import com.extjs.gxt.ui.client.event.MessageBoxEvent;
|
||||
import com.extjs.gxt.ui.client.widget.MessageBox;
|
||||
|
||||
/**
|
||||
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
||||
*
|
||||
*/
|
||||
public class MessageBoxAlert {
|
||||
|
||||
private MessageBox box = null;
|
||||
|
||||
public MessageBoxAlert(String headerTitle, String msg, Listener<MessageBoxEvent> listener){
|
||||
|
||||
if(listener==null)
|
||||
listener = new Listener<MessageBoxEvent>() {
|
||||
|
||||
@Override
|
||||
public void handleEvent(MessageBoxEvent be) {
|
||||
}
|
||||
};
|
||||
|
||||
box = MessageBox.alert(headerTitle, msg, listener);
|
||||
box.show();
|
||||
|
||||
}
|
||||
|
||||
public MessageBox getMessageBoxInsert() {
|
||||
return box;
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,106 @@
|
|||
package org.gcube.portlets.widgets.workspacesharingwidget.client.permissions;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.gcube.portlets.widgets.workspacesharingwidget.client.resources.GetPermissionIconByACL;
|
||||
import org.gcube.portlets.widgets.workspacesharingwidget.shared.WorkspaceACL;
|
||||
import org.gcube.portlets.widgets.workspacesharingwidget.shared.WorkspaceACL.USER_TYPE;
|
||||
|
||||
import com.extjs.gxt.ui.client.Style.ButtonScale;
|
||||
import com.extjs.gxt.ui.client.Style.IconAlign;
|
||||
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.HorizontalPanel;
|
||||
import com.extjs.gxt.ui.client.widget.LayoutContainer;
|
||||
import com.extjs.gxt.ui.client.widget.button.ToggleButton;
|
||||
import com.extjs.gxt.ui.client.widget.tips.ToolTipConfig;
|
||||
import com.google.gwt.core.shared.GWT;
|
||||
import com.google.gwt.user.client.ui.AbstractImagePrototype;
|
||||
|
||||
public class PanelTogglePermission extends LayoutContainer {
|
||||
|
||||
protected static final String WORKSPACEACLGROUP = "WORKSPACEACLGROUP";
|
||||
|
||||
private HorizontalPanel hp = new HorizontalPanel();
|
||||
|
||||
private WorkspaceACL selectedAcl = null;
|
||||
|
||||
private List<ToggleButton> toggles;
|
||||
|
||||
public PanelTogglePermission(List<WorkspaceACL> acls) {
|
||||
|
||||
// setStyleAttribute("margin-top", "10px");
|
||||
setStyleAttribute("margin-bottom", "15px");
|
||||
setSize(350, 40);
|
||||
|
||||
hp.mask("Loading ACLs");
|
||||
hp.setVerticalAlign(VerticalAlignment.MIDDLE);
|
||||
hp.setStyleAttribute("padding-left", "35px");
|
||||
toggles = new ArrayList<ToggleButton>(acls.size());
|
||||
|
||||
for (WorkspaceACL acl : acls) {
|
||||
if(acl.getUserType().equals(USER_TYPE.OTHER)){
|
||||
ToggleButton toggle = createToggle(acl);
|
||||
toggle.setToggleGroup(WORKSPACEACLGROUP);
|
||||
toggle.setStyleAttribute("margin-right", "10px");
|
||||
toggles.add(toggle);
|
||||
hp.add(toggle);
|
||||
}
|
||||
}
|
||||
|
||||
hp.unmask();
|
||||
add(hp);
|
||||
layout();
|
||||
}
|
||||
|
||||
private ToggleButton createToggle(final WorkspaceACL acl) {
|
||||
|
||||
final ToggleButton bToggle = new ToggleButton(acl.getLabel());
|
||||
bToggle.setScale(ButtonScale.MEDIUM);
|
||||
bToggle.setId(acl.getId());
|
||||
bToggle.setAllowDepress(false);
|
||||
bToggle.toggle(acl.getDefaultValue());
|
||||
|
||||
if(acl.getDefaultValue())
|
||||
selectedAcl = acl;
|
||||
|
||||
bToggle.setIconAlign(IconAlign.TOP);
|
||||
bToggle.addSelectionListener(new SelectionListener<ButtonEvent>() {
|
||||
|
||||
@Override
|
||||
public void componentSelected(ButtonEvent ce) {
|
||||
if(bToggle.isPressed()){
|
||||
selectedAcl = acl;
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
bToggle.setToolTip(new ToolTipConfig(acl.getDescription()));
|
||||
AbstractImagePrototype img = GetPermissionIconByACL.getImage(acl);
|
||||
|
||||
if(img!=null)
|
||||
bToggle.setIcon(img);
|
||||
|
||||
return bToggle;
|
||||
}
|
||||
|
||||
|
||||
public WorkspaceACL getSelectedACL() {
|
||||
GWT.log("Selected ACL is: "+selectedAcl);
|
||||
return selectedAcl;
|
||||
}
|
||||
|
||||
public void selectACL(WorkspaceACL acl){
|
||||
for (ToggleButton toogle : toggles) {
|
||||
GWT.log("Comparing toogle.getId(): "+toogle.getId() +" and acl.getId(): "+acl.getId());
|
||||
if(toogle.getId().compareTo(acl.getId())==0){
|
||||
GWT.log("Toogle: "+acl);
|
||||
toogle.toggle(true);
|
||||
selectedAcl = acl;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -316,50 +316,6 @@ public class GWTWorkspaceSharingBuilder {
|
|||
return new InfoContactModel();
|
||||
}
|
||||
|
||||
public List<WorkspaceACL> getWorkspaceACLFromACLs(List<ACLType> types)
|
||||
throws Exception {
|
||||
|
||||
List<WorkspaceACL> acls = new ArrayList<WorkspaceACL>();
|
||||
|
||||
for (ACLType acl : types) {
|
||||
|
||||
switch (acl) {
|
||||
|
||||
case ADMINISTRATOR:
|
||||
// acls.add(new WorkspaceACL(acl.toString(),
|
||||
// ACL_TYPE.ADMINISTRATOR, "Admin", false,
|
||||
// USER_TYPE.ADMINISTRATOR, ""));
|
||||
break;
|
||||
case READ_ONLY:
|
||||
acls.add(new WorkspaceACL(acl.toString(), ACL_TYPE.READ_ONLY,
|
||||
"Read Only", false, USER_TYPE.OTHER,
|
||||
"Users can read any file but cannot update/delete"));
|
||||
break;
|
||||
case WRITE_OWNER:
|
||||
acls.add(new WorkspaceACL(acl.toString(), ACL_TYPE.WRITE_OWNER,
|
||||
"Write Own", true, USER_TYPE.OTHER,
|
||||
"Users can update/delete only their files"));
|
||||
break;
|
||||
|
||||
case WRITE_ALL:
|
||||
acls.add(new WorkspaceACL(acl.toString(), ACL_TYPE.WRITE_ANY,
|
||||
"Write Any", false, USER_TYPE.OTHER,
|
||||
"Any user can update/delete any file"));
|
||||
break;
|
||||
|
||||
default:
|
||||
acls.add(new WorkspaceACL(acl.toString(), ACL_TYPE.WRITE_OWNER,
|
||||
acl.toString(), false, USER_TYPE.OTHER, ""));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (acls.size() == 0)
|
||||
throw new Exception("No ACLs rules found!");
|
||||
|
||||
return acls;
|
||||
}
|
||||
|
||||
protected FileModel buildGXTFileModelItem(WorkspaceItem item,
|
||||
FileModel parentFolderModel) throws Exception {
|
||||
FileModel fileModel = null;
|
||||
|
@ -495,4 +451,48 @@ public class GWTWorkspaceSharingBuilder {
|
|||
return fileModel;
|
||||
}
|
||||
|
||||
public List<WorkspaceACL> getWorkspaceACLFromACLs(List<ACLType> types)
|
||||
throws Exception {
|
||||
|
||||
List<WorkspaceACL> acls = new ArrayList<WorkspaceACL>();
|
||||
|
||||
for (ACLType acl : types) {
|
||||
|
||||
switch (acl) {
|
||||
|
||||
case ADMINISTRATOR:
|
||||
// acls.add(new WorkspaceACL(acl.toString(),
|
||||
// ACL_TYPE.ADMINISTRATOR, "Admin", false,
|
||||
// USER_TYPE.ADMINISTRATOR, ""));
|
||||
break;
|
||||
case READ_ONLY:
|
||||
acls.add(new WorkspaceACL(acl.toString(), ACL_TYPE.READ_ONLY,
|
||||
"Read Only", false, USER_TYPE.OTHER,
|
||||
"Users can read any file but cannot update/delete"));
|
||||
break;
|
||||
case WRITE_OWNER:
|
||||
acls.add(new WorkspaceACL(acl.toString(), ACL_TYPE.WRITE_OWNER,
|
||||
"Write Own", true, USER_TYPE.OTHER,
|
||||
"Users can update/delete only their files"));
|
||||
break;
|
||||
|
||||
case WRITE_ALL:
|
||||
acls.add(new WorkspaceACL(acl.toString(), ACL_TYPE.WRITE_ANY,
|
||||
"Write Any", false, USER_TYPE.OTHER,
|
||||
"Any user can update/delete any file"));
|
||||
break;
|
||||
|
||||
default:
|
||||
// acls.add(new WorkspaceACL(acl.toString(), ACL_TYPE.WRITE_OWNER,
|
||||
// acl.toString(), false, USER_TYPE.OTHER, ""));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (acls.size() == 0)
|
||||
throw new Exception("No ACLs rules found!");
|
||||
|
||||
return acls;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -75,7 +75,7 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements
|
|||
}
|
||||
|
||||
protected boolean isTestMode(){
|
||||
return WsUtil.withoutPortal;
|
||||
return !WsUtil.isWithinPortal(); //IS NOT INTO PORTAL
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -546,11 +546,6 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements
|
|||
return listContactsModel;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
WorkspaceSharingServiceImpl impl = new WorkspaceSharingServiceImpl();
|
||||
|
@ -583,6 +578,8 @@ public class WorkspaceSharingServiceImpl extends RemoteServiceServlet implements
|
|||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -35,8 +35,8 @@ public class UserUtil {
|
|||
return "";
|
||||
|
||||
logger.info("Get user full name for: "+portalLogin);
|
||||
logger.info("Into portal: "+!WsUtil.withoutPortal);
|
||||
if (portalLogin.compareTo(WsUtil.TEST_USER) != 0 && !WsUtil.withoutPortal) { //skip test.user
|
||||
logger.info("Into portal: "+!WsUtil.isWithinPortal());
|
||||
if ((portalLogin.compareTo(WsUtil.TEST_USER) != 0) && (WsUtil.isWithinPortal())) { //skip test.user
|
||||
|
||||
UserModel curr = null;
|
||||
|
||||
|
|
|
@ -28,6 +28,8 @@ import org.gcube.portlets.widgets.workspacesharingwidget.shared.system.VRE;
|
|||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import com.liferay.portal.service.UserLocalServiceUtil;
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -62,7 +64,22 @@ public class WsUtil {
|
|||
|
||||
protected static Logger logger = LoggerFactory.getLogger(WsUtil.class);
|
||||
|
||||
public static boolean withoutPortal = false;
|
||||
// public static boolean withoutPortal = false;
|
||||
|
||||
/**
|
||||
*
|
||||
* @return true if you're running into the portal, false if in development
|
||||
*/
|
||||
public static boolean isWithinPortal() {
|
||||
try {
|
||||
UserLocalServiceUtil.getService();
|
||||
return true;
|
||||
}
|
||||
catch (Exception ex) {
|
||||
logger.info("Development Mode ON");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static ASLSession getAslSession(HttpSession httpSession)
|
||||
{
|
||||
|
@ -95,13 +112,13 @@ public class WsUtil {
|
|||
//SET HTTP SESSION ATTRIBUTE
|
||||
httpSession.setAttribute(USERNAME_ATTRIBUTE, user);
|
||||
|
||||
withoutPortal = true;
|
||||
// withoutPortal = true;
|
||||
|
||||
return session;
|
||||
|
||||
}else if(user.compareToIgnoreCase(TEST_USER)==0){
|
||||
|
||||
withoutPortal = true;
|
||||
// withoutPortal = true;
|
||||
|
||||
//COMMENT THIS IN PRODUCTION ENVIROMENT
|
||||
// }else if(user.compareToIgnoreCase("francesco.mangiacrapa")==0){
|
||||
|
@ -110,7 +127,7 @@ public class WsUtil {
|
|||
// END UNCOMMENT
|
||||
}else{
|
||||
|
||||
withoutPortal = false;
|
||||
// withoutPortal = false;
|
||||
}
|
||||
|
||||
return SessionManager.getInstance().getASLSession(sessionID, user);
|
||||
|
|
|
@ -31,7 +31,15 @@ public class WorkspaceACL implements Serializable{
|
|||
|
||||
public enum USER_TYPE{ADMINISTRATOR, GROUP, OWNER, OTHER};
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @param serverId
|
||||
* @param aclType
|
||||
* @param label
|
||||
* @param defaultValue
|
||||
* @param userType
|
||||
* @param description
|
||||
*/
|
||||
public WorkspaceACL(String serverId, ACL_TYPE aclType, String label, boolean defaultValue, USER_TYPE userType, String description) {
|
||||
super();
|
||||
this.id = serverId;
|
||||
|
|
Loading…
Reference in New Issue