r871 - in trunk/src: main/java/org/ourproject/kune/chat/client/cnt main/java/org/ourproject/kune/chat/client/ctx main/java/org/ourproject/kune/chat/server main/java/org/ourproject/kune/docs/client main/java/org/ourproject/kune/docs/client/cnt main/java/org/ourproject/kune/docs/server main/java/org/ourproject/kune/platf/client/actions main/java/org/ourproject/kune/platf/client/dto main/java/org/ourproject/kune/platf/client/errors main/java/org/ourproject/kune/platf/client/rpc main/java/org/our
Author: vjrj Date: 2008-09-15 06:12:48 +0200 (Mon, 15 Sep 2008) New Revision: 871 Added: trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionButtonDescriptor.java trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionButtonSeparator.java trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionCollectionSet.java trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionEnableCondition.java trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionMenuDescriptor.java trunk/src/main/java/org/ourproject/kune/platf/client/errors/ContainerNotPermittedException.java Modified: trunk/src/main/java/org/ourproject/kune/chat/client/cnt/ChatContentPresenter.java trunk/src/main/java/org/ourproject/kune/chat/client/ctx/ChatContextPresenter.java trunk/src/main/java/org/ourproject/kune/chat/server/ChatServerTool.java trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientTool.java trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentContentPresenter.java trunk/src/main/java/org/ourproject/kune/docs/server/DocumentServerTool.java trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionDescriptor.java trunk/src/main/java/org/ourproject/kune/platf/client/dto/InitDataDTO.java trunk/src/main/java/org/ourproject/kune/platf/client/dto/StateDTO.java trunk/src/main/java/org/ourproject/kune/platf/client/rpc/ContentService.java trunk/src/main/java/org/ourproject/kune/platf/client/rpc/ContentServiceAsync.java trunk/src/main/java/org/ourproject/kune/platf/client/state/Session.java trunk/src/main/java/org/ourproject/kune/platf/client/state/SessionDefault.java trunk/src/main/java/org/ourproject/kune/platf/client/ui/dialogs/FileUploader.java trunk/src/main/java/org/ourproject/kune/platf/client/ui/dialogs/FileUploaderDialog.java trunk/src/main/java/org/ourproject/kune/platf/server/content/CreationService.java trunk/src/main/java/org/ourproject/kune/platf/server/content/CreationServiceDefault.java trunk/src/main/java/org/ourproject/kune/platf/server/rpc/ContentRPC.java trunk/src/main/java/org/ourproject/kune/platf/server/state/State.java trunk/src/main/java/org/ourproject/kune/platf/server/state/StateServiceDefault.java trunk/src/main/java/org/ourproject/kune/platf/server/tool/ServerTool.java trunk/src/main/java/org/ourproject/kune/workspace/client/ctxnav/ContextNavigatorPanel.java trunk/src/main/java/org/ourproject/kune/workspace/client/ctxnav/ContextNavigatorPresenter.java trunk/src/main/java/org/ourproject/kune/workspace/client/ctxnav/ContextNavigatorView.java trunk/src/main/java/org/ourproject/kune/workspace/client/title/EntityTitlePresenter.java trunk/src/test/java/org/ourproject/kune/platf/integration/content/ContentServiceAddTest.java trunk/src/test/java/org/ourproject/kune/platf/integration/content/ContentServiceGetTest.java trunk/src/test/java/org/ourproject/kune/platf/integration/content/ContentServiceVariousTest.java Log: better context support, more complete action definitions, some server fixes Modified: trunk/src/main/java/org/ourproject/kune/chat/client/cnt/ChatContentPresenter.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/chat/client/cnt/ChatContentPresenter.java 2008-09-13 10:27:22 UTC (rev 870) +++ trunk/src/main/java/org/ourproject/kune/chat/client/cnt/ChatContentPresenter.java 2008-09-15 04:12:48 UTC (rev 871) @@ -53,7 +53,7 @@ } public void onEnterRoom() { - final String roomName = state.getFolder().getName(); + final String roomName = state.getContainer().getName(); emiteUIDialog.joinRoom(XmppURI.uri(roomName)); } Modified: trunk/src/main/java/org/ourproject/kune/chat/client/ctx/ChatContextPresenter.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/chat/client/ctx/ChatContextPresenter.java 2008-09-13 10:27:22 UTC (rev 870) +++ trunk/src/main/java/org/ourproject/kune/chat/client/ctx/ChatContextPresenter.java 2008-09-15 04:12:48 UTC (rev 871) @@ -43,7 +43,7 @@ public void setState(final StateDTO state) { final RoomsAdmin rooms = roomAdminsProvider.get(); - rooms.showRoom(state.getStateToken(), state.getFolder(), state.getFolderRights()); + rooms.showRoom(state.getStateToken(), state.getContainer(), state.getContainerRights()); view.show(rooms.getView()); } } Modified: trunk/src/main/java/org/ourproject/kune/chat/server/ChatServerTool.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/chat/server/ChatServerTool.java 2008-09-13 10:27:22 UTC (rev 870) +++ trunk/src/main/java/org/ourproject/kune/chat/server/ChatServerTool.java 2008-09-15 04:12:48 UTC (rev 871) @@ -21,6 +21,7 @@ package org.ourproject.kune.chat.server; import org.ourproject.kune.chat.client.ChatClientTool; +import org.ourproject.kune.platf.client.errors.ContainerNotPermittedException; import org.ourproject.kune.platf.server.content.ContainerManager; import org.ourproject.kune.platf.server.domain.Container; import org.ourproject.kune.platf.server.domain.Content; @@ -44,40 +45,49 @@ @Inject public ChatServerTool(final ToolConfigurationManager configurationManager, final ContainerManager containerManager) { - this.configurationManager = configurationManager; - this.containerManager = containerManager; + this.configurationManager = configurationManager; + this.containerManager = containerManager; } public String getName() { - return NAME; + return NAME; } - public void onCreateContainer(final Container container, final Container parent) { - if (!parent.getTypeId().equals(TYPE_ROOT)) { - throw new RuntimeException(); - } - container.setTypeId(TYPE_ROOM); + public Group initGroup(final User user, final Group group) { + final ToolConfiguration config = new ToolConfiguration(); + final Container container = containerManager.createRootFolder(group, NAME, ROOT_NAME, TYPE_ROOT); + config.setRoot(container); + group.setToolConfig(NAME, config); + configurationManager.persist(config); + return group; } - public void onCreateContent(final Content content, final Container parent) { - if (parent.getTypeId().equals(TYPE_ROOM)) { - throw new RuntimeException(); - } - content.setTypeId(TYPE_CHAT); + public void onCreateContainer(final Container container, final Container parent, final String typeId) { + checkTypeId(parent.getTypeId(), typeId); + container.setTypeId(typeId); } - public Group initGroup(final User user, final Group group) { - ToolConfiguration config = new ToolConfiguration(); - Container container = containerManager.createRootFolder(group, NAME, ROOT_NAME, TYPE_ROOT); - config.setRoot(container); - group.setToolConfig(NAME, config); - configurationManager.persist(config); - return group; + public void onCreateContent(final Content content, final Container parent) { + if (parent.getTypeId().equals(TYPE_ROOM)) { + throw new RuntimeException(); + } + content.setTypeId(TYPE_CHAT); } @Inject public void register(final ToolRegistry registry) { - registry.register(this); + registry.register(this); } + private void checkTypeId(final String parentTypeId, final String typeId) { + if (typeId.equals(TYPE_ROOM)) { + if (!parentTypeId.equals(TYPE_ROOT)) { + throw new ContainerNotPermittedException(); + } + // ok valid container + } else { + throw new ContainerNotPermittedException(); + } + } + } Modified: trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientTool.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientTool.java 2008-09-13 10:27:22 UTC (rev 870) +++ trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientTool.java 2008-09-15 04:12:48 UTC (rev 871) @@ -21,9 +21,14 @@ package org.ourproject.kune.docs.client; import org.ourproject.kune.docs.client.ctx.DocumentContext; +import org.ourproject.kune.platf.client.actions.ActionButtonDescriptor; +import org.ourproject.kune.platf.client.actions.ActionButtonSeparator; import org.ourproject.kune.platf.client.actions.ActionDescriptor; +import org.ourproject.kune.platf.client.actions.ActionEnableCondition; +import org.ourproject.kune.platf.client.actions.ActionMenuDescriptor; import org.ourproject.kune.platf.client.actions.ActionPosition; import org.ourproject.kune.platf.client.dto.AccessRolDTO; +import org.ourproject.kune.platf.client.dto.InitDataDTO; import org.ourproject.kune.platf.client.dto.StateDTO; import org.ourproject.kune.platf.client.dto.StateToken; import org.ourproject.kune.platf.client.rpc.AsyncCallbackSimple; @@ -95,30 +100,17 @@ } private void createActions() { - final ActionDescriptor<StateToken> addFolder = new ActionDescriptor<StateToken>(AccessRolDTO.Editor, - ActionPosition.topbarAndItemMenu, new Slot<StateToken>() { - public void onEvent(final StateToken parameter) { - contentServiceProvider.get().addFolder(session.getUserHash(), - session.getCurrentState().getGroup().getShortName(), new Long(parameter.getFolder()), - i18n.t("New folder"), new AsyncCallbackSimple<StateDTO>() { - public void onSuccess(final StateDTO state) { - contextNavigator.setState(state); - stateManager.setRetrievedState(state); - contextNavigator.editItem(state.getStateToken()); - } - }); - } - }); - addFolder.setTextDescription(i18n.t("New folder")); - addFolder.setParentMenuTitle(i18n.t("New")); - addFolder.setIconUrl("images/nav/folder_add.png"); + final ActionMenuDescriptor<StateToken> addFolder = createFolderAction(TYPE_FOLDER, "images/nav/folder_add.png", + i18n.t("New folder"), i18n.t("File"), i18n.t("New")); + final ActionMenuDescriptor<StateToken> addGallery = createFolderAction(TYPE_GALLERY, "images/nav/gallery.png", + i18n.t("New gallery"), i18n.t("File"), i18n.t("New")); - final ActionDescriptor<StateToken> addDoc = new ActionDescriptor<StateToken>(AccessRolDTO.Editor, + final ActionMenuDescriptor<StateToken> addDoc = new ActionMenuDescriptor<StateToken>(AccessRolDTO.Editor, ActionPosition.topbarAndItemMenu, new Slot<StateToken>() { public void onEvent(final StateToken token) { contentServiceProvider.get().addContent(session.getUserHash(), session.getCurrentState().getGroup().getShortName(), - session.getCurrentState().getFolder().getId(), i18n.t("New document"), + session.getCurrentState().getContainer().getId(), i18n.t("New document"), new AsyncCallbackSimple<StateDTO>() { public void onSuccess(final StateDTO state) { contextNavigator.setState(state); @@ -130,22 +122,24 @@ } }); addDoc.setTextDescription(i18n.t("New document")); - addDoc.setParentMenuTitle(i18n.t("New")); + addDoc.setParentMenuTitle(i18n.t("File")); + addDoc.setParentSubMenuTitle(i18n.t("New")); addDoc.setIconUrl("images/nav/page_add.png"); - final ActionDescriptor<StateToken> delContainer = new ActionDescriptor<StateToken>(AccessRolDTO.Administrator, - ActionPosition.itemMenu, new Slot<StateToken>() { + final ActionMenuDescriptor<StateToken> delContainer = new ActionMenuDescriptor<StateToken>( + AccessRolDTO.Administrator, ActionPosition.topbarAndItemMenu, new Slot<StateToken>() { public void onEvent(final StateToken token) { Site.info("Sorry, in development"); } }); - delContainer.setTextDescription(i18n.t("Delete")); + delContainer.setParentMenuTitle(i18n.t("File")); + delContainer.setTextDescription(i18n.t("Delete folder")); delContainer.setMustBeConfirmed(true); delContainer.setConfirmationTitle(i18n.t("Please confirm")); delContainer.setConfirmationText(i18n.t("You will delete it and also all its contents. Are you sure?")); - final ActionDescriptor<StateToken> delContent = new ActionDescriptor<StateToken>(AccessRolDTO.Administrator, - ActionPosition.itemMenu, new Slot<StateToken>() { + final ActionMenuDescriptor<StateToken> delContent = new ActionMenuDescriptor<StateToken>( + AccessRolDTO.Administrator, ActionPosition.topbarAndItemMenu, new Slot<StateToken>() { public void onEvent(final StateToken token) { contentServiceProvider.get().delContent(session.getUserHash(), session.getCurrentState().getGroup().getShortName(), token.getDocument(), @@ -157,7 +151,8 @@ }); } }); - delContent.setTextDescription(i18n.t("Delete")); + delContent.setParentMenuTitle(i18n.t("File")); + delContent.setTextDescription(i18n.t("Delete document")); delContent.setMustBeConfirmed(true); delContent.setConfirmationTitle(i18n.t("Please confirm")); delContent.setConfirmationText(i18n.t("Are you sure?")); @@ -179,7 +174,31 @@ }); rename.setTextDescription(i18n.t("Rename")); - final ActionDescriptor<StateToken> refresh = new ActionDescriptor<StateToken>(AccessRolDTO.Viewer, + final ActionButtonDescriptor<StateToken> goGroupHome = new ActionButtonDescriptor<StateToken>( + AccessRolDTO.Viewer, ActionPosition.topbar, new Slot<StateToken>() { + public void onEvent(final StateToken token) { + stateManager.gotoToken(token.getGroup()); + } + }); + goGroupHome.setIconUrl("images/group-home.png"); + goGroupHome.setLeftSeparator(ActionButtonSeparator.fill); + goGroupHome.setRightSeparator(ActionButtonSeparator.separator); + goGroupHome.setEnableCondition(new ActionEnableCondition<StateToken>() { + public boolean mustBeEnabled(final StateToken param) { + return !param.equals(session.getCurrentState().getStateToken()); + } + }); + + final ActionMenuDescriptor<StateToken> setAsDefGroupContent = new ActionMenuDescriptor<StateToken>( + AccessRolDTO.Administrator, ActionPosition.itemMenu, new Slot<StateToken>() { + public void onEvent(final StateToken token) { + Site.info("In development"); + } + }); + setAsDefGroupContent.setTextDescription(i18n.t("Set this as the group default page")); + setAsDefGroupContent.setIconUrl("images/group-home.png"); + + final ActionButtonDescriptor<StateToken> refresh = new ActionButtonDescriptor<StateToken>(AccessRolDTO.Viewer, ActionPosition.topbar, new Slot<StateToken>() { public void onEvent(StateToken stateToken) { stateManager.reload(); @@ -189,38 +208,87 @@ refresh.setIconUrl("images/nav/refresh.png"); refresh.setToolTip(i18n.t("Refresh")); - final ActionDescriptor<StateToken> uploadFile = new ActionDescriptor<StateToken>(AccessRolDTO.Editor, - ActionPosition.bootombarAndItemMenu, new Slot<StateToken>() { - public void onEvent(final StateToken token) { - fileUploaderProvider.get().show(); - } - }); - uploadFile.setTextDescription(i18n.t("Upload file")); - uploadFile.setIconUrl("images/nav/upload.png"); - uploadFile.setToolTip(i18n.t("Upload some files (images, PDFs, etc)")); + final ActionDescriptor<StateToken> uploadFile = createUploadAction(i18n.t("Upload file"), + "images/nav/upload.png", i18n.t("Upload some files (images, PDFs, ...)"), null); - contextNavigator.addAction(TYPE_FOLDER, go); + session.onInitDataReceived(new Slot<InitDataDTO>() { + public void onEvent(final InitDataDTO parameter) { + final ActionDescriptor<StateToken> uploadMedia = createUploadAction(i18n.t("Upload media"), + "images/nav/upload.png", i18n.t("Upload some media (images, videos)"), session + .getGalleryPermittedExtensions()); + contextNavigator.addAction(TYPE_GALLERY, uploadMedia); + } + }); + + // contextNavigator.addAction(TYPE_FOLDER, go); contextNavigator.addAction(TYPE_FOLDER, addDoc); contextNavigator.addAction(TYPE_FOLDER, addFolder); contextNavigator.addAction(TYPE_FOLDER, delContainer); contextNavigator.addAction(TYPE_FOLDER, rename); + contextNavigator.addAction(TYPE_FOLDER, goGroupHome); contextNavigator.addAction(TYPE_FOLDER, refresh); contextNavigator.addAction(TYPE_FOLDER, uploadFile); contextNavigator.addAction(TYPE_BLOG, uploadFile); - contextNavigator.addAction(TYPE_GALLERY, uploadFile); + contextNavigator.addAction(TYPE_BLOG, setAsDefGroupContent); + contextNavigator.addAction(TYPE_GALLERY, goGroupHome); + contextNavigator.addAction(TYPE_ROOT, addDoc); contextNavigator.addAction(TYPE_ROOT, addFolder); + contextNavigator.addAction(TYPE_ROOT, addGallery); + contextNavigator.addAction(TYPE_ROOT, goGroupHome); contextNavigator.addAction(TYPE_ROOT, refresh); contextNavigator.addAction(TYPE_ROOT, uploadFile); - contextNavigator.addAction(TYPE_DOCUMENT, go); + // contextNavigator.addAction(TYPE_DOCUMENT, go); contextNavigator.addAction(TYPE_DOCUMENT, delContent); contextNavigator.addAction(TYPE_DOCUMENT, rename); + contextNavigator.addAction(TYPE_DOCUMENT, goGroupHome); contextNavigator.addAction(TYPE_DOCUMENT, refresh); + contextNavigator.addAction(TYPE_DOCUMENT, setAsDefGroupContent); } + private ActionMenuDescriptor<StateToken> createFolderAction(final String contentTypeId, final String iconUrl, + final String textDescription, final String parentMenuTitle, final String parentMenuSubtitle) { + final ActionMenuDescriptor<StateToken> addFolder; + addFolder = new ActionMenuDescriptor<StateToken>(AccessRolDTO.Editor, ActionPosition.topbarAndItemMenu, + new Slot<StateToken>() { + public void onEvent(final StateToken parameter) { + contentServiceProvider.get().addFolder(session.getUserHash(), + session.getCurrentState().getGroup().getShortName(), new Long(parameter.getFolder()), + textDescription, contentTypeId, new AsyncCallbackSimple<StateDTO>() { + public void onSuccess(final StateDTO state) { + contextNavigator.setState(state); + stateManager.setRetrievedState(state); + contextNavigator.editItem(state.getStateToken()); + } + }); + } + }); + addFolder.setTextDescription(textDescription); + addFolder.setParentMenuTitle(parentMenuTitle); + addFolder.setParentSubMenuTitle(parentMenuSubtitle); + addFolder.setIconUrl(iconUrl); + return addFolder; + } + + private ActionDescriptor<StateToken> createUploadAction(final String textDescription, final String iconUrl, + final String toolTip, final String permitedExtensions) { + final ActionButtonDescriptor<StateToken> uploadFile; + uploadFile = new ActionButtonDescriptor<StateToken>(AccessRolDTO.Editor, ActionPosition.bootombarAndItemMenu, + new Slot<StateToken>() { + public void onEvent(final StateToken token) { + fileUploaderProvider.get().setPermittedExtensions(permitedExtensions); + fileUploaderProvider.get().show(); + } + }); + uploadFile.setTextDescription(textDescription); + uploadFile.setIconUrl(iconUrl); + uploadFile.setToolTip(toolTip); + return uploadFile; + } + private void registerDragDropTypes() { contextNavigator.registerDraggableType(TYPE_DOCUMENT); contextNavigator.registerDraggableType(TYPE_FOLDER); Modified: trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentContentPresenter.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentContentPresenter.java 2008-09-13 10:27:22 UTC (rev 870) +++ trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentContentPresenter.java 2008-09-15 04:12:48 UTC (rev 871) @@ -139,7 +139,7 @@ view.setContent(editor.getView()); } else { final FolderEditor editor = folderEditorProvider.get(); - editor.setFolder(content.getFolder()); + editor.setFolder(content.getContainer()); view.setContent(editor.getView()); } onEditing.fire(); @@ -197,7 +197,7 @@ docReaderProvider.get().show(); } else { final FolderViewer viewer = folderViewerProvider.get(); - viewer.setFolder(content.getFolder()); + viewer.setFolder(content.getContainer()); view.setContent(viewer.getView()); } } Modified: trunk/src/main/java/org/ourproject/kune/docs/server/DocumentServerTool.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/docs/server/DocumentServerTool.java 2008-09-13 10:27:22 UTC (rev 870) +++ trunk/src/main/java/org/ourproject/kune/docs/server/DocumentServerTool.java 2008-09-15 04:12:48 UTC (rev 871) @@ -20,6 +20,7 @@ package org.ourproject.kune.docs.server; +import org.ourproject.kune.platf.client.errors.ContainerNotPermittedException; import org.ourproject.kune.platf.client.services.I18nTranslationService; import org.ourproject.kune.platf.server.content.ContainerManager; import org.ourproject.kune.platf.server.content.ContentManager; @@ -81,8 +82,9 @@ return group; } - public void onCreateContainer(final Container container, final Container parent) { - container.setTypeId(TYPE_FOLDER); + public void onCreateContainer(final Container container, final Container parent, final String typeId) { + checkTypeId(parent.getTypeId(), typeId); + container.setTypeId(typeId); } public void onCreateContent(final Content content, final Container parent) { @@ -94,4 +96,15 @@ registry.register(this); } + private void checkTypeId(final String parentTypeId, final String typeId) { + if (typeId.equals(TYPE_FOLDER) || typeId.equals(TYPE_GALLERY)) { + // ok valid container + if (typeId.equals(TYPE_GALLERY) && !parentTypeId.equals(TYPE_ROOT)) { + throw new ContainerNotPermittedException(); + } + } else { + throw new ContainerNotPermittedException(); + } + } + } Added: trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionButtonDescriptor.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionButtonDescriptor.java 2008-09-13 10:27:22 UTC (rev 870) +++ trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionButtonDescriptor.java 2008-09-15 04:12:48 UTC (rev 871) @@ -0,0 +1,40 @@ +package org.ourproject.kune.platf.client.actions; + +import org.ourproject.kune.platf.client.dto.AccessRolDTO; + +import com.calclab.suco.client.signal.Slot; + +public class ActionButtonDescriptor<T> extends ActionDescriptor<T> { + + private ActionButtonSeparator leftSeparator; + private ActionButtonSeparator rightSeparator; + + public ActionButtonDescriptor(final AccessRolDTO accessRolDTO, final ActionPosition actionPosition, + final Slot<T> onPerformCall) { + super(accessRolDTO, actionPosition, onPerformCall); + } + + public ActionButtonSeparator getLeftSeparator() { + return leftSeparator; + } + + public ActionButtonSeparator getRightSeparator() { + return rightSeparator; + } + + public boolean hasLeftSeparator() { + return leftSeparator != null; + } + + public boolean hasRightSeparator() { + return rightSeparator != null; + } + + public void setLeftSeparator(final ActionButtonSeparator leftSeparator) { + this.leftSeparator = leftSeparator; + } + + public void setRightSeparator(final ActionButtonSeparator rightSeparator) { + this.rightSeparator = rightSeparator; + } +} Added: trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionButtonSeparator.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionButtonSeparator.java 2008-09-13 10:27:22 UTC (rev 870) +++ trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionButtonSeparator.java 2008-09-15 04:12:48 UTC (rev 871) @@ -0,0 +1,5 @@ +package org.ourproject.kune.platf.client.actions; + +public enum ActionButtonSeparator { + spacer, separator, fill +} Added: trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionCollectionSet.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionCollectionSet.java 2008-09-13 10:27:22 UTC (rev 870) +++ trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionCollectionSet.java 2008-09-15 04:12:48 UTC (rev 871) @@ -0,0 +1,21 @@ +package org.ourproject.kune.platf.client.actions; + + +public class ActionCollectionSet<T> { + + private final ActionCollection<T> toolbarActions; + private final ActionCollection<T> itemActions; + + public ActionCollectionSet() { + toolbarActions = new ActionCollection<T>(); + itemActions = new ActionCollection<T>(); + } + + public ActionCollection<T> getItemActions() { + return itemActions; + } + + public ActionCollection<T> getToolbarActions() { + return toolbarActions; + } +} Modified: trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionDescriptor.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionDescriptor.java 2008-09-13 10:27:22 UTC (rev 870) +++ trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionDescriptor.java 2008-09-15 04:12:48 UTC (rev 871) @@ -3,7 +3,6 @@ import org.ourproject.kune.platf.client.dto.AccessRolDTO; import org.ourproject.kune.platf.client.services.ImageDescriptor; -import com.allen_sauer.gwt.log.client.Log; import com.calclab.suco.client.signal.Slot; public class ActionDescriptor<T> { @@ -17,11 +16,6 @@ private String confirmationTitle; private String confirmationText; - private boolean isMenuAction; - private String parentMenuTitle; - private String parentMenuIconUrl; - private String parentSubMenuTitle; - private final Slot<T> onPerformCall; private final Slot<T> onNotConfirmed; @@ -29,6 +23,8 @@ private ActionPosition actionPosition; + private ActionEnableCondition<T> enableCondition; + public ActionDescriptor(final AccessRolDTO accessRolDTO, final ActionPosition actionPosition, final Slot<T> onPerformCall) { accessRol = accessRolDTO; @@ -36,9 +32,14 @@ this.onPerformCall = onPerformCall; mustBeConfirmed = false; onNotConfirmed = null; - isMenuAction = false; } + public ActionDescriptor(final AccessRolDTO accessRolDTO, final ActionPosition actionPosition, + final Slot<T> onPerformCall, final ActionEnableCondition<T> enableCondition) { + this(accessRolDTO, actionPosition, onPerformCall); + this.enableCondition = enableCondition; + } + @SuppressWarnings("unchecked") public void fireOnNotConfirmed(final Object parameter) { if (onNotConfirmed != null) { @@ -67,6 +68,10 @@ return confirmationTitle; } + public ActionEnableCondition<T> getEnableCondition() { + return enableCondition; + } + public ImageDescriptor getIconDescriptor() { return iconDescriptor; } @@ -75,18 +80,6 @@ return iconUrl; } - public String getParentMenuIconUrl() { - return parentMenuIconUrl; - } - - public String getParentMenuTitle() { - return parentMenuTitle; - } - - public String getParentSubMenuTitle() { - return parentSubMenuTitle; - } - public String getText() { return textDescription; } @@ -95,10 +88,6 @@ return toolTip; } - public boolean isMenuAction() { - return isMenuAction; - } - public boolean isMustBeConfirmed() { return mustBeConfirmed; } @@ -119,6 +108,10 @@ this.confirmationTitle = confirmationTitle; } + public void setEnableCondition(final ActionEnableCondition<T> enableCondition) { + this.enableCondition = enableCondition; + } + public void setIconDescriptor(final ImageDescriptor iconDescriptor) { this.iconDescriptor = iconDescriptor; } @@ -131,22 +124,6 @@ this.mustBeConfirmed = mustBeConfirmed; } - public void setParentMenuIconUrl(final String parentMenuIconUrl) { - this.parentMenuIconUrl = parentMenuIconUrl; - } - - public void setParentMenuTitle(final String parentMenuTitle) { - isMenuAction = true; - this.parentMenuTitle = parentMenuTitle; - } - - public void setParentSubMenuTitle(final String parentSubMenuTitle) { - if (parentMenuTitle == null) { - Log.warn("Please set parentMenuTitle before"); - } - this.parentSubMenuTitle = parentSubMenuTitle; - } - public void setTextDescription(final String textDescription) { this.textDescription = textDescription; } Added: trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionEnableCondition.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionEnableCondition.java 2008-09-13 10:27:22 UTC (rev 870) +++ trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionEnableCondition.java 2008-09-15 04:12:48 UTC (rev 871) @@ -0,0 +1,5 @@ +package org.ourproject.kune.platf.client.actions; + +public interface ActionEnableCondition<T> { + boolean mustBeEnabled(T param); +} Added: trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionMenuDescriptor.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionMenuDescriptor.java 2008-09-13 10:27:22 UTC (rev 870) +++ trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionMenuDescriptor.java 2008-09-15 04:12:48 UTC (rev 871) @@ -0,0 +1,45 @@ +package org.ourproject.kune.platf.client.actions; + +import org.ourproject.kune.platf.client.dto.AccessRolDTO; + +import com.allen_sauer.gwt.log.client.Log; +import com.calclab.suco.client.signal.Slot; + +public class ActionMenuDescriptor<T> extends ActionDescriptor<T> { + + private String parentMenuTitle; + private String parentMenuIconUrl; + private String parentSubMenuTitle; + + public ActionMenuDescriptor(final AccessRolDTO accessRolDTO, final ActionPosition actionPosition, + final Slot<T> onPerformCall) { + super(accessRolDTO, actionPosition, onPerformCall); + } + + public String getParentMenuIconUrl() { + return parentMenuIconUrl; + } + + public String getParentMenuTitle() { + return parentMenuTitle; + } + + public String getParentSubMenuTitle() { + return parentSubMenuTitle; + } + + public void setParentMenuIconUrl(final String parentMenuIconUrl) { + this.parentMenuIconUrl = parentMenuIconUrl; + } + + public void setParentMenuTitle(final String parentMenuTitle) { + this.parentMenuTitle = parentMenuTitle; + } + + public void setParentSubMenuTitle(final String parentSubMenuTitle) { + if (parentMenuTitle == null) { + Log.warn("Please set parentMenuTitle before"); + } + this.parentSubMenuTitle = parentSubMenuTitle; + } +} Modified: trunk/src/main/java/org/ourproject/kune/platf/client/dto/InitDataDTO.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/dto/InitDataDTO.java 2008-09-13 10:27:22 UTC (rev 870) +++ trunk/src/main/java/org/ourproject/kune/platf/client/dto/InitDataDTO.java 2008-09-15 04:12:48 UTC (rev 871) @@ -36,6 +36,8 @@ private String defaultWsTheme; private String[] wsThemes; private String siteLogoUrl; + private String galleryPermittedExtensions; + private String maxFileSizeInMb; public String getChatDomain() { return chatDomain; @@ -57,6 +59,10 @@ return defaultWsTheme; } + public String getGalleryPermittedExtensions() { + return galleryPermittedExtensions; + } + public ArrayList<I18nLanguageSimpleDTO> getLanguages() { return languages; } @@ -65,6 +71,10 @@ return licenses; } + public String getMaxFileSizeInMb() { + return maxFileSizeInMb; + } + public String getSiteDomain() { return siteDomain; } @@ -109,6 +119,10 @@ this.defaultWsTheme = defaultWsTheme; } + public void setGalleryPermittedExtensions(final String galleryPermittedExtensions) { + this.galleryPermittedExtensions = galleryPermittedExtensions; + } + public void setLanguages(final ArrayList<I18nLanguageSimpleDTO> languages) { this.languages = languages; } @@ -117,6 +131,10 @@ this.licenses = licenses; } + public void setMaxFileSizeInMb(final String maxFileSizeInMb) { + this.maxFileSizeInMb = maxFileSizeInMb; + } + public void setSiteDomain(final String siteDomain) { this.siteDomain = siteDomain; } Modified: trunk/src/main/java/org/ourproject/kune/platf/client/dto/StateDTO.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/dto/StateDTO.java 2008-09-13 10:27:22 UTC (rev 870) +++ trunk/src/main/java/org/ourproject/kune/platf/client/dto/StateDTO.java 2008-09-15 04:12:48 UTC (rev 871) @@ -32,11 +32,12 @@ private String title; private String toolName; private GroupDTO group; - private ContainerDTO folder; + private ContainerDTO container; + private ContainerDTO rootContainer; private SocialNetworkDTO socialNetwork; private AccessListsDTO accessLists; private AccessRightsDTO contentRights; - private AccessRightsDTO folderRights; + private AccessRightsDTO containerRights; private AccessRightsDTO groupRights; private ContentStatusDTO status; private boolean isRateable; @@ -72,6 +73,10 @@ return authors; } + public ContainerDTO getContainer() { + return container; + } + public String getContent() { return content; } @@ -88,14 +93,10 @@ return documentId; } - public ContainerDTO getFolder() { - return folder; + public AccessRightsDTO getContainerRights() { + return containerRights; } - public AccessRightsDTO getFolderRights() { - return folderRights; - } - public GroupDTO getGroup() { return this.group; } @@ -136,6 +137,10 @@ return rateByUsers; } + public ContainerDTO getRootContainer() { + return rootContainer; + } + public SocialNetworkDTO getSocialNetwork() { return socialNetwork; } @@ -185,6 +190,14 @@ this.authors = authors; } + public void setContainer(final ContainerDTO container) { + this.container = container; + } + + public void setContainerRights(final AccessRightsDTO containerRights) { + this.containerRights = containerRights; + } + public void setContent(final String content) { this.content = content; } @@ -201,14 +214,6 @@ this.documentId = docRef; } - public void setFolder(final ContainerDTO folder) { - this.folder = folder; - } - - public void setFolderRights(final AccessRightsDTO folderRights) { - this.folderRights = folderRights; - } - public void setGroup(final GroupDTO group) { this.group = group; } @@ -253,6 +258,10 @@ this.rateByUsers = rateByUsers; } + public void setRootContainer(final ContainerDTO rootContainer) { + this.rootContainer = rootContainer; + } + public void setSocialNetwork(final SocialNetworkDTO socialNetwork) { this.socialNetwork = socialNetwork; } Added: trunk/src/main/java/org/ourproject/kune/platf/client/errors/ContainerNotPermittedException.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/errors/ContainerNotPermittedException.java 2008-09-13 10:27:22 UTC (rev 870) +++ trunk/src/main/java/org/ourproject/kune/platf/client/errors/ContainerNotPermittedException.java 2008-09-15 04:12:48 UTC (rev 871) @@ -0,0 +1,26 @@ +/* + * + * Copyright (C) 2007-2008 The kune development team (see CREDITS for details) + * This file is part of kune. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + */ + +package org.ourproject.kune.platf.client.errors; + + +public class ContainerNotPermittedException extends DefaultException { + private static final long serialVersionUID = 1L; +} Modified: trunk/src/main/java/org/ourproject/kune/platf/client/rpc/ContentService.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/rpc/ContentService.java 2008-09-13 10:27:22 UTC (rev 870) +++ trunk/src/main/java/org/ourproject/kune/platf/client/rpc/ContentService.java 2008-09-15 04:12:48 UTC (rev 871) @@ -45,7 +45,8 @@ StateDTO addContent(String user, String groupShortName, Long parentFolderId, String name) throws DefaultException; - StateDTO addFolder(String hash, String groupShortName, Long parentFolderId, String title) throws DefaultException; + StateDTO addFolder(String hash, String groupShortName, Long parentFolderId, String typeId, String title) + throws DefaultException; StateDTO addRoom(String user, String groupShortName, Long parentFolderId, String name) throws DefaultException; Modified: trunk/src/main/java/org/ourproject/kune/platf/client/rpc/ContentServiceAsync.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/rpc/ContentServiceAsync.java 2008-09-13 10:27:22 UTC (rev 870) +++ trunk/src/main/java/org/ourproject/kune/platf/client/rpc/ContentServiceAsync.java 2008-09-15 04:12:48 UTC (rev 871) @@ -34,19 +34,19 @@ public interface ContentServiceAsync { void addAuthor(String userHash, String groupShortName, String documentId, String authorShortName, - AsyncCallback<?> asyncCallback); + AsyncCallback<?> asyncCallback); void addComment(String userHash, String groupShortName, String documentId, Long parentCommentId, - String commentText, AsyncCallback<CommentDTO> asyncCallback); + String commentText, AsyncCallback<CommentDTO> asyncCallback); void addComment(String userHash, String groupShortName, String documentId, String commentText, - AsyncCallback<CommentDTO> asyncCallback); + AsyncCallback<CommentDTO> asyncCallback); void addContent(String user, String groupShortName, Long parentFolderId, String name, - AsyncCallback<StateDTO> callback); + AsyncCallback<StateDTO> callback); - void addFolder(String hash, String groupShortName, Long parentFolderId, String title, - AsyncCallback<StateDTO> callback); + void addFolder(String hash, String groupShortName, Long parentFolderId, String title, String typeId, + AsyncCallback<StateDTO> callback); void addRoom(String user, String groupShortName, Long parentFolderId, String name, AsyncCallback<StateDTO> callback); @@ -57,29 +57,29 @@ void getSummaryTags(String userHash, String groupShortName, AsyncCallback<List<TagResultDTO>> asyncCallback); void markCommentAsAbuse(String userHash, String groupShortName, String documentId, Long commentId, - AsyncCallback<CommentDTO> asyncCallback); + AsyncCallback<CommentDTO> asyncCallback); void rateContent(String userHash, String groupShortName, String documentId, Double value, - AsyncCallback<?> asyncCallback); + AsyncCallback<?> asyncCallback); void removeAuthor(String userHash, String groupShortName, String documentId, String authorShortName, - AsyncCallback<?> asyncCallback); + AsyncCallback<?> asyncCallback); void rename(String userHash, String groupShortName, String token, String newName, - AsyncCallback<String> asyncCallback); + AsyncCallback<String> asyncCallback); void save(String user, String groupShortName, String documentId, String content, - AsyncCallback<Integer> asyncCallback); + AsyncCallback<Integer> asyncCallback); void setLanguage(String userHash, String groupShortName, String documentId, String languageCode, - AsyncCallback<I18nLanguageDTO> asyncCallback); + AsyncCallback<I18nLanguageDTO> asyncCallback); void setPublishedOn(String userHash, String groupShortName, String documentId, Date publishedOn, - AsyncCallback<?> asyncCallback); + AsyncCallback<?> asyncCallback); void setTags(String userHash, String groupShortName, String documentId, String tags, - AsyncCallback<List<TagResultDTO>> asyncCallback); + AsyncCallback<List<TagResultDTO>> asyncCallback); void voteComment(String userHash, String groupShortName, String documentId, Long commentId, boolean votePositive, - AsyncCallback<CommentDTO> asyncCallback); + AsyncCallback<CommentDTO> asyncCallback); } Modified: trunk/src/main/java/org/ourproject/kune/platf/client/state/Session.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/state/Session.java 2008-09-13 10:27:22 UTC (rev 870) +++ trunk/src/main/java/org/ourproject/kune/platf/client/state/Session.java 2008-09-15 04:12:48 UTC (rev 871) @@ -70,6 +70,8 @@ UserInfoDTO getCurrentUserInfo(); + String getGalleryPermittedExtensions(); + String getUserHash(); void onInitDataReceived(Slot<InitDataDTO> slot); Modified: trunk/src/main/java/org/ourproject/kune/platf/client/state/SessionDefault.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/state/SessionDefault.java 2008-09-13 10:27:22 UTC (rev 870) +++ trunk/src/main/java/org/ourproject/kune/platf/client/state/SessionDefault.java 2008-09-15 04:12:48 UTC (rev 871) @@ -91,6 +91,10 @@ return currentUserInfo; } + public String getGalleryPermittedExtensions() { + return initData.getGalleryPermittedExtensions(); + } + public List<I18nLanguageSimpleDTO> getLanguages() { return initData.getLanguages(); } Modified: trunk/src/main/java/org/ourproject/kune/platf/client/ui/dialogs/FileUploader.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/ui/dialogs/FileUploader.java 2008-09-13 10:27:22 UTC (rev 870) +++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/dialogs/FileUploader.java 2008-09-15 04:12:48 UTC (rev 871) @@ -4,7 +4,7 @@ void hide(); - void setPermittedExtensions(String[] extensions); + void setPermittedExtensions(String extensions); void show(); Modified: trunk/src/main/java/org/ourproject/kune/platf/client/ui/dialogs/FileUploaderDialog.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/client/ui/dialogs/FileUploaderDialog.java 2008-09-13 10:27:22 UTC (rev 870) +++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/dialogs/FileUploaderDialog.java 2008-09-15 04:12:48 UTC (rev 871) @@ -1,6 +1,7 @@ package org.ourproject.kune.platf.client.ui.dialogs; import org.ourproject.kune.platf.client.state.Session; +import org.ourproject.kune.platf.client.ui.KuneStringUtils; import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService; import org.ourproject.kune.workspace.client.site.Site; import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton; @@ -81,8 +82,8 @@ dialog.hide(); } - public void setPermittedExtensions(final String[] extensions) { - dialog.setPermittedExtensions(extensions); + public void setPermittedExtensions(final String extensions) { + dialog.setPermittedExtensions((String[]) KuneStringUtils.splitTags(extensions).toArray()); } public void show() { Modified: trunk/src/main/java/org/ourproject/kune/platf/server/content/CreationService.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/content/CreationService.java 2008-09-13 10:27:22 UTC (rev 870) +++ trunk/src/main/java/org/ourproject/kune/platf/server/content/CreationService.java 2008-09-15 04:12:48 UTC (rev 871) @@ -28,10 +28,10 @@ public interface CreationService { - Content saveContent(User editor, Content descriptor, String content); - Content createContent(String title, String body, User user, Container container); - Container createFolder(Group group, Long parentFolderId, String name, I18nLanguage language); + Container createFolder(Group group, Long parentFolderId, String name, I18nLanguage language, String contentTypeId); + Content saveContent(User editor, Content descriptor, String content); + } Modified: trunk/src/main/java/org/ourproject/kune/platf/server/content/CreationServiceDefault.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/content/CreationServiceDefault.java 2008-09-13 10:27:22 UTC (rev 870) +++ trunk/src/main/java/org/ourproject/kune/platf/server/content/CreationServiceDefault.java 2008-09-15 04:12:48 UTC (rev 871) @@ -38,30 +38,30 @@ @Inject public CreationServiceDefault(final ContainerManager containerManager, final ContentManager contentManager, - final ToolRegistry toolRegistry) { - this.containerManager = containerManager; - this.contentManager = contentManager; - this.tools = toolRegistry; + final ToolRegistry toolRegistry) { + this.containerManager = containerManager; + this.contentManager = contentManager; + this.tools = toolRegistry; } public Content createContent(final String title, final String body, final User user, final Container container) { - String toolName = container.getToolName(); - Content content = contentManager.createContent(title, body, user, container); - tools.get(toolName).onCreateContent(content, container); - return content; + final String toolName = container.getToolName(); + final Content content = contentManager.createContent(title, body, user, container); + tools.get(toolName).onCreateContent(content, container); + return content; } public Container createFolder(final Group group, final Long parentFolderId, final String name, - final I18nLanguage language) { - Container parent = containerManager.find(parentFolderId); - String toolName = parent.getToolName(); - Container child = containerManager.createFolder(group, parent, name, language); - tools.get(toolName).onCreateContainer(child, parent); - return child; + final I18nLanguage language, final String typeId) { + final Container parent = containerManager.find(parentFolderId); + final String toolName = parent.getToolName(); + final Container child = containerManager.createFolder(group, parent, name, language); + tools.get(toolName).onCreateContainer(child, parent, typeId); + return child; } public Content saveContent(final User editor, final Content descriptor, final String content) { - return contentManager.save(editor, descriptor, content); + return contentManager.save(editor, descriptor, content); } } Modified: trunk/src/main/java/org/ourproject/kune/platf/server/rpc/ContentRPC.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/rpc/ContentRPC.java 2008-09-13 10:27:22 UTC (rev 870) +++ trunk/src/main/java/org/ourproject/kune/platf/server/rpc/ContentRPC.java 2008-09-15 04:12:48 UTC (rev 871) @@ -25,6 +25,7 @@ import javax.persistence.NoResultException; +import org.ourproject.kune.chat.server.ChatServerTool; import org.ourproject.kune.chat.server.managers.ChatConnection; import org.ourproject.kune.chat.server.managers.XmppManager; import org.ourproject.kune.platf.client.dto.AccessRightsDTO; @@ -162,12 +163,12 @@ @Authorizated(accessTypeRequired = AccessType.EDIT) @Transactional(type = TransactionType.READ_WRITE) public StateDTO addFolder(final String userHash, final String groupShortName, final Long parentFolderId, - final String title) throws DefaultException { + final String title, final String contentTypeId) throws DefaultException { final Group group = groupManager.findByShortName(groupShortName); final UserSession userSession = getUserSession(); final User user = userSession.getUser(); final boolean userIsLoggedIn = userSession.isUserLoggedIn(); - final State state = createFolder(groupShortName, parentFolderId, title); + final State state = createFolder(groupShortName, parentFolderId, title, contentTypeId); completeState(user, userIsLoggedIn, group, state); return mapState(state, user, group); } @@ -187,7 +188,7 @@ xmppManager.createRoom(connection, roomName, userShortName + userHash); xmppManager.disconnect(connection); try { - final State state = createFolder(groupShortName, parentFolderId, roomName); + final State state = createFolder(groupShortName, parentFolderId, roomName, ChatServerTool.TYPE_ROOM); completeState(user, userIsLoggedIn, group, state); return mapState(state, user, group); } catch (final ContentNotFoundException e) { @@ -394,21 +395,17 @@ state.setParticipation(socialNetworkManager.findParticipation(user, group)); } - private State createFolder(final String groupShortName, final Long parentFolderId, final String title) - throws DefaultException { + private State createFolder(final String groupShortName, final Long parentFolderId, final String title, + final String typeId) throws DefaultException { final UserSession userSession = getUserSession(); final User user = userSession.getUser(); final Group group = groupManager.findByShortName(groupShortName); Access access = accessService.getFolderAccess(group, parentFolderId, user, AccessType.EDIT); - final Container container = creationService.createFolder(group, parentFolderId, title, user.getLanguage()); - final String toolName = container.getToolName(); - // Trying not to enter in new folder: - // final StateToken token = new StateToken(group.getShortName(), - // toolName, container.getId().toString(), null); - final StateToken token = new StateToken(group.getShortName(), toolName, parentFolderId.toString(), null); - access = accessService.getAccess(user, token, group, AccessType.READ); + final Container container = creationService.createFolder(group, parentFolderId, title, user.getLanguage(), + typeId); + access = accessService.getAccess(user, container.getStateToken(), group, AccessType.EDIT); final State state = stateService.create(access); return state; } @@ -421,14 +418,21 @@ return userSessionProvider.get(); } + private void mapContentRightsInstate(final User user, final AccessLists groupAccessList, final ContentDTO siblingDTO) { + final Content sibling = contentManager.find(siblingDTO.getId()); + final AccessLists lists = sibling.hasAccessList() ? sibling.getAccessLists() : groupAccessList; + siblingDTO.setRights(mapper.map(rightsService.get(user, lists), AccessRightsDTO.class)); + } + private StateDTO mapState(final State state, final User user, final Group group) { final StateDTO stateDTO = mapper.map(state, StateDTO.class); - final AccessLists groupAccesList = group.getSocialNetwork().getAccessLists(); - for (final ContentDTO siblingDTO : stateDTO.getFolder().getContents()) { - final Content sibling = contentManager.find(siblingDTO.getId()); - final AccessLists lists = sibling.hasAccessList() ? sibling.getAccessLists() : groupAccesList; - siblingDTO.setRights(mapper.map(rightsService.get(user, lists), AccessRightsDTO.class)); + final AccessLists groupAccessList = group.getSocialNetwork().getAccessLists(); + for (final ContentDTO siblingDTO : stateDTO.getRootContainer().getContents()) { + mapContentRightsInstate(user, groupAccessList, siblingDTO); } + for (final ContentDTO siblingDTO : stateDTO.getContainer().getContents()) { + mapContentRightsInstate(user, groupAccessList, siblingDTO); + } return stateDTO; } Modified: trunk/src/main/java/org/ourproject/kune/platf/server/state/State.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/state/State.java 2008-09-13 10:27:22 UTC (rev 870) +++ trunk/src/main/java/org/ourproject/kune/platf/server/state/State.java 2008-09-15 04:12:48 UTC (rev 871) @@ -43,9 +43,10 @@ private String toolName; private Group group; private Container container; + private Container rootContainer; private AccessLists accessLists; private AccessRights contentRights; - private AccessRights folderRights; + private AccessRights containerRights; private AccessRights groupRights; private ContentStatus status; private boolean isRateable; @@ -74,6 +75,14 @@ return authors; } + public Container getContainer() { + return container; + } + + public AccessRights getContainerRights() { + return containerRights; + } + public String getContent() { return content; } @@ -90,14 +99,6 @@ return documentId; } - public Container getFolder() { - return container; - } - - public AccessRights getFolderRights() { - return folderRights; - } - public Group getGroup() { return group; } @@ -138,6 +139,10 @@ return rateByUsers; } + public Container getRootContainer() { + return rootContainer; + } + public StateToken getStateToken() { return stateToken; } @@ -174,6 +179,14 @@ this.authors = authors; } + public void setContainer(final Container container) { + this.container = container; + } + + public void setContainerRights(final AccessRights containerRights) { + this.containerRights = containerRights; + } + public void setContent(final String content) { this.content = content; } @@ -190,14 +203,6 @@ this.documentId = docRef; } - public void setFolder(final Container container) { - this.container = container; - } - - public void setFolderRights(final AccessRights folderRights) { - this.folderRights = folderRights; - } - public void setGroup(final Group group) { this.group = group; } @@ -250,6 +255,10 @@ } } + public void setRootContainer(final Container rootContainer) { + this.rootContainer = rootContainer; + } + public void setStateToken(final StateToken stateToken) { this.stateToken = stateToken; } Modified: trunk/src/main/java/org/ourproject/kune/platf/server/state/StateServiceDefault.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/state/StateServiceDefault.java 2008-09-13 10:27:22 UTC (rev 870) +++ trunk/src/main/java/org/ourproject/kune/platf/server/state/StateServiceDefault.java 2008-09-15 04:12:48 UTC (rev 871) @@ -54,6 +54,11 @@ state.setLanguage(container.getLanguage()); state.setStateToken(container.getStateToken()); } + if (!container.isRoot()) { + state.setRootContainer(container.getAbsolutePath().get(0)); + } else { + state.setRootContainer(container); + } final Revision revision = content.getLastRevision(); final char[] text = revision.getBody(); state.setContent(text == null ? null : new String(text)); @@ -64,10 +69,10 @@ } state.setToolName(container.getToolName()); state.setGroup(container.getOwner()); - state.setFolder(container); + state.setContainer(container); state.setAccessLists(access.getContentAccessLists()); state.setContentRights(access.getContentRights()); - state.setFolderRights(access.getFolderRights()); + state.setContainerRights(access.getFolderRights()); state.setGroupRights(access.getGroupRights()); License contentLicense = content.getLicense(); if (contentLicense == null) { Modified: trunk/src/main/java/org/ourproject/kune/platf/server/tool/ServerTool.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/platf/server/tool/ServerTool.java 2008-09-13 10:27:22 UTC (rev 870) +++ trunk/src/main/java/org/ourproject/kune/platf/server/tool/ServerTool.java 2008-09-15 04:12:48 UTC (rev 871) @@ -33,13 +33,13 @@ */ public interface ServerTool { + public void onCreateContainer(Container container, Container parent, String typeId); + + public void onCreateContent(Content content, Container parent); + public void register(ToolRegistry registry); String getName(); Group initGroup(User user, Group group); - - public void onCreateContent(Content content, Container parent); - - public void onCreateContainer(Container container, Container parent); } Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/ctxnav/ContextNavigatorPanel.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/workspace/client/ctxnav/ContextNavigatorPanel.java 2008-09-13 10:27:22 UTC (rev 870) +++ trunk/src/main/java/org/ourproject/kune/workspace/client/ctxnav/ContextNavigatorPanel.java 2008-09-15 04:12:48 UTC (rev 871) @@ -23,8 +23,11 @@ import java.util.ArrayList; import java.util.HashMap; +import org.ourproject.kune.platf.client.actions.ActionButtonDescriptor; +import org.ourproject.kune.platf.client.actions.ActionButtonSeparator; import org.ourproject.kune.platf.client.actions.ActionCollection; import org.ourproject.kune.platf.client.actions.ActionDescriptor; +import org.ourproject.kune.platf.client.actions.ActionMenuDescriptor; import org.ourproject.kune.platf.client.actions.ActionPosition; import org.ourproject.kune.platf.client.dto.StateToken; import org.ourproject.kune.platf.client.services.I18nTranslationService; @@ -38,9 +41,11 @@ import com.gwtext.client.core.EventObject; import com.gwtext.client.data.Node; import com.gwtext.client.widgets.Button; +import com.gwtext.client.widgets.Panel; import com.gwtext.client.widgets.ToolbarButton; import com.gwtext.client.widgets.event.ButtonListenerAdapter; import com.gwtext.client.widgets.form.TextField; +import com.gwtext.client.widgets.layout.FitLayout; import com.gwtext.client.widgets.menu.BaseItem; import com.gwtext.client.widgets.menu.Item; import com.gwtext.client.widgets.menu.Menu; @@ -60,7 +65,7 @@ private final HashMap<String, Menu> toolbarMenus; private final WorkspaceSkeleton ws; private final ContextNavigatorPresenter presenter; - private final ArrayList<ToolbarButton> buttons; + private final ArrayList<Widget> removableToolbarItems; private final HashMap<String, Item> menuItems; public ContextNavigatorPanel(final ContextNavigatorPresenter presenter, final I18nTranslationService i18n, @@ -70,11 +75,11 @@ contextMenus = new HashMap<String, Menu>(); toolbarMenus = new HashMap<String, Menu>(); - buttons = new ArrayList<ToolbarButton>(); + removableToolbarItems = new ArrayList<Widget>(); menuItems = new HashMap<String, Item>(); } - public void addButtonAction(final ActionDescriptor<StateToken> action) { + public void addButtonAction(final ActionButtonDescriptor<StateToken> action) { final ActionPosition pos = action.getActionPosition(); final ToolbarButton button = new ToolbarButton(); final String text = action.getText(); @@ -89,8 +94,16 @@ }); button.setIcon(action.getIconUrl()); button.setTooltip(action.getToolTip()); - getToolbar(pos).add(button); - buttons.add(button); + + final Toolbar toolbar = getToolbar(pos); + if (action.hasLeftSeparator()) { + removableToolbarItems.add(add(toolbar, action.getLeftSeparator())); + } + toolbar.add(button); + if (action.hasRightSeparator()) { + removableToolbarItems.add(add(toolbar, action.getRightSeparator())); + } + removableToolbarItems.add(button); } public void addItem(final ContextNavigatorItem item) { @@ -151,18 +164,19 @@ } - public void addMenuAction(final ActionDescriptor<StateToken> action, final boolean enable) { + public void addMenuAction(final ActionMenuDescriptor<StateToken> action, final boolean enable) { final String menuTitle = action.getParentMenuTitle(); final String menuSubTitle = action.getParentSubMenuTitle(); final ActionPosition pos = action.getActionPosition(); final String itemKey = genMenuKey(pos, menuTitle, menuSubTitle, action.getText()); Item item = menuItems.get(itemKey); if (item == null) { - item = createMenuItem(pos, menuTitle, menuSubTitle, action); + item = createToolbarMenu(pos, menuTitle, menuSubTitle, action); menuItems.put(itemKey, item); } else { } - if (enable) { + if (enable) { // && action.getEnableCondition().mustBeEnabled(param)) + // ) { item.enable(); } else { item.disable(); @@ -179,9 +193,17 @@ contextMenus.clear(); toolbarMenus.clear(); menuItems.clear(); - buttons.clear(); + removableToolbarItems.clear(); } + public void clearRemovableActions() { + for (final Widget widget : removableToolbarItems) { + widget.removeFromParent(); + } + removableToolbarItems.clear(); + doLayoutIfNeeded(); + } + public void disableAllMenuItems() { for (final Item item : menuItems.values()) { item.disable(); @@ -193,14 +215,6 @@ treeEditor.startEdit(getNode(id)); } - public void removeAllButtons() { - for (final ToolbarButton button : buttons) { - button.removeFromParent(); - } - buttons.clear(); - doLayoutIfNeeded(); - } - public void selectItem(final String id) { final TreeNode item = getNode(id); if (item != null) { @@ -221,9 +235,10 @@ node.setText(text); } - public void setRootItem(final String id, final String text, final StateToken stateToken) { + public void setRootItem(final String id, final String text, final StateToken stateToken, + final ActionCollection<StateToken> actions) { if (treePanel == null || treePanel.getNodeById(id) == null) { - createTreePanel(id, text, stateToken); + createTreePanel(id, text, stateToken, actions); } } @@ -231,6 +246,18 @@ getToolbar(toolbar).add(widget); } + private Widget add(final Toolbar toolbar, final ActionButtonSeparator separator) { + switch (separator) { + case fill: + return toolbar.addFill(); + case separator: + return toolbar.addSeparator(); + case spacer: + default: + return toolbar.addSpacer(); + } + } + private void createItemMenu(final String nodeId, final ActionCollection<StateToken> actionCollection, final StateToken stateToken) { DeferredCommand.addCommand(new Command() { @@ -259,8 +286,8 @@ }); } - private Item createMenuItem(final ActionPosition toolBarPos, final String menuTitle, final String menuSubTitle, - final ActionDescriptor<StateToken> action) { + private Item createToolbarMenu(final ActionPosition toolBarPos, final String menuTitle, final String menuSubTitle, + final ActionMenuDescriptor<StateToken> action) { final Item item = new Item(action.getText(), new BaseItemListenerAdapter() { @Override public void onClick(BaseItem item, EventObject e) { @@ -314,7 +341,8 @@ return menu; } - private void createTreePanel(final String rootId, final String text, final StateToken stateToken) { + private void createTreePanel(final String rootId, final String text, final StateToken stateToken, + final ActionCollection<StateToken> actions) { if (treePanel != null) { clear(); } @@ -330,10 +358,11 @@ root.setText(text); root.setHref("#" + stateToken); root.expand(); + createItemMenu(rootId, actions, stateToken); treePanel.addListener(new TreePanelListenerAdapter() { public void onContextMenu(final TreeNode node, final EventObject e) { final Menu menu = contextMenus.get(node.getId()); - if (menu != null) { + if (menu != null && menu.getItems().length != 0) { menu.showAt(e.getXY()); } else { Log.info("Empty item menu"); @@ -345,9 +374,12 @@ treePanel.setRootNode(root); final TextField field = new TextField(); treeEditor = new TreeEditor(treePanel, field); - // final Panel panel = new Panel(); - // panel.setBorder(false); - // panel.add(treePanel); + final Panel panel = new Panel(); + panel.setLayout(new FitLayout()); + panel.setBorder(false); + panel.setAutoScroll(true); + panel.add(treePanel); + ws.getEntityWorkspace().setContext(treePanel); } Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/ctxnav/ContextNavigatorPresenter.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/workspace/client/ctxnav/ContextNavigatorPresenter.java 2008-09-13 10:27:22 UTC (rev 870) +++ trunk/src/main/java/org/ourproject/kune/workspace/client/ctxnav/ContextNavigatorPresenter.java 2008-09-15 04:12:48 UTC (rev 871) @@ -24,9 +24,12 @@ import java.util.HashMap; import org.ourproject.kune.platf.client.View; +import org.ourproject.kune.platf.client.actions.ActionButtonDescriptor; import org.ourproject.kune.platf.client.actions.ActionCollection; +import org.ourproject.kune.platf.client.actions.ActionCollectionSet; import org.ourproject.kune.platf.client.actions.ActionDescriptor; import org.ourproject.kune.platf.client.actions.ActionManager; +import org.ourproject.kune.platf.client.actions.ActionMenuDescriptor; import org.ourproject.kune.platf.client.dto.AccessRightsDTO; import org.ourproject.kune.platf.client.dto.ContainerDTO; import org.ourproject.kune.platf.client.dto.ContainerSimpleDTO; @@ -177,7 +180,7 @@ public void selectItem(final StateToken stateToken) { view.selectItem(genId(stateToken)); - view.removeAllButtons(); + view.clearRemovableActions(); view.disableAllMenuItems(); setActions(actionsByItem.get(stateToken), true); } @@ -187,54 +190,55 @@ } public void setState(final StateDTO state) { - final ContainerDTO container = state.getFolder(); + final ContainerDTO container = state.getContainer(); final StateToken stateToken = state.getStateToken(); - createTreePath(stateToken, container.getAbsolutePath(), state.getFolderRights()); + final AccessRightsDTO containerRights = state.getContainerRights(); - ActionCollection<StateToken> selectedToolbarActions; + // If root sended (container is not a root folder) process root (add + // childs to view) + final ContainerDTO root = state.getRootContainer(); + if (root != null) { + final ActionCollectionSet<StateToken> set = createItemActions(containerRights, root.getTypeId()); + view.setRootItem(genId(root.getStateToken()), i18n.t(root.getName()), root.getStateToken(), set + .getItemActions()); + setActions(set.getToolbarActions(), false); + createChildItems(root, containerRights); + actionsByItem.put(root.getStateToken(), set.getToolbarActions()); + } + // Do the path to our current content + createTreePath(stateToken, container.getAbsolutePath(), containerRights); + + // Process our current content/container if (state.hasDocument()) { - selectedToolbarActions = addItem(state.getTitle(), state.getTypeId(), state.getStatus(), stateToken, - container.getStateToken(), state.getContentRights(), false); + addItem(state.getTitle(), state.getTypeId(), state.getStatus(), stateToken, container.getStateToken(), + state.getContentRights(), false); } else { - selectedToolbarActions = addItem(container.getName(), container.getTypeId(), - ContentStatusDTO.publishedOnline, container.getStateToken(), container.getStateToken().clone() - .setFolder(container.getParentFolderId()), state.getFolderRights(), false); + addItem(container.getName(), container.getTypeId(), ContentStatusDTO.publishedOnline, container + .getStateToken(), container.getStateToken().clone().setFolder(container.getParentFolderId()), + containerRights, false); } - for (final ContentDTO content : container.getContents()) { - addItem(content.getTitle(), content.getTypeId(), content.getStatus(), content.getStateToken(), content - .getStateToken().clone().clearDocument(), content.getRights(), false); - } + // Process container childs + createChildItems(container, containerRights); - for (final ContainerSimpleDTO siblingFolder : container.getChilds()) { - addItem(siblingFolder.getName(), siblingFolder.getTypeId(), ContentStatusDTO.publishedOnline, siblingFolder - .getStateToken(), siblingFolder.getStateToken().clone() - .setFolder(siblingFolder.getParentFolderId()), state.getFolderRights(), false); - } - - actionsByItem.put(stateToken, selectedToolbarActions); - + // Finaly selectItem(stateToken); } - private ActionCollection<StateToken> addItem(final String title, final String contentTypeId, - final ContentStatusDTO status, final StateToken stateToken, final StateToken parentStateToken, - final AccessRightsDTO rights, final boolean isNodeSelected) { - final ActionCollection<StateToken> toolbarActions = new ActionCollection<StateToken>(); - final ActionCollection<StateToken> itemActions = new ActionCollection<StateToken>(); + private void addItem(final String title, final String contentTypeId, final ContentStatusDTO status, + final StateToken stateToken, final StateToken parentStateToken, final AccessRightsDTO rights, + final boolean isNodeSelected) { - createItemActions(rights, contentTypeId, toolbarActions, itemActions); + final ActionCollectionSet<StateToken> set = createItemActions(rights, contentTypeId); + setActions(set.getToolbarActions(), isNodeSelected); - setActions(toolbarActions, isNodeSelected); - final ContextNavigatorItem item = new ContextNavigatorItem(genId(stateToken), genId(parentStateToken), getContentTypeIcon(contentTypeId), title, status, stateToken, isDraggable(contentTypeId, rights - .isAdministrable()), isDroppable(contentTypeId, rights.isAdministrable()), itemActions); + .isAdministrable()), isDroppable(contentTypeId, rights.isAdministrable()), set.getItemActions()); view.addItem(item); - - return toolbarActions; + actionsByItem.put(stateToken, set.getToolbarActions()); } private void clear() { @@ -242,8 +246,21 @@ actionsByItem.clear(); } - private void createItemActions(final AccessRightsDTO rights, final String contentTypeId, - final ActionCollection<StateToken> toolbarActionas, final ActionCollection<StateToken> itemActions) { + private void createChildItems(final ContainerDTO container, final AccessRightsDTO containerRights) { + for (final ContentDTO content : container.getContents()) { + addItem(content.getTitle(), content.getTypeId(), content.getStatus(), content.getStateToken(), content + .getStateToken().clone().clearDocument(), content.getRights(), false); + } + + for (final ContainerSimpleDTO siblingFolder : container.getChilds()) { + addItem(siblingFolder.getName(), siblingFolder.getTypeId(), ContentStatusDTO.publishedOnline, siblingFolder + .getStateToken(), siblingFolder.getStateToken().clone() + .setFolder(siblingFolder.getParentFolderId()), containerRights, false); + } + } + + private ActionCollectionSet<StateToken> createItemActions(final AccessRightsDTO rights, final String contentTypeId) { + final ActionCollectionSet<StateToken> set = new ActionCollectionSet<StateToken>(); boolean add = false; for (final ActionDescriptor<StateToken> action : actions.get(contentTypeId)) { @@ -261,21 +278,22 @@ if (add) { switch (action.getActionPosition()) { case topbarAndItemMenu: - itemActions.add(action); + set.getItemActions().add(action); case topbar: - toolbarActionas.add(action); + set.getToolbarActions().add(action); break; case bootombarAndItemMenu: - itemActions.add(action); + set.getItemActions().add(action); case bottombar: - toolbarActionas.add(action); + set.getToolbarActions().add(action); break; case itemMenu: - itemActions.add(action); + set.getItemActions().add(action); break; } } } + return set; } private void createTreePath(final StateToken state, final ContainerSimpleDTO[] absolutePath, @@ -289,8 +307,7 @@ addItem(folder.getName(), folder.getTypeId(), ContentStatusDTO.publishedOnline, folderStateToken, parentStateToken, rights, false); } else { - // create root folder - view.setRootItem(genId(folderStateToken), i18n.t(folder.getName()), folderStateToken); + // Root must be already created } } } @@ -314,11 +331,11 @@ private void setActions(final ActionCollection<StateToken> actions, final boolean isNodeSelected) { for (final ActionDescriptor<StateToken> action : actions) { - if (action.isMenuAction()) { - view.addMenuAction(action, isNodeSelected); + if (action instanceof ActionMenuDescriptor) { + view.addMenuAction((ActionMenuDescriptor<StateToken>) action, isNodeSelected); } else { if (isNodeSelected) { - view.addButtonAction(action); + view.addButtonAction((ActionButtonDescriptor<StateToken>) action); } } } Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/ctxnav/ContextNavigatorView.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/workspace/client/ctxnav/ContextNavigatorView.java 2008-09-13 10:27:22 UTC (rev 870) +++ trunk/src/main/java/org/ourproject/kune/workspace/client/ctxnav/ContextNavigatorView.java 2008-09-15 04:12:48 UTC (rev 871) @@ -21,16 +21,18 @@ package org.ourproject.kune.workspace.client.ctxnav; import org.ourproject.kune.platf.client.View; -import org.ourproject.kune.platf.client.actions.ActionDescriptor; +import org.ourproject.kune.platf.client.actions.ActionButtonDescriptor; +import org.ourproject.kune.platf.client.actions.ActionCollection; +import org.ourproject.kune.platf.client.actions.ActionMenuDescriptor; import org.ourproject.kune.platf.client.dto.StateToken; public interface ContextNavigatorView extends View { - void addButtonAction(ActionDescriptor<StateToken> action); + void addButtonAction(ActionButtonDescriptor<StateToken> action); void addItem(ContextNavigatorItem contextNavigatorItem); - void addMenuAction(ActionDescriptor<StateToken> action, boolean enable); + void addMenuAction(ActionMenuDescriptor<StateToken> action, boolean enable); void clear(); @@ -38,12 +40,12 @@ void editItem(String id); - void removeAllButtons(); + void clearRemovableActions(); void selectItem(String id); void setItemText(String id, String text); - void setRootItem(String id, String text, StateToken stateToken); + void setRootItem(String id, String text, StateToken stateToken, ActionCollection<StateToken> actions); } Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/title/EntityTitlePresenter.java =================================================================== --- trunk/src/main/java/org/ourproject/kune/workspace/client/title/EntityTitlePresenter.java 2008-09-13 10:27:22 UTC (rev 870) +++ trunk/src/main/java/org/ourproject/kune/workspace/client/title/EntityTitlePresenter.java 2008-09-15 04:12:48 UTC (rev 871) @@ -118,7 +118,7 @@ setContentDateVisible(true); setContentDate(state.getPublishedOn()); } else { - if (state.getFolder().getParentFolderId() == null) { + if (state.getContainer().getParentFolderId() == null) { // We translate root folder names (documents, chat room, // etcetera) setContentTitle(i18n.t(state.getTitle()), false); Modified: trunk/src/test/java/org/ourproject/kune/platf/integration/content/ContentServiceAddTest.java =================================================================== --- trunk/src/test/java/org/ourproject/kune/platf/integration/content/ContentServiceAddTest.java 2008-09-13 10:27:22 UTC (rev 870) +++ trunk/src/test/java/org/ourproject/kune/platf/integration/content/ContentServiceAddTest.java 2008-09-15 04:12:48 UTC (rev 871) @@ -7,6 +7,7 @@ import org.junit.Before; import org.junit.Test; +import org.ourproject.kune.docs.client.DocumentClientTool; import org.ourproject.kune.platf.client.dto.AccessRightsDTO; import org.ourproject.kune.platf.client.dto.ContainerDTO; import org.ourproject.kune.platf.client.dto.ContainerSimpleDTO; @@ -31,7 +32,7 @@ @Test(expected = UserMustBeLoggedException.class) public void noLoggedInShouldThrowIllegalAccess() throws ContentNotFoundException, Exception { defaultContent = getDefaultContent(); - final Long folderId = defaultContent.getFolder().getId(); + final Long folderId = defaultContent.getContainer().getId(); contentService.addContent(session.getHash(), groupName, folderId, "a name"); } @@ -39,20 +40,20 @@ public void testAddContent() throws Exception { doLogin(); defaultContent = getDefaultContent(); - assertEquals(1, defaultContent.getFolder().getContents().size()); + assertEquals(1, defaultContent.getContainer().getContents().size()); final AccessRightsDTO cntRights = defaultContent.getContentRights(); - final AccessRightsDTO ctxRights = defaultContent.getFolderRights(); + final AccessRightsDTO ctxRights = defaultContent.getContainerRights(); final AccessRightsDTO groupRights = defaultContent.getGroupRights(); final String title = "New Content Title"; - final StateDTO added = contentService.addContent(session.getHash(), groupName, defaultContent.getFolder() + final StateDTO added = contentService.addContent(session.getHash(), groupName, defaultContent.getContainer() .getId(), title); assertNotNull(added); - final List<ContentDTO> contents = added.getFolder().getContents(); + final List<ContentDTO> contents = added.getContainer().getContents(); assertEquals(title, added.getTitle()); assertEquals(2, contents.size()); assertEquals(cntRights, added.getContentRights()); - assertEquals(ctxRights, added.getFolderRights()); + assertEquals(ctxRights, added.getContainerRights()); assertEquals(groupRights, added.getGroupRights()); assertNotNull(added.getGroupMembers()); assertNotNull(added.getParticipation()); @@ -61,7 +62,7 @@ final StateToken newState = added.getStateToken(); final StateDTO sameAgain = contentService.getContent(session.getHash(), groupName, newState); assertNotNull(sameAgain); - assertEquals(2, sameAgain.getFolder().getContents().size()); + assertEquals(2, sameAgain.getContainer().getContents().size()); } @@ -69,15 +70,20 @@ public void testAddFolder() throws Exception { doLogin(); defaultContent = getDefaultContent(); - final ContainerDTO parent = defaultContent.getFolder(); + final ContainerDTO parent = defaultContent.getContainer(); final String title = "folder name"; - final StateDTO newState = contentService.addFolder(session.getHash(), groupName, parent.getId(), title); + final StateDTO newState = contentService.addFolder(session.getHash(), groupName, parent.getId(), title, + DocumentClientTool.TYPE_FOLDER); assertNotNull(newState); assertNotNull(newState.getGroupMembers()); assertNotNull(newState.getParticipation()); assertNotNull(newState.getAccessLists()); + assertNotNull(newState.getContainerRights()); + assertNotNull(newState.getGroupRights()); + assertNotNull(newState.getRootContainer().getContents().get(0).getRights()); + assertNotNull(newState.getContainer().getContents().get(0).getRights()); - final ContainerDTO parentAgain = getDefaultContent().getFolder(); + final ContainerDTO parentAgain = getDefaultContent().getContainer(); final ContainerSimpleDTO child = parentAgain.getChilds().get(0); assertEquals(parent.getId(), child.getParentFolderId()); @@ -89,7 +95,7 @@ public void testAddRoom() throws Exception { doLogin(); defaultContent = getDefaultContent(); - final ContainerDTO parent = defaultContent.getFolder(); + final ContainerDTO parent = defaultContent.getContainer(); final String roomName = "testroom"; final StateDTO newState = contentService.addRoom(session.getHash(), groupName, parent.getId(), roomName); assertNotNull(newState); @@ -99,15 +105,17 @@ public void testAddTwoFolders() throws Exception { doLogin(); defaultContent = getDefaultContent(); - final ContainerDTO parent = defaultContent.getFolder(); + final ContainerDTO parent = defaultContent.getContainer(); final String title = "folder name"; - final StateDTO newState = contentService.addFolder(session.getHash(), groupName, parent.getId(), title); + final StateDTO newState = contentService.addFolder(session.getHash(), groupName, parent.getId(), title, + DocumentClientTool.TYPE_FOLDER); assertNotNull(newState); - final StateDTO newState2 = contentService.addFolder(session.getHash(), groupName, parent.getId(), title); + final StateDTO newState2 = contentService.addFolder(session.getHash(), groupName, parent.getId(), title, + DocumentClientTool.TYPE_FOLDER); assertNotNull(newState2); - final ContainerDTO parentAgain = getDefaultContent().getFolder(); + final ContainerDTO parentAgain = getDefaultContent().getContainer(); assertEquals(parent.getId(), parentAgain.getId()); assertEquals(2, parentAgain.getChilds().size()); Modified: trunk/src/test/java/org/ourproject/kune/platf/integration/content/ContentServiceGetTest.java =================================================================== --- trunk/src/test/java/org/ourproject/kune/platf/integration/content/ContentServiceGetTest.java 2008-09-13 10:27:22 UTC (rev 870) +++ trunk/src/test/java/org/ourproject/kune/platf/integration/content/ContentServiceGetTest.java 2008-09-15 04:12:48 UTC (rev 871) @@ -35,8 +35,8 @@ final StateDTO content = contentService.getContent(null, groupName, new StateToken()); assertNotNull(content); assertNotNull(content.getGroup()); - assertNotNull(content.getFolder()); - assertNotNull(content.getFolder().getId()); + assertNotNull(content.getContainer()); + assertNotNull(content.getContainer().getId()); assertNotNull(content.getToolName()); assertNotNull(content.getDocumentId()); assertNotNull(content.getRateByUsers()); @@ -81,9 +81,9 @@ assertFalse(content.getContentRights().isAdministrable()); assertFalse(content.getContentRights().isEditable()); assertTrue(content.getContentRights().isVisible()); - assertFalse(content.getFolderRights().isAdministrable()); - assertFalse(content.getFolderRights().isEditable()); - assertTrue(content.getFolderRights().isVisible()); + assertFalse(content.getContainerRights().isAdministrable()); + assertFalse(content.getContainerRights().isEditable()); + assertTrue(content.getContainerRights().isVisible()); } @Test @@ -91,8 +91,8 @@ final StateDTO content = contentService.getContent(null, groupName, new StateToken("site.docs")); assertNotNull(content); assertNotNull(content.getGroup()); - assertNotNull(content.getFolder()); - assertNotNull(content.getFolder().getId()); + assertNotNull(content.getContainer()); + assertNotNull(content.getContainer().getId()); assertNotNull(content.getToolName()); } } Modified: trunk/src/test/java/org/ourproject/kune/platf/integration/content/ContentServiceVariousTest.java =================================================================== --- trunk/src/test/java/org/ourproject/kune/platf/integration/content/ContentServiceVariousTest.java 2008-09-13 10:27:22 UTC (rev 870) +++ trunk/src/test/java/org/ourproject/kune/platf/integration/content/ContentServiceVariousTest.java 2008-09-15 04:12:48 UTC (rev 871) @@ -6,8 +6,8 @@ import org.junit.Before; import org.junit.Test; +import org.ourproject.kune.docs.client.DocumentClientTool; import org.ourproject.kune.platf.client.dto.ContainerDTO; -import org.ourproject.kune.platf.client.dto.ContainerSimpleDTO; import org.ourproject.kune.platf.client.dto.StateDTO; import org.ourproject.kune.platf.client.dto.StateToken; import org.ourproject.kune.platf.client.dto.TagResultDTO; @@ -60,13 +60,14 @@ public void folderRename() throws Exception { doLogin(); defaultContent = getDefaultContent(); - final ContainerDTO folder = defaultContent.getFolder(); + final ContainerDTO folder = defaultContent.getContainer(); final String oldTitle = "some title"; String newTitle = "folder new name"; - final StateDTO newState = contentService.addFolder(session.getHash(), groupShortName, folder.getId(), oldTitle); + final StateDTO newState = contentService.addFolder(session.getHash(), groupShortName, folder.getId(), oldTitle, + DocumentClientTool.TYPE_FOLDER); - final ContainerSimpleDTO newFolder = newState.getFolder().getChilds().get(0); + final ContainerDTO newFolder = newState.getContainer(); assertEquals(oldTitle, newFolder.getName()); @@ -80,7 +81,7 @@ newFolder.getId().toString(), null); StateDTO folderAgain = contentService.getContent(getHash(), groupShortName, newFolderToken); - assertEquals(newTitle, folderAgain.getFolder().getName()); + assertEquals(newTitle, folderAgain.getContainer().getName()); newTitle = "folder last name"; @@ -88,7 +89,7 @@ folderAgain = contentService.getContent(getHash(), groupShortName, newFolderToken); - assertEquals(newTitle, folderAgain.getFolder().getName()); + assertEquals(newTitle, folderAgain.getContainer().getName()); } @@ -96,7 +97,7 @@ public void folderRenameOtherGroupFails() throws Exception { doLogin(); defaultContent = getDefaultContent(); - final ContainerDTO folder = defaultContent.getFolder(); + final ContainerDTO folder = defaultContent.getContainer(); final StateToken folderToken = new StateToken(groupShortName, defaultContent.getStateToken().getTool(), folder .getId().toString(), null); @@ -108,7 +109,7 @@ public void folderRootRenameMustFail() throws Exception { doLogin(); defaultContent = getDefaultContent(); - final ContainerDTO folder = defaultContent.getFolder(); + final ContainerDTO folder = defaultContent.getContainer(); final String newTitle = "folder new name"; final StateToken folderToken = new StateToken(groupShortName, defaultContent.getStateToken().getTool(), folder @@ -117,7 +118,7 @@ assertEquals(newTitle, result); - final ContainerDTO folderAgain = getDefaultContent().getFolder(); + final ContainerDTO folderAgain = getDefaultContent().getContainer(); assertEquals(newTitle, folderAgain.getName()); } @@ -161,13 +162,14 @@ public void tokenRename() throws Exception { doLogin(); defaultContent = getDefaultContent(); - final ContainerDTO folder = defaultContent.getFolder(); + final ContainerDTO folder = defaultContent.getContainer(); final String oldTitle = "some title"; String newTitle = "folder new name"; - final StateDTO newState = contentService.addFolder(session.getHash(), groupShortName, folder.getId(), oldTitle); + final StateDTO newState = contentService.addFolder(session.getHash(), groupShortName, folder.getId(), oldTitle, + DocumentClientTool.TYPE_FOLDER); - final ContainerSimpleDTO newFolder = newState.getFolder().getChilds().get(0); + final ContainerDTO newFolder = newState.getContainer(); assertEquals(oldTitle, newFolder.getName()); @@ -182,7 +184,7 @@ final StateDTO folderAgain = contentService.getContent(getHash(), groupShortName, newFolderToken); - assertEquals(newTitle, folderAgain.getFolder().getName()); + assertEquals(newTitle, folderAgain.getContainer().getName()); } }
participants (1)
-
vjrj