Author: vjrj_ Date: 2012-03-18 23:25:32 +0100 (Sun, 18 Mar 2012) New Revision: 1771 Added: trunk/src/main/java/cc/kune/trash/KuneTrash.gwt.xml trunk/src/main/java/cc/kune/trash/client/ trunk/src/main/java/cc/kune/trash/client/TrashClientTool.java trunk/src/main/java/cc/kune/trash/client/TrashGinModule.java trunk/src/main/java/cc/kune/trash/client/TrashGinjector.java trunk/src/main/java/cc/kune/trash/client/TrashParts.java trunk/src/main/java/cc/kune/trash/client/actions/ trunk/src/main/java/cc/kune/trash/client/actions/TrashClientActions.java trunk/src/main/resources/icons/trash-black.png trunk/src/main/resources/icons/trash-white.png Modified: trunk/img/icons/custom-iconic/trash.svg trunk/src/main/java/cc/kune/Kune.gwt.xml trunk/src/main/java/cc/kune/barters/KuneBarters.gwt.xml trunk/src/main/java/cc/kune/barters/client/BartersClientTool.java trunk/src/main/java/cc/kune/blogs/KuneBlogs.gwt.xml trunk/src/main/java/cc/kune/blogs/client/BlogsClientTool.java trunk/src/main/java/cc/kune/chat/client/ChatClientTool.java trunk/src/main/java/cc/kune/chat/client/actions/ChatSitebarActions.java trunk/src/main/java/cc/kune/client/KuneEntryPoint.java trunk/src/main/java/cc/kune/client/KuneGinjector.java trunk/src/main/java/cc/kune/common/client/resources/CommonResources.java trunk/src/main/java/cc/kune/core/client/rpcservices/ContentServiceHelper.java trunk/src/main/java/cc/kune/core/server/content/CreationService.java trunk/src/main/java/cc/kune/core/server/content/CreationServiceDefault.java trunk/src/main/java/cc/kune/core/server/rpc/ContentRPC.java trunk/src/main/java/cc/kune/core/server/tool/ServerToolRegistry.java trunk/src/main/java/cc/kune/docs/KuneDocs.gwt.xml trunk/src/main/java/cc/kune/docs/client/DocsClientTool.java trunk/src/main/java/cc/kune/events/KuneEvents.gwt.xml trunk/src/main/java/cc/kune/events/client/EventsClientTool.java trunk/src/main/java/cc/kune/events/client/actions/EventRemoveMenuItem.java trunk/src/main/java/cc/kune/gspace/client/actions/DelContentMenuItem.java trunk/src/main/java/cc/kune/gspace/client/tool/AbstractClientTool.java trunk/src/main/java/cc/kune/gspace/client/tool/FoldableAbstractClientTool.java trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorItem.java trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorItemPresenter.java trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorPresenter.java trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerUtils.java trunk/src/main/java/cc/kune/lists/client/ListsClientTool.java trunk/src/main/java/cc/kune/tasks/KuneTasks.gwt.xml trunk/src/main/java/cc/kune/tasks/client/TasksClientTool.java trunk/src/main/java/cc/kune/trash/server/TrashServerTool.java trunk/src/main/java/cc/kune/trash/shared/TrashToolConstants.java trunk/src/main/java/cc/kune/wave/server/kspecific/KuneWaveServiceDefault.java trunk/src/main/java/cc/kune/wiki/KuneWiki.gwt.xml trunk/src/main/java/cc/kune/wiki/client/WikiClientTool.java Log: NEW - # 222: Create a trash folder icon and improve contents delete functionality http://kune.ourproject.org/issues/ticket/222 Modified: trunk/img/icons/custom-iconic/trash.svg =================================================================== --- trunk/img/icons/custom-iconic/trash.svg 2012-03-18 20:18:29 UTC (rev 1770) +++ trunk/img/icons/custom-iconic/trash.svg 2012-03-18 22:25:32 UTC (rev 1771) @@ -62,7 +62,10 @@ d="M 1,0 C 0.44600003,0 0,0.446 0,1 l 0,2 c 0,0.554 0.44600003,1 1,1 1.3041959,0 1.6744253,0 3,0 l 0,22 c 0,3.312 2.688,6 6,6 l 12,0 c 3.312,0 6,-2.688 6,-6 l 0,-22 2,0 1,0 c 0.554,0 1,-0.446 1,-1 L 32,1 C 32,0.446 31.554,0 31,0 L 30,0 26,0 C 24.589979,0 24,0.5207576 24,2.03125 L 24,26 c 0,1.102 -0.898,2 -2,2 L 10,28 C 8.898,28 8,27.102 8,26 8.00153,18.235176 8.00126,7.8861416 8,1 8,0.43960056 7.5213789,0 7,0 5.3333333,0 2.6666667,0 1,0 z" id="rect3871" inkscape:connector-curvature="0" - sodipodi:nodetypes="cssccssssccsssscssssscccc" /> + sodipodi:nodetypes="cssccssssccsssscssssscccc" + inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/src/main/resources/icons/trash-black.png" + inkscape:export-xdpi="45" + inkscape:export-ydpi="45" /> <rect style="color:#000000;fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect3086" @@ -71,7 +74,10 @@ x="10" y="4" ry="0.99999994" - rx="1" /><rect + rx="1" + inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/src/main/resources/icons/trash-black.png" + inkscape:export-xdpi="45" + inkscape:export-ydpi="45" /><rect style="color:#000000;fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" id="rect3860" width="4" @@ -79,4 +85,7 @@ x="18" y="4" ry="0.99999994" - rx="1" /></svg> \ No newline at end of file + rx="1" + inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/src/main/resources/icons/trash-black.png" + inkscape:export-xdpi="45" + inkscape:export-ydpi="45" /></svg> \ No newline at end of file Modified: trunk/src/main/java/cc/kune/Kune.gwt.xml =================================================================== --- trunk/src/main/java/cc/kune/Kune.gwt.xml 2012-03-18 20:18:29 UTC (rev 1770) +++ trunk/src/main/java/cc/kune/Kune.gwt.xml 2012-03-18 22:25:32 UTC (rev 1771) @@ -14,6 +14,7 @@ <inherits name="cc.kune.events.KuneEvents" /> <inherits name="cc.kune.tasks.KuneTasks" /> <inherits name="cc.kune.lists.KuneLists" /> + <inherits name="cc.kune.trash.KuneTrash" /> <inherits name="cc.kune.pspace.PSpace" /> <inherits name="cc.kune.hspace.HSpace" /> <inherits name="com.calclab.suco.Suco" /> Modified: trunk/src/main/java/cc/kune/barters/KuneBarters.gwt.xml =================================================================== --- trunk/src/main/java/cc/kune/barters/KuneBarters.gwt.xml 2012-03-18 20:18:29 UTC (rev 1770) +++ trunk/src/main/java/cc/kune/barters/KuneBarters.gwt.xml 2012-03-18 22:25:32 UTC (rev 1771) @@ -1,6 +1,6 @@ -<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.1.0//EN" "http://google-web-toolkit.googlecode.com/svn/tags/2.1.0/distro-source/core/src/gwt-module.dtd"> -<module> - <inherits name="cc.kune.core.KuneCore" /> - <source path="client" /> +<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.1.0//EN" "http://google-web-toolkit.googlecode.com/svn/tags/2.1.0/distro-source/core/src/gwt-module.dtd"> +<module> + <inherits name="cc.kune.core.KuneCore" /> + <source path="client" /> <source path="shared" /> </module> \ No newline at end of file Modified: trunk/src/main/java/cc/kune/barters/client/BartersClientTool.java =================================================================== --- trunk/src/main/java/cc/kune/barters/client/BartersClientTool.java 2012-03-18 20:18:29 UTC (rev 1770) +++ trunk/src/main/java/cc/kune/barters/client/BartersClientTool.java 2012-03-18 22:25:32 UTC (rev 1771) @@ -27,6 +27,7 @@ import cc.kune.core.client.registry.ContentCapabilitiesRegistry; import cc.kune.core.client.resources.iconic.IconicResources; import cc.kune.core.client.resources.nav.NavResources; +import cc.kune.core.shared.dto.AccessRolDTO; import cc.kune.gspace.client.tool.FoldableAbstractClientTool; import cc.kune.gspace.client.tool.selector.ToolSelector; @@ -45,7 +46,7 @@ NAME, i18n.t("barters"), i18n.t("A decentralized way to offer (or ask for) services and goods to your groups or to anyone. Bartering means the exchange of goods by the agreement of two people"), - icons.barters(), toolSelector, cntCapRegistry, i18n, navResources); + icons.barters(), AccessRolDTO.Viewer, toolSelector, cntCapRegistry, i18n, navResources); this.icons = icons; // registerAclEditableTypes(TYPE_DOCUMENT, TYPE_UPLOADEDFILE); Modified: trunk/src/main/java/cc/kune/blogs/KuneBlogs.gwt.xml =================================================================== --- trunk/src/main/java/cc/kune/blogs/KuneBlogs.gwt.xml 2012-03-18 20:18:29 UTC (rev 1770) +++ trunk/src/main/java/cc/kune/blogs/KuneBlogs.gwt.xml 2012-03-18 22:25:32 UTC (rev 1771) @@ -1,6 +1,6 @@ -<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.1.0//EN" "http://google-web-toolkit.googlecode.com/svn/tags/2.1.0/distro-source/core/src/gwt-module.dtd"> -<module> - <inherits name="cc.kune.core.KuneCore" /> - <source path="client" /> +<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.1.0//EN" "http://google-web-toolkit.googlecode.com/svn/tags/2.1.0/distro-source/core/src/gwt-module.dtd"> +<module> + <inherits name="cc.kune.core.KuneCore" /> + <source path="client" /> <source path="shared" /> </module> \ No newline at end of file Modified: trunk/src/main/java/cc/kune/blogs/client/BlogsClientTool.java =================================================================== --- trunk/src/main/java/cc/kune/blogs/client/BlogsClientTool.java 2012-03-18 20:18:29 UTC (rev 1770) +++ trunk/src/main/java/cc/kune/blogs/client/BlogsClientTool.java 2012-03-18 22:25:32 UTC (rev 1771) @@ -29,6 +29,7 @@ import cc.kune.core.client.registry.ContentCapabilitiesRegistry; import cc.kune.core.client.resources.iconic.IconicResources; import cc.kune.core.client.resources.nav.NavResources; +import cc.kune.core.shared.dto.AccessRolDTO; import cc.kune.gspace.client.tool.FoldableAbstractClientTool; import cc.kune.gspace.client.tool.selector.ToolSelector; @@ -46,7 +47,7 @@ NAME, i18n.t(BlogsToolConstants.ROOT_NAME), i18n.t("Blogs are a chronological list of posts (ordered by date) about a specific topic. Each post can be commented by the visitors"), - icons.blogs(), toolSelector, cntCapRegistry, i18n, navResources); + icons.blogs(), AccessRolDTO.Viewer, toolSelector, cntCapRegistry, i18n, navResources); this.icons = icons; // registerAclEditableTypes(); Modified: trunk/src/main/java/cc/kune/chat/client/ChatClientTool.java =================================================================== --- trunk/src/main/java/cc/kune/chat/client/ChatClientTool.java 2012-03-18 20:18:29 UTC (rev 1770) +++ trunk/src/main/java/cc/kune/chat/client/ChatClientTool.java 2012-03-18 22:25:32 UTC (rev 1771) @@ -28,6 +28,7 @@ import cc.kune.core.client.registry.ContentCapabilitiesRegistry; import cc.kune.core.client.resources.iconic.IconicResources; import cc.kune.core.client.resources.nav.NavResources; +import cc.kune.core.shared.dto.AccessRolDTO; import cc.kune.gspace.client.tool.FoldableAbstractClientTool; import cc.kune.gspace.client.tool.selector.ToolSelector; @@ -48,7 +49,8 @@ i18n.t("chatrooms"), i18n.t( "A 'room' where you can have a group-chat with many users at once. Rooms can be public or private. Users can be from [%s] or other sites (compatible with gmail chat)", - i18n.getSiteCommonName()), icons.chats(), toolSelector, cntCapRegistry, i18n, navResources); + i18n.getSiteCommonName()), icons.chats(), AccessRolDTO.Viewer, toolSelector, cntCapRegistry, + i18n, navResources); this.res = res; this.icons = icons; registerIcons(); Modified: trunk/src/main/java/cc/kune/chat/client/actions/ChatSitebarActions.java =================================================================== --- trunk/src/main/java/cc/kune/chat/client/actions/ChatSitebarActions.java 2012-03-18 20:18:29 UTC (rev 1770) +++ trunk/src/main/java/cc/kune/chat/client/actions/ChatSitebarActions.java 2012-03-18 22:25:32 UTC (rev 1771) @@ -220,7 +220,7 @@ public void run() { ChatSitebarActions.this.chatClient.loginIfNecessary(); } - }.schedule(2000); + }.schedule(4000); break; case DISCONNECTED: case RECONNECTING: Modified: trunk/src/main/java/cc/kune/client/KuneEntryPoint.java =================================================================== --- trunk/src/main/java/cc/kune/client/KuneEntryPoint.java 2012-03-18 20:18:29 UTC (rev 1770) +++ trunk/src/main/java/cc/kune/client/KuneEntryPoint.java 2012-03-18 22:25:32 UTC (rev 1771) @@ -87,6 +87,7 @@ ginjector.getListsParts(); ginjector.getChatParts(); ginjector.getBartersParts(); + ginjector.getTrashParts(); ginjector.getSiteLogo(); ginjector.getChatClient(); Modified: trunk/src/main/java/cc/kune/client/KuneGinjector.java =================================================================== --- trunk/src/main/java/cc/kune/client/KuneGinjector.java 2012-03-18 20:18:29 UTC (rev 1770) +++ trunk/src/main/java/cc/kune/client/KuneGinjector.java 2012-03-18 22:25:32 UTC (rev 1771) @@ -69,6 +69,8 @@ import cc.kune.pspace.client.PSpacePresenter; import cc.kune.tasks.client.TasksGinModule; import cc.kune.tasks.client.TasksGinjector; +import cc.kune.trash.client.TrashGinModule; +import cc.kune.trash.client.TrashGinjector; import cc.kune.wave.client.WaveGinModule; import cc.kune.wave.client.WaveParts; import cc.kune.wiki.client.WikiGinModule; @@ -84,9 +86,10 @@ @GinModules({ KuneGinModule.class, CoreGinModule.class, WaveGinModule.class, PSpaceGinModule.class, HSpaceGinModule.class, GSpaceGinModule.class, DocsGinModule.class, BlogsGinModule.class, ChatGinModule.class, WikiGinModule.class, BartersGinModule.class, EventsGinModule.class, - TasksGinModule.class, ListsGinModule.class }) + TasksGinModule.class, ListsGinModule.class, TrashGinModule.class }) public interface KuneGinjector extends Ginjector, GSpaceGinjector, DocsGinjector, BlogsGinjector, - WikiGinjector, BartersGinjector, EventsGinjector, ChatGinjector, TasksGinjector, ListsGinjector { + WikiGinjector, BartersGinjector, EventsGinjector, ChatGinjector, TasksGinjector, ListsGinjector, + TrashGinjector { /* * You have to add here all the GWTPresenters (as Provider or AsyncProvider) Modified: trunk/src/main/java/cc/kune/common/client/resources/CommonResources.java =================================================================== --- trunk/src/main/java/cc/kune/common/client/resources/CommonResources.java 2012-03-18 20:18:29 UTC (rev 1770) +++ trunk/src/main/java/cc/kune/common/client/resources/CommonResources.java 2012-03-18 22:25:32 UTC (rev 1771) @@ -131,4 +131,10 @@ @Source("icons/world-16.png") ImageResource world16(); + + @Source("icons/trash-black.png") + ImageResource trashBlack(); + + @Source("icons/trash-white.png") + ImageResource trashWhite(); } Modified: trunk/src/main/java/cc/kune/core/client/rpcservices/ContentServiceHelper.java =================================================================== --- trunk/src/main/java/cc/kune/core/client/rpcservices/ContentServiceHelper.java 2012-03-18 20:18:29 UTC (rev 1770) +++ trunk/src/main/java/cc/kune/core/client/rpcservices/ContentServiceHelper.java 2012-03-18 22:25:32 UTC (rev 1771) @@ -1,11 +1,16 @@ package cc.kune.core.client.rpcservices; +import cc.kune.common.client.notify.ConfirmAskEvent; import cc.kune.common.client.notify.NotifyUser; +import cc.kune.common.client.utils.OnAcceptCallback; import cc.kune.common.shared.i18n.I18nTranslationService; import cc.kune.core.client.state.Session; +import cc.kune.core.client.state.StateManager; import cc.kune.core.shared.domain.utils.StateToken; import cc.kune.core.shared.dto.SocialNetworkSubGroup; +import cc.kune.core.shared.dto.StateContainerDTO; +import com.google.gwt.event.shared.EventBus; import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.inject.Inject; import com.google.inject.Provider; @@ -13,15 +18,20 @@ public class ContentServiceHelper { private final Provider<ContentServiceAsync> contentService; + private final EventBus eventBus; private final I18nTranslationService i18n; private final Session session; + private final StateManager stateManager; @Inject public ContentServiceHelper(final Session session, final I18nTranslationService i18n, - final Provider<ContentServiceAsync> contentService) { + final EventBus eventBus, final Provider<ContentServiceAsync> contentService, + final StateManager stateManager) { this.session = session; this.i18n = i18n; + this.eventBus = eventBus; this.contentService = contentService; + this.stateManager = stateManager; } public void addParticipants(final StateToken token, final SocialNetworkSubGroup subGroup) { @@ -40,4 +50,27 @@ } }); } + + public void delContent(final StateToken token) { + ConfirmAskEvent.fire(eventBus, i18n.t("Please confirm"), i18n.t("Are you sure?"), i18n.t("Yes"), + i18n.t("No"), null, null, new OnAcceptCallback() { + @Override + public void onSuccess() { + NotifyUser.showProgress(); + contentService.get().delContent(session.getUserHash(), token, + new AsyncCallbackSimple<StateContainerDTO>() { + @Override + public void onSuccess(final StateContainerDTO state) { + final StateToken parentToken = state.getStateToken(); + if (session.getCurrentStateToken().equals(parentToken)) { + stateManager.setRetrievedStateAndGo(state); + } else { + stateManager.gotoStateToken(parentToken, false); + } + NotifyUser.hideProgress(); + } + }); + } + }); + } } Modified: trunk/src/main/java/cc/kune/core/server/content/CreationService.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/content/CreationService.java 2012-03-18 20:18:29 UTC (rev 1770) +++ trunk/src/main/java/cc/kune/core/server/content/CreationService.java 2012-03-18 22:25:32 UTC (rev 1771) @@ -27,6 +27,8 @@ public interface CreationService { + Content copyContent(User user, Container container, Content contentToCopy); + Content createContent(String title, String body, User user, Container container, String typeId); Container createFolder(Group group, Long parentFolderId, String name, I18nLanguage language, Modified: trunk/src/main/java/cc/kune/core/server/content/CreationServiceDefault.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/content/CreationServiceDefault.java 2012-03-18 20:18:29 UTC (rev 1770) +++ trunk/src/main/java/cc/kune/core/server/content/CreationServiceDefault.java 2012-03-18 22:25:32 UTC (rev 1771) @@ -51,10 +51,17 @@ } @Override + public Content copyContent(final User user, final Container container, final Content contentToCopy) { + final ServerTool tool = tools.get(container.getToolName()); + final Content content = contentManager.copyContent(user, container, contentToCopy); + tool.onCreateContent(content, container); + return content; + } + + @Override public Content createContent(final String title, final String body, final User user, final Container container, final String typeId) { - final String toolName = container.getToolName(); - final ServerTool tool = tools.get(toolName); + final ServerTool tool = tools.get(container.getToolName()); tool.checkTypesBeforeContentCreation(container.getTypeId(), typeId); final URL gagdetUrl = tool instanceof ServerWaveTool ? ((ServerWaveTool) tool).getGadgetUrl() : KuneWaveService.WITHOUT_GADGET; Modified: trunk/src/main/java/cc/kune/core/server/rpc/ContentRPC.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/rpc/ContentRPC.java 2012-03-18 20:18:29 UTC (rev 1770) +++ trunk/src/main/java/cc/kune/core/server/rpc/ContentRPC.java 2012-03-18 22:25:32 UTC (rev 1771) @@ -225,7 +225,7 @@ final Content contentToCopy = finderService.getContent(ContentUtils.parseId(token.getDocument())); final Container container = finderService.getContainer(ContentUtils.parseId(parentToken.getFolder())); if (rightsService.get(user, contentToCopy.getAccessLists()).isVisible()) { - return mapper.map(contentManager.copyContent(user, container, contentToCopy), + return mapper.map(creationService.copyContent(user, container, contentToCopy), StateContentDTO.class); } else { throw new AccessViolationException(); Modified: trunk/src/main/java/cc/kune/core/server/tool/ServerToolRegistry.java =================================================================== --- trunk/src/main/java/cc/kune/core/server/tool/ServerToolRegistry.java 2012-03-18 20:18:29 UTC (rev 1770) +++ trunk/src/main/java/cc/kune/core/server/tool/ServerToolRegistry.java 2012-03-18 22:25:32 UTC (rev 1771) @@ -87,12 +87,13 @@ } public void register(final ServerTool tool) { + final String name = tool.getName(); + final String rootName = tool.getRootName(); if (tool.getName().equals(TrashToolConstants.NAME)) { - // Trash is a special tool but we don't register it + tools.put(name, tool); + // Trash is a special tool but we don't register it fully return; } - final String name = tool.getName(); - final String rootName = tool.getRootName(); final boolean userAvailable = usersAvailableToolsInProp.contains(name); final boolean groupAvailable = groupsAvailableToolsInProp.contains(name); if (userAvailable && usersRegisEnabledToolsInProp.contains(name)) { Modified: trunk/src/main/java/cc/kune/docs/KuneDocs.gwt.xml =================================================================== --- trunk/src/main/java/cc/kune/docs/KuneDocs.gwt.xml 2012-03-18 20:18:29 UTC (rev 1770) +++ trunk/src/main/java/cc/kune/docs/KuneDocs.gwt.xml 2012-03-18 22:25:32 UTC (rev 1771) @@ -1,6 +1,6 @@ -<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.1.0//EN" "http://google-web-toolkit.googlecode.com/svn/tags/2.1.0/distro-source/core/src/gwt-module.dtd"> -<module> - <inherits name="cc.kune.core.KuneCore" /> - <source path="client" /> +<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.1.0//EN" "http://google-web-toolkit.googlecode.com/svn/tags/2.1.0/distro-source/core/src/gwt-module.dtd"> +<module> + <inherits name="cc.kune.core.KuneCore" /> + <source path="client" /> <source path="shared" /> </module> \ No newline at end of file Modified: trunk/src/main/java/cc/kune/docs/client/DocsClientTool.java =================================================================== --- trunk/src/main/java/cc/kune/docs/client/DocsClientTool.java 2012-03-18 20:18:29 UTC (rev 1770) +++ trunk/src/main/java/cc/kune/docs/client/DocsClientTool.java 2012-03-18 22:25:32 UTC (rev 1771) @@ -28,6 +28,7 @@ import cc.kune.core.client.registry.ContentCapabilitiesRegistry; import cc.kune.core.client.resources.iconic.IconicResources; import cc.kune.core.client.resources.nav.NavResources; +import cc.kune.core.shared.dto.AccessRolDTO; import cc.kune.docs.shared.DocsToolConstants; import cc.kune.gspace.client.tool.FoldableAbstractClientTool; import cc.kune.gspace.client.tool.selector.ToolSelector; @@ -47,7 +48,7 @@ NAME, i18n.t(DocsToolConstants.ROOT_NAME), i18n.t("Here you can create or upload your personal, group or public documents. These documents can be edited and commented collaboratively and simultaneously. These docs can be static pages in your web page if you publish them"), - icons.docs(), toolSelector, cntCapRegistry, i18n, navResources); + icons.docs(), AccessRolDTO.Viewer, toolSelector, cntCapRegistry, i18n, navResources); this.icons = icons; // registerAclEditableTypes(TYPE_DOCUMENT, TYPE_UPLOADEDFILE); Modified: trunk/src/main/java/cc/kune/events/KuneEvents.gwt.xml =================================================================== --- trunk/src/main/java/cc/kune/events/KuneEvents.gwt.xml 2012-03-18 20:18:29 UTC (rev 1770) +++ trunk/src/main/java/cc/kune/events/KuneEvents.gwt.xml 2012-03-18 22:25:32 UTC (rev 1771) @@ -1,13 +1,13 @@ -<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.1.0//EN" "http://google-web-toolkit.googlecode.com/svn/tags/2.1.0/distro-source/core/src/gwt-module.dtd"> -<module> - <inherits name="cc.kune.core.KuneCore"/> - <source path="client"/> - <source path="shared"/> - <inherits name='com.bradrydzewski.gwt.calendar.Calendar'/> - <inherits name='com.bradrydzewski.gwt.calendar.theme.google.Google'/> - <inherits name='com.allen_sauer.gwt.dnd.gwt-dnd'/> - <source path='client' - excludes="**/*Test.java,**/*Tests.java,**/*MockProvider.java" /> - <source path='shared' +<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.1.0//EN" "http://google-web-toolkit.googlecode.com/svn/tags/2.1.0/distro-source/core/src/gwt-module.dtd"> +<module> + <inherits name="cc.kune.core.KuneCore"/> + <source path="client"/> + <source path="shared"/> + <inherits name='com.bradrydzewski.gwt.calendar.Calendar'/> + <inherits name='com.bradrydzewski.gwt.calendar.theme.google.Google'/> + <inherits name='com.allen_sauer.gwt.dnd.gwt-dnd'/> + <source path='client' excludes="**/*Test.java,**/*Tests.java,**/*MockProvider.java" /> + <source path='shared' + excludes="**/*Test.java,**/*Tests.java,**/*MockProvider.java" /> </module> \ No newline at end of file Modified: trunk/src/main/java/cc/kune/events/client/EventsClientTool.java =================================================================== --- trunk/src/main/java/cc/kune/events/client/EventsClientTool.java 2012-03-18 20:18:29 UTC (rev 1770) +++ trunk/src/main/java/cc/kune/events/client/EventsClientTool.java 2012-03-18 22:25:32 UTC (rev 1771) @@ -27,6 +27,7 @@ import cc.kune.core.client.registry.ContentCapabilitiesRegistry; import cc.kune.core.client.resources.iconic.IconicResources; import cc.kune.core.client.resources.nav.NavResources; +import cc.kune.core.shared.dto.AccessRolDTO; import cc.kune.gspace.client.tool.FoldableAbstractClientTool; import cc.kune.gspace.client.tool.selector.ToolSelector; @@ -41,7 +42,7 @@ final ContentCapabilitiesRegistry cntCapRegistry, final NavResources navResources, final IconicResources icons) { super(NAME, i18n.t(ROOT_NAME), i18n.t("A calendar to schedule activities and events"), - icons.events(), toolSelector, cntCapRegistry, i18n, navResources); + icons.events(), AccessRolDTO.Viewer, toolSelector, cntCapRegistry, i18n, navResources); this.icons = icons; // registerAclEditableTypes(TYPE_DOCUMENT, TYPE_UPLOADEDFILE); Modified: trunk/src/main/java/cc/kune/events/client/actions/EventRemoveMenuItem.java =================================================================== --- trunk/src/main/java/cc/kune/events/client/actions/EventRemoveMenuItem.java 2012-03-18 20:18:29 UTC (rev 1770) +++ trunk/src/main/java/cc/kune/events/client/actions/EventRemoveMenuItem.java 2012-03-18 22:25:32 UTC (rev 1771) @@ -2,14 +2,12 @@ import cc.kune.common.client.actions.ActionEvent; import cc.kune.common.client.actions.ui.descrip.MenuItemDescriptor; -import cc.kune.common.client.notify.NotifyUser; -import cc.kune.common.client.ui.dialogs.PromptTopDialog; import cc.kune.common.shared.i18n.I18nTranslationService; -import cc.kune.common.shared.utils.TextUtils; import cc.kune.core.client.resources.CoreResources; +import cc.kune.core.client.rpcservices.ContentServiceHelper; import cc.kune.core.client.state.AccessRightsClientManager; import cc.kune.core.client.state.Session; -import cc.kune.core.client.state.StateManager; +import cc.kune.core.shared.domain.utils.StateToken; import cc.kune.core.shared.dto.AccessRolDTO; import cc.kune.events.client.viewer.CalendarViewer; @@ -22,22 +20,21 @@ public class EventRemoveMenuItem extends MenuItemDescriptor { public static class EventEditAction extends CalendarRolAction { private final Provider<CalendarViewer> calendar; - private PromptTopDialog dialog; - private final I18nTranslationService i18n; + private final ContentServiceHelper contentService; @Inject - public EventEditAction(final CoreResources res, final I18nTranslationService i18n, - final Provider<CalendarViewer> calendar, final EventBus eventBus, final Session session, - final StateManager stateManager, final AccessRightsClientManager rightsMan) { + public EventEditAction(final CoreResources res, final Provider<CalendarViewer> calendar, + final EventBus eventBus, final Session session, final I18nTranslationService i18n, + final AccessRightsClientManager rightsMan, final ContentServiceHelper contentService) { super(eventBus, session, calendar, AccessRolDTO.Administrator, true, true); - this.i18n = i18n; this.calendar = calendar; + this.contentService = contentService; withText(i18n.t("Remove this appointment")).withIcon(res.cancel()); } @Override public void actionPerformed(final ActionEvent event) { - NotifyUser.info(i18n.t(TextUtils.IN_DEVELOPMENT)); + contentService.delContent(new StateToken(calendar.get().getAppToEdit().getId())); } } Modified: trunk/src/main/java/cc/kune/gspace/client/actions/DelContentMenuItem.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/actions/DelContentMenuItem.java 2012-03-18 20:18:29 UTC (rev 1770) +++ trunk/src/main/java/cc/kune/gspace/client/actions/DelContentMenuItem.java 2012-03-18 22:25:32 UTC (rev 1771) @@ -21,70 +21,31 @@ import cc.kune.common.client.actions.ActionEvent; import cc.kune.common.client.actions.ui.descrip.MenuItemDescriptor; -import cc.kune.common.client.notify.ConfirmAskEvent; -import cc.kune.common.client.notify.NotifyUser; -import cc.kune.common.client.utils.OnAcceptCallback; import cc.kune.common.shared.i18n.I18nTranslationService; import cc.kune.core.client.actions.RolAction; import cc.kune.core.client.resources.CoreResources; -import cc.kune.core.client.rpcservices.AsyncCallbackSimple; -import cc.kune.core.client.rpcservices.ContentServiceAsync; -import cc.kune.core.client.state.Session; -import cc.kune.core.client.state.StateManager; -import cc.kune.core.shared.domain.utils.StateToken; +import cc.kune.core.client.rpcservices.ContentServiceHelper; import cc.kune.core.shared.dto.AbstractContentSimpleDTO; import cc.kune.core.shared.dto.AccessRolDTO; -import cc.kune.core.shared.dto.StateContainerDTO; -import com.google.gwt.event.shared.EventBus; import com.google.inject.Inject; -import com.google.inject.Provider; public class DelContentMenuItem extends MenuItemDescriptor { public static class DelContentAction extends RolAction { - private final Provider<ContentServiceAsync> contentService; - private final EventBus eventBus; - private final I18nTranslationService i18n; - private final Session session; - private final StateManager stateManager; + private final ContentServiceHelper contentService; @Inject - public DelContentAction(final EventBus eventBus, final StateManager stateManager, - final Session session, final Provider<ContentServiceAsync> contentService, - final I18nTranslationService i18n) { + public DelContentAction(final ContentServiceHelper contentService) { super(AccessRolDTO.Administrator, true); - this.eventBus = eventBus; - this.stateManager = stateManager; - this.session = session; this.contentService = contentService; - this.i18n = i18n; + } @Override public void actionPerformed(final ActionEvent event) { - final StateToken token = ((AbstractContentSimpleDTO) event.getTarget()).getStateToken(); - ConfirmAskEvent.fire(eventBus, i18n.t("Please confirm"), i18n.t("Are you sure?"), i18n.t("Yes"), - i18n.t("No"), null, null, new OnAcceptCallback() { - @Override - public void onSuccess() { - NotifyUser.showProgress(); - contentService.get().delContent(session.getUserHash(), token, - new AsyncCallbackSimple<StateContainerDTO>() { - @Override - public void onSuccess(final StateContainerDTO state) { - final StateToken parentToken = state.getStateToken(); - if (session.getCurrentStateToken().equals(parentToken)) { - stateManager.setRetrievedStateAndGo(state); - } else { - stateManager.gotoStateToken(parentToken, false); - } - NotifyUser.hideProgress(); - } - }); - } - }); + contentService.delContent(((AbstractContentSimpleDTO) event.getTarget()).getStateToken()); } } Modified: trunk/src/main/java/cc/kune/gspace/client/tool/AbstractClientTool.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/tool/AbstractClientTool.java 2012-03-18 20:18:29 UTC (rev 1770) +++ trunk/src/main/java/cc/kune/gspace/client/tool/AbstractClientTool.java 2012-03-18 22:25:32 UTC (rev 1771) @@ -19,6 +19,7 @@ */ package cc.kune.gspace.client.tool; +import cc.kune.core.shared.dto.AccessRolDTO; import cc.kune.gspace.client.tool.selector.ToolSelector; import cc.kune.gspace.client.tool.selector.ToolSelectorItemPanel; import cc.kune.gspace.client.tool.selector.ToolSelectorItemPresenter; @@ -28,9 +29,9 @@ public abstract class AbstractClientTool { public AbstractClientTool(final String shortName, final String longName, final String tooltip, - final ImageResource icon, final ToolSelector toolSelector) { + final ImageResource icon, final AccessRolDTO visibleForRol, final ToolSelector toolSelector) { final ToolSelectorItemPresenter presenter = new ToolSelectorItemPresenter(shortName, longName, - tooltip, toolSelector); + tooltip, visibleForRol, toolSelector); final ToolSelectorItemPanel panel = new ToolSelectorItemPanel(shortName, icon); presenter.init(panel); } Modified: trunk/src/main/java/cc/kune/gspace/client/tool/FoldableAbstractClientTool.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/tool/FoldableAbstractClientTool.java 2012-03-18 20:18:29 UTC (rev 1770) +++ trunk/src/main/java/cc/kune/gspace/client/tool/FoldableAbstractClientTool.java 2012-03-18 22:25:32 UTC (rev 1771) @@ -24,6 +24,7 @@ import cc.kune.core.client.registry.ContentCapabilitiesRegistry; import cc.kune.core.client.resources.nav.NavResources; import cc.kune.core.shared.domain.ContentStatus; +import cc.kune.core.shared.dto.AccessRolDTO; import cc.kune.core.shared.dto.BasicMimeTypeDTO; import cc.kune.gspace.client.tool.selector.ToolSelector; @@ -37,10 +38,10 @@ protected final NavResources navResources; public FoldableAbstractClientTool(final String shortName, final String longName, final String tooltip, - final ImageResource icon, final ToolSelector toolSelector, + final ImageResource icon, final AccessRolDTO visibleForRol, final ToolSelector toolSelector, final ContentCapabilitiesRegistry contentCapabilitiesRegistry, final I18nTranslationService i18n, final NavResources navResources) { - super(shortName, longName, tooltip, icon, toolSelector); + super(shortName, longName, tooltip, icon, visibleForRol, toolSelector); this.contentCapabilitiesRegistry = contentCapabilitiesRegistry; this.i18n = i18n; this.navResources = navResources; Modified: trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorItem.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorItem.java 2012-03-18 20:18:29 UTC (rev 1770) +++ trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorItem.java 2012-03-18 22:25:32 UTC (rev 1771) @@ -20,10 +20,13 @@ package cc.kune.gspace.client.tool.selector; import cc.kune.core.shared.domain.utils.StateToken; +import cc.kune.core.shared.dto.AccessRolDTO; import cc.kune.gspace.client.tool.selector.ToolSelectorItemPresenter.ToolSelectorItemView; public interface ToolSelectorItem { + AccessRolDTO getVisibleForRol(); + String getShortName(); ToolSelectorItemView getView(); Modified: trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorItemPresenter.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorItemPresenter.java 2012-03-18 20:18:29 UTC (rev 1770) +++ trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorItemPresenter.java 2012-03-18 22:25:32 UTC (rev 1771) @@ -20,6 +20,7 @@ package cc.kune.gspace.client.tool.selector; import cc.kune.core.shared.domain.utils.StateToken; +import cc.kune.core.shared.dto.AccessRolDTO; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; @@ -43,6 +44,7 @@ } private final String longName; + private final AccessRolDTO visibleFoRol; private final String shortName; private StateToken token; private final ToolSelector toolSelector; @@ -50,14 +52,20 @@ private ToolSelectorItemView view; public ToolSelectorItemPresenter(final String shortName, final String longName, final String tooltip, - final ToolSelector toolSelector) { + final AccessRolDTO visibleForRol, final ToolSelector toolSelector) { this.shortName = shortName; this.longName = longName; this.tooltip = tooltip; + this.visibleFoRol = visibleForRol; this.toolSelector = toolSelector; } @Override + public AccessRolDTO getVisibleForRol() { + return visibleFoRol; + } + + @Override public String getShortName() { return shortName; } Modified: trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorPresenter.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorPresenter.java 2012-03-18 20:18:29 UTC (rev 1770) +++ trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorPresenter.java 2012-03-18 22:25:32 UTC (rev 1771) @@ -25,14 +25,16 @@ import cc.kune.common.client.errors.UIException; import cc.kune.common.client.log.Log; import cc.kune.common.shared.utils.TextUtils; +import cc.kune.core.client.actions.RolComparator; import cc.kune.core.client.events.GroupChangedEvent; +import cc.kune.core.client.events.GroupChangedEvent.GroupChangedHandler; import cc.kune.core.client.events.StateChangedEvent; +import cc.kune.core.client.events.StateChangedEvent.StateChangedHandler; import cc.kune.core.client.events.ToolChangedEvent; -import cc.kune.core.client.events.GroupChangedEvent.GroupChangedHandler; -import cc.kune.core.client.events.StateChangedEvent.StateChangedHandler; import cc.kune.core.client.events.ToolChangedEvent.ToolChangedHandler; import cc.kune.core.client.state.StateManager; import cc.kune.core.shared.domain.utils.StateToken; +import cc.kune.core.shared.dto.StateAbstractDTO; import cc.kune.gspace.client.tool.selector.ToolSelectorItemPresenter.ToolSelectorItemView; import com.google.gwt.event.shared.EventBus; @@ -65,12 +67,15 @@ stateManager.onStateChanged(true, new StateChangedHandler() { @Override public void onStateChanged(final StateChangedEvent event) { - for (final String tool : tools.keySet()) { - final List<String> enabledTools = event.getState().getEnabledTools(); - if (enabledTools != null && enabledTools.contains(tool)) { - tools.get(tool).setVisible(true); + for (final String toolName : tools.keySet()) { + final StateAbstractDTO state = event.getState(); + final List<String> enabledTools = state.getEnabledTools(); + if (enabledTools != null && enabledTools.contains(toolName)) { + final ToolSelectorItem tool = tools.get(toolName); + // Set visible only when allowed + tool.setVisible(RolComparator.isEnabled(tool.getVisibleForRol(), state.getGroupRights())); } else { - tools.get(tool).setVisible(false); + tools.get(toolName).setVisible(false); } } } @@ -101,7 +106,9 @@ } tools.put(name, item); item.setSelected(false); + // if (!name.equals(TrashToolConstants.NAME)) { getView().addItem(item.getView()); + // } } private void checkTool(final ToolSelectorItem tool) { Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerUtils.java =================================================================== --- trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerUtils.java 2012-03-18 20:18:29 UTC (rev 1770) +++ trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerUtils.java 2012-03-18 22:25:32 UTC (rev 1771) @@ -26,6 +26,7 @@ import cc.kune.gspace.client.actions.ShowHelpContainerEvent; import cc.kune.gspace.client.viewers.FolderViewerPresenter.FolderViewerView; import cc.kune.gspace.client.viewers.items.FolderItemDescriptor; +import cc.kune.trash.shared.TrashToolConstants; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; @@ -83,10 +84,13 @@ typeId, status); final String tooltip = getTooltip(stateToken, mimeType, capabReg.isDragable(typeId) && rights.isAdministrable()); - if (status.equals(ContentStatus.inTheDustbin) - && (!capabReg.showDeleted(typeId) && !session.getShowDeletedContent())) { + final boolean thisTypeShouldShowDelete = capabReg.showDeleted(typeId) + || parentStateToken.getTool().equals(TrashToolConstants.NAME); + final boolean showAllDeleted = session.getShowDeletedContent(); + if (status.equals(ContentStatus.inTheDustbin) && !(thisTypeShouldShowDelete || showAllDeleted)) { // Don't show - // NotifyUser.info("Deleted, don't show"); + // NotifyUser.info("Deleted, don't show: " + parentStateToken + " " + + // thisTypeShouldShowDelete); } else { final FolderItemDescriptor item = new FolderItemDescriptor(genId(stateToken), genId(parentStateToken), icon, name, tooltip, status, stateToken, modifiedOn, Modified: trunk/src/main/java/cc/kune/lists/client/ListsClientTool.java =================================================================== --- trunk/src/main/java/cc/kune/lists/client/ListsClientTool.java 2012-03-18 20:18:29 UTC (rev 1770) +++ trunk/src/main/java/cc/kune/lists/client/ListsClientTool.java 2012-03-18 22:25:32 UTC (rev 1771) @@ -28,6 +28,7 @@ import cc.kune.core.client.registry.ContentCapabilitiesRegistry; import cc.kune.core.client.resources.iconic.IconicResources; import cc.kune.core.client.resources.nav.NavResources; +import cc.kune.core.shared.dto.AccessRolDTO; import cc.kune.gspace.client.tool.FoldableAbstractClientTool; import cc.kune.gspace.client.tool.selector.ToolSelector; @@ -45,7 +46,7 @@ NAME, i18n.t(ROOT_NAME), i18n.t("Lists behave like a mailing list or a forum. You can subscribe and discuss about specific topics"), - icons.lists(), toolSelector, cntCapRegistry, i18n, navResources); + icons.lists(), AccessRolDTO.Viewer, toolSelector, cntCapRegistry, i18n, navResources); this.icons = icons; // registerAclEditableTypes(); Modified: trunk/src/main/java/cc/kune/tasks/KuneTasks.gwt.xml =================================================================== --- trunk/src/main/java/cc/kune/tasks/KuneTasks.gwt.xml 2012-03-18 20:18:29 UTC (rev 1770) +++ trunk/src/main/java/cc/kune/tasks/KuneTasks.gwt.xml 2012-03-18 22:25:32 UTC (rev 1771) @@ -1,6 +1,6 @@ -<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.1.0//EN" "http://google-web-toolkit.googlecode.com/svn/tags/2.1.0/distro-source/core/src/gwt-module.dtd"> -<module> - <inherits name="cc.kune.core.KuneCore" /> - <source path="client" /> +<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.1.0//EN" "http://google-web-toolkit.googlecode.com/svn/tags/2.1.0/distro-source/core/src/gwt-module.dtd"> +<module> + <inherits name="cc.kune.core.KuneCore" /> + <source path="client" /> <source path="shared" /> </module> \ No newline at end of file Modified: trunk/src/main/java/cc/kune/tasks/client/TasksClientTool.java =================================================================== --- trunk/src/main/java/cc/kune/tasks/client/TasksClientTool.java 2012-03-18 20:18:29 UTC (rev 1770) +++ trunk/src/main/java/cc/kune/tasks/client/TasksClientTool.java 2012-03-18 22:25:32 UTC (rev 1771) @@ -29,6 +29,7 @@ import cc.kune.core.client.resources.iconic.IconicResources; import cc.kune.core.client.resources.nav.NavResources; import cc.kune.core.shared.domain.ContentStatus; +import cc.kune.core.shared.dto.AccessRolDTO; import cc.kune.gspace.client.tool.FoldableAbstractClientTool; import cc.kune.gspace.client.tool.selector.ToolSelector; @@ -47,7 +48,7 @@ NAME, i18n.t(ROOT_NAME), i18n.t("A collaborative TO-DO list for the group. Any group-member can participate in any proposed task, add others to a task, comment them, add info, etc"), - icons.tasks(), toolSelector, cntCapRegistry, i18n, navResources); + icons.tasks(), AccessRolDTO.Viewer, toolSelector, cntCapRegistry, i18n, navResources); this.icons = icons; // registerAclEditableTypes(); Added: trunk/src/main/java/cc/kune/trash/KuneTrash.gwt.xml =================================================================== --- trunk/src/main/java/cc/kune/trash/KuneTrash.gwt.xml (rev 0) +++ trunk/src/main/java/cc/kune/trash/KuneTrash.gwt.xml 2012-03-18 22:25:32 UTC (rev 1771) @@ -0,0 +1,6 @@ +<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.1.0//EN" "http://google-web-toolkit.googlecode.com/svn/tags/2.1.0/distro-source/core/src/gwt-module.dtd"> +<module> + <inherits name="cc.kune.core.KuneCore" /> + <source path="client" /> + <source path="shared" /> +</module> \ No newline at end of file Added: trunk/src/main/java/cc/kune/trash/client/TrashClientTool.java =================================================================== --- trunk/src/main/java/cc/kune/trash/client/TrashClientTool.java (rev 0) +++ trunk/src/main/java/cc/kune/trash/client/TrashClientTool.java 2012-03-18 22:25:32 UTC (rev 1771) @@ -0,0 +1,73 @@ +/* + * + * Copyright (C) 2007-2009 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 cc.kune.trash.client; + +import static cc.kune.trash.shared.TrashToolConstants.NAME; +import static cc.kune.trash.shared.TrashToolConstants.ROOT_NAME; +import static cc.kune.trash.shared.TrashToolConstants.TYPE_ROOT; +import cc.kune.common.shared.i18n.I18nTranslationService; +import cc.kune.core.client.registry.ContentCapabilitiesRegistry; +import cc.kune.core.client.resources.CoreResources; +import cc.kune.core.client.resources.nav.NavResources; +import cc.kune.core.shared.dto.AccessRolDTO; +import cc.kune.gspace.client.tool.FoldableAbstractClientTool; +import cc.kune.gspace.client.tool.selector.ToolSelector; + +import com.google.inject.Inject; + +public class TrashClientTool extends FoldableAbstractClientTool { + + private static final String EMPTY = "The trash is empty"; + private final CoreResources res; + + @Inject + public TrashClientTool(final I18nTranslationService i18n, final ToolSelector toolSelector, + final ContentCapabilitiesRegistry cntCapRegistry, final CoreResources res, + final NavResources navResources) { + super(NAME, i18n.t(ROOT_NAME), "", res.trashWhite(), AccessRolDTO.Administrator, toolSelector, + cntCapRegistry, i18n, navResources); + this.res = res; + + // registerAclEditableTypes(); + registerAuthorableTypes(); + registerDragableTypes(); + registerDropableTypes(TYPE_ROOT); + registerPublishModerableTypes(); + registerRateableTypes(); + registerRenamableTypes(); + registerTageableTypes(); + // registerTranslatableTypes(); + registerIcons(); + } + + @Override + public String getName() { + return NAME; + } + + private void registerIcons() { + registerContentTypeIcon(TYPE_ROOT, res.trashBlack()); + final String trashEmpty = i18n.t(EMPTY); + registerEmptyMessages(TYPE_ROOT, trashEmpty); + registerEmptyMessagesNotLogged(TYPE_ROOT, trashEmpty); + registerShowDeleted(TYPE_ROOT); + } + +} Added: trunk/src/main/java/cc/kune/trash/client/TrashGinModule.java =================================================================== --- trunk/src/main/java/cc/kune/trash/client/TrashGinModule.java (rev 0) +++ trunk/src/main/java/cc/kune/trash/client/TrashGinModule.java 2012-03-18 22:25:32 UTC (rev 1771) @@ -0,0 +1,33 @@ +/* + * + * Copyright (C) 2007-2011 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 cc.kune.trash.client; + +import cc.kune.core.client.ExtendedGinModule; +import cc.kune.trash.client.actions.TrashClientActions; + +public class TrashGinModule extends ExtendedGinModule { + + @Override + protected void configure() { + s(TrashClientTool.class); + s(TrashClientActions.class); + } + +} Added: trunk/src/main/java/cc/kune/trash/client/TrashGinjector.java =================================================================== --- trunk/src/main/java/cc/kune/trash/client/TrashGinjector.java (rev 0) +++ trunk/src/main/java/cc/kune/trash/client/TrashGinjector.java 2012-03-18 22:25:32 UTC (rev 1771) @@ -0,0 +1,28 @@ +/* + * + * Copyright (C) 2007-2011 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 cc.kune.trash.client; + +import com.google.gwt.inject.client.Ginjector; + +public interface TrashGinjector extends Ginjector { + + TrashParts getTrashParts(); + +} Added: trunk/src/main/java/cc/kune/trash/client/TrashParts.java =================================================================== --- trunk/src/main/java/cc/kune/trash/client/TrashParts.java (rev 0) +++ trunk/src/main/java/cc/kune/trash/client/TrashParts.java 2012-03-18 22:25:32 UTC (rev 1771) @@ -0,0 +1,41 @@ +/* + * + * Copyright (C) 2007-2011 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 cc.kune.trash.client; + +import cc.kune.core.shared.SessionConstants; +import cc.kune.gspace.client.tool.ContentViewerSelector; +import cc.kune.gspace.client.viewers.ContentViewerPresenter; +import cc.kune.gspace.client.viewers.FolderViewerPresenter; +import cc.kune.trash.client.actions.TrashClientActions; +import cc.kune.trash.shared.TrashToolConstants; + +import com.google.inject.Inject; +import com.google.inject.Provider; + +public class TrashParts { + + @Inject + public TrashParts(final SessionConstants session, final Provider<TrashClientTool> clientTool, + final ContentViewerSelector viewerSelector, final TrashClientActions trashActions, + final ContentViewerPresenter contentViewer, final FolderViewerPresenter folderViewer) { + clientTool.get(); + viewerSelector.register(folderViewer, true, TrashToolConstants.TYPE_ROOT); + } +} \ No newline at end of file Added: trunk/src/main/java/cc/kune/trash/client/actions/TrashClientActions.java =================================================================== --- trunk/src/main/java/cc/kune/trash/client/actions/TrashClientActions.java (rev 0) +++ trunk/src/main/java/cc/kune/trash/client/actions/TrashClientActions.java 2012-03-18 22:25:32 UTC (rev 1771) @@ -0,0 +1,42 @@ +package cc.kune.trash.client.actions; + +import static cc.kune.trash.shared.TrashToolConstants.TYPE_ROOT; +import cc.kune.chat.client.actions.GoParentChatBtn; +import cc.kune.core.client.actions.ActionRegistryByType; +import cc.kune.core.client.i18n.I18nUITranslationService; +import cc.kune.core.client.resources.CoreResources; +import cc.kune.core.client.state.Session; +import cc.kune.core.client.state.StateManager; +import cc.kune.gspace.client.actions.AbstractFoldableToolActions; +import cc.kune.gspace.client.actions.ActionGroups; +import cc.kune.gspace.client.actions.ContentViewerOptionsMenu; +import cc.kune.gspace.client.actions.RefreshContentMenuItem; + +import com.google.inject.Inject; +import com.google.inject.Provider; + +public class TrashClientActions extends AbstractFoldableToolActions { + + final String[] all = { TYPE_ROOT }; + final String[] containers = { TYPE_ROOT }; + final String[] containersNoRoot = {}; + final String[] contents = {}; + + @Inject + public TrashClientActions(final I18nUITranslationService i18n, final Session session, + final StateManager stateManager, final ActionRegistryByType registry, final CoreResources res, + final Provider<RefreshContentMenuItem> refresh, final Provider<GoParentChatBtn> folderGoUp, + final Provider<ContentViewerOptionsMenu> optionsMenuContent) { + super(session, stateManager, i18n, registry); + actionsRegistry.addAction(ActionGroups.TOOLBAR, optionsMenuContent, all); + actionsRegistry.addAction(ActionGroups.TOOLBAR, refresh, all); + // actionsRegistry.addAction(ActionGroups.TOOLBAR, folderGoUp, + // DocsToolConstants.TYPE_DOCUMENT); + // actionsRegistry.addAction(ActionGroups.ITEM_MENU, action, + // containersNoRoot); + } + + @Override + protected void createPostSessionInitActions() { + } +} \ No newline at end of file Modified: trunk/src/main/java/cc/kune/trash/server/TrashServerTool.java =================================================================== --- trunk/src/main/java/cc/kune/trash/server/TrashServerTool.java 2012-03-18 20:18:29 UTC (rev 1770) +++ trunk/src/main/java/cc/kune/trash/server/TrashServerTool.java 2012-03-18 22:25:32 UTC (rev 1771) @@ -14,6 +14,11 @@ import cc.kune.core.server.content.CreationService; import cc.kune.core.server.manager.ToolConfigurationManager; import cc.kune.core.server.tool.ServerToolTarget; +import cc.kune.core.shared.domain.ContentStatus; +import cc.kune.core.shared.domain.GroupListMode; +import cc.kune.domain.AccessLists; +import cc.kune.domain.Container; +import cc.kune.domain.Content; import cc.kune.domain.Group; import cc.kune.domain.User; @@ -39,4 +44,20 @@ createRoot(group); return group; } + + @Override + public void onCreateContent(final Content content, final Container parent) { + content.setStatus(ContentStatus.inTheDustbin); + super.onCreateContent(content, parent); + } + + @Override + protected void setContainerAcl(final Container container) { + final AccessLists wikiAcl = new AccessLists(); + wikiAcl.getAdmins().setMode(GroupListMode.NORMAL); + wikiAcl.getAdmins().add(container.getOwner()); + wikiAcl.getEditors().setMode(GroupListMode.NORMAL); + wikiAcl.getViewers().setMode(GroupListMode.NORMAL); + setAccessList(container, wikiAcl); + } } \ No newline at end of file Modified: trunk/src/main/java/cc/kune/trash/shared/TrashToolConstants.java =================================================================== --- trunk/src/main/java/cc/kune/trash/shared/TrashToolConstants.java 2012-03-18 20:18:29 UTC (rev 1770) +++ trunk/src/main/java/cc/kune/trash/shared/TrashToolConstants.java 2012-03-18 22:25:32 UTC (rev 1771) @@ -1,17 +1,11 @@ package cc.kune.trash.shared; - public final class TrashToolConstants { public static final String NAME = "trash"; public static final String ROOT_NAME = "trash"; public static final String TYPE_ROOT = NAME + "." + "root"; - // public static final String[] ALLOWED_CONTENTS = - // {DocsToolConstants.TYPE_FOLDER, - // DocsToolConstants.TYPE_DOCUMENT, BlogsToolConstants.TYPE_BLOG, - // BlogsToolConstants.TYPE_POST, ETC - // }; private TrashToolConstants() { } } Modified: trunk/src/main/java/cc/kune/wave/server/kspecific/KuneWaveServiceDefault.java =================================================================== --- trunk/src/main/java/cc/kune/wave/server/kspecific/KuneWaveServiceDefault.java 2012-03-18 20:18:29 UTC (rev 1770) +++ trunk/src/main/java/cc/kune/wave/server/kspecific/KuneWaveServiceDefault.java 2012-03-18 22:25:32 UTC (rev 1771) @@ -66,7 +66,6 @@ import com.google.wave.api.BlipThread; import com.google.wave.api.Element; import com.google.wave.api.ElementType; -import com.google.wave.api.FormElement; import com.google.wave.api.Gadget; import com.google.wave.api.JsonRpcConstant.ParamsProperty; import com.google.wave.api.JsonRpcResponse; @@ -127,9 +126,11 @@ for (final Entry<Integer, Element> entry : fromBlip.getElements().entrySet()) { final ElementType type = entry.getValue().getType(); Element result = null; - if (FormElement.getFormElementTypes().contains(type)) { - result = new FormElement(type, entry.getValue().getProperties()); - } else if (type == ElementType.GADGET) { + // if (FormElement.getFormElementTypes().contains(type)) { + // result = new FormElement(type, entry.getValue().getProperties()); + // } else + + if (type == ElementType.GADGET) { result = new Gadget(entry.getValue().getProperties()); // } else if (type == ElementType.IMAGE) { // result = new Image(entry.getValue().getProperties()); @@ -271,7 +272,7 @@ participantsArray[0].toString()); if (waveletToCopy != null) { copyWavelet(waveletToCopy.getRootBlip(), rootBlip); - copyWaveletElements(waveletToCopy.getRootBlip(), rootBlip); + // copyWaveletElements(waveletToCopy.getRootBlip(), rootBlip); } } catch (final DefaultException e2) { LOG.error("Error copying wave content", e2); Modified: trunk/src/main/java/cc/kune/wiki/KuneWiki.gwt.xml =================================================================== --- trunk/src/main/java/cc/kune/wiki/KuneWiki.gwt.xml 2012-03-18 20:18:29 UTC (rev 1770) +++ trunk/src/main/java/cc/kune/wiki/KuneWiki.gwt.xml 2012-03-18 22:25:32 UTC (rev 1771) @@ -1,6 +1,6 @@ -<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.1.0//EN" "http://google-web-toolkit.googlecode.com/svn/tags/2.1.0/distro-source/core/src/gwt-module.dtd"> -<module> - <inherits name="cc.kune.core.KuneCore" /> - <source path="client" /> +<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.1.0//EN" "http://google-web-toolkit.googlecode.com/svn/tags/2.1.0/distro-source/core/src/gwt-module.dtd"> +<module> + <inherits name="cc.kune.core.KuneCore" /> + <source path="client" /> <source path="shared" /> </module> \ No newline at end of file Modified: trunk/src/main/java/cc/kune/wiki/client/WikiClientTool.java =================================================================== --- trunk/src/main/java/cc/kune/wiki/client/WikiClientTool.java 2012-03-18 20:18:29 UTC (rev 1770) +++ trunk/src/main/java/cc/kune/wiki/client/WikiClientTool.java 2012-03-18 22:25:32 UTC (rev 1771) @@ -28,6 +28,7 @@ import cc.kune.core.client.registry.ContentCapabilitiesRegistry; import cc.kune.core.client.resources.iconic.IconicResources; import cc.kune.core.client.resources.nav.NavResources; +import cc.kune.core.shared.dto.AccessRolDTO; import cc.kune.gspace.client.tool.FoldableAbstractClientTool; import cc.kune.gspace.client.tool.selector.ToolSelector; @@ -47,7 +48,8 @@ i18n.t("wiki"), i18n.t( "Wiki-pages are Documents that can be edited by any visitor (in [%s]), instead of only by the group. This accelerates updating and construction", - i18n.getSiteCommonName()), icons.wikis(), toolSelector, cntCapRegistry, i18n, navResources); + i18n.getSiteCommonName()), icons.wikis(), AccessRolDTO.Viewer, toolSelector, cntCapRegistry, + i18n, navResources); this.icons = icons; registerAuthorableTypes(TYPE_WIKIPAGE, TYPE_UPLOADEDFILE); Added: trunk/src/main/resources/icons/trash-black.png =================================================================== (Binary files differ) Property changes on: trunk/src/main/resources/icons/trash-black.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/src/main/resources/icons/trash-white.png =================================================================== (Binary files differ) Property changes on: trunk/src/main/resources/icons/trash-white.png ___________________________________________________________________ Name: svn:mime-type + application/octet-stream