kune-commits
Threads by month
- ----- 2026 -----
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
June 2011
- 3 participants
- 40 discussions
Author: vjrj_
Date: 2011-06-24 03:51:23 +0200 (Fri, 24 Jun 2011)
New Revision: 1415
Added:
trunk/src/main/java/cc/kune/blogs/client/actions/NewPostMenuItem.java
trunk/src/main/java/cc/kune/docs/client/actions/NewDocMenuItem.java
trunk/src/main/java/cc/kune/docs/client/actions/NewFolderMenuItem.java
trunk/src/main/java/cc/kune/gspace/client/actions/NewContainerMenuItem.java
trunk/src/main/java/cc/kune/gspace/client/actions/NewContentMenuItem.java
trunk/src/main/java/cc/kune/gspace/client/actions/NewMenuProvider.java
trunk/src/main/java/cc/kune/wiki/client/actions/WikiFolderNewMenu.java
Removed:
trunk/src/main/java/cc/kune/blogs/client/actions/NewPostBtn.java
trunk/src/main/java/cc/kune/docs/client/actions/DocsRootNewMenu.java
trunk/src/main/java/cc/kune/docs/client/actions/NewDocBtn.java
trunk/src/main/java/cc/kune/docs/client/actions/NewFolderBtn.java
trunk/src/main/java/cc/kune/gspace/client/actions/NewMenusProvider.java
Modified:
trunk/.project
trunk/TODO
trunk/src/main/java/cc/kune/barters/client/actions/BartersClientActions.java
trunk/src/main/java/cc/kune/blogs/client/BlogsGinModule.java
trunk/src/main/java/cc/kune/blogs/client/actions/BlogsClientActions.java
trunk/src/main/java/cc/kune/blogs/client/actions/BlogsNewMenu.java
trunk/src/main/java/cc/kune/chat/client/actions/ChatClientActions.java
trunk/src/main/java/cc/kune/common/client/actions/gwtui/AbstractGwtMenuItemGui.java
trunk/src/main/java/cc/kune/common/client/actions/ui/AbstractComposedGuiItem.java
trunk/src/main/java/cc/kune/common/public/kune-common.css
trunk/src/main/java/cc/kune/core/client/actions/ActionRegistryByType.java
trunk/src/main/java/cc/kune/core/client/actions/XMLActionsParser.java
trunk/src/main/java/cc/kune/core/client/sn/actions/registry/GroupSNConfActions.java
trunk/src/main/java/cc/kune/docs/client/DocsGinModule.java
trunk/src/main/java/cc/kune/docs/client/actions/DocsClientActions.java
trunk/src/main/java/cc/kune/docs/client/actions/DocsFolderNewMenu.java
trunk/src/main/java/cc/kune/gspace/client/actions/ActionGroups.java
trunk/src/main/java/cc/kune/gspace/client/actions/ContentViewerOptionsMenu.java
trunk/src/main/java/cc/kune/gspace/client/actions/NewContentBtn.java
trunk/src/main/java/cc/kune/gspace/client/viewers/ContentViewerPresenter.java
trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsTablePanel.java
trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerPresenter.java
trunk/src/main/java/cc/kune/meets/client/actions/MeetingsClientActions.java
trunk/src/main/java/cc/kune/wiki/client/WikiGinModule.java
trunk/src/main/java/cc/kune/wiki/client/actions/NewFolderBtn.java
trunk/src/main/java/cc/kune/wiki/client/actions/NewWikiBtn.java
trunk/src/main/java/cc/kune/wiki/client/actions/WikiClientActions.java
Log:
New menus updated, and menu items created only under demand
Modified: trunk/.project
===================================================================
--- trunk/.project 2011-06-22 16:39:13 UTC (rev 1414)
+++ trunk/.project 2011-06-24 01:51:23 UTC (rev 1415)
@@ -1,42 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
- <name>kune</name>
- <comment>kune free/open/libre collaboration platform. NO_M2ECLIPSE_SUPPORT: Project files created with the maven-eclipse-plugin are not supported in M2Eclipse.</comment>
- <projects/>
- <buildSpec>
- <buildCommand>
- <name>com.google.gdt.eclipse.core.webAppProjectValidator</name>
- </buildCommand>
- <buildCommand>
- <name>com.google.gwt.eclipse.core.gwtProjectValidator</name>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.wst.common.project.facet.core.builder</name>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.wst.validation.validationbuilder</name>
- </buildCommand>
- <buildCommand>
- <name>edu.umd.cs.findbugs.plugin.eclipse.findbugsBuilder</name>
- </buildCommand>
- <buildCommand>
- <name>com.instantiations.assist.eclipse.coverage.instrumentationBuilder</name>
- </buildCommand>
- <buildCommand>
- <name>net.sourceforge.pmd.eclipse.plugin.pmdBuilder</name>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
- <nature>org.eclipse.jdt.core.javanature</nature>
- <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
- <nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
- <nature>org.eclipse.ajdt.ui.ajnature</nature>
- <nature>com.google.gwt.eclipse.core.gwtNature</nature>
- <nature>edu.umd.cs.findbugs.plugin.eclipse.findbugsNature</nature>
- <nature>com.instantiations.assist.eclipse.coverage.codeCoverageNature</nature>
- <nature>net.sourceforge.pmd.eclipse.plugin.pmdNature</nature>
- </natures>
-</projectDescription>
\ No newline at end of file
+ <name>kune</name>
+ <comment>kune free/open/libre collaboration platform. NO_M2ECLIPSE_SUPPORT: Project files created with the maven-eclipse-plugin are not supported in M2Eclipse.</comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>com.google.gdt.eclipse.core.webAppProjectValidator</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>com.google.gwt.eclipse.core.gwtProjectValidator</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.wst.common.project.facet.core.builder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.wst.validation.validationbuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>edu.umd.cs.findbugs.plugin.eclipse.findbugsBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>com.instantiations.assist.eclipse.coverage.instrumentationBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>net.sourceforge.pmd.eclipse.plugin.pmdBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.recommenders.rcp.analysis.RecommendersBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
+ <nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
+ <nature>org.eclipse.ajdt.ui.ajnature</nature>
+ <nature>com.google.gwt.eclipse.core.gwtNature</nature>
+ <nature>edu.umd.cs.findbugs.plugin.eclipse.findbugsNature</nature>
+ <nature>com.instantiations.assist.eclipse.coverage.codeCoverageNature</nature>
+ <nature>net.sourceforge.pmd.eclipse.plugin.pmdNature</nature>
+ <nature>org.eclipse.recommenders.rcp.analysis.RecommendersNature</nature>
+ </natures>
+</projectDescription>
Modified: trunk/TODO
===================================================================
--- trunk/TODO 2011-06-22 16:39:13 UTC (rev 1414)
+++ trunk/TODO 2011-06-24 01:51:23 UTC (rev 1415)
@@ -371,6 +371,17 @@
** vjrj <v> IconHyperlink.java and IconLabel.java to gwt1.5
* MID-TERM
+** Template system for new waves with legal free/open procedures
+New
+ Templates
+ In English
+ In Spanish
+ Legal
+ Procedimiento A
+ Procedimiento B
+ Borrador de Estutos de Asociación
+ (...)
+
** Archive of xmpp conversations
*** http://community.igniterealtime.org/docs/DOC-1094 (for openfire)
** Enable two Waves per doc: 1 for the doc (no comments enabled), other for comments. Similar to docs.google.com comments approach.
Modified: trunk/src/main/java/cc/kune/barters/client/actions/BartersClientActions.java
===================================================================
--- trunk/src/main/java/cc/kune/barters/client/actions/BartersClientActions.java 2011-06-22 16:39:13 UTC (rev 1414)
+++ trunk/src/main/java/cc/kune/barters/client/actions/BartersClientActions.java 2011-06-24 01:51:23 UTC (rev 1415)
@@ -53,17 +53,17 @@
final Provider<ParticipateInContentBtn> participateBtn,
final Provider<DelFolderMenuItem> delFolderMenuItem, final Provider<RefreshContentMenuItem> refresh) {
super(session, stateManager, i18n, registry);
- actionsRegistry.addAction(ActionGroups.VIEW, optionsMenuContent, all);
- actionsRegistry.addAction(ActionGroups.VIEW, refresh, all);
- actionsRegistry.addAction(ActionGroups.VIEW, folderGoUp, contents);
- actionsRegistry.addAction(ActionGroups.VIEW, folderGoUp, containersNoRoot);
- actionsRegistry.addAction(ActionGroups.VIEW, newBartersBtn, containers);
- actionsRegistry.addAction(ActionGroups.VIEW, participateBtn, contents);
- actionsRegistry.addAction(ActionGroups.VIEW, newFolderBtn, containers);
- actionsRegistry.addAction(ActionGroups.MENUITEM, openContentMenuItem, contents);
- actionsRegistry.addAction(ActionGroups.MENUITEM, openContentMenuItem, containersNoRoot);
- actionsRegistry.addAction(ActionGroups.MENUITEM, delContentMenuItem, contents);
- actionsRegistry.addAction(ActionGroups.MENUITEM, delFolderMenuItem, containersNoRoot);
+ actionsRegistry.addAction(ActionGroups.TOOLBAR, optionsMenuContent, all);
+ actionsRegistry.addAction(ActionGroups.TOOLBAR, refresh, all);
+ actionsRegistry.addAction(ActionGroups.TOOLBAR, folderGoUp, contents);
+ actionsRegistry.addAction(ActionGroups.TOOLBAR, folderGoUp, containersNoRoot);
+ actionsRegistry.addAction(ActionGroups.TOOLBAR, newBartersBtn, containers);
+ actionsRegistry.addAction(ActionGroups.TOOLBAR, participateBtn, contents);
+ actionsRegistry.addAction(ActionGroups.TOOLBAR, newFolderBtn, containers);
+ actionsRegistry.addAction(ActionGroups.ITEM_MENU, openContentMenuItem, contents);
+ actionsRegistry.addAction(ActionGroups.ITEM_MENU, openContentMenuItem, containersNoRoot);
+ actionsRegistry.addAction(ActionGroups.ITEM_MENU, delContentMenuItem, contents);
+ actionsRegistry.addAction(ActionGroups.ITEM_MENU, delFolderMenuItem, containersNoRoot);
}
@Override
Modified: trunk/src/main/java/cc/kune/blogs/client/BlogsGinModule.java
===================================================================
--- trunk/src/main/java/cc/kune/blogs/client/BlogsGinModule.java 2011-06-22 16:39:13 UTC (rev 1414)
+++ trunk/src/main/java/cc/kune/blogs/client/BlogsGinModule.java 2011-06-24 01:51:23 UTC (rev 1415)
@@ -20,16 +20,16 @@
package cc.kune.blogs.client;
import cc.kune.blogs.client.actions.BlogsClientActions;
+import cc.kune.blogs.client.actions.BlogsNewMenu;
+import cc.kune.common.client.ExtendedGinModule;
-import com.google.inject.Singleton;
-import com.gwtplatform.mvp.client.gin.AbstractPresenterModule;
+public class BlogsGinModule extends ExtendedGinModule {
-public class BlogsGinModule extends AbstractPresenterModule {
+ @Override
+ protected void configure() {
+ s(BlogsNewMenu.class);
+ s(BlogsClientTool.class);
+ s(BlogsClientActions.class);
+ }
- @Override
- protected void configure() {
- bind(BlogsClientTool.class).in(Singleton.class);
- bind(BlogsClientActions.class).in(Singleton.class);
- }
-
}
Modified: trunk/src/main/java/cc/kune/blogs/client/actions/BlogsClientActions.java
===================================================================
--- trunk/src/main/java/cc/kune/blogs/client/actions/BlogsClientActions.java 2011-06-22 16:39:13 UTC (rev 1414)
+++ trunk/src/main/java/cc/kune/blogs/client/actions/BlogsClientActions.java 2011-06-24 01:51:23 UTC (rev 1415)
@@ -51,7 +51,7 @@
@Inject
public BlogsClientActions(final I18nUITranslationService i18n, final Session session,
final StateManager stateManager, final ActionRegistryByType registry, final CoreResources res,
- final Provider<GoParentBlogBtn> folderGoUp, final Provider<NewPostBtn> newDocBtn,
+ final Provider<GoParentBlogBtn> folderGoUp, final Provider<NewPostMenuItem> newDocBtn,
final Provider<NewBlogBtn> newFolderBtn, final Provider<OpenBlogMenuItem> openContentMenuItem,
final Provider<DelPostMenuItem> delContentMenuItem,
final Provider<RefreshContentMenuItem> refresh,
@@ -61,20 +61,20 @@
final Provider<DelBlogMenuItem> delFolderMenuItem,
final Provider<SetAsHomePageMenuItem> setAsHomePage) {
super(session, stateManager, i18n, registry);
- actionsRegistry.addAction(ActionGroups.VIEW, optionsMenuContent, all);
- actionsRegistry.addAction(ActionGroups.VIEW, refresh, all);
- actionsRegistry.addAction(ActionGroups.VIEW, folderGoUp, contents);
- actionsRegistry.addAction(ActionGroups.VIEW, folderGoUp, containersNoRoot);
- actionsRegistry.addAction(ActionGroups.VIEW, participateBtn, contents);
- actionsRegistry.addAction(ActionGroups.VIEW, newDocBtn, containersNoRoot);
- actionsRegistry.addAction(ActionGroups.VIEW, newFolderBtn, TYPE_ROOT);
- actionsRegistry.addAction(ActionGroups.VIEW, chatAbout, contents);
- actionsRegistry.addAction(ActionGroups.MENUITEM, openContentMenuItem, contents);
- actionsRegistry.addAction(ActionGroups.MENUITEM, openContentMenuItem, containersNoRoot);
- actionsRegistry.addAction(ActionGroups.MENUITEM, delContentMenuItem, contents);
- actionsRegistry.addAction(ActionGroups.MENUITEM, delFolderMenuItem, containersNoRoot);
+ actionsRegistry.addAction(ActionGroups.TOOLBAR, optionsMenuContent, all);
+ actionsRegistry.addAction(ActionGroups.TOOLBAR, blogNewMenu, TYPE_BLOG);
+ actionsRegistry.addAction(ActionGroups.TOOLBAR, refresh, all);
+ actionsRegistry.addAction(ActionGroups.TOOLBAR, folderGoUp, contents);
+ actionsRegistry.addAction(ActionGroups.TOOLBAR, folderGoUp, containersNoRoot);
+ actionsRegistry.addAction(ActionGroups.TOOLBAR, participateBtn, contents);
+ actionsRegistry.addAction(ActionGroups.TOOLBAR, newDocBtn, containersNoRoot);
+ actionsRegistry.addAction(ActionGroups.TOOLBAR, newFolderBtn, TYPE_ROOT);
+ actionsRegistry.addAction(ActionGroups.TOOLBAR, chatAbout, contents);
+ actionsRegistry.addAction(ActionGroups.ITEM_MENU, openContentMenuItem, contents);
+ actionsRegistry.addAction(ActionGroups.ITEM_MENU, openContentMenuItem, containersNoRoot);
+ actionsRegistry.addAction(ActionGroups.ITEM_MENU, delContentMenuItem, contents);
+ actionsRegistry.addAction(ActionGroups.ITEM_MENU, delFolderMenuItem, containersNoRoot);
newMenusRegistry.register(TYPE_BLOG, blogNewMenu.get());
- actionsRegistry.addAction(ActionGroups.VIEW, blogNewMenu, TYPE_BLOG);
}
@Override
Modified: trunk/src/main/java/cc/kune/blogs/client/actions/BlogsNewMenu.java
===================================================================
--- trunk/src/main/java/cc/kune/blogs/client/actions/BlogsNewMenu.java 2011-06-22 16:39:13 UTC (rev 1414)
+++ trunk/src/main/java/cc/kune/blogs/client/actions/BlogsNewMenu.java 2011-06-24 01:51:23 UTC (rev 1415)
@@ -1,11 +1,11 @@
package cc.kune.blogs.client.actions;
import cc.kune.gspace.client.actions.AbstractNewMenu;
-import cc.kune.gspace.client.actions.NewMenusProvider;
+import cc.kune.gspace.client.actions.NewMenuProvider;
import com.google.inject.Inject;
-public class BlogsNewMenu extends NewMenusProvider {
+public class BlogsNewMenu extends NewMenuProvider {
@Inject
public BlogsNewMenu(final AbstractNewMenu menu) {
Deleted: trunk/src/main/java/cc/kune/blogs/client/actions/NewPostBtn.java
===================================================================
--- trunk/src/main/java/cc/kune/blogs/client/actions/NewPostBtn.java 2011-06-22 16:39:13 UTC (rev 1414)
+++ trunk/src/main/java/cc/kune/blogs/client/actions/NewPostBtn.java 2011-06-24 01:51:23 UTC (rev 1415)
@@ -1,39 +0,0 @@
-/*
- *
- * 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.blogs.client.actions;
-
-import cc.kune.blogs.shared.BlogsConstants;
-import cc.kune.common.client.shortcuts.GlobalShortcutRegister;
-import cc.kune.core.client.resources.nav.NavResources;
-import cc.kune.core.shared.i18n.I18nTranslationService;
-import cc.kune.gspace.client.actions.NewContentBtn;
-
-import com.google.inject.Inject;
-
-public class NewPostBtn extends NewContentBtn {
-
- @Inject
- public NewPostBtn(final I18nTranslationService i18n, final NewContentAction action,
- final NavResources res, final GlobalShortcutRegister shorcutReg) {
- super(i18n, action, res.blogAdd(), shorcutReg, i18n.t("New post"), i18n.t("Create a new blog post"),
- i18n.t("New post"), BlogsConstants.TYPE_POST);
- }
-
-}
Copied: trunk/src/main/java/cc/kune/blogs/client/actions/NewPostMenuItem.java (from rev 1409, trunk/src/main/java/cc/kune/blogs/client/actions/NewPostBtn.java)
===================================================================
--- trunk/src/main/java/cc/kune/blogs/client/actions/NewPostMenuItem.java (rev 0)
+++ trunk/src/main/java/cc/kune/blogs/client/actions/NewPostMenuItem.java 2011-06-24 01:51:23 UTC (rev 1415)
@@ -0,0 +1,39 @@
+/*
+ *
+ * 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.blogs.client.actions;
+
+import cc.kune.blogs.shared.BlogsConstants;
+import cc.kune.common.client.shortcuts.GlobalShortcutRegister;
+import cc.kune.core.client.resources.nav.NavResources;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+import cc.kune.gspace.client.actions.NewContentMenuItem;
+
+import com.google.inject.Inject;
+
+public class NewPostMenuItem extends NewContentMenuItem {
+
+ @Inject
+ public NewPostMenuItem(final I18nTranslationService i18n, final NewContentAction action,
+ final NavResources res, final GlobalShortcutRegister shorcutReg, final BlogsNewMenu blogsNewMenu) {
+ super(i18n, action, res.blogAdd(), shorcutReg, i18n.t("New post"), i18n.t("Create a new blog post"),
+ i18n.t("New post"), BlogsConstants.TYPE_POST, blogsNewMenu.get());
+ }
+
+}
Property changes on: trunk/src/main/java/cc/kune/blogs/client/actions/NewPostMenuItem.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: trunk/src/main/java/cc/kune/chat/client/actions/ChatClientActions.java
===================================================================
--- trunk/src/main/java/cc/kune/chat/client/actions/ChatClientActions.java 2011-06-22 16:39:13 UTC (rev 1414)
+++ trunk/src/main/java/cc/kune/chat/client/actions/ChatClientActions.java 2011-06-24 01:51:23 UTC (rev 1415)
@@ -50,13 +50,13 @@
final Provider<OpenRoomBtn> openRoomBtn,
final Provider<ContentViewerOptionsMenu> optionsMenuContent) {
super(session, stateManager, i18n, registry);
- actionsRegistry.addAction(ActionGroups.VIEW, optionsMenuContent, all);
- actionsRegistry.addAction(ActionGroups.VIEW, refresh, all);
- actionsRegistry.addAction(ActionGroups.VIEW, newRoomBtn, TYPE_ROOT);
- actionsRegistry.addAction(ActionGroups.VIEW, folderGoUp, containersNoRoot);
- actionsRegistry.addAction(ActionGroups.VIEW, openRoomBtn, containersNoRoot);
- actionsRegistry.addAction(ActionGroups.MENUITEM, openRoomMenuItem, containersNoRoot);
- actionsRegistry.addAction(ActionGroups.MENUITEM, openRoomArchiveMenuItem, containersNoRoot);
+ actionsRegistry.addAction(ActionGroups.TOOLBAR, optionsMenuContent, all);
+ actionsRegistry.addAction(ActionGroups.TOOLBAR, refresh, all);
+ actionsRegistry.addAction(ActionGroups.TOOLBAR, newRoomBtn, TYPE_ROOT);
+ actionsRegistry.addAction(ActionGroups.TOOLBAR, folderGoUp, containersNoRoot);
+ actionsRegistry.addAction(ActionGroups.TOOLBAR, openRoomBtn, containersNoRoot);
+ actionsRegistry.addAction(ActionGroups.ITEM_MENU, openRoomMenuItem, containersNoRoot);
+ actionsRegistry.addAction(ActionGroups.ITEM_MENU, openRoomArchiveMenuItem, containersNoRoot);
}
@Override
Modified: trunk/src/main/java/cc/kune/common/client/actions/gwtui/AbstractGwtMenuItemGui.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/gwtui/AbstractGwtMenuItemGui.java 2011-06-22 16:39:13 UTC (rev 1414)
+++ trunk/src/main/java/cc/kune/common/client/actions/gwtui/AbstractGwtMenuItemGui.java 2011-06-24 01:51:23 UTC (rev 1415)
@@ -132,6 +132,9 @@
final int position = descriptor.getPosition();
final AbstractGwtMenuGui menu = getParentMenu(descriptor);
if (menu == null) {
+ // Note: Be careful if you have two menus (not a singleton) and you add
+ // one but
+ // no the other that it associated with this menuitem
throw new UIException("Warning: To add a menu item you need to add the menu before. Item: "
+ descriptor);
}
Modified: trunk/src/main/java/cc/kune/common/client/actions/ui/AbstractComposedGuiItem.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/ui/AbstractComposedGuiItem.java 2011-06-22 16:39:13 UTC (rev 1414)
+++ trunk/src/main/java/cc/kune/common/client/actions/ui/AbstractComposedGuiItem.java 2011-06-24 01:51:23 UTC (rev 1415)
@@ -30,77 +30,77 @@
import com.google.gwt.user.client.ui.Composite;
public abstract class AbstractComposedGuiItem extends Composite implements IsActionExtensible {
- private final GuiProvider bindings;
- private GuiActionDescCollection guiItems;
+ private final GuiProvider bindings;
+ private GuiActionDescCollection guiItems;
- public AbstractComposedGuiItem(final GuiProvider bindings) {
- super();
- this.bindings = bindings;
- }
+ public AbstractComposedGuiItem(final GuiProvider bindings) {
+ super();
+ this.bindings = bindings;
+ }
- public void add(final GuiActionDescCollection descriptors) {
- for (final GuiActionDescrip descriptor : descriptors) {
- add(descriptor);
- }
+ public void add(final GuiActionDescCollection descriptors) {
+ for (final GuiActionDescrip descriptor : descriptors) {
+ add(descriptor);
}
+ }
- @Override
- public void add(final GuiActionDescrip... descriptors) {
- for (final GuiActionDescrip descriptor : descriptors) {
- add(descriptor);
- }
+ @Override
+ public void add(final GuiActionDescrip... descriptors) {
+ for (final GuiActionDescrip descriptor : descriptors) {
+ add(descriptor);
}
+ }
- @Override
- public void add(final GuiActionDescrip descriptor) {
- getGuiItems().add(descriptor);
- beforeAddWidget(descriptor);
- }
+ @Override
+ public void add(final GuiActionDescrip descriptor) {
+ getGuiItems().add(descriptor);
+ beforeAddWidget(descriptor);
+ }
- public void addActions(final List<GuiActionDescrip> descriptors) {
- for (final GuiActionDescrip descriptor : descriptors) {
- add(descriptor);
- }
+ public void addActions(final List<GuiActionDescrip> descriptors) {
+ for (final GuiActionDescrip descriptor : descriptors) {
+ add(descriptor);
}
+ }
- @Override
- public void addAll(final GuiActionDescCollection descriptors) {
- for (final GuiActionDescrip descriptor : descriptors) {
- add(descriptor);
- }
+ @Override
+ public void addAll(final GuiActionDescCollection descriptors) {
+ for (final GuiActionDescrip descriptor : descriptors) {
+ add(descriptor);
}
+ }
- protected abstract void addWidget(AbstractGuiItem item);
+ protected abstract void addWidget(AbstractGuiItem item);
- protected void beforeAddWidget(final GuiActionDescrip descrip) {
- if (descrip.mustBeAdded()) {
- final GuiBinding binding = bindings.get(descrip.getType());
- if (binding == null) {
- throw new UIException("Unknown binding for: " + descrip);
- } else {
- final AbstractGuiItem item = binding.create(descrip);
- if (binding.shouldBeAdded()) {
- if (descrip.getPosition() == GuiActionDescrip.NO_POSITION) {
- addWidget(item);
- } else {
- insertWidget(item, descrip.getPosition());
- }
- }
- }
+ protected void beforeAddWidget(final GuiActionDescrip descrip) {
+ if (descrip.mustBeAdded()) {
+ final GuiBinding binding = bindings.get(descrip.getType());
+ if (binding == null) {
+ throw new UIException("Unknown binding for: " + descrip);
+ } else {
+ final AbstractGuiItem item = binding.create(descrip);
+ if (binding.shouldBeAdded()) {
+ if (descrip.getPosition() == GuiActionDescrip.NO_POSITION) {
+ addWidget(item);
+ } else {
+ insertWidget(item, descrip.getPosition());
+ }
}
+ }
}
+ }
- @Override
- public void clear() {
- getGuiItems().clear();
- }
+ @Override
+ public void clear() {
+ getGuiItems().clear();
+ }
- public GuiActionDescCollection getGuiItems() {
- if (guiItems == null) {
- guiItems = new GuiActionDescCollection();
- }
- return guiItems;
+ public GuiActionDescCollection getGuiItems() {
+ if (guiItems == null) {
+ guiItems = new GuiActionDescCollection();
}
+ return guiItems;
+ }
- protected abstract void insertWidget(AbstractGuiItem item, int position);
+ protected abstract void insertWidget(AbstractGuiItem item, int position);
}
Modified: trunk/src/main/java/cc/kune/common/public/kune-common.css
===================================================================
--- trunk/src/main/java/cc/kune/common/public/kune-common.css 2011-06-22 16:39:13 UTC (rev 1414)
+++ trunk/src/main/java/cc/kune/common/public/kune-common.css 2011-06-24 01:51:23 UTC (rev 1415)
@@ -441,7 +441,7 @@
}
.k-no-backimage,.k-no-backimage td {
- background-image: none;
+ background-image: none !important;
}
.k-nobackcolor {
Modified: trunk/src/main/java/cc/kune/core/client/actions/ActionRegistryByType.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/actions/ActionRegistryByType.java 2011-06-22 16:39:13 UTC (rev 1414)
+++ trunk/src/main/java/cc/kune/core/client/actions/ActionRegistryByType.java 2011-06-24 01:51:23 UTC (rev 1415)
@@ -39,98 +39,100 @@
*
*/
public class ActionRegistryByType {
- private static final String GENERIC_GROUP_ACTION = "kgengroup";
- private static final String GENERIC_TYPE_ID = "kgentype";
- private static final String KEY_SEPARATOR = "-";
+ private static final String GENERIC_GROUP_ACTION = "kgengroup";
+ private static final String GENERIC_TYPE_ID = "kgentype";
+ private static final String KEY_SEPARATOR = "-";
- private final Map<String, GuiActionDescProviderCollection> actions;
+ private final Map<String, GuiActionDescProviderCollection> actions;
- public ActionRegistryByType() {
- actions = new HashMap<String, GuiActionDescProviderCollection>();
- }
+ public ActionRegistryByType() {
+ actions = new HashMap<String, GuiActionDescProviderCollection>();
+ }
- private void add(final GuiActionDescCollection collection, final GuiActionDescrip descrip, final Object targetItem) {
- descrip.setTarget(targetItem);
- collection.add(descrip);
- }
+ private void add(final GuiActionDescCollection collection, final GuiActionDescrip descrip,
+ final Object targetItem) {
+ descrip.setTarget(targetItem);
+ collection.add(descrip);
+ }
- public void addAction(final Provider<? extends GuiActionDescrip> action) {
- addAction(GENERIC_GROUP_ACTION, action, GENERIC_TYPE_ID);
- }
+ public void addAction(final Provider<? extends GuiActionDescrip> action) {
+ addAction(GENERIC_GROUP_ACTION, action, GENERIC_TYPE_ID);
+ }
- public void addAction(@Nonnull final String actionsGroupId, final Provider<? extends GuiActionDescrip> action) {
- addAction(actionsGroupId, action, GENERIC_TYPE_ID);
- }
+ public void addAction(@Nonnull final String actionsGroupId,
+ final Provider<? extends GuiActionDescrip> action) {
+ addAction(actionsGroupId, action, GENERIC_TYPE_ID);
+ }
- public void addAction(@Nonnull final String actionsGroupId,
- final @Nonnull Provider<? extends GuiActionDescrip> action, @Nonnull final String... typeIds) {
- for (final String typeId : typeIds) {
- final GuiActionDescProviderCollection actionColl = getActions(actionsGroupId, typeId);
- actionColl.add(action);
- actions.put(genKey(actionsGroupId, typeId), actionColl);
- }
+ public void addAction(@Nonnull final String actionsGroupId,
+ final @Nonnull Provider<? extends GuiActionDescrip> action, @Nonnull final String... typeIds) {
+ for (final String typeId : typeIds) {
+ final GuiActionDescProviderCollection actionColl = getActions(actionsGroupId, typeId);
+ actionColl.add(action);
+ actions.put(genKey(actionsGroupId, typeId), actionColl);
}
+ }
- private String genKey(final String actionsGroupId, final String typeId) {
- return actionsGroupId + KEY_SEPARATOR + typeId;
- }
+ private String genKey(final String actionsGroupId, final String typeId) {
+ return actionsGroupId + KEY_SEPARATOR + typeId;
+ }
- private GuiActionDescProviderCollection getActions(final String actionsGroupId, final String typeId) {
- final String key = genKey(actionsGroupId, typeId);
- GuiActionDescProviderCollection actionColl = actions.get(key);
- if (actionColl == null) {
- actionColl = new GuiActionDescProviderCollection();
- actions.put(key, actionColl);
- }
- return actionColl;
+ private GuiActionDescProviderCollection getActions(final String actionsGroupId, final String typeId) {
+ final String key = genKey(actionsGroupId, typeId);
+ GuiActionDescProviderCollection actionColl = actions.get(key);
+ if (actionColl == null) {
+ actionColl = new GuiActionDescProviderCollection();
+ actions.put(key, actionColl);
}
+ return actionColl;
+ }
- public GuiActionDescCollection getCurrentActions(final Object targetItem, final boolean isLogged,
- final AccessRights rights) {
- return getCurrentActions(targetItem, GENERIC_TYPE_ID, isLogged, rights, null);
- }
+ public GuiActionDescCollection getCurrentActions(final Object targetItem, final boolean isLogged,
+ final AccessRights rights) {
+ return getCurrentActions(targetItem, GENERIC_TYPE_ID, isLogged, rights, null);
+ }
- public GuiActionDescCollection getCurrentActions(final Object targetItem, final boolean isLogged,
- final AccessRights rights, @Nullable final String actionsGroup) {
- return getCurrentActions(targetItem, GENERIC_TYPE_ID, isLogged, rights, actionsGroup);
- }
+ public GuiActionDescCollection getCurrentActions(final Object targetItem, final boolean isLogged,
+ final AccessRights rights, @Nullable final String actionsGroup) {
+ return getCurrentActions(targetItem, GENERIC_TYPE_ID, isLogged, rights, actionsGroup);
+ }
- public GuiActionDescCollection getCurrentActions(final Object targetItem, final String typeId,
- final boolean isLogged, final AccessRights rights) {
- return getCurrentActions(targetItem, typeId, isLogged, rights, null);
- }
+ public GuiActionDescCollection getCurrentActions(final Object targetItem, final String typeId,
+ final boolean isLogged, final AccessRights rights) {
+ return getCurrentActions(targetItem, typeId, isLogged, rights, null);
+ }
- public <T> GuiActionDescCollection getCurrentActions(final Object targetItem, final String typeId,
- final boolean isLogged, final AccessRights rights, @Nullable final String actionsGroupId) {
- final GuiActionDescCollection collection = new GuiActionDescCollection();
- for (final Provider<? extends GuiActionDescrip> descripProv : getActions(actionsGroupId, typeId)) {
- final GuiActionDescrip descrip = descripProv.get();
- final AbstractAction action = descrip.getAction();
- if (action instanceof RolAction) {
- if (mustAdd((RolAction) action, isLogged, rights)) {
- add(collection, descrip, targetItem);
- }
- } else {
- add(collection, descrip, targetItem);
- }
+ public <T> GuiActionDescCollection getCurrentActions(final Object targetItem, final String typeId,
+ final boolean isLogged, final AccessRights rights, @Nullable final String actionsGroupId) {
+ final GuiActionDescCollection collection = new GuiActionDescCollection();
+ for (final Provider<? extends GuiActionDescrip> descripProv : getActions(actionsGroupId, typeId)) {
+ final GuiActionDescrip descrip = descripProv.get();
+ final AbstractAction action = descrip.getAction();
+ if (action instanceof RolAction) {
+ if (mustAdd((RolAction) action, isLogged, rights)) {
+ add(collection, descrip, targetItem);
}
- return collection;
+ } else {
+ add(collection, descrip, targetItem);
+ }
}
+ return collection;
+ }
- private boolean mustAdd(final RolAction action, final boolean isLogged, final AccessRights rights) {
- if (action.isAuthNeed()) {
- if (!isLogged) {
- return false;
- }
- }
- switch (action.getRolRequired()) {
- case Administrator:
- return rights.isAdministrable();
- case Editor:
- return rights.isEditable();
- case Viewer:
- default:
- return rights.isVisible();
- }
+ private boolean mustAdd(final RolAction action, final boolean isLogged, final AccessRights rights) {
+ if (action.isAuthNeed()) {
+ if (!isLogged) {
+ return false;
+ }
}
+ switch (action.getRolRequired()) {
+ case Administrator:
+ return rights.isAdministrable();
+ case Editor:
+ return rights.isEditable();
+ case Viewer:
+ default:
+ return rights.isVisible();
+ }
+ }
}
Modified: trunk/src/main/java/cc/kune/core/client/actions/XMLActionsParser.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/actions/XMLActionsParser.java 2011-06-22 16:39:13 UTC (rev 1414)
+++ trunk/src/main/java/cc/kune/core/client/actions/XMLActionsParser.java 2011-06-24 01:51:23 UTC (rev 1415)
@@ -143,7 +143,7 @@
return menuItem;
}
};
- actionRegistry.addAction(ActionGroups.VIEW, menuItemProvider, typeId);
+ actionRegistry.addAction(ActionGroups.TOOLBAR, menuItemProvider, typeId);
}
}
}
Modified: trunk/src/main/java/cc/kune/core/client/sn/actions/registry/GroupSNConfActions.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/actions/registry/GroupSNConfActions.java 2011-06-22 16:39:13 UTC (rev 1414)
+++ trunk/src/main/java/cc/kune/core/client/sn/actions/registry/GroupSNConfActions.java 2011-06-24 01:51:23 UTC (rev 1415)
@@ -50,7 +50,7 @@
public static final SubMenuDescriptor MODERATION_SUBMENU = new SubMenuDescriptor();
public static final MenuDescriptor OPTIONS_MENU = new MenuDescriptor();
- public static final String OPTIONS_STYLES = "k-sn-options-menu, k-noborder, k-nobackcolor, k-btn-min";
+ public static final String OPTIONS_STYLES = "k-sn-options-menu, k-noborder, k-nobackcolor, k-no-backimage, k-btn-min";
public static final SubMenuDescriptor VISIBILITY_SUBMENU = new SubMenuDescriptor();
@Inject
Modified: trunk/src/main/java/cc/kune/docs/client/DocsGinModule.java
===================================================================
--- trunk/src/main/java/cc/kune/docs/client/DocsGinModule.java 2011-06-22 16:39:13 UTC (rev 1414)
+++ trunk/src/main/java/cc/kune/docs/client/DocsGinModule.java 2011-06-24 01:51:23 UTC (rev 1415)
@@ -19,17 +19,17 @@
*/
package cc.kune.docs.client;
+import cc.kune.common.client.ExtendedGinModule;
import cc.kune.docs.client.actions.DocsClientActions;
+import cc.kune.docs.client.actions.DocsFolderNewMenu;
-import com.google.inject.Singleton;
-import com.gwtplatform.mvp.client.gin.AbstractPresenterModule;
+public class DocsGinModule extends ExtendedGinModule {
-public class DocsGinModule extends AbstractPresenterModule {
+ @Override
+ protected void configure() {
+ s(DocsClientTool.class);
+ s(DocsClientActions.class);
+ s(DocsFolderNewMenu.class);
+ }
- @Override
- protected void configure() {
- bind(DocsClientTool.class).in(Singleton.class);
- bind(DocsClientActions.class).in(Singleton.class);
- }
-
}
Modified: trunk/src/main/java/cc/kune/docs/client/actions/DocsClientActions.java
===================================================================
--- trunk/src/main/java/cc/kune/docs/client/actions/DocsClientActions.java 2011-06-22 16:39:13 UTC (rev 1414)
+++ trunk/src/main/java/cc/kune/docs/client/actions/DocsClientActions.java 2011-06-24 01:51:23 UTC (rev 1415)
@@ -52,33 +52,33 @@
@Inject
public DocsClientActions(final I18nUITranslationService i18n, final Session session,
final StateManager stateManager, final ActionRegistryByType registry, final CoreResources res,
- final Provider<GoParentFolderBtn> folderGoUp, final Provider<NewDocBtn> newDocBtn,
- final Provider<NewFolderBtn> newFolderBtn, final Provider<OpenDocMenuItem> openContentMenuItem,
+ final Provider<GoParentFolderBtn> folderGoUp, final Provider<NewDocMenuItem> newDocBtn,
+ final Provider<NewFolderMenuItem> newFolderBtn,
+ final Provider<OpenDocMenuItem> openContentMenuItem,
final Provider<DelDocMenuItem> delContentMenuItem,
final Provider<ContentViewerOptionsMenu> optionsMenuContent,
final Provider<ParticipateInContentBtn> participateBtn,
final Provider<DelFolderMenuItem> delFolderMenuItem,
final Provider<ChatAboutContentBtn> chatAbout, final Provider<RefreshContentMenuItem> refresh,
- final Provider<SetAsHomePageMenuItem> setAsHomePage, final DocsRootNewMenu rootNewMenu,
+ final Provider<SetAsHomePageMenuItem> setAsHomePage,
final NewMenusForTypeIdsRegistry newMenusRegistry, final DocsFolderNewMenu folderNewMenu) {
super(session, stateManager, i18n, registry);
- actionsRegistry.addAction(ActionGroups.VIEW, optionsMenuContent, all);
- actionsRegistry.addAction(ActionGroups.VIEW, refresh, all);
- actionsRegistry.addAction(ActionGroups.VIEW, folderGoUp, contents);
- actionsRegistry.addAction(ActionGroups.VIEW, folderGoUp, containersNoRoot);
- actionsRegistry.addAction(ActionGroups.VIEW, newDocBtn, containers);
- actionsRegistry.addAction(ActionGroups.VIEW, participateBtn, contents);
- actionsRegistry.addAction(ActionGroups.VIEW, newFolderBtn, containers);
- actionsRegistry.addAction(ActionGroups.VIEW, chatAbout, contents);
- actionsRegistry.addAction(ActionGroups.MENUITEM, openContentMenuItem, contents);
- actionsRegistry.addAction(ActionGroups.MENUITEM, openContentMenuItem, containersNoRoot);
- actionsRegistry.addAction(ActionGroups.MENUITEM, delContentMenuItem, contents);
- actionsRegistry.addAction(ActionGroups.MENUITEM, delFolderMenuItem, containersNoRoot);
- actionsRegistry.addAction(ActionGroups.MENUITEM, setAsHomePage, contents);
+ actionsRegistry.addAction(ActionGroups.TOOLBAR, optionsMenuContent, all);
+ actionsRegistry.addAction(ActionGroups.TOOLBAR, folderNewMenu, containers);
+ actionsRegistry.addAction(ActionGroups.TOOLBAR, refresh, all);
+ actionsRegistry.addAction(ActionGroups.TOOLBAR, folderGoUp, contents);
+ actionsRegistry.addAction(ActionGroups.TOOLBAR, folderGoUp, containersNoRoot);
+ actionsRegistry.addAction(ActionGroups.TOOLBAR, newDocBtn, containers);
+ actionsRegistry.addAction(ActionGroups.TOOLBAR, participateBtn, contents);
+ actionsRegistry.addAction(ActionGroups.TOOLBAR, newFolderBtn, containers);
+ actionsRegistry.addAction(ActionGroups.TOOLBAR, chatAbout, contents);
+ actionsRegistry.addAction(ActionGroups.ITEM_MENU, openContentMenuItem, contents);
+ actionsRegistry.addAction(ActionGroups.ITEM_MENU, openContentMenuItem, containersNoRoot);
+ actionsRegistry.addAction(ActionGroups.ITEM_MENU, delContentMenuItem, contents);
+ actionsRegistry.addAction(ActionGroups.ITEM_MENU, delFolderMenuItem, containersNoRoot);
+ actionsRegistry.addAction(ActionGroups.ITEM_MENU, setAsHomePage, contents);
newMenusRegistry.register(TYPE_FOLDER, folderNewMenu.get());
- newMenusRegistry.register(TYPE_ROOT, rootNewMenu.get());
- actionsRegistry.addAction(ActionGroups.VIEW, folderNewMenu, containersNoRoot);
- actionsRegistry.addAction(ActionGroups.VIEW, rootNewMenu, root);
+ newMenusRegistry.register(TYPE_ROOT, folderNewMenu.get());
}
@Override
Modified: trunk/src/main/java/cc/kune/docs/client/actions/DocsFolderNewMenu.java
===================================================================
--- trunk/src/main/java/cc/kune/docs/client/actions/DocsFolderNewMenu.java 2011-06-22 16:39:13 UTC (rev 1414)
+++ trunk/src/main/java/cc/kune/docs/client/actions/DocsFolderNewMenu.java 2011-06-24 01:51:23 UTC (rev 1415)
@@ -1,14 +1,16 @@
package cc.kune.docs.client.actions;
+import javax.annotation.Nonnull;
+
import cc.kune.gspace.client.actions.AbstractNewMenu;
-import cc.kune.gspace.client.actions.NewMenusProvider;
+import cc.kune.gspace.client.actions.NewMenuProvider;
import com.google.inject.Inject;
-public class DocsFolderNewMenu extends NewMenusProvider {
+public class DocsFolderNewMenu extends NewMenuProvider {
@Inject
- public DocsFolderNewMenu(final AbstractNewMenu menu) {
+ public DocsFolderNewMenu(final @Nonnull AbstractNewMenu menu) {
super(menu);
}
Deleted: trunk/src/main/java/cc/kune/docs/client/actions/DocsRootNewMenu.java
===================================================================
--- trunk/src/main/java/cc/kune/docs/client/actions/DocsRootNewMenu.java 2011-06-22 16:39:13 UTC (rev 1414)
+++ trunk/src/main/java/cc/kune/docs/client/actions/DocsRootNewMenu.java 2011-06-24 01:51:23 UTC (rev 1415)
@@ -1,15 +0,0 @@
-package cc.kune.docs.client.actions;
-
-import cc.kune.gspace.client.actions.AbstractNewMenu;
-import cc.kune.gspace.client.actions.NewMenusProvider;
-
-import com.google.inject.Inject;
-
-public class DocsRootNewMenu extends NewMenusProvider {
-
- @Inject
- public DocsRootNewMenu(final AbstractNewMenu menu) {
- super(menu);
- }
-
-}
Deleted: trunk/src/main/java/cc/kune/docs/client/actions/NewDocBtn.java
===================================================================
--- trunk/src/main/java/cc/kune/docs/client/actions/NewDocBtn.java 2011-06-22 16:39:13 UTC (rev 1414)
+++ trunk/src/main/java/cc/kune/docs/client/actions/NewDocBtn.java 2011-06-24 01:51:23 UTC (rev 1415)
@@ -1,41 +0,0 @@
-/*
- *
- * 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.docs.client.actions;
-
-import cc.kune.common.client.shortcuts.GlobalShortcutRegister;
-import cc.kune.core.client.resources.nav.NavResources;
-import cc.kune.core.shared.i18n.I18nTranslationService;
-import cc.kune.docs.shared.DocsConstants;
-import cc.kune.gspace.client.actions.NewContentBtn;
-
-import com.google.inject.Inject;
-
-public class NewDocBtn extends NewContentBtn {
-
- @Inject
- public NewDocBtn(final I18nTranslationService i18n, final NewContentAction action,
- final NavResources res, final GlobalShortcutRegister shorcutReg) {
- super(i18n, action, res.pageAdd(), shorcutReg, i18n.t("New document"),
- i18n.t("Create a New Document here. "
- + "This document will be a new 'Page' in the public web if you publish it"),
- i18n.t("New document"), DocsConstants.TYPE_DOCUMENT);
- }
-
-}
Copied: trunk/src/main/java/cc/kune/docs/client/actions/NewDocMenuItem.java (from rev 1409, trunk/src/main/java/cc/kune/docs/client/actions/NewDocBtn.java)
===================================================================
--- trunk/src/main/java/cc/kune/docs/client/actions/NewDocMenuItem.java (rev 0)
+++ trunk/src/main/java/cc/kune/docs/client/actions/NewDocMenuItem.java 2011-06-24 01:51:23 UTC (rev 1415)
@@ -0,0 +1,42 @@
+/*
+ *
+ * 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.docs.client.actions;
+
+import cc.kune.common.client.shortcuts.GlobalShortcutRegister;
+import cc.kune.core.client.resources.nav.NavResources;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+import cc.kune.docs.shared.DocsConstants;
+import cc.kune.gspace.client.actions.NewContentMenuItem;
+
+import com.google.inject.Inject;
+
+public class NewDocMenuItem extends NewContentMenuItem {
+
+ @Inject
+ public NewDocMenuItem(final I18nTranslationService i18n, final NewContentAction action,
+ final NavResources res, final GlobalShortcutRegister shorcutReg,
+ final DocsFolderNewMenu docsFolderNewMenu) {
+ super(i18n, action, res.pageAdd(), shorcutReg, i18n.t("New document"),
+ i18n.t("Create a New Document here. "
+ + "This document will be a new 'Page' in the public web if you publish it"),
+ i18n.t("New document"), DocsConstants.TYPE_DOCUMENT, docsFolderNewMenu.get());
+ }
+
+}
Deleted: trunk/src/main/java/cc/kune/docs/client/actions/NewFolderBtn.java
===================================================================
--- trunk/src/main/java/cc/kune/docs/client/actions/NewFolderBtn.java 2011-06-22 16:39:13 UTC (rev 1414)
+++ trunk/src/main/java/cc/kune/docs/client/actions/NewFolderBtn.java 2011-06-24 01:51:23 UTC (rev 1415)
@@ -1,39 +0,0 @@
-/*
- *
- * 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.docs.client.actions;
-
-import cc.kune.core.client.resources.nav.NavResources;
-import cc.kune.core.shared.i18n.I18nTranslationService;
-import cc.kune.docs.shared.DocsConstants;
-import cc.kune.gspace.client.actions.NewContainerBtn;
-
-import com.google.inject.Inject;
-
-public class NewFolderBtn extends NewContainerBtn {
-
- @Inject
- public NewFolderBtn(final I18nTranslationService i18n, final NewContainerAction action,
- final NavResources res) {
- super(i18n, action, res.folderAdd(), i18n.t("New folder"),
- i18n.t("Create a new folder here. A folder will be a 'section' in the public web"),
- i18n.t("New folder"), DocsConstants.TYPE_FOLDER);
- }
-
-}
Copied: trunk/src/main/java/cc/kune/docs/client/actions/NewFolderMenuItem.java (from rev 1409, trunk/src/main/java/cc/kune/docs/client/actions/NewFolderBtn.java)
===================================================================
--- trunk/src/main/java/cc/kune/docs/client/actions/NewFolderMenuItem.java (rev 0)
+++ trunk/src/main/java/cc/kune/docs/client/actions/NewFolderMenuItem.java 2011-06-24 01:51:23 UTC (rev 1415)
@@ -0,0 +1,39 @@
+/*
+ *
+ * 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.docs.client.actions;
+
+import cc.kune.core.client.resources.nav.NavResources;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+import cc.kune.docs.shared.DocsConstants;
+import cc.kune.gspace.client.actions.NewContainerMenuItem;
+
+import com.google.inject.Inject;
+
+public class NewFolderMenuItem extends NewContainerMenuItem {
+
+ @Inject
+ public NewFolderMenuItem(final I18nTranslationService i18n, final NewContainerAction action,
+ final NavResources res, final DocsFolderNewMenu docsFolderNewMenu) {
+ super(i18n, action, res.folderAdd(), i18n.t("New folder"),
+ i18n.t("Create a new folder here. A folder will be a 'section' in the public web"),
+ i18n.t("New folder"), DocsConstants.TYPE_FOLDER, docsFolderNewMenu.get());
+ }
+
+}
Modified: trunk/src/main/java/cc/kune/gspace/client/actions/ActionGroups.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/actions/ActionGroups.java 2011-06-22 16:39:13 UTC (rev 1414)
+++ trunk/src/main/java/cc/kune/gspace/client/actions/ActionGroups.java 2011-06-24 01:51:23 UTC (rev 1415)
@@ -25,8 +25,8 @@
*/
public final class ActionGroups {
public final static String EDIT = "edit";
- public final static String MENUITEM = "menu-item";
- public final static String VIEW = "view";
+ public final static String ITEM_MENU = "menu-item";
+ public final static String TOOLBAR = "view";
private ActionGroups() {
}
Modified: trunk/src/main/java/cc/kune/gspace/client/actions/ContentViewerOptionsMenu.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/actions/ContentViewerOptionsMenu.java 2011-06-22 16:39:13 UTC (rev 1414)
+++ trunk/src/main/java/cc/kune/gspace/client/actions/ContentViewerOptionsMenu.java 2011-06-24 01:51:23 UTC (rev 1415)
@@ -26,10 +26,11 @@
public class ContentViewerOptionsMenu extends MenuDescriptor {
- @Inject
- public ContentViewerOptionsMenu(final CoreResources res) {
- super();
- this.withIcon(res.arrowdownsitebar()).withStyles("k-def-docbtn, k-fr, k-noborder, k-nobackcolor");
- }
+ @Inject
+ public ContentViewerOptionsMenu(final CoreResources res) {
+ super();
+ this.withIcon(res.arrowdownsitebar()).withStyles(
+ "k-def-docbtn, k-fr, k-noborder, k-no-backimage, k-nobackcolor");
+ }
}
Copied: trunk/src/main/java/cc/kune/gspace/client/actions/NewContainerMenuItem.java (from rev 1409, trunk/src/main/java/cc/kune/gspace/client/actions/NewContainerBtn.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/actions/NewContainerMenuItem.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/actions/NewContainerMenuItem.java 2011-06-24 01:51:23 UTC (rev 1415)
@@ -0,0 +1,102 @@
+/*
+ *
+ * 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.gspace.client.actions;
+
+import javax.annotation.Nonnull;
+
+import cc.kune.common.client.actions.ActionEvent;
+import cc.kune.common.client.actions.ui.descrip.MenuDescriptor;
+import cc.kune.common.client.actions.ui.descrip.MenuItemDescriptor;
+import cc.kune.common.client.notify.NotifyUser;
+import cc.kune.core.client.actions.RolAction;
+import cc.kune.core.client.rpcservices.AsyncCallbackSimple;
+import cc.kune.core.client.rpcservices.ContentServiceAsync;
+import cc.kune.core.client.state.ContentCache;
+import cc.kune.core.client.state.Session;
+import cc.kune.core.client.state.StateManager;
+import cc.kune.core.shared.dto.AccessRolDTO;
+import cc.kune.core.shared.dto.HasContent;
+import cc.kune.core.shared.dto.StateContainerDTO;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+import cc.kune.gspace.client.viewers.FolderViewerPresenter;
+
+import com.google.gwt.resources.client.ImageResource;
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+
+public class NewContainerMenuItem extends MenuItemDescriptor {
+
+ public static class NewContainerAction extends RolAction {
+
+ private final ContentCache cache;
+ private final Provider<ContentServiceAsync> contentService;
+ private final FolderViewerPresenter folderViewer;
+ private final I18nTranslationService i18n;
+ private final Session session;
+ private final StateManager stateManager;
+
+ @Inject
+ public NewContainerAction(final Session session, final StateManager stateManager,
+ final I18nTranslationService i18n, final Provider<ContentServiceAsync> contentService,
+ final ContentCache cache, final FolderViewerPresenter folderViewer) {
+ super(AccessRolDTO.Editor, true);
+ this.session = session;
+ this.stateManager = stateManager;
+ this.i18n = i18n;
+ this.contentService = contentService;
+ this.cache = cache;
+ this.folderViewer = folderViewer;
+ }
+
+ @Override
+ public void actionPerformed(final ActionEvent event) {
+ NotifyUser.showProgressProcessing();
+ stateManager.gotoStateToken(((HasContent) session.getCurrentState()).getContainer().getStateToken());
+ final String newName = (String) getValue(NEW_NAME);
+ contentService.get().addFolder(session.getUserHash(), session.getCurrentStateToken(), newName,
+ (String) getValue(ID), new AsyncCallbackSimple<StateContainerDTO>() {
+ @Override
+ public void onSuccess(final StateContainerDTO state) {
+ // contextNavigator.setEditOnNextStateChange(true);
+ stateManager.setRetrievedStateAndGo(state);
+ NotifyUser.hideProgress();
+ NotifyUser.info(i18n.tWithNT("[%s] created", "New folder created, for instance", newName));
+ folderViewer.blinkTitle();
+ }
+ });
+ cache.removeContent(session.getCurrentStateToken());
+ }
+
+ }
+
+ private static final String ID = "ctnernewid";
+ private static final String NEW_NAME = "ctnernewname";
+
+ public NewContainerMenuItem(final I18nTranslationService i18n, final NewContainerAction action,
+ final ImageResource icon, final String title, final String tooltip, final String newName,
+ final String id, final @Nonnull MenuDescriptor parent) {
+ super(action);
+ setParent(parent);
+ // The name given to this new content
+ action.putValue(NEW_NAME, newName);
+ action.putValue(ID, id);
+ this.withText(title).withToolTip(tooltip).withIcon(icon).withStyles("k-def-docbtn, k-fr");
+ }
+}
Property changes on: trunk/src/main/java/cc/kune/gspace/client/actions/NewContainerMenuItem.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: trunk/src/main/java/cc/kune/gspace/client/actions/NewContentBtn.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/actions/NewContentBtn.java 2011-06-22 16:39:13 UTC (rev 1414)
+++ trunk/src/main/java/cc/kune/gspace/client/actions/NewContentBtn.java 2011-06-24 01:51:23 UTC (rev 1415)
@@ -39,7 +39,7 @@
import com.google.inject.Inject;
import com.google.inject.Provider;
-public class NewContentBtn extends ButtonDescriptor {
+public abstract class NewContentBtn extends ButtonDescriptor {
public static class NewContentAction extends RolAction {
Copied: trunk/src/main/java/cc/kune/gspace/client/actions/NewContentMenuItem.java (from rev 1414, trunk/src/main/java/cc/kune/gspace/client/actions/NewContentBtn.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/actions/NewContentMenuItem.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/actions/NewContentMenuItem.java 2011-06-24 01:51:23 UTC (rev 1415)
@@ -0,0 +1,106 @@
+/*
+ *
+ * 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.gspace.client.actions;
+
+import javax.annotation.Nonnull;
+
+import cc.kune.common.client.actions.ActionEvent;
+import cc.kune.common.client.actions.ui.descrip.MenuDescriptor;
+import cc.kune.common.client.actions.ui.descrip.MenuItemDescriptor;
+import cc.kune.common.client.notify.NotifyUser;
+import cc.kune.common.client.shortcuts.GlobalShortcutRegister;
+import cc.kune.core.client.actions.RolAction;
+import cc.kune.core.client.rpcservices.AsyncCallbackSimple;
+import cc.kune.core.client.rpcservices.ContentServiceAsync;
+import cc.kune.core.client.state.ContentCache;
+import cc.kune.core.client.state.Session;
+import cc.kune.core.client.state.StateManager;
+import cc.kune.core.shared.dto.AccessRolDTO;
+import cc.kune.core.shared.dto.HasContent;
+import cc.kune.core.shared.dto.StateContentDTO;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+import cc.kune.gspace.client.viewers.ContentViewerPresenter;
+
+import com.google.gwt.resources.client.ImageResource;
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+
+public class NewContentMenuItem extends MenuItemDescriptor {
+
+ public static class NewContentAction extends RolAction {
+
+ private final ContentCache cache;
+ private final Provider<ContentServiceAsync> contentService;
+ private final ContentViewerPresenter contentViewer;
+ private final I18nTranslationService i18n;
+ private final Session session;
+ private final StateManager stateManager;
+
+ @Inject
+ public NewContentAction(final Session session, final StateManager stateManager,
+ final I18nTranslationService i18n, final Provider<ContentServiceAsync> contentService,
+ final ContentViewerPresenter contentViewerPresenter, final ContentCache cache) {
+ super(AccessRolDTO.Editor, true);
+ this.session = session;
+ this.stateManager = stateManager;
+ this.i18n = i18n;
+ this.contentService = contentService;
+ this.contentViewer = contentViewerPresenter;
+ this.cache = cache;
+ }
+
+ @Override
+ public void actionPerformed(final ActionEvent event) {
+ NotifyUser.showProgressProcessing();
+ stateManager.gotoStateToken(((HasContent) session.getCurrentState()).getContainer().getStateToken());
+ final String newName = (String) getValue(NEW_NAME);
+ contentService.get().addContent(session.getUserHash(), session.getCurrentStateToken(), newName,
+ (String) getValue(ID), new AsyncCallbackSimple<StateContentDTO>() {
+ @Override
+ public void onSuccess(final StateContentDTO state) {
+ stateManager.setRetrievedStateAndGo(state);
+ NotifyUser.hideProgress();
+ // stateManager.refreshCurrentGroupState();
+ // contextNavigator.setEditOnNextStateChange(true);
+ NotifyUser.info(i18n.tWithNT("[%s] created", "New content created, for instance", newName));
+ contentViewer.blinkTitle();
+ }
+ });
+ cache.removeContent(session.getCurrentStateToken());
+ }
+ }
+
+ private static final String ID = "ctnnewid";
+ private static final String NEW_NAME = "ctnnewname";
+
+ public NewContentMenuItem(final I18nTranslationService i18n, final NewContentAction action,
+ final ImageResource icon, final GlobalShortcutRegister shorcutReg, final String title,
+ final String tooltip, final String newName, final String id, @Nonnull final MenuDescriptor parent) {
+ super(parent, action);
+ // The name given to this new content
+ action.putValue(NEW_NAME, newName);
+ action.putValue(ID, id);
+ // final KeyStroke shortcut = Shortcut.getShortcut(false, true, false,
+ // false, Character.valueOf('N'));
+ // shorcutReg.put(shortcut, action);
+ this.withText(title).withToolTip(tooltip).withIcon(icon).withStyles("k-def-docbtn, k-fr");
+ }
+
+}
Property changes on: trunk/src/main/java/cc/kune/gspace/client/actions/NewContentMenuItem.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Copied: trunk/src/main/java/cc/kune/gspace/client/actions/NewMenuProvider.java (from rev 1414, trunk/src/main/java/cc/kune/gspace/client/actions/NewMenusProvider.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/actions/NewMenuProvider.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/actions/NewMenuProvider.java 2011-06-24 01:51:23 UTC (rev 1415)
@@ -0,0 +1,26 @@
+package cc.kune.gspace.client.actions;
+
+import cc.kune.common.client.actions.ui.descrip.MenuDescriptor;
+
+import com.google.inject.Provider;
+
+/**
+ * The Class NewMenusProvider ins a way to create a kind of singeltons for menu
+ * entries. This can be register in a list of Providers<GuiDescriptor> but in
+ * fact only references one item and can be used to select the parent of some
+ * menu items
+ */
+public abstract class NewMenuProvider implements Provider<MenuDescriptor> {
+
+ private final AbstractNewMenu menu;
+
+ public NewMenuProvider(final AbstractNewMenu menu) {
+ this.menu = menu;
+ }
+
+ @Override
+ public MenuDescriptor get() {
+ return menu;
+ }
+
+}
Property changes on: trunk/src/main/java/cc/kune/gspace/client/actions/NewMenuProvider.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Deleted: trunk/src/main/java/cc/kune/gspace/client/actions/NewMenusProvider.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/actions/NewMenusProvider.java 2011-06-22 16:39:13 UTC (rev 1414)
+++ trunk/src/main/java/cc/kune/gspace/client/actions/NewMenusProvider.java 2011-06-24 01:51:23 UTC (rev 1415)
@@ -1,20 +0,0 @@
-package cc.kune.gspace.client.actions;
-
-import cc.kune.common.client.actions.ui.descrip.MenuDescriptor;
-
-import com.google.inject.Provider;
-
-public abstract class NewMenusProvider implements Provider<MenuDescriptor> {
-
- private final AbstractNewMenu menu;
-
- public NewMenusProvider(final AbstractNewMenu menu) {
- this.menu = menu;
- }
-
- @Override
- public MenuDescriptor get() {
- return menu;
- }
-
-}
Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/ContentViewerPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/viewers/ContentViewerPresenter.java 2011-06-22 16:39:13 UTC (rev 1414)
+++ trunk/src/main/java/cc/kune/gspace/client/viewers/ContentViewerPresenter.java 2011-06-24 01:51:23 UTC (rev 1415)
@@ -187,7 +187,7 @@
}
}
final GuiActionDescCollection actions = actionsRegistry.getCurrentActions(stateContent.getGroup(),
- stateContent.getTypeId(), session.isLogged(), rights, ActionGroups.VIEW);
+ stateContent.getTypeId(), session.isLogged(), rights, ActionGroups.TOOLBAR);
getView().setActions(actions);
}
}
\ No newline at end of file
Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsTablePanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsTablePanel.java 2011-06-22 16:39:13 UTC (rev 1414)
+++ trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsTablePanel.java 2011-06-24 01:51:23 UTC (rev 1415)
@@ -87,17 +87,7 @@
}
itemWidget.setMenu(toolbar);
// Tooltip.to(itemWidget, item.getTooltip());
- final MenuDescriptor menu = new MenuDescriptor(i18n.t("Actions"));
- menu.withIcon(res.arrowdown()).withStyles("k-def-docbtn, k-btn, k-button");
- menu.setStandalone(false);
- itemWidget.setMenuVisible(false);
- toolbar.add(menu);
- final GuiActionDescCollection actions = item.getActionCollection();
- toolbar.setVisible(actions.size() > 0);
- for (final GuiActionDescrip menuItem : actions) {
- menuItem.setParent(menu);
- toolbar.add(menuItem);
- }
+ // FIXME make this under demand
itemWidget.getRowClick().addClickHandler(new ClickHandler() {
@Override
public void onClick(final ClickEvent event) {
@@ -119,8 +109,30 @@
}
});
itemWidget.getRowMouse().addMouseOverHandler(new MouseOverHandler() {
+ MenuDescriptor menu;
+
+ private MenuDescriptor createMenu(final FolderItemDescriptor item,
+ final FolderItemWidget itemWidget, final ActionSimplePanel toolbar) {
+ MenuDescriptor menu;
+ menu = new MenuDescriptor(i18n.t("Actions"));
+ menu.withIcon(res.arrowdown()).withStyles("k-def-docbtn, k-btn, k-button");
+ menu.setStandalone(false);
+ itemWidget.setMenuVisible(false);
+ toolbar.add(menu);
+ final GuiActionDescCollection actions = item.getActionCollection();
+ toolbar.setVisible(actions.size() > 0);
+ for (final GuiActionDescrip menuItem : actions) {
+ menuItem.setParent(menu);
+ toolbar.add(menuItem);
+ }
+ return menu;
+ }
+
@Override
public void onMouseOver(final MouseOverEvent event) {
+ if (menu == null) {
+ menu = createMenu(item, itemWidget, toolbar);
+ }
// menu.setVisible(true);
itemWidget.setMenuVisible(true);
}
Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerPresenter.java 2011-06-22 16:39:13 UTC (rev 1414)
+++ trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerPresenter.java 2011-06-24 01:51:23 UTC (rev 1415)
@@ -149,7 +149,7 @@
capabilitiesRegistry.isDragable(typeId) && rights.isAdministrable(),
capabilitiesRegistry.isDropable(typeId) && rights.isAdministrable(),
actionsRegistry.getCurrentActions(content, typeId, session.isLogged(), rights,
- ActionGroups.MENUITEM));
+ ActionGroups.ITEM_MENU));
if (status.equals(ContentStatus.inTheDustbin) && !session.getShowDeletedContent()) {
// Don't show
// NotifyUser.info("Deleted, don't show");
@@ -300,7 +300,7 @@
getView().setContainer(stateContainer);
final AccessRights rights = stateContainer.getContainerRights();
final GuiActionDescCollection actions = actionsRegistry.getCurrentActions(stateContainer.getGroup(),
- stateContainer.getTypeId(), session.isLogged(), rights, ActionGroups.VIEW);
+ stateContainer.getTypeId(), session.isLogged(), rights, ActionGroups.TOOLBAR);
final ContainerDTO container = stateContainer.getContainer();
createPath(container, actions);
getView().setActions(actions);
Modified: trunk/src/main/java/cc/kune/meets/client/actions/MeetingsClientActions.java
===================================================================
--- trunk/src/main/java/cc/kune/meets/client/actions/MeetingsClientActions.java 2011-06-22 16:39:13 UTC (rev 1414)
+++ trunk/src/main/java/cc/kune/meets/client/actions/MeetingsClientActions.java 2011-06-24 01:51:23 UTC (rev 1415)
@@ -51,14 +51,14 @@
final Provider<ParticipateInContentBtn> participateBtn,
final Provider<RefreshContentMenuItem> refresh) {
super(session, stateManager, i18n, registry);
- actionsRegistry.addAction(ActionGroups.VIEW, optionsMenuContent, all);
- actionsRegistry.addAction(ActionGroups.VIEW, refresh, all);
- actionsRegistry.addAction(ActionGroups.VIEW, newMeetingsBtn, containers);
- actionsRegistry.addAction(ActionGroups.VIEW, participateBtn, contents);
- actionsRegistry.addAction(ActionGroups.VIEW, folderGoUp, contents);
- actionsRegistry.addAction(ActionGroups.MENUITEM, openContentMenuItem, contents);
- actionsRegistry.addAction(ActionGroups.MENUITEM, openContentMenuItem, containersNoRoot);
- actionsRegistry.addAction(ActionGroups.MENUITEM, delContentMenuItem, contents);
+ actionsRegistry.addAction(ActionGroups.TOOLBAR, optionsMenuContent, all);
+ actionsRegistry.addAction(ActionGroups.TOOLBAR, refresh, all);
+ actionsRegistry.addAction(ActionGroups.TOOLBAR, newMeetingsBtn, containers);
+ actionsRegistry.addAction(ActionGroups.TOOLBAR, participateBtn, contents);
+ actionsRegistry.addAction(ActionGroups.TOOLBAR, folderGoUp, contents);
+ actionsRegistry.addAction(ActionGroups.ITEM_MENU, openContentMenuItem, contents);
+ actionsRegistry.addAction(ActionGroups.ITEM_MENU, openContentMenuItem, containersNoRoot);
+ actionsRegistry.addAction(ActionGroups.ITEM_MENU, delContentMenuItem, contents);
}
@Override
Modified: trunk/src/main/java/cc/kune/wiki/client/WikiGinModule.java
===================================================================
--- trunk/src/main/java/cc/kune/wiki/client/WikiGinModule.java 2011-06-22 16:39:13 UTC (rev 1414)
+++ trunk/src/main/java/cc/kune/wiki/client/WikiGinModule.java 2011-06-24 01:51:23 UTC (rev 1415)
@@ -19,17 +19,17 @@
*/
package cc.kune.wiki.client;
+import cc.kune.common.client.ExtendedGinModule;
import cc.kune.wiki.client.actions.WikiClientActions;
+import cc.kune.wiki.client.actions.WikiFolderNewMenu;
-import com.google.inject.Singleton;
-import com.gwtplatform.mvp.client.gin.AbstractPresenterModule;
+public class WikiGinModule extends ExtendedGinModule {
-public class WikiGinModule extends AbstractPresenterModule {
-
@Override
protected void configure() {
- bind(WikiClientTool.class).in(Singleton.class);
- bind(WikiClientActions.class).in(Singleton.class);
+ s(WikiClientTool.class);
+ s(WikiClientActions.class);
+ s(WikiFolderNewMenu.class);
}
}
Modified: trunk/src/main/java/cc/kune/wiki/client/actions/NewFolderBtn.java
===================================================================
--- trunk/src/main/java/cc/kune/wiki/client/actions/NewFolderBtn.java 2011-06-22 16:39:13 UTC (rev 1414)
+++ trunk/src/main/java/cc/kune/wiki/client/actions/NewFolderBtn.java 2011-06-24 01:51:23 UTC (rev 1415)
@@ -21,19 +21,19 @@
import cc.kune.core.client.resources.nav.NavResources;
import cc.kune.core.shared.i18n.I18nTranslationService;
-import cc.kune.gspace.client.actions.NewContainerBtn;
+import cc.kune.gspace.client.actions.NewContainerMenuItem;
import cc.kune.wiki.shared.WikiConstants;
import com.google.inject.Inject;
-public class NewFolderBtn extends NewContainerBtn {
+public class NewFolderBtn extends NewContainerMenuItem {
@Inject
public NewFolderBtn(final I18nTranslationService i18n, final NewContainerAction action,
- final NavResources res) {
+ final NavResources res, final WikiFolderNewMenu wikiFolderNewMenu) {
super(i18n, action, res.wikiAdd(), i18n.t("New folder"),
i18n.t("Create a new folder here. A folder will be a 'section' in the public web"),
- i18n.t("New folder"), WikiConstants.TYPE_FOLDER);
+ i18n.t("New folder"), WikiConstants.TYPE_FOLDER, wikiFolderNewMenu.get());
}
}
Modified: trunk/src/main/java/cc/kune/wiki/client/actions/NewWikiBtn.java
===================================================================
--- trunk/src/main/java/cc/kune/wiki/client/actions/NewWikiBtn.java 2011-06-22 16:39:13 UTC (rev 1414)
+++ trunk/src/main/java/cc/kune/wiki/client/actions/NewWikiBtn.java 2011-06-24 01:51:23 UTC (rev 1415)
@@ -22,20 +22,21 @@
import cc.kune.common.client.shortcuts.GlobalShortcutRegister;
import cc.kune.core.client.resources.nav.NavResources;
import cc.kune.core.shared.i18n.I18nTranslationService;
-import cc.kune.gspace.client.actions.NewContentBtn;
+import cc.kune.gspace.client.actions.NewContentMenuItem;
import cc.kune.wiki.shared.WikiConstants;
import com.google.inject.Inject;
-public class NewWikiBtn extends NewContentBtn {
+public class NewWikiBtn extends NewContentMenuItem {
@Inject
public NewWikiBtn(final I18nTranslationService i18n, final NewContentAction action,
- final NavResources res, final GlobalShortcutRegister shorcutReg) {
+ final NavResources res, final GlobalShortcutRegister shorcutReg,
+ final WikiFolderNewMenu wikiFolderNewMenu) {
super(i18n, action, res.wikipageAdd(), shorcutReg, i18n.t("New wikipage"),
i18n.t("Create a New Wikipage here. "
+ "This document will be a new 'Page' in the public web if you publish it"),
- i18n.t("New wikipage"), WikiConstants.TYPE_WIKIPAGE);
+ i18n.t("New wikipage"), WikiConstants.TYPE_WIKIPAGE, wikiFolderNewMenu.get());
}
}
Modified: trunk/src/main/java/cc/kune/wiki/client/actions/WikiClientActions.java
===================================================================
--- trunk/src/main/java/cc/kune/wiki/client/actions/WikiClientActions.java 2011-06-22 16:39:13 UTC (rev 1414)
+++ trunk/src/main/java/cc/kune/wiki/client/actions/WikiClientActions.java 2011-06-24 01:51:23 UTC (rev 1415)
@@ -26,6 +26,7 @@
import cc.kune.chat.client.actions.ChatAboutContentBtn;
import cc.kune.core.client.actions.ActionRegistryByType;
import cc.kune.core.client.i18n.I18nUITranslationService;
+import cc.kune.core.client.registry.NewMenusForTypeIdsRegistry;
import cc.kune.core.client.resources.CoreResources;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.StateManager;
@@ -44,6 +45,7 @@
final String[] containers = { TYPE_ROOT, TYPE_FOLDER };
final String[] containersNoRoot = { TYPE_FOLDER };
final String[] contents = { TYPE_WIKIPAGE, TYPE_UPLOADEDFILE };
+ final String[] root = { TYPE_ROOT };
@Inject
public WikiClientActions(final I18nUITranslationService i18n, final Session session,
@@ -55,21 +57,25 @@
final Provider<ParticipateInContentBtn> participateBtn,
final Provider<DelFolderMenuItem> delFolderMenuItem,
final Provider<ChatAboutContentBtn> chatAbout, final Provider<RefreshContentMenuItem> refresh,
- final Provider<SetAsHomePageMenuItem> setAsHomePage) {
+ final Provider<SetAsHomePageMenuItem> setAsHomePage,
+ final NewMenusForTypeIdsRegistry newMenusRegistry, final WikiFolderNewMenu folderNewMenu) {
super(session, stateManager, i18n, registry);
- actionsRegistry.addAction(ActionGroups.VIEW, optionsMenuContent, all);
- actionsRegistry.addAction(ActionGroups.VIEW, refresh, all);
- actionsRegistry.addAction(ActionGroups.VIEW, folderGoUp, contents);
- actionsRegistry.addAction(ActionGroups.VIEW, folderGoUp, containersNoRoot);
- actionsRegistry.addAction(ActionGroups.VIEW, newWikiBtn, containers);
- actionsRegistry.addAction(ActionGroups.VIEW, participateBtn, contents);
- actionsRegistry.addAction(ActionGroups.VIEW, newFolderBtn, containers);
- actionsRegistry.addAction(ActionGroups.VIEW, chatAbout, contents);
- actionsRegistry.addAction(ActionGroups.MENUITEM, openContentMenuItem, contents);
- actionsRegistry.addAction(ActionGroups.MENUITEM, openContentMenuItem, containersNoRoot);
- actionsRegistry.addAction(ActionGroups.MENUITEM, delContentMenuItem, contents);
- actionsRegistry.addAction(ActionGroups.MENUITEM, delFolderMenuItem, containersNoRoot);
- actionsRegistry.addAction(ActionGroups.MENUITEM, setAsHomePage, contents);
+ actionsRegistry.addAction(ActionGroups.TOOLBAR, optionsMenuContent, all);
+ actionsRegistry.addAction(ActionGroups.TOOLBAR, folderNewMenu, containers);
+ actionsRegistry.addAction(ActionGroups.TOOLBAR, refresh, all);
+ actionsRegistry.addAction(ActionGroups.TOOLBAR, folderGoUp, contents);
+ actionsRegistry.addAction(ActionGroups.TOOLBAR, folderGoUp, containersNoRoot);
+ actionsRegistry.addAction(ActionGroups.TOOLBAR, newWikiBtn, containers);
+ actionsRegistry.addAction(ActionGroups.TOOLBAR, participateBtn, contents);
+ actionsRegistry.addAction(ActionGroups.TOOLBAR, newFolderBtn, containers);
+ actionsRegistry.addAction(ActionGroups.TOOLBAR, chatAbout, contents);
+ actionsRegistry.addAction(ActionGroups.ITEM_MENU, openContentMenuItem, contents);
+ actionsRegistry.addAction(ActionGroups.ITEM_MENU, openContentMenuItem, containersNoRoot);
+ actionsRegistry.addAction(ActionGroups.ITEM_MENU, delContentMenuItem, contents);
+ actionsRegistry.addAction(ActionGroups.ITEM_MENU, delFolderMenuItem, containersNoRoot);
+ actionsRegistry.addAction(ActionGroups.ITEM_MENU, setAsHomePage, contents);
+ newMenusRegistry.register(TYPE_FOLDER, folderNewMenu.get());
+ newMenusRegistry.register(TYPE_ROOT, folderNewMenu.get());
}
@Override
Added: trunk/src/main/java/cc/kune/wiki/client/actions/WikiFolderNewMenu.java
===================================================================
--- trunk/src/main/java/cc/kune/wiki/client/actions/WikiFolderNewMenu.java (rev 0)
+++ trunk/src/main/java/cc/kune/wiki/client/actions/WikiFolderNewMenu.java 2011-06-24 01:51:23 UTC (rev 1415)
@@ -0,0 +1,15 @@
+package cc.kune.wiki.client.actions;
+
+import cc.kune.gspace.client.actions.AbstractNewMenu;
+import cc.kune.gspace.client.actions.NewMenuProvider;
+
+import com.google.inject.Inject;
+
+public class WikiFolderNewMenu extends NewMenuProvider {
+
+ @Inject
+ public WikiFolderNewMenu(final AbstractNewMenu menu) {
+ super(menu);
+ }
+
+}
Property changes on: trunk/src/main/java/cc/kune/wiki/client/actions/WikiFolderNewMenu.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
1
0
22 Jun '11
Author: vjrj_
Date: 2011-06-22 18:39:13 +0200 (Wed, 22 Jun 2011)
New Revision: 1414
Added:
trunk/src/main/java/cc/kune/blogs/client/actions/BlogsNewMenu.java
trunk/src/main/java/cc/kune/core/client/registry/NewMenusForTypeIdsRegistry.java
trunk/src/main/java/cc/kune/docs/client/actions/DocsFolderNewMenu.java
trunk/src/main/java/cc/kune/docs/client/actions/DocsRootNewMenu.java
trunk/src/main/java/cc/kune/gspace/client/actions/AbstractNewMenu.java
trunk/src/main/java/cc/kune/gspace/client/actions/NewMenusProvider.java
Modified:
trunk/src/main/java/cc/kune/barters/client/BartersClientTool.java
trunk/src/main/java/cc/kune/blogs/client/BlogsClientTool.java
trunk/src/main/java/cc/kune/blogs/client/actions/BlogsClientActions.java
trunk/src/main/java/cc/kune/client/KuneEntryPoint.java
trunk/src/main/java/cc/kune/client/OnAppStartFactory.java
trunk/src/main/java/cc/kune/common/client/actions/gwtui/AbstractGwtMenuItemGui.java
trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtMenuGui.java
trunk/src/main/java/cc/kune/core/client/CoreGinModule.java
trunk/src/main/java/cc/kune/core/client/actions/XMLActionsParser.java
trunk/src/main/java/cc/kune/core/client/registry/ContentCapabilitiesRegistry.java
trunk/src/main/java/cc/kune/docs/client/DocsClientTool.java
trunk/src/main/java/cc/kune/docs/client/actions/DocsClientActions.java
trunk/src/main/java/cc/kune/gspace/client/actions/NewContentBtn.java
trunk/src/main/java/cc/kune/gspace/client/tool/FoldableAbstractClientTool.java
trunk/src/main/webapp/others/kune-wave-extensions.xml
Log:
New items based in wave extensions
Modified: trunk/src/main/java/cc/kune/barters/client/BartersClientTool.java
===================================================================
--- trunk/src/main/java/cc/kune/barters/client/BartersClientTool.java 2011-06-21 21:29:32 UTC (rev 1413)
+++ trunk/src/main/java/cc/kune/barters/client/BartersClientTool.java 2011-06-22 16:39:13 UTC (rev 1414)
@@ -50,7 +50,6 @@
registerRenamableTypes(TYPE_FOLDER, TYPE_BARTER);
registerTageableTypes(TYPE_BARTER);
registerTranslatableTypes(TYPE_FOLDER, TYPE_BARTER);
-
registerIcons();
}
Modified: trunk/src/main/java/cc/kune/blogs/client/BlogsClientTool.java
===================================================================
--- trunk/src/main/java/cc/kune/blogs/client/BlogsClientTool.java 2011-06-21 21:29:32 UTC (rev 1413)
+++ trunk/src/main/java/cc/kune/blogs/client/BlogsClientTool.java 2011-06-22 16:39:13 UTC (rev 1414)
@@ -51,7 +51,6 @@
registerRenamableTypes(TYPE_BLOG, TYPE_POST, TYPE_UPLOADEDFILE);
registerTageableTypes(TYPE_BLOG, TYPE_UPLOADEDFILE, TYPE_POST);
// registerTranslatableTypes();
-
registerIcons();
}
Modified: trunk/src/main/java/cc/kune/blogs/client/actions/BlogsClientActions.java
===================================================================
--- trunk/src/main/java/cc/kune/blogs/client/actions/BlogsClientActions.java 2011-06-21 21:29:32 UTC (rev 1413)
+++ trunk/src/main/java/cc/kune/blogs/client/actions/BlogsClientActions.java 2011-06-22 16:39:13 UTC (rev 1414)
@@ -26,6 +26,7 @@
import cc.kune.chat.client.actions.ChatAboutContentBtn;
import cc.kune.core.client.actions.ActionRegistryByType;
import cc.kune.core.client.i18n.I18nUITranslationService;
+import cc.kune.core.client.registry.NewMenusForTypeIdsRegistry;
import cc.kune.core.client.resources.CoreResources;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.StateManager;
@@ -55,8 +56,9 @@
final Provider<DelPostMenuItem> delContentMenuItem,
final Provider<RefreshContentMenuItem> refresh,
final Provider<ContentViewerOptionsMenu> optionsMenuContent,
- final Provider<ParticipateInContentBtn> participateBtn,
- final Provider<ChatAboutContentBtn> chatAbout, final Provider<DelBlogMenuItem> delFolderMenuItem,
+ final Provider<ParticipateInContentBtn> participateBtn, final BlogsNewMenu blogNewMenu,
+ final NewMenusForTypeIdsRegistry newMenusRegistry, final Provider<ChatAboutContentBtn> chatAbout,
+ final Provider<DelBlogMenuItem> delFolderMenuItem,
final Provider<SetAsHomePageMenuItem> setAsHomePage) {
super(session, stateManager, i18n, registry);
actionsRegistry.addAction(ActionGroups.VIEW, optionsMenuContent, all);
@@ -71,8 +73,8 @@
actionsRegistry.addAction(ActionGroups.MENUITEM, openContentMenuItem, containersNoRoot);
actionsRegistry.addAction(ActionGroups.MENUITEM, delContentMenuItem, contents);
actionsRegistry.addAction(ActionGroups.MENUITEM, delFolderMenuItem, containersNoRoot);
- // actionsRegistry.addAction(ActionGroups.MENUITEM, setAsHomePage,
- // TYPE_BLOG);
+ newMenusRegistry.register(TYPE_BLOG, blogNewMenu.get());
+ actionsRegistry.addAction(ActionGroups.VIEW, blogNewMenu, TYPE_BLOG);
}
@Override
Added: trunk/src/main/java/cc/kune/blogs/client/actions/BlogsNewMenu.java
===================================================================
--- trunk/src/main/java/cc/kune/blogs/client/actions/BlogsNewMenu.java (rev 0)
+++ trunk/src/main/java/cc/kune/blogs/client/actions/BlogsNewMenu.java 2011-06-22 16:39:13 UTC (rev 1414)
@@ -0,0 +1,15 @@
+package cc.kune.blogs.client.actions;
+
+import cc.kune.gspace.client.actions.AbstractNewMenu;
+import cc.kune.gspace.client.actions.NewMenusProvider;
+
+import com.google.inject.Inject;
+
+public class BlogsNewMenu extends NewMenusProvider {
+
+ @Inject
+ public BlogsNewMenu(final AbstractNewMenu menu) {
+ super(menu);
+ }
+
+}
Property changes on: trunk/src/main/java/cc/kune/blogs/client/actions/BlogsNewMenu.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: trunk/src/main/java/cc/kune/client/KuneEntryPoint.java
===================================================================
--- trunk/src/main/java/cc/kune/client/KuneEntryPoint.java 2011-06-21 21:29:32 UTC (rev 1413)
+++ trunk/src/main/java/cc/kune/client/KuneEntryPoint.java 2011-06-22 16:39:13 UTC (rev 1414)
@@ -91,6 +91,7 @@
ginjector.getCoreParts();
ginjector.getGSpaceParts();
ginjector.getPSpaceParts();
+ ginjector.getXmlActionsParser();
ginjector.getContentViewerSelector().init();
}
}
Modified: trunk/src/main/java/cc/kune/client/OnAppStartFactory.java
===================================================================
--- trunk/src/main/java/cc/kune/client/OnAppStartFactory.java 2011-06-21 21:29:32 UTC (rev 1413)
+++ trunk/src/main/java/cc/kune/client/OnAppStartFactory.java 2011-06-22 16:39:13 UTC (rev 1414)
@@ -19,22 +19,19 @@
*/
package cc.kune.client;
-import cc.kune.core.client.actions.XMLActionsParser;
import cc.kune.core.client.init.AppStartEvent;
import cc.kune.core.client.init.AppStartEvent.AppStartHandler;
import cc.kune.core.client.state.Session;
import com.google.inject.Inject;
-import com.google.inject.Provider;
public class OnAppStartFactory {
@Inject
- public OnAppStartFactory(final Session session, final Provider<XMLActionsParser> actionsParser) {
+ public OnAppStartFactory(final Session session) {
session.onAppStart(true, new AppStartHandler() {
@Override
public void onAppStart(final AppStartEvent event) {
- actionsParser.get();
}
});
}
Modified: trunk/src/main/java/cc/kune/common/client/actions/gwtui/AbstractGwtMenuItemGui.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/gwtui/AbstractGwtMenuItemGui.java 2011-06-21 21:29:32 UTC (rev 1413)
+++ trunk/src/main/java/cc/kune/common/client/actions/gwtui/AbstractGwtMenuItemGui.java 2011-06-22 16:39:13 UTC (rev 1414)
@@ -226,6 +226,7 @@
protected void setToolTipText(final String text) {
if (text != null) {
final KeyStroke key = (KeyStroke) descriptor.getValue(Action.ACCELERATOR_KEY);
+ // FIXME This doesn't works... (don't show the tooltip)
Tooltip.to(iconLabel, key == null ? text : text + key.toString());
layout();
}
Modified: trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtMenuGui.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtMenuGui.java 2011-06-21 21:29:32 UTC (rev 1413)
+++ trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtMenuGui.java 2011-06-22 16:39:13 UTC (rev 1414)
@@ -41,9 +41,9 @@
@Override
protected void addStyle(final String style) {
if (notStandAlone) {
- iconLabel.addStyleName(style);
+ // iconLabel.addStyleName(style);
button.addStyleName(style);
- layout();
+ // layout();
}
}
@@ -56,7 +56,7 @@
notStandAlone = !((MenuDescriptor) descriptor).isStandalone();
if (notStandAlone) {
button = new Button();
- button.setStylePrimaryName("oc-button");
+ // button.setStylePrimaryName("oc-button");
iconLabel = new IconLabel("");
final ImageResource rightIcon = ((MenuDescriptor) descriptor).getRightIcon();
if (rightIcon != null) {
Modified: trunk/src/main/java/cc/kune/core/client/CoreGinModule.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/CoreGinModule.java 2011-06-21 21:29:32 UTC (rev 1413)
+++ trunk/src/main/java/cc/kune/core/client/CoreGinModule.java 2011-06-22 16:39:13 UTC (rev 1414)
@@ -60,6 +60,7 @@
import cc.kune.core.client.notify.spiner.SpinerPresenter;
import cc.kune.core.client.notify.spiner.SpinerViewImpl;
import cc.kune.core.client.registry.ContentCapabilitiesRegistry;
+import cc.kune.core.client.registry.NewMenusForTypeIdsRegistry;
import cc.kune.core.client.sitebar.ErrorsDialog;
import cc.kune.core.client.sitebar.SiteUserOptions;
import cc.kune.core.client.sitebar.SiteUserOptionsPresenter;
@@ -195,6 +196,7 @@
eagle(TokenMatcher.class);
s(ActionRegistryByType.class);
s(ContentCapabilitiesRegistry.class);
+ s(NewMenusForTypeIdsRegistry.class);
eagle(CoreParts.class);
// SN
@@ -212,7 +214,7 @@
s(SitebarSignOutLink.class);
s(ErrorsDialog.class);
- eagle(XMLActionsParser.class);
+ s(XMLActionsParser.class);
}
}
Modified: trunk/src/main/java/cc/kune/core/client/actions/XMLActionsParser.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/actions/XMLActionsParser.java 2011-06-21 21:29:32 UTC (rev 1413)
+++ trunk/src/main/java/cc/kune/core/client/actions/XMLActionsParser.java 2011-06-22 16:39:13 UTC (rev 1414)
@@ -3,13 +3,19 @@
import java.util.HashMap;
import java.util.Map;
-import cc.kune.common.client.actions.AbstractExtendedAction;
+import cc.kune.common.client.actions.Action;
import cc.kune.common.client.actions.ActionEvent;
import cc.kune.common.client.actions.ui.descrip.GuiActionDescrip;
+import cc.kune.common.client.actions.ui.descrip.MenuDescriptor;
import cc.kune.common.client.actions.ui.descrip.MenuItemDescriptor;
+import cc.kune.common.client.errors.UIException;
+import cc.kune.common.client.notify.NotifyUser;
import cc.kune.core.client.actions.WaveExtension.Builder;
import cc.kune.core.client.errors.ErrorHandler;
+import cc.kune.core.client.registry.NewMenusForTypeIdsRegistry;
import cc.kune.core.client.rpcservices.ContentServiceAsync;
+import cc.kune.core.shared.dto.AccessRolDTO;
+import cc.kune.gspace.client.actions.ActionGroups;
import com.google.gwt.http.client.Request;
import com.google.gwt.http.client.RequestBuilder;
@@ -26,27 +32,40 @@
public class XMLActionsParser {
- public static class GadgetAction extends AbstractExtendedAction {
+ public static class GadgetAction extends RolAction {
private final Provider<ContentServiceAsync> contentService;
+ private final String gadgetName;
- @Inject
- public GadgetAction(final Provider<ContentServiceAsync> contentService) {
+ public GadgetAction(final Provider<ContentServiceAsync> contentService, final AccessRolDTO rok,
+ final boolean authNeeded, final String gadgetName, final String iconUrl) {
+ super(rok, authNeeded);
this.contentService = contentService;
+ this.gadgetName = gadgetName;
+ putValue(Action.SMALL_ICON, iconUrl);
}
@Override
public void actionPerformed(final ActionEvent event) {
+ NotifyUser.info("Created succesfully");
}
}
+ private final ActionRegistryByType actionRegistry;
+ private final Provider<ContentServiceAsync> contentService;
private final ErrorHandler errHandler;
private final Map<String, WaveExtension> extensionsMap;
+ private final NewMenusForTypeIdsRegistry newMenusRegistry;
@Inject
- public XMLActionsParser(final ErrorHandler errHandler) {
+ public XMLActionsParser(final ErrorHandler errHandler, final ActionRegistryByType actionRegistry,
+ final Provider<ContentServiceAsync> contentService,
+ final NewMenusForTypeIdsRegistry newMenusRegistry) {
this.errHandler = errHandler;
+ this.actionRegistry = actionRegistry;
+ this.contentService = contentService;
+ this.newMenusRegistry = newMenusRegistry;
extensionsMap = new HashMap<String, WaveExtension>();
// Based on:
@@ -81,7 +100,7 @@
private void parseXML(final String text) {
final Document parse = XMLParser.parse(text);
- final NodeList extensions = parse.getElementsByTagName("extensions");
+ final NodeList extensions = ((Element) parse.getElementsByTagName("extensions").item(0)).getElementsByTagName("extension");
for (int i = 0; i < extensions.getLength(); i++) {
final Element extension = (Element) extensions.item(i);
final Builder builder = new WaveExtension.Builder();
@@ -93,17 +112,40 @@
builder.installerUrl(get(extension, "installerUrl"));
extensionsMap.put(name, builder.build());
}
- final NodeList guiDescriptors = parse.getElementsByTagName("guiActionDescriptors");
+ final NodeList guiDescriptors = ((Element) parse.getElementsByTagName("guiActionDescriptors").item(0)).getElementsByTagName("guiActionDescriptor");
for (int i = 0; i < guiDescriptors.getLength(); i++) {
- final Element extension = (Element) extensions.item(i);
- final Provider<GuiActionDescrip> provider = new Provider<GuiActionDescrip>() {
- @Override
- public GuiActionDescrip get() {
- // TODO Auto-generated method stub
- new MenuItemDescriptor(null);
- return null;
+ final Element guiDescriptor = (Element) guiDescriptors.item(i);
+ if (Boolean.parseBoolean(get(guiDescriptor, "enabled"))) {
+ final String extensionName = get(guiDescriptor, "extensionName");
+ final WaveExtension extension = extensionsMap.get(extensionName);
+ if (extension == null) {
+ throw new UIException("Undefined extension " + extensionName);
}
- };
+ final String name = get(guiDescriptor, "name");
+ final String description = get(guiDescriptor, "description");
+ final AccessRolDTO rol = AccessRolDTO.valueOf(get(guiDescriptor, "rolRequired"));
+ final GadgetAction action = new GadgetAction(contentService, rol, Boolean.parseBoolean(get(
+ guiDescriptor, "authNeed")), extension.getGadgetUrl(), extension.getIconUrl());
+ final NodeList typeIds = ((Element) guiDescriptor.getElementsByTagName("typeIds").item(0)).getElementsByTagName("typeId");
+ final int length = typeIds.getLength();
+
+ for (int j = 0; j < length; j++) {
+ final Element typeIdElem = (Element) typeIds.item(j);
+ final String typeId = typeIdElem.getFirstChild().getNodeValue();
+ final MenuDescriptor menu = newMenusRegistry.get(typeId);
+ assert menu != null;
+ final Provider<GuiActionDescrip> menuItemProvider = new Provider<GuiActionDescrip>() {
+ @Override
+ public GuiActionDescrip get() {
+ final MenuItemDescriptor menuItem = new MenuItemDescriptor(action);
+ menuItem.withText(name).withToolTip(description);
+ menuItem.setParent(menu);
+ return menuItem;
+ }
+ };
+ actionRegistry.addAction(ActionGroups.VIEW, menuItemProvider, typeId);
+ }
+ }
}
}
}
Modified: trunk/src/main/java/cc/kune/core/client/registry/ContentCapabilitiesRegistry.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/registry/ContentCapabilitiesRegistry.java 2011-06-21 21:29:32 UTC (rev 1413)
+++ trunk/src/main/java/cc/kune/core/client/registry/ContentCapabilitiesRegistry.java 2011-06-22 16:39:13 UTC (rev 1414)
@@ -33,6 +33,7 @@
private final EmptyMessagesRegistry emptyMessagesRegistry;
private final IconsRegistry iconsRegistry;
private final LicensableRegistry licensable;
+ private final NewMenusForTypeIdsRegistry newMenus;
private final PublishModerableRegistry publishModerable;
private final RateableRegistry rateable;
private final RenamableRegistry renamable;
@@ -44,16 +45,17 @@
@Inject
public ContentCapabilitiesRegistry(final AuthorableRegistry authorableRegistry,
- final AclEditableRegistry aclEditableRegistry, final IconsRegistry iconsRegistry,
- final CanBeHomepageRegistry canBeHomepage, final ComentableRegistry comentable,
- final DragableRegistry dragable, final DropableRegistry dropable,
- final EmailSubscribeAbleRegistry emailSubscribeAble, final LicensableRegistry licensable,
- final PublishModerableRegistry publishModerable, final RateableRegistry rateable,
- final TageableRegistry tageable, final RenamableRegistry renamable,
- final TranslatableRegistry translatable, final VersionableRegistry versionable,
- final EmptyMessagesRegistry emptyMessagesRegistry, final XmppComentableRegistry xmppComentable,
- final XmppNotifyCapableRegistry xmppNotifyCapable) {
+ final NewMenusForTypeIdsRegistry newMenus, final AclEditableRegistry aclEditableRegistry,
+ final IconsRegistry iconsRegistry, final CanBeHomepageRegistry canBeHomepage,
+ final ComentableRegistry comentable, final DragableRegistry dragable,
+ final DropableRegistry dropable, final EmailSubscribeAbleRegistry emailSubscribeAble,
+ final LicensableRegistry licensable, final PublishModerableRegistry publishModerable,
+ final RateableRegistry rateable, final TageableRegistry tageable,
+ final RenamableRegistry renamable, final TranslatableRegistry translatable,
+ final VersionableRegistry versionable, final EmptyMessagesRegistry emptyMessagesRegistry,
+ final XmppComentableRegistry xmppComentable, final XmppNotifyCapableRegistry xmppNotifyCapable) {
this.authorable = authorableRegistry;
+ this.newMenus = newMenus;
this.aclEditable = aclEditableRegistry;
this.iconsRegistry = iconsRegistry;
this.canBeHomepage = canBeHomepage;
@@ -117,6 +119,10 @@
return licensable;
}
+ public NewMenusForTypeIdsRegistry getNewMenus() {
+ return newMenus;
+ }
+
public PublishModerableRegistry getPublishModerable() {
return publishModerable;
}
Added: trunk/src/main/java/cc/kune/core/client/registry/NewMenusForTypeIdsRegistry.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/registry/NewMenusForTypeIdsRegistry.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/registry/NewMenusForTypeIdsRegistry.java 2011-06-22 16:39:13 UTC (rev 1414)
@@ -0,0 +1,45 @@
+/*
+ *
+ * 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.core.client.registry;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import cc.kune.common.client.actions.ui.descrip.MenuDescriptor;
+
+public class NewMenusForTypeIdsRegistry {
+ private final Map<String, MenuDescriptor> registry;
+
+ public NewMenusForTypeIdsRegistry() {
+ registry = new HashMap<String, MenuDescriptor>();
+ }
+
+ public MenuDescriptor get(final String typeId) {
+ return registry.get(typeId);
+ }
+
+ public int length() {
+ return registry.size();
+ }
+
+ public void register(final String contentTypeId, final MenuDescriptor menu) {
+ registry.put(contentTypeId, menu);
+ }
+}
Property changes on: trunk/src/main/java/cc/kune/core/client/registry/NewMenusForTypeIdsRegistry.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: trunk/src/main/java/cc/kune/docs/client/DocsClientTool.java
===================================================================
--- trunk/src/main/java/cc/kune/docs/client/DocsClientTool.java 2011-06-21 21:29:32 UTC (rev 1413)
+++ trunk/src/main/java/cc/kune/docs/client/DocsClientTool.java 2011-06-22 16:39:13 UTC (rev 1414)
@@ -51,7 +51,6 @@
registerRenamableTypes(TYPE_DOCUMENT, TYPE_FOLDER, TYPE_UPLOADEDFILE);
registerTageableTypes(TYPE_DOCUMENT, TYPE_UPLOADEDFILE);
registerTranslatableTypes(TYPE_DOCUMENT, TYPE_FOLDER);
-
registerIcons();
}
Modified: trunk/src/main/java/cc/kune/docs/client/actions/DocsClientActions.java
===================================================================
--- trunk/src/main/java/cc/kune/docs/client/actions/DocsClientActions.java 2011-06-21 21:29:32 UTC (rev 1413)
+++ trunk/src/main/java/cc/kune/docs/client/actions/DocsClientActions.java 2011-06-22 16:39:13 UTC (rev 1414)
@@ -26,6 +26,7 @@
import cc.kune.chat.client.actions.ChatAboutContentBtn;
import cc.kune.core.client.actions.ActionRegistryByType;
import cc.kune.core.client.i18n.I18nUITranslationService;
+import cc.kune.core.client.registry.NewMenusForTypeIdsRegistry;
import cc.kune.core.client.resources.CoreResources;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.StateManager;
@@ -46,6 +47,7 @@
final String[] containersNoRoot = { TYPE_FOLDER };
final String[] contents = { TYPE_DOCUMENT, TYPE_UPLOADEDFILE };
final String[] contentsModerated = { TYPE_DOCUMENT, TYPE_UPLOADEDFILE };
+ final String[] root = { TYPE_ROOT };
@Inject
public DocsClientActions(final I18nUITranslationService i18n, final Session session,
@@ -57,7 +59,8 @@
final Provider<ParticipateInContentBtn> participateBtn,
final Provider<DelFolderMenuItem> delFolderMenuItem,
final Provider<ChatAboutContentBtn> chatAbout, final Provider<RefreshContentMenuItem> refresh,
- final Provider<SetAsHomePageMenuItem> setAsHomePage) {
+ final Provider<SetAsHomePageMenuItem> setAsHomePage, final DocsRootNewMenu rootNewMenu,
+ final NewMenusForTypeIdsRegistry newMenusRegistry, final DocsFolderNewMenu folderNewMenu) {
super(session, stateManager, i18n, registry);
actionsRegistry.addAction(ActionGroups.VIEW, optionsMenuContent, all);
actionsRegistry.addAction(ActionGroups.VIEW, refresh, all);
@@ -72,6 +75,10 @@
actionsRegistry.addAction(ActionGroups.MENUITEM, delContentMenuItem, contents);
actionsRegistry.addAction(ActionGroups.MENUITEM, delFolderMenuItem, containersNoRoot);
actionsRegistry.addAction(ActionGroups.MENUITEM, setAsHomePage, contents);
+ newMenusRegistry.register(TYPE_FOLDER, folderNewMenu.get());
+ newMenusRegistry.register(TYPE_ROOT, rootNewMenu.get());
+ actionsRegistry.addAction(ActionGroups.VIEW, folderNewMenu, containersNoRoot);
+ actionsRegistry.addAction(ActionGroups.VIEW, rootNewMenu, root);
}
@Override
Added: trunk/src/main/java/cc/kune/docs/client/actions/DocsFolderNewMenu.java
===================================================================
--- trunk/src/main/java/cc/kune/docs/client/actions/DocsFolderNewMenu.java (rev 0)
+++ trunk/src/main/java/cc/kune/docs/client/actions/DocsFolderNewMenu.java 2011-06-22 16:39:13 UTC (rev 1414)
@@ -0,0 +1,15 @@
+package cc.kune.docs.client.actions;
+
+import cc.kune.gspace.client.actions.AbstractNewMenu;
+import cc.kune.gspace.client.actions.NewMenusProvider;
+
+import com.google.inject.Inject;
+
+public class DocsFolderNewMenu extends NewMenusProvider {
+
+ @Inject
+ public DocsFolderNewMenu(final AbstractNewMenu menu) {
+ super(menu);
+ }
+
+}
Property changes on: trunk/src/main/java/cc/kune/docs/client/actions/DocsFolderNewMenu.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/src/main/java/cc/kune/docs/client/actions/DocsRootNewMenu.java
===================================================================
--- trunk/src/main/java/cc/kune/docs/client/actions/DocsRootNewMenu.java (rev 0)
+++ trunk/src/main/java/cc/kune/docs/client/actions/DocsRootNewMenu.java 2011-06-22 16:39:13 UTC (rev 1414)
@@ -0,0 +1,15 @@
+package cc.kune.docs.client.actions;
+
+import cc.kune.gspace.client.actions.AbstractNewMenu;
+import cc.kune.gspace.client.actions.NewMenusProvider;
+
+import com.google.inject.Inject;
+
+public class DocsRootNewMenu extends NewMenusProvider {
+
+ @Inject
+ public DocsRootNewMenu(final AbstractNewMenu menu) {
+ super(menu);
+ }
+
+}
Property changes on: trunk/src/main/java/cc/kune/docs/client/actions/DocsRootNewMenu.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/src/main/java/cc/kune/gspace/client/actions/AbstractNewMenu.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/actions/AbstractNewMenu.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/actions/AbstractNewMenu.java 2011-06-22 16:39:13 UTC (rev 1414)
@@ -0,0 +1,47 @@
+/*
+ *
+ * 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.gspace.client.actions;
+
+import cc.kune.common.client.actions.ui.descrip.MenuDescriptor;
+import cc.kune.core.client.resources.CoreResources;
+import cc.kune.core.client.state.Session;
+import cc.kune.core.client.state.UserSignInOrSignOutEvent;
+import cc.kune.core.client.state.UserSignInOrSignOutEvent.UserSignInOrSignOutHandler;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+
+import com.google.inject.Inject;
+
+public class AbstractNewMenu extends MenuDescriptor {
+
+ @Inject
+ public AbstractNewMenu(final CoreResources res, final I18nTranslationService i18n,
+ final Session session) {
+ super();
+ this.withIcon(res.arrowdownsitebar()).withStyles("k-button, k-btn, k-5corners, k-def-docbtn, k-fr").withText(
+ "New");
+ session.onUserSignInOrSignOut(true, new UserSignInOrSignOutHandler() {
+ @Override
+ public void onUserSignInOrSignOut(final UserSignInOrSignOutEvent event) {
+ AbstractNewMenu.this.setVisible(event.isLogged());
+ }
+ });
+ }
+
+}
Property changes on: trunk/src/main/java/cc/kune/gspace/client/actions/AbstractNewMenu.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: trunk/src/main/java/cc/kune/gspace/client/actions/NewContentBtn.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/actions/NewContentBtn.java 2011-06-21 21:29:32 UTC (rev 1413)
+++ trunk/src/main/java/cc/kune/gspace/client/actions/NewContentBtn.java 2011-06-22 16:39:13 UTC (rev 1414)
@@ -20,8 +20,6 @@
package cc.kune.gspace.client.actions;
import cc.kune.common.client.actions.ActionEvent;
-import cc.kune.common.client.actions.KeyStroke;
-import cc.kune.common.client.actions.Shortcut;
import cc.kune.common.client.actions.ui.descrip.ButtonDescriptor;
import cc.kune.common.client.notify.NotifyUser;
import cc.kune.common.client.shortcuts.GlobalShortcutRegister;
@@ -96,10 +94,10 @@
// The name given to this new content
action.putValue(NEW_NAME, newName);
action.putValue(ID, id);
- final KeyStroke shortcut = Shortcut.getShortcut(false, true, false, false, Character.valueOf('N'));
- shorcutReg.put(shortcut, action);
- this.withText(title).withToolTip(tooltip).withIcon(icon).withShortcut(shortcut).withStyles(
- "k-def-docbtn, k-fr");
+ // final KeyStroke shortcut = Shortcut.getShortcut(false, true, false,
+ // false, Character.valueOf('N'));
+ // shorcutReg.put(shortcut, action);
+ this.withText(title).withToolTip(tooltip).withIcon(icon).withStyles("k-def-docbtn, k-fr");
}
}
Added: trunk/src/main/java/cc/kune/gspace/client/actions/NewMenusProvider.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/actions/NewMenusProvider.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/actions/NewMenusProvider.java 2011-06-22 16:39:13 UTC (rev 1414)
@@ -0,0 +1,20 @@
+package cc.kune.gspace.client.actions;
+
+import cc.kune.common.client.actions.ui.descrip.MenuDescriptor;
+
+import com.google.inject.Provider;
+
+public abstract class NewMenusProvider implements Provider<MenuDescriptor> {
+
+ private final AbstractNewMenu menu;
+
+ public NewMenusProvider(final AbstractNewMenu menu) {
+ this.menu = menu;
+ }
+
+ @Override
+ public MenuDescriptor get() {
+ return menu;
+ }
+
+}
Property changes on: trunk/src/main/java/cc/kune/gspace/client/actions/NewMenusProvider.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: trunk/src/main/java/cc/kune/gspace/client/tool/FoldableAbstractClientTool.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/tool/FoldableAbstractClientTool.java 2011-06-21 21:29:32 UTC (rev 1413)
+++ trunk/src/main/java/cc/kune/gspace/client/tool/FoldableAbstractClientTool.java 2011-06-22 16:39:13 UTC (rev 1414)
@@ -19,6 +19,7 @@
*/
package cc.kune.gspace.client.tool;
+import cc.kune.common.client.actions.ui.descrip.MenuDescriptor;
import cc.kune.core.client.registry.ContentCapabilitiesRegistry;
import cc.kune.core.shared.dto.BasicMimeTypeDTO;
import cc.kune.gspace.client.tool.selector.ToolSelector;
@@ -74,6 +75,10 @@
contentCapabilitiesRegistry.getLicensable().register(typeIds);
}
+ public void registerNewMenu(final String typeId, final MenuDescriptor menu) {
+ contentCapabilitiesRegistry.getNewMenus().register(typeId, menu);
+ }
+
protected void registerPublishModerableTypes(final String... typeIds) {
contentCapabilitiesRegistry.getPublishModerable().register(typeIds);
}
Modified: trunk/src/main/webapp/others/kune-wave-extensions.xml
===================================================================
--- trunk/src/main/webapp/others/kune-wave-extensions.xml 2011-06-21 21:29:32 UTC (rev 1413)
+++ trunk/src/main/webapp/others/kune-wave-extensions.xml 2011-06-22 16:39:13 UTC (rev 1414)
@@ -7,6 +7,15 @@
<extensions>
<extension>
+ <name>pollo</name>
+ <installerUrl>http://wavepollo.appspot.com/pollo.xml
+ </installerUrl>
+ <gadgetUrl>http://wavepollo.appspot.com/wavepollo/com.appspot.wavepollo.client.PolloWaā¦
+ </gadgetUrl>
+ <iconUrl>https://flinz-pollo.appspot.com/document_graph.png</iconUrl>
+ <iconCss></iconCss>
+ </extension>
+ <extension>
<name>massmob</name>
<installerUrl>http://mass-mob.appspot.com/massmob/massmob-extension.xml
</installerUrl>
@@ -24,13 +33,34 @@
<guiActionDescriptor>
<extensionName>massmob</extensionName>
- <name>Create a meeting</name>
+ <name>New meeting</name>
<description>Call and speed-up of events as meeting, smartmobs,
flashmobs, protest demonstrations, etc.</description>
<enabled>true</enabled>
<typeIds>
<typeId>docs.folder</typeId>
<typeId>docs.root</typeId>
+ <typeId>blogs.blog</typeId>
+ </typeIds>
+ <name></name>
+ <location>
+ <rol>
+ <!-- Administrator, Editor, Viewer -->
+ <rolRequired>Editor</rolRequired>
+ <authNeed>true</authNeed>
+ </rol>
+ </location>
+ <!-- only for new waves: anyone, onlymembers, onlyadmins, ask -->
+ <participants>ask</participants>
+ </guiActionDescriptor>
+
+ <guiActionDescriptor>
+ <extensionName>pollo</extensionName>
+ <name>New poll</name>
+ <description>Make some poll (allow single and multiple polls))</description>
+ <enabled>true</enabled>
+ <typeIds>
+ <typeId>docs.folder</typeId>
<typeId>docs.root</typeId>
<typeId>blogs.blog</typeId>
</typeIds>
@@ -51,7 +81,7 @@
<name>Add a meeting</name>
<description>Call and speed-up of events as meeting, smartmobs,
flashmobs, protest demonstrations, etc.</description>
- <enabled>true</enabled>
+ <enabled>false</enabled>
<typeIds>
<typeId>docs.doc</typeId>
</typeIds>
1
0
r1413 - in trunk/src/main: java/cc/kune/core/server/manager/file java/cc/kune/gspace/client java/cc/kune/gspace/client/options/license java/cc/kune/gspace/client/options/logo java/cc/kune/gspace/client/options/style java/cc/kune/gspace/client/options/tools java/cc/kune/gspace/client/themes resources
by Vicente J. Ruiz Jurado 21 Jun '11
by Vicente J. Ruiz Jurado 21 Jun '11
21 Jun '11
Author: vjrj_
Date: 2011-06-21 23:29:32 +0200 (Tue, 21 Jun 2011)
New Revision: 1413
Added:
trunk/src/main/java/cc/kune/gspace/client/options/license/EntityOptDefLicense.java
trunk/src/main/java/cc/kune/gspace/client/options/license/EntityOptDefLicensePanel.java
trunk/src/main/java/cc/kune/gspace/client/options/license/EntityOptDefLicensePresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/license/EntityOptDefLicenseView.java
trunk/src/main/java/cc/kune/gspace/client/options/license/GroupOptDefLicense.java
trunk/src/main/java/cc/kune/gspace/client/options/license/GroupOptDefLicensePanel.java
trunk/src/main/java/cc/kune/gspace/client/options/license/GroupOptDefLicensePresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/license/GroupOptDefLicenseView.java
trunk/src/main/java/cc/kune/gspace/client/options/license/UserOptDefLicense.java
trunk/src/main/java/cc/kune/gspace/client/options/license/UserOptDefLicensePanel.java
trunk/src/main/java/cc/kune/gspace/client/options/license/UserOptDefLicensePresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/license/UserOptDefLicenseView.java
trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptLogo.java
trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptLogoPanel.java
trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptLogoPresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptLogoView.java
trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptUploadButton.java
trunk/src/main/java/cc/kune/gspace/client/options/logo/GroupOptLogo.java
trunk/src/main/java/cc/kune/gspace/client/options/logo/GroupOptLogoPanel.java
trunk/src/main/java/cc/kune/gspace/client/options/logo/GroupOptLogoPresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/logo/GroupOptLogoView.java
trunk/src/main/java/cc/kune/gspace/client/options/logo/UserOptLogo.java
trunk/src/main/java/cc/kune/gspace/client/options/logo/UserOptLogoPanel.java
trunk/src/main/java/cc/kune/gspace/client/options/logo/UserOptLogoPresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/logo/UserOptLogoView.java
trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptStyle.java
trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptStylePanel.java
trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptStylePresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptStyleView.java
trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptStyle.java
trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptStylePanel.java
trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptStylePresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptStyleView.java
trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptStyle.java
trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptStylePanel.java
trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptStylePresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptStyleView.java
trunk/src/main/java/cc/kune/gspace/client/options/tools/EntityOptTools.java
trunk/src/main/java/cc/kune/gspace/client/options/tools/EntityOptToolsPanel.java
trunk/src/main/java/cc/kune/gspace/client/options/tools/EntityOptToolsPresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/tools/EntityOptToolsView.java
trunk/src/main/java/cc/kune/gspace/client/options/tools/GroupOptTools.java
trunk/src/main/java/cc/kune/gspace/client/options/tools/GroupOptToolsPanel.java
trunk/src/main/java/cc/kune/gspace/client/options/tools/GroupOptToolsPresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/tools/GroupOptToolsView.java
trunk/src/main/java/cc/kune/gspace/client/options/tools/UserOptTools.java
trunk/src/main/java/cc/kune/gspace/client/options/tools/UserOptToolsPanel.java
trunk/src/main/java/cc/kune/gspace/client/options/tools/UserOptToolsPresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/tools/UserOptToolsView.java
Removed:
trunk/src/main/java/cc/kune/gspace/client/options/license/EntityOptionsDefLicense.java
trunk/src/main/java/cc/kune/gspace/client/options/license/EntityOptionsDefLicensePanel.java
trunk/src/main/java/cc/kune/gspace/client/options/license/EntityOptionsDefLicensePresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/license/EntityOptionsDefLicenseView.java
trunk/src/main/java/cc/kune/gspace/client/options/license/GroupOptionsDefLicense.java
trunk/src/main/java/cc/kune/gspace/client/options/license/GroupOptionsDefLicensePanel.java
trunk/src/main/java/cc/kune/gspace/client/options/license/GroupOptionsDefLicensePresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/license/GroupOptionsDefLicenseView.java
trunk/src/main/java/cc/kune/gspace/client/options/license/UserOptionsDefLicense.java
trunk/src/main/java/cc/kune/gspace/client/options/license/UserOptionsDefLicensePanel.java
trunk/src/main/java/cc/kune/gspace/client/options/license/UserOptionsDefLicensePresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/license/UserOptionsDefLicenseView.java
trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptionsLogo.java
trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptionsLogoPanel.java
trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptionsLogoPresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptionsLogoView.java
trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptionsUploadButton.java
trunk/src/main/java/cc/kune/gspace/client/options/logo/GroupOptionsLogo.java
trunk/src/main/java/cc/kune/gspace/client/options/logo/GroupOptionsLogoPanel.java
trunk/src/main/java/cc/kune/gspace/client/options/logo/GroupOptionsLogoPresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/logo/GroupOptionsLogoView.java
trunk/src/main/java/cc/kune/gspace/client/options/logo/UserOptionsLogo.java
trunk/src/main/java/cc/kune/gspace/client/options/logo/UserOptionsLogoPanel.java
trunk/src/main/java/cc/kune/gspace/client/options/logo/UserOptionsLogoPresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/logo/UserOptionsLogoView.java
trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConf.java
trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConfPanel.java
trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConfPresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConfView.java
trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsStyleConf.java
trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsStyleConfPanel.java
trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsStyleConfPresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsStyleConfView.java
trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsStyleConf.java
trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsStyleConfPanel.java
trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsStyleConfPresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsStyleConfView.java
trunk/src/main/java/cc/kune/gspace/client/options/tools/EntityOptionsToolsConf.java
trunk/src/main/java/cc/kune/gspace/client/options/tools/EntityOptionsToolsConfPanel.java
trunk/src/main/java/cc/kune/gspace/client/options/tools/EntityOptionsToolsConfPresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/tools/EntityOptionsToolsConfView.java
trunk/src/main/java/cc/kune/gspace/client/options/tools/GroupOptionsToolsConf.java
trunk/src/main/java/cc/kune/gspace/client/options/tools/GroupOptionsToolsConfPanel.java
trunk/src/main/java/cc/kune/gspace/client/options/tools/GroupOptionsToolsConfPresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/tools/GroupOptionsToolsConfView.java
trunk/src/main/java/cc/kune/gspace/client/options/tools/UserOptionsToolsConf.java
trunk/src/main/java/cc/kune/gspace/client/options/tools/UserOptionsToolsConfPanel.java
trunk/src/main/java/cc/kune/gspace/client/options/tools/UserOptionsToolsConfPresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/tools/UserOptionsToolsConfView.java
Modified:
trunk/src/main/java/cc/kune/core/server/manager/file/EntityBackgroundUploadManager.java
trunk/src/main/java/cc/kune/gspace/client/GSpaceGinModule.java
trunk/src/main/java/cc/kune/gspace/client/GSpaceParts.java
trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityUploaderForm.java
trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeSelectorPresenter.java
trunk/src/main/resources/kune.properties
Log:
Background management (done)
Modified: trunk/src/main/java/cc/kune/core/server/manager/file/EntityBackgroundUploadManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/file/EntityBackgroundUploadManager.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/core/server/manager/file/EntityBackgroundUploadManager.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -96,8 +96,8 @@
groupManager.setGroupBackgroundImage(group, filenameUTF8, mimeTypeS);
} catch (final Exception e) {
- return i18n.t("Error uploading file");
+ return i18n.t("Error uploading background");
}
- return i18n.t("Success uploading");
+ return i18n.t("Backgroup changed");
}
}
Modified: trunk/src/main/java/cc/kune/gspace/client/GSpaceGinModule.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/GSpaceGinModule.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/GSpaceGinModule.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -47,38 +47,38 @@
import cc.kune.gspace.client.options.UserOptionsPanel;
import cc.kune.gspace.client.options.UserOptionsPresenter;
import cc.kune.gspace.client.options.UserOptionsView;
-import cc.kune.gspace.client.options.license.GroupOptionsDefLicense;
-import cc.kune.gspace.client.options.license.GroupOptionsDefLicensePanel;
-import cc.kune.gspace.client.options.license.GroupOptionsDefLicensePresenter;
-import cc.kune.gspace.client.options.license.GroupOptionsDefLicenseView;
-import cc.kune.gspace.client.options.license.UserOptionsDefLicense;
-import cc.kune.gspace.client.options.license.UserOptionsDefLicensePanel;
-import cc.kune.gspace.client.options.license.UserOptionsDefLicensePresenter;
-import cc.kune.gspace.client.options.license.UserOptionsDefLicenseView;
-import cc.kune.gspace.client.options.logo.GroupOptionsLogo;
-import cc.kune.gspace.client.options.logo.GroupOptionsLogoPanel;
-import cc.kune.gspace.client.options.logo.GroupOptionsLogoPresenter;
-import cc.kune.gspace.client.options.logo.GroupOptionsLogoView;
-import cc.kune.gspace.client.options.logo.UserOptionsLogo;
-import cc.kune.gspace.client.options.logo.UserOptionsLogoPanel;
-import cc.kune.gspace.client.options.logo.UserOptionsLogoPresenter;
-import cc.kune.gspace.client.options.logo.UserOptionsLogoView;
-import cc.kune.gspace.client.options.style.GroupOptionsStyleConf;
-import cc.kune.gspace.client.options.style.GroupOptionsStyleConfPanel;
-import cc.kune.gspace.client.options.style.GroupOptionsStyleConfPresenter;
-import cc.kune.gspace.client.options.style.GroupOptionsStyleConfView;
-import cc.kune.gspace.client.options.style.UserOptionsStyleConf;
-import cc.kune.gspace.client.options.style.UserOptionsStyleConfPanel;
-import cc.kune.gspace.client.options.style.UserOptionsStyleConfPresenter;
-import cc.kune.gspace.client.options.style.UserOptionsStyleConfView;
-import cc.kune.gspace.client.options.tools.GroupOptionsToolsConf;
-import cc.kune.gspace.client.options.tools.GroupOptionsToolsConfPanel;
-import cc.kune.gspace.client.options.tools.GroupOptionsToolsConfPresenter;
-import cc.kune.gspace.client.options.tools.GroupOptionsToolsConfView;
-import cc.kune.gspace.client.options.tools.UserOptionsToolsConf;
-import cc.kune.gspace.client.options.tools.UserOptionsToolsConfPanel;
-import cc.kune.gspace.client.options.tools.UserOptionsToolsConfPresenter;
-import cc.kune.gspace.client.options.tools.UserOptionsToolsConfView;
+import cc.kune.gspace.client.options.license.GroupOptDefLicense;
+import cc.kune.gspace.client.options.license.GroupOptDefLicensePanel;
+import cc.kune.gspace.client.options.license.GroupOptDefLicensePresenter;
+import cc.kune.gspace.client.options.license.GroupOptDefLicenseView;
+import cc.kune.gspace.client.options.license.UserOptDefLicense;
+import cc.kune.gspace.client.options.license.UserOptDefLicensePanel;
+import cc.kune.gspace.client.options.license.UserOptDefLicensePresenter;
+import cc.kune.gspace.client.options.license.UserOptDefLicenseView;
+import cc.kune.gspace.client.options.logo.GroupOptLogo;
+import cc.kune.gspace.client.options.logo.GroupOptLogoPanel;
+import cc.kune.gspace.client.options.logo.GroupOptLogoPresenter;
+import cc.kune.gspace.client.options.logo.GroupOptLogoView;
+import cc.kune.gspace.client.options.logo.UserOptLogo;
+import cc.kune.gspace.client.options.logo.UserOptLogoPanel;
+import cc.kune.gspace.client.options.logo.UserOptLogoPresenter;
+import cc.kune.gspace.client.options.logo.UserOptLogoView;
+import cc.kune.gspace.client.options.style.GroupOptStyle;
+import cc.kune.gspace.client.options.style.GroupOptStylePanel;
+import cc.kune.gspace.client.options.style.GroupOptStylePresenter;
+import cc.kune.gspace.client.options.style.GroupOptStyleView;
+import cc.kune.gspace.client.options.style.UserOptStyle;
+import cc.kune.gspace.client.options.style.UserOptStylePanel;
+import cc.kune.gspace.client.options.style.UserOptStylePresenter;
+import cc.kune.gspace.client.options.style.UserOptStyleView;
+import cc.kune.gspace.client.options.tools.GroupOptTools;
+import cc.kune.gspace.client.options.tools.GroupOptToolsPanel;
+import cc.kune.gspace.client.options.tools.GroupOptToolsPresenter;
+import cc.kune.gspace.client.options.tools.GroupOptToolsView;
+import cc.kune.gspace.client.options.tools.UserOptTools;
+import cc.kune.gspace.client.options.tools.UserOptToolsPanel;
+import cc.kune.gspace.client.options.tools.UserOptToolsPresenter;
+import cc.kune.gspace.client.options.tools.UserOptToolsView;
import cc.kune.gspace.client.style.GSpaceBackManager;
import cc.kune.gspace.client.style.GSpaceBackManagerImpl;
import cc.kune.gspace.client.tags.TagsSummaryPanel;
@@ -134,23 +134,23 @@
s(UserOptionsCollection.class);
s(GroupOptionsCollection.class);
- s(GroupOptionsDefLicense.class, GroupOptionsDefLicensePresenter.class);
- s(GroupOptionsDefLicenseView.class, GroupOptionsDefLicensePanel.class);
- s(GroupOptionsStyleConf.class, GroupOptionsStyleConfPresenter.class);
- s(GroupOptionsStyleConfView.class, GroupOptionsStyleConfPanel.class);
- s(GroupOptionsLogo.class, GroupOptionsLogoPresenter.class);
- s(GroupOptionsLogoView.class, GroupOptionsLogoPanel.class);
- s(GroupOptionsToolsConf.class, GroupOptionsToolsConfPresenter.class);
- s(GroupOptionsToolsConfView.class, GroupOptionsToolsConfPanel.class);
+ s(GroupOptDefLicense.class, GroupOptDefLicensePresenter.class);
+ s(GroupOptDefLicenseView.class, GroupOptDefLicensePanel.class);
+ s(GroupOptStyle.class, GroupOptStylePresenter.class);
+ s(GroupOptStyleView.class, GroupOptStylePanel.class);
+ s(GroupOptLogo.class, GroupOptLogoPresenter.class);
+ s(GroupOptLogoView.class, GroupOptLogoPanel.class);
+ s(GroupOptTools.class, GroupOptToolsPresenter.class);
+ s(GroupOptToolsView.class, GroupOptToolsPanel.class);
- s(UserOptionsDefLicense.class, UserOptionsDefLicensePresenter.class);
- s(UserOptionsDefLicenseView.class, UserOptionsDefLicensePanel.class);
- s(UserOptionsStyleConf.class, UserOptionsStyleConfPresenter.class);
- s(UserOptionsStyleConfView.class, UserOptionsStyleConfPanel.class);
- s(UserOptionsLogo.class, UserOptionsLogoPresenter.class);
- s(UserOptionsLogoView.class, UserOptionsLogoPanel.class);
- s(UserOptionsToolsConf.class, UserOptionsToolsConfPresenter.class);
- s(UserOptionsToolsConfView.class, UserOptionsToolsConfPanel.class);
+ s(UserOptDefLicense.class, UserOptDefLicensePresenter.class);
+ s(UserOptDefLicenseView.class, UserOptDefLicensePanel.class);
+ s(UserOptStyle.class, UserOptStylePresenter.class);
+ s(UserOptStyleView.class, UserOptStylePanel.class);
+ s(UserOptLogo.class, UserOptLogoPresenter.class);
+ s(UserOptLogoView.class, UserOptLogoPanel.class);
+ s(UserOptTools.class, UserOptToolsPresenter.class);
+ s(UserOptToolsView.class, UserOptToolsPanel.class);
s(GSpaceBackManager.class, GSpaceBackManagerImpl.class);
s(GSpaceThemeSelectorPresenter.class);
Modified: trunk/src/main/java/cc/kune/gspace/client/GSpaceParts.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/GSpaceParts.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/GSpaceParts.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -27,14 +27,14 @@
import cc.kune.gspace.client.options.GroupOptionsCollection;
import cc.kune.gspace.client.options.UserOptions;
import cc.kune.gspace.client.options.UserOptionsCollection;
-import cc.kune.gspace.client.options.license.GroupOptionsDefLicense;
-import cc.kune.gspace.client.options.license.UserOptionsDefLicense;
-import cc.kune.gspace.client.options.logo.GroupOptionsLogo;
-import cc.kune.gspace.client.options.logo.UserOptionsLogo;
-import cc.kune.gspace.client.options.style.GroupOptionsStyleConf;
-import cc.kune.gspace.client.options.style.UserOptionsStyleConf;
-import cc.kune.gspace.client.options.tools.GroupOptionsToolsConf;
-import cc.kune.gspace.client.options.tools.UserOptionsToolsConf;
+import cc.kune.gspace.client.options.license.GroupOptDefLicense;
+import cc.kune.gspace.client.options.license.UserOptDefLicense;
+import cc.kune.gspace.client.options.logo.GroupOptLogo;
+import cc.kune.gspace.client.options.logo.UserOptLogo;
+import cc.kune.gspace.client.options.style.GroupOptStyle;
+import cc.kune.gspace.client.options.style.UserOptStyle;
+import cc.kune.gspace.client.options.tools.GroupOptTools;
+import cc.kune.gspace.client.options.tools.UserOptTools;
import cc.kune.gspace.client.tags.TagsSummaryPresenter;
import cc.kune.gspace.client.themes.GSpaceThemeManager;
import cc.kune.gspace.client.tool.selector.ToolSelector;
@@ -55,11 +55,11 @@
final Provider<NoHomePageViewer> noHome, final Provider<ContentViewerPresenter> docsViewer,
final Provider<FolderViewerPresenter> folderViewer, final Provider<GroupOptions> go,
final Provider<UserOptions> uo, final Provider<GroupOptionsCollection> goc,
- final Provider<UserOptionsCollection> uoc, final Provider<GroupOptionsDefLicense> gdl,
- final Provider<GroupOptionsStyleConf> gps, final Provider<GroupOptionsLogo> gl,
- final Provider<GroupOptionsToolsConf> gtc, final Provider<UserOptionsDefLicense> udl,
- final Provider<UserOptionsStyleConf> ups, final Provider<UserOptionsLogo> ul,
- final Provider<UserOptionsToolsConf> utc, final Provider<SitebarSearchPresenter> siteSearch) {
+ final Provider<UserOptionsCollection> uoc, final Provider<GroupOptDefLicense> gdl,
+ final Provider<GroupOptStyle> gps, final Provider<GroupOptLogo> gl,
+ final Provider<GroupOptTools> gtc, final Provider<UserOptDefLicense> udl,
+ final Provider<UserOptStyle> ups, final Provider<UserOptLogo> ul,
+ final Provider<UserOptTools> utc, final Provider<SitebarSearchPresenter> siteSearch) {
session.onAppStart(true, new AppStartHandler() {
@Override
Copied: trunk/src/main/java/cc/kune/gspace/client/options/license/EntityOptDefLicense.java (from rev 1409, trunk/src/main/java/cc/kune/gspace/client/options/license/EntityOptionsDefLicense.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/license/EntityOptDefLicense.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/license/EntityOptDefLicense.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -0,0 +1,24 @@
+/*
+ *
+ * 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.gspace.client.options.license;
+
+public interface EntityOptDefLicense {
+
+}
Copied: trunk/src/main/java/cc/kune/gspace/client/options/license/EntityOptDefLicensePanel.java (from rev 1409, trunk/src/main/java/cc/kune/gspace/client/options/license/EntityOptionsDefLicensePanel.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/license/EntityOptDefLicensePanel.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/license/EntityOptDefLicensePanel.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -0,0 +1,91 @@
+/*
+ *
+ * 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.gspace.client.options.license;
+
+import cc.kune.common.client.tooltip.Tooltip;
+import cc.kune.common.client.ui.IconLabel;
+import cc.kune.common.client.ui.KuneWindowUtils;
+import cc.kune.core.client.resources.CoreResources;
+import cc.kune.core.shared.dto.LicenseDTO;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+import cc.kune.gspace.client.options.EntityOptionsView;
+
+import com.google.gwt.event.dom.client.HasClickHandlers;
+import com.google.gwt.user.client.ui.Button;
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.FlowPanel;
+import com.google.gwt.user.client.ui.Image;
+import com.google.gwt.user.client.ui.IsWidget;
+import com.google.gwt.user.client.ui.Label;
+
+public class EntityOptDefLicensePanel extends Composite implements EntityOptDefLicenseView {
+
+ private final Button change;
+ private final Image licenseImage;
+ private final IconLabel tabTitle;
+
+ public EntityOptDefLicensePanel(final I18nTranslationService i18n, final CoreResources res) {
+ tabTitle = new IconLabel(res.copyleft(), i18n.t("License"));
+ final FlowPanel flow = new FlowPanel();
+ final Label intro = new Label();
+ intro.setWordWrap(true);
+ intro.setText(i18n.t("This is the default license for all the contents of this group (you can also select another different license per content):"));
+ intro.addStyleName("kune-Margin-20-tb");
+ flow.add(intro);
+ licenseImage = new Image();
+ flow.add(licenseImage);
+ licenseImage.addStyleName("kune-pointer");
+ licenseImage.addStyleName("kune-Margin-10-r");
+ change = new Button(i18n.t("Change"));
+ change.addStyleName("k-button");
+ flow.add(change);
+ initWidget(flow);
+ flow.setHeight(String.valueOf(EntityOptionsView.HEIGHT) + "px");
+ flow.setWidth(String.valueOf(EntityOptionsView.WIDTH) + "px");
+ flow.addStyleName("k-overflow-y-auto");
+ flow.addStyleName("k-tab-panel");
+ }
+
+ @Override
+ public HasClickHandlers getChange() {
+ return change;
+ }
+
+ @Override
+ public HasClickHandlers getLicenseImage() {
+ return licenseImage;
+ }
+
+ @Override
+ public IsWidget getTabTitle() {
+ return tabTitle;
+ }
+
+ @Override
+ public void openWindow(final String url) {
+ KuneWindowUtils.open(url);
+ }
+
+ @Override
+ public void setLicense(final LicenseDTO defaultLicense) {
+ licenseImage.setUrl(defaultLicense.getImageUrl());
+ Tooltip.to(licenseImage, defaultLicense.getLongName());
+ }
+}
Copied: trunk/src/main/java/cc/kune/gspace/client/options/license/EntityOptDefLicensePresenter.java (from rev 1409, trunk/src/main/java/cc/kune/gspace/client/options/license/EntityOptionsDefLicensePresenter.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/license/EntityOptDefLicensePresenter.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/license/EntityOptDefLicensePresenter.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -0,0 +1,113 @@
+/*
+ *
+ * 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.gspace.client.options.license;
+
+import cc.kune.common.client.utils.SimpleResponseCallback;
+import cc.kune.core.client.state.Session;
+import cc.kune.core.shared.domain.utils.StateToken;
+import cc.kune.core.shared.dto.LicenseDTO;
+import cc.kune.gspace.client.licensewizard.LicenseChangeAction;
+import cc.kune.gspace.client.licensewizard.LicenseChooseCallback;
+import cc.kune.gspace.client.licensewizard.LicenseWizard;
+import cc.kune.gspace.client.options.EntityOptions;
+
+import com.google.gwt.event.dom.client.ClickEvent;
+import com.google.gwt.event.dom.client.ClickHandler;
+import com.google.gwt.user.client.ui.IsWidget;
+import com.google.inject.Provider;
+
+public abstract class EntityOptDefLicensePresenter {
+
+ private final EntityOptions entityOptions;
+ private final Provider<LicenseChangeAction> licChangeAction;
+ private final Provider<LicenseWizard> licenseWizard;
+ protected final Session session;
+ private EntityOptDefLicenseView view;
+
+ public EntityOptDefLicensePresenter(final EntityOptions entityOptions, final Session session,
+ final Provider<LicenseWizard> licenseWizard, final Provider<LicenseChangeAction> licChangeAction) {
+ this.entityOptions = entityOptions;
+ this.session = session;
+ this.licenseWizard = licenseWizard;
+ this.licChangeAction = licChangeAction;
+ }
+
+ protected abstract boolean applicable();
+
+ protected abstract LicenseDTO getCurrentDefLicense();
+
+ protected abstract StateToken getOperationToken();
+
+ public IsWidget getView() {
+ return view;
+ }
+
+ protected void init(final EntityOptDefLicenseView view) {
+ this.view = view;
+ entityOptions.addTab(view, view.getTabTitle());
+ setState();
+ view.getChange().addClickHandler(new ClickHandler() {
+ @Override
+ public void onClick(final ClickEvent event) {
+ onChange();
+ }
+ });
+ view.getLicenseImage().addClickHandler(new ClickHandler() {
+ @Override
+ public void onClick(final ClickEvent event) {
+ onLicenseClick();
+ }
+ });
+ }
+
+ public void onChange() {
+ licenseWizard.get().start(new LicenseChooseCallback() {
+
+ @Override
+ public void onSelected(final LicenseDTO license) {
+ licChangeAction.get().changeLicense(getOperationToken(), license, new SimpleResponseCallback() {
+
+ @Override
+ public void onCancel() {
+ }
+
+ @Override
+ public void onSuccess() {
+ setLicense(license);
+ }
+ });
+ }
+ });
+ }
+
+ public void onLicenseClick() {
+ view.openWindow(getCurrentDefLicense().getUrl());
+ }
+
+ private void setLicense(final LicenseDTO license) {
+ view.setLicense(license);
+ }
+
+ protected void setState() {
+ if (applicable()) {
+ setLicense(getCurrentDefLicense());
+ }
+ }
+}
Copied: trunk/src/main/java/cc/kune/gspace/client/options/license/EntityOptDefLicenseView.java (from rev 1409, trunk/src/main/java/cc/kune/gspace/client/options/license/EntityOptionsDefLicenseView.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/license/EntityOptDefLicenseView.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/license/EntityOptDefLicenseView.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -0,0 +1,37 @@
+/*
+ *
+ * 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.gspace.client.options.license;
+
+import cc.kune.core.shared.dto.LicenseDTO;
+import cc.kune.gspace.client.options.EntityOptionsTabView;
+
+import com.google.gwt.event.dom.client.HasClickHandlers;
+
+public interface EntityOptDefLicenseView extends EntityOptionsTabView {
+
+ HasClickHandlers getChange();
+
+ HasClickHandlers getLicenseImage();
+
+ void openWindow(String url);
+
+ void setLicense(LicenseDTO defaultLicense);
+
+}
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/license/EntityOptionsDefLicense.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/license/EntityOptionsDefLicense.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/options/license/EntityOptionsDefLicense.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -1,24 +0,0 @@
-/*
- *
- * 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.gspace.client.options.license;
-
-public interface EntityOptionsDefLicense {
-
-}
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/license/EntityOptionsDefLicensePanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/license/EntityOptionsDefLicensePanel.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/options/license/EntityOptionsDefLicensePanel.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -1,91 +0,0 @@
-/*
- *
- * 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.gspace.client.options.license;
-
-import cc.kune.common.client.tooltip.Tooltip;
-import cc.kune.common.client.ui.IconLabel;
-import cc.kune.common.client.ui.KuneWindowUtils;
-import cc.kune.core.client.resources.CoreResources;
-import cc.kune.core.shared.dto.LicenseDTO;
-import cc.kune.core.shared.i18n.I18nTranslationService;
-import cc.kune.gspace.client.options.EntityOptionsView;
-
-import com.google.gwt.event.dom.client.HasClickHandlers;
-import com.google.gwt.user.client.ui.Button;
-import com.google.gwt.user.client.ui.Composite;
-import com.google.gwt.user.client.ui.FlowPanel;
-import com.google.gwt.user.client.ui.Image;
-import com.google.gwt.user.client.ui.IsWidget;
-import com.google.gwt.user.client.ui.Label;
-
-public class EntityOptionsDefLicensePanel extends Composite implements EntityOptionsDefLicenseView {
-
- private final Button change;
- private final Image licenseImage;
- private final IconLabel tabTitle;
-
- public EntityOptionsDefLicensePanel(final I18nTranslationService i18n, final CoreResources res) {
- tabTitle = new IconLabel(res.copyleft(), i18n.t("License"));
- final FlowPanel flow = new FlowPanel();
- final Label intro = new Label();
- intro.setWordWrap(true);
- intro.setText(i18n.t("This is the default license for all the contents of this group (you can also select another different license per content):"));
- intro.addStyleName("kune-Margin-20-tb");
- flow.add(intro);
- licenseImage = new Image();
- flow.add(licenseImage);
- licenseImage.addStyleName("kune-pointer");
- licenseImage.addStyleName("kune-Margin-10-r");
- change = new Button(i18n.t("Change"));
- change.addStyleName("k-button");
- flow.add(change);
- initWidget(flow);
- flow.setHeight(String.valueOf(EntityOptionsView.HEIGHT) + "px");
- flow.setWidth(String.valueOf(EntityOptionsView.WIDTH) + "px");
- flow.addStyleName("k-overflow-y-auto");
- flow.addStyleName("k-tab-panel");
- }
-
- @Override
- public HasClickHandlers getChange() {
- return change;
- }
-
- @Override
- public HasClickHandlers getLicenseImage() {
- return licenseImage;
- }
-
- @Override
- public IsWidget getTabTitle() {
- return tabTitle;
- }
-
- @Override
- public void openWindow(final String url) {
- KuneWindowUtils.open(url);
- }
-
- @Override
- public void setLicense(final LicenseDTO defaultLicense) {
- licenseImage.setUrl(defaultLicense.getImageUrl());
- Tooltip.to(licenseImage, defaultLicense.getLongName());
- }
-}
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/license/EntityOptionsDefLicensePresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/license/EntityOptionsDefLicensePresenter.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/options/license/EntityOptionsDefLicensePresenter.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -1,113 +0,0 @@
-/*
- *
- * 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.gspace.client.options.license;
-
-import cc.kune.common.client.utils.SimpleResponseCallback;
-import cc.kune.core.client.state.Session;
-import cc.kune.core.shared.domain.utils.StateToken;
-import cc.kune.core.shared.dto.LicenseDTO;
-import cc.kune.gspace.client.licensewizard.LicenseChangeAction;
-import cc.kune.gspace.client.licensewizard.LicenseChooseCallback;
-import cc.kune.gspace.client.licensewizard.LicenseWizard;
-import cc.kune.gspace.client.options.EntityOptions;
-
-import com.google.gwt.event.dom.client.ClickEvent;
-import com.google.gwt.event.dom.client.ClickHandler;
-import com.google.gwt.user.client.ui.IsWidget;
-import com.google.inject.Provider;
-
-public abstract class EntityOptionsDefLicensePresenter {
-
- private final EntityOptions entityOptions;
- private final Provider<LicenseChangeAction> licChangeAction;
- private final Provider<LicenseWizard> licenseWizard;
- protected final Session session;
- private EntityOptionsDefLicenseView view;
-
- public EntityOptionsDefLicensePresenter(final EntityOptions entityOptions, final Session session,
- final Provider<LicenseWizard> licenseWizard, final Provider<LicenseChangeAction> licChangeAction) {
- this.entityOptions = entityOptions;
- this.session = session;
- this.licenseWizard = licenseWizard;
- this.licChangeAction = licChangeAction;
- }
-
- protected abstract boolean applicable();
-
- protected abstract LicenseDTO getCurrentDefLicense();
-
- protected abstract StateToken getOperationToken();
-
- public IsWidget getView() {
- return view;
- }
-
- protected void init(final EntityOptionsDefLicenseView view) {
- this.view = view;
- entityOptions.addTab(view, view.getTabTitle());
- setState();
- view.getChange().addClickHandler(new ClickHandler() {
- @Override
- public void onClick(final ClickEvent event) {
- onChange();
- }
- });
- view.getLicenseImage().addClickHandler(new ClickHandler() {
- @Override
- public void onClick(final ClickEvent event) {
- onLicenseClick();
- }
- });
- }
-
- public void onChange() {
- licenseWizard.get().start(new LicenseChooseCallback() {
-
- @Override
- public void onSelected(final LicenseDTO license) {
- licChangeAction.get().changeLicense(getOperationToken(), license, new SimpleResponseCallback() {
-
- @Override
- public void onCancel() {
- }
-
- @Override
- public void onSuccess() {
- setLicense(license);
- }
- });
- }
- });
- }
-
- public void onLicenseClick() {
- view.openWindow(getCurrentDefLicense().getUrl());
- }
-
- private void setLicense(final LicenseDTO license) {
- view.setLicense(license);
- }
-
- protected void setState() {
- if (applicable()) {
- setLicense(getCurrentDefLicense());
- }
- }
-}
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/license/EntityOptionsDefLicenseView.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/license/EntityOptionsDefLicenseView.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/options/license/EntityOptionsDefLicenseView.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -1,37 +0,0 @@
-/*
- *
- * 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.gspace.client.options.license;
-
-import cc.kune.core.shared.dto.LicenseDTO;
-import cc.kune.gspace.client.options.EntityOptionsTabView;
-
-import com.google.gwt.event.dom.client.HasClickHandlers;
-
-public interface EntityOptionsDefLicenseView extends EntityOptionsTabView {
-
- HasClickHandlers getChange();
-
- HasClickHandlers getLicenseImage();
-
- void openWindow(String url);
-
- void setLicense(LicenseDTO defaultLicense);
-
-}
Copied: trunk/src/main/java/cc/kune/gspace/client/options/license/GroupOptDefLicense.java (from rev 1409, trunk/src/main/java/cc/kune/gspace/client/options/license/GroupOptionsDefLicense.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/license/GroupOptDefLicense.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/license/GroupOptDefLicense.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -0,0 +1,24 @@
+/*
+ *
+ * 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.gspace.client.options.license;
+
+public interface GroupOptDefLicense extends EntityOptDefLicense {
+
+}
Copied: trunk/src/main/java/cc/kune/gspace/client/options/license/GroupOptDefLicensePanel.java (from rev 1409, trunk/src/main/java/cc/kune/gspace/client/options/license/GroupOptionsDefLicensePanel.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/license/GroupOptDefLicensePanel.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/license/GroupOptDefLicensePanel.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -0,0 +1,34 @@
+/*
+ *
+ * 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.gspace.client.options.license;
+
+import cc.kune.core.client.resources.CoreResources;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+
+import com.google.inject.Inject;
+
+public class GroupOptDefLicensePanel extends EntityOptDefLicensePanel implements GroupOptDefLicenseView {
+
+ @Inject
+ public GroupOptDefLicensePanel(final I18nTranslationService i18n, final CoreResources res) {
+ super(i18n, res);
+ }
+
+}
Property changes on: trunk/src/main/java/cc/kune/gspace/client/options/license/GroupOptDefLicensePanel.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Copied: trunk/src/main/java/cc/kune/gspace/client/options/license/GroupOptDefLicensePresenter.java (from rev 1409, trunk/src/main/java/cc/kune/gspace/client/options/license/GroupOptionsDefLicensePresenter.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/license/GroupOptDefLicensePresenter.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/license/GroupOptDefLicensePresenter.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -0,0 +1,66 @@
+/*
+ *
+ * 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.gspace.client.options.license;
+
+import cc.kune.core.client.state.Session;
+import cc.kune.core.client.state.StateManager;
+import cc.kune.core.client.state.UserSignInEvent;
+import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler;
+import cc.kune.core.shared.domain.utils.StateToken;
+import cc.kune.core.shared.dto.LicenseDTO;
+import cc.kune.gspace.client.licensewizard.LicenseChangeAction;
+import cc.kune.gspace.client.licensewizard.LicenseWizard;
+import cc.kune.gspace.client.options.GroupOptions;
+
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+
+public class GroupOptDefLicensePresenter extends EntityOptDefLicensePresenter implements
+ GroupOptDefLicense {
+
+ @Inject
+ public GroupOptDefLicensePresenter(final GroupOptions entityOptions,
+ final StateManager stateManager, final Session session, final GroupOptDefLicenseView view,
+ final Provider<LicenseWizard> licenseWizard, final Provider<LicenseChangeAction> licChangeAction) {
+ super(entityOptions, session, licenseWizard, licChangeAction);
+ init(view);
+ session.onUserSignIn(true, new UserSignInHandler() {
+ @Override
+ public void onUserSignIn(final UserSignInEvent event) {
+ setState();
+ }
+ });
+ }
+
+ @Override
+ protected boolean applicable() {
+ return session.isCurrentStateAGroup();
+ }
+
+ @Override
+ protected LicenseDTO getCurrentDefLicense() {
+ return session.getCurrentState().getGroup().getDefaultLicense();
+ }
+
+ @Override
+ protected StateToken getOperationToken() {
+ return session.getCurrentStateToken();
+ }
+}
Copied: trunk/src/main/java/cc/kune/gspace/client/options/license/GroupOptDefLicenseView.java (from rev 1409, trunk/src/main/java/cc/kune/gspace/client/options/license/GroupOptionsDefLicenseView.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/license/GroupOptDefLicenseView.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/license/GroupOptDefLicenseView.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -0,0 +1,24 @@
+/*
+ *
+ * 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.gspace.client.options.license;
+
+public interface GroupOptDefLicenseView extends EntityOptDefLicenseView {
+
+}
Property changes on: trunk/src/main/java/cc/kune/gspace/client/options/license/GroupOptDefLicenseView.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/license/GroupOptionsDefLicense.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/license/GroupOptionsDefLicense.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/options/license/GroupOptionsDefLicense.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -1,24 +0,0 @@
-/*
- *
- * 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.gspace.client.options.license;
-
-public interface GroupOptionsDefLicense extends EntityOptionsDefLicense {
-
-}
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/license/GroupOptionsDefLicensePanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/license/GroupOptionsDefLicensePanel.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/options/license/GroupOptionsDefLicensePanel.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -1,34 +0,0 @@
-/*
- *
- * 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.gspace.client.options.license;
-
-import cc.kune.core.client.resources.CoreResources;
-import cc.kune.core.shared.i18n.I18nTranslationService;
-
-import com.google.inject.Inject;
-
-public class GroupOptionsDefLicensePanel extends EntityOptionsDefLicensePanel implements GroupOptionsDefLicenseView {
-
- @Inject
- public GroupOptionsDefLicensePanel(final I18nTranslationService i18n, final CoreResources res) {
- super(i18n, res);
- }
-
-}
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/license/GroupOptionsDefLicensePresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/license/GroupOptionsDefLicensePresenter.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/options/license/GroupOptionsDefLicensePresenter.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -1,66 +0,0 @@
-/*
- *
- * 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.gspace.client.options.license;
-
-import cc.kune.core.client.state.Session;
-import cc.kune.core.client.state.StateManager;
-import cc.kune.core.client.state.UserSignInEvent;
-import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler;
-import cc.kune.core.shared.domain.utils.StateToken;
-import cc.kune.core.shared.dto.LicenseDTO;
-import cc.kune.gspace.client.licensewizard.LicenseChangeAction;
-import cc.kune.gspace.client.licensewizard.LicenseWizard;
-import cc.kune.gspace.client.options.GroupOptions;
-
-import com.google.inject.Inject;
-import com.google.inject.Provider;
-
-public class GroupOptionsDefLicensePresenter extends EntityOptionsDefLicensePresenter implements
- GroupOptionsDefLicense {
-
- @Inject
- public GroupOptionsDefLicensePresenter(final GroupOptions entityOptions,
- final StateManager stateManager, final Session session, final GroupOptionsDefLicenseView view,
- final Provider<LicenseWizard> licenseWizard, final Provider<LicenseChangeAction> licChangeAction) {
- super(entityOptions, session, licenseWizard, licChangeAction);
- init(view);
- session.onUserSignIn(true, new UserSignInHandler() {
- @Override
- public void onUserSignIn(final UserSignInEvent event) {
- setState();
- }
- });
- }
-
- @Override
- protected boolean applicable() {
- return session.isCurrentStateAGroup();
- }
-
- @Override
- protected LicenseDTO getCurrentDefLicense() {
- return session.getCurrentState().getGroup().getDefaultLicense();
- }
-
- @Override
- protected StateToken getOperationToken() {
- return session.getCurrentStateToken();
- }
-}
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/license/GroupOptionsDefLicenseView.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/license/GroupOptionsDefLicenseView.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/options/license/GroupOptionsDefLicenseView.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -1,24 +0,0 @@
-/*
- *
- * 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.gspace.client.options.license;
-
-public interface GroupOptionsDefLicenseView extends EntityOptionsDefLicenseView {
-
-}
Copied: trunk/src/main/java/cc/kune/gspace/client/options/license/UserOptDefLicense.java (from rev 1409, trunk/src/main/java/cc/kune/gspace/client/options/license/UserOptionsDefLicense.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/license/UserOptDefLicense.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/license/UserOptDefLicense.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -0,0 +1,24 @@
+/*
+ *
+ * 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.gspace.client.options.license;
+
+public interface UserOptDefLicense extends EntityOptDefLicense {
+
+}
Copied: trunk/src/main/java/cc/kune/gspace/client/options/license/UserOptDefLicensePanel.java (from rev 1409, trunk/src/main/java/cc/kune/gspace/client/options/license/UserOptionsDefLicensePanel.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/license/UserOptDefLicensePanel.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/license/UserOptDefLicensePanel.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -0,0 +1,34 @@
+/*
+ *
+ * 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.gspace.client.options.license;
+
+import cc.kune.core.client.resources.CoreResources;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+
+import com.google.inject.Inject;
+
+public class UserOptDefLicensePanel extends EntityOptDefLicensePanel implements UserOptDefLicenseView {
+
+ @Inject
+ public UserOptDefLicensePanel(final I18nTranslationService i18n, final CoreResources res) {
+ super(i18n, res);
+ }
+
+}
Property changes on: trunk/src/main/java/cc/kune/gspace/client/options/license/UserOptDefLicensePanel.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Copied: trunk/src/main/java/cc/kune/gspace/client/options/license/UserOptDefLicensePresenter.java (from rev 1409, trunk/src/main/java/cc/kune/gspace/client/options/license/UserOptionsDefLicensePresenter.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/license/UserOptDefLicensePresenter.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/license/UserOptDefLicensePresenter.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -0,0 +1,65 @@
+/*
+ *
+ * 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.gspace.client.options.license;
+
+import cc.kune.core.client.state.Session;
+import cc.kune.core.client.state.UserSignInEvent;
+import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler;
+import cc.kune.core.shared.domain.utils.StateToken;
+import cc.kune.core.shared.dto.LicenseDTO;
+import cc.kune.gspace.client.licensewizard.LicenseChangeAction;
+import cc.kune.gspace.client.licensewizard.LicenseWizard;
+import cc.kune.gspace.client.options.UserOptions;
+
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+
+public class UserOptDefLicensePresenter extends EntityOptDefLicensePresenter implements
+ UserOptDefLicense {
+
+ @Inject
+ public UserOptDefLicensePresenter(final UserOptions entityOptions, final Session session,
+ final UserOptDefLicenseView view, final Provider<LicenseWizard> licenseWizard,
+ final Provider<LicenseChangeAction> licChangeAction) {
+ super(entityOptions, session, licenseWizard, licChangeAction);
+ init(view);
+ session.onUserSignIn(true, new UserSignInHandler() {
+ @Override
+ public void onUserSignIn(final UserSignInEvent event) {
+ setState();
+ }
+ });
+ }
+
+ @Override
+ protected boolean applicable() {
+ return session.isLogged();
+ }
+
+ @Override
+ protected LicenseDTO getCurrentDefLicense() {
+ return session.getCurrentState().getGroup().getDefaultLicense();
+ }
+
+ @Override
+ protected StateToken getOperationToken() {
+ return session.getCurrentUser().getStateToken();
+ }
+}
Copied: trunk/src/main/java/cc/kune/gspace/client/options/license/UserOptDefLicenseView.java (from rev 1409, trunk/src/main/java/cc/kune/gspace/client/options/license/UserOptionsDefLicenseView.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/license/UserOptDefLicenseView.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/license/UserOptDefLicenseView.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -0,0 +1,24 @@
+/*
+ *
+ * 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.gspace.client.options.license;
+
+public interface UserOptDefLicenseView extends EntityOptDefLicenseView {
+
+}
Property changes on: trunk/src/main/java/cc/kune/gspace/client/options/license/UserOptDefLicenseView.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/license/UserOptionsDefLicense.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/license/UserOptionsDefLicense.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/options/license/UserOptionsDefLicense.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -1,24 +0,0 @@
-/*
- *
- * 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.gspace.client.options.license;
-
-public interface UserOptionsDefLicense extends EntityOptionsDefLicense {
-
-}
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/license/UserOptionsDefLicensePanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/license/UserOptionsDefLicensePanel.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/options/license/UserOptionsDefLicensePanel.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -1,34 +0,0 @@
-/*
- *
- * 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.gspace.client.options.license;
-
-import cc.kune.core.client.resources.CoreResources;
-import cc.kune.core.shared.i18n.I18nTranslationService;
-
-import com.google.inject.Inject;
-
-public class UserOptionsDefLicensePanel extends EntityOptionsDefLicensePanel implements UserOptionsDefLicenseView {
-
- @Inject
- public UserOptionsDefLicensePanel(final I18nTranslationService i18n, final CoreResources res) {
- super(i18n, res);
- }
-
-}
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/license/UserOptionsDefLicensePresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/license/UserOptionsDefLicensePresenter.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/options/license/UserOptionsDefLicensePresenter.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -1,65 +0,0 @@
-/*
- *
- * 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.gspace.client.options.license;
-
-import cc.kune.core.client.state.Session;
-import cc.kune.core.client.state.UserSignInEvent;
-import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler;
-import cc.kune.core.shared.domain.utils.StateToken;
-import cc.kune.core.shared.dto.LicenseDTO;
-import cc.kune.gspace.client.licensewizard.LicenseChangeAction;
-import cc.kune.gspace.client.licensewizard.LicenseWizard;
-import cc.kune.gspace.client.options.UserOptions;
-
-import com.google.inject.Inject;
-import com.google.inject.Provider;
-
-public class UserOptionsDefLicensePresenter extends EntityOptionsDefLicensePresenter implements
- UserOptionsDefLicense {
-
- @Inject
- public UserOptionsDefLicensePresenter(final UserOptions entityOptions, final Session session,
- final UserOptionsDefLicenseView view, final Provider<LicenseWizard> licenseWizard,
- final Provider<LicenseChangeAction> licChangeAction) {
- super(entityOptions, session, licenseWizard, licChangeAction);
- init(view);
- session.onUserSignIn(true, new UserSignInHandler() {
- @Override
- public void onUserSignIn(final UserSignInEvent event) {
- setState();
- }
- });
- }
-
- @Override
- protected boolean applicable() {
- return session.isLogged();
- }
-
- @Override
- protected LicenseDTO getCurrentDefLicense() {
- return session.getCurrentState().getGroup().getDefaultLicense();
- }
-
- @Override
- protected StateToken getOperationToken() {
- return session.getCurrentUser().getStateToken();
- }
-}
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/license/UserOptionsDefLicenseView.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/license/UserOptionsDefLicenseView.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/options/license/UserOptionsDefLicenseView.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -1,24 +0,0 @@
-/*
- *
- * 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.gspace.client.options.license;
-
-public interface UserOptionsDefLicenseView extends EntityOptionsDefLicenseView {
-
-}
Copied: trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptLogo.java (from rev 1409, trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptionsLogo.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptLogo.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptLogo.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -0,0 +1,23 @@
+/*
+ *
+ * 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.gspace.client.options.logo;
+
+public interface EntityOptLogo {
+}
Property changes on: trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptLogo.java
___________________________________________________________________
Name: svn:mergeinfo
+
Copied: trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptLogoPanel.java (from rev 1412, trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptionsLogoPanel.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptLogoPanel.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptLogoPanel.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -0,0 +1,117 @@
+/*
+ *
+ * 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.gspace.client.options.logo;
+
+import gwtupload.client.IUploader.OnCancelUploaderHandler;
+import gwtupload.client.IUploader.OnChangeUploaderHandler;
+import gwtupload.client.IUploader.OnFinishUploaderHandler;
+import gwtupload.client.IUploader.OnStartUploaderHandler;
+import cc.kune.common.client.ui.IconLabel;
+import cc.kune.common.client.utils.OnAcceptCallback;
+import cc.kune.core.client.resources.CoreMessages;
+import cc.kune.core.client.resources.nav.NavResources;
+import cc.kune.core.client.services.FileConstants;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+import cc.kune.gspace.client.options.EntityOptionsView;
+
+import com.google.gwt.event.shared.EventBus;
+import com.google.gwt.event.shared.HandlerRegistration;
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.IsWidget;
+
+public class EntityOptLogoPanel extends Composite implements EntityOptLogoView {
+
+ public static final String ICON_UPLD_SERVLET = "servlets/EntityLogoUploadManager";
+ private final EntityUploaderForm uploader;
+ private final I18nTranslationService i18n;
+ private final IconLabel tabTitle;
+
+ public EntityOptLogoPanel(final EventBus eventBus, final I18nTranslationService i18n,
+ final String panelId, final String buttonId, final String inputId, final NavResources res) {
+ super();
+ this.i18n = i18n;
+ tabTitle = new IconLabel(res.picture(), "");
+
+ uploader = new EntityUploaderForm(ICON_UPLD_SERVLET, i18n.t("Choose"));
+
+ initWidget(uploader);
+ setHeight(String.valueOf(EntityOptionsView.HEIGHT) + "px");
+ setWidth(String.valueOf(EntityOptionsView.WIDTH) + "px");
+
+ addStyleName("k-overflow-y-auto");
+ addStyleName("k-tab-panel");
+ }
+
+ @Override
+ public HandlerRegistration addOnCancelUploadHandler(final OnCancelUploaderHandler handler) {
+ return uploader.addOnCancelUploadHandler(handler);
+ }
+
+ @Override
+ public HandlerRegistration addOnChangeUploadHandler(final OnChangeUploaderHandler handler) {
+ return uploader.addOnChangeUploadHandler(handler);
+ }
+
+ @Override
+ public HandlerRegistration addOnFinishUploadHandler(final OnFinishUploaderHandler handler) {
+ return uploader.addOnFinishUploadHandler(handler);
+ }
+
+ @Override
+ public HandlerRegistration addOnStartUploadHandler(final OnStartUploaderHandler handler) {
+ return uploader.addOnStartUploadHandler(handler);
+ }
+
+ @Override
+ public OnAcceptCallback getOnSubmit() {
+ return null;
+ }
+
+ @Override
+ public IsWidget getTabTitle() {
+ return tabTitle;
+ }
+
+ public void reset() {
+ uploader.reset();
+ }
+
+ @Override
+ public void setNormalGroupsLabels() {
+ uploader.setLabelText(i18n.t("Select an image in your computer as the logo for this group. "
+ + "For best results use a [%d]x[%d] pixel image. We will automatically resize bigger images.",
+ FileConstants.LOGO_DEF_HEIGHT, FileConstants.LOGO_DEF_HEIGHT));
+ tabTitle.setText(CoreMessages.ENT_LOGO_SELECTOR_NORMAL_TITLE);
+ }
+
+ @Override
+ public void setPersonalGroupsLabels() {
+ uploader.setLabelText(i18n.t("Select an image in your computer as your avatar. "
+ + "For best results use a [%d]x[%d] pixel image. We will automatically resize bigger images.",
+ FileConstants.LOGO_DEF_HEIGHT, FileConstants.LOGO_DEF_HEIGHT));
+ tabTitle.setText(CoreMessages.ENT_LOGO_SELECTOR_PERSON_TITLE);
+ }
+
+ @Override
+ public void setUploadParams(final String userHash, final String token) {
+ uploader.setUploadParams(userHash, token);
+ }
+
+}
Property changes on: trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptLogoPanel.java
___________________________________________________________________
Name: svn:mergeinfo
+
Copied: trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptLogoPresenter.java (from rev 1412, trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptionsLogoPresenter.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptLogoPresenter.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptLogoPresenter.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -0,0 +1,94 @@
+/*
+ *
+ * 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.gspace.client.options.logo;
+
+import gwtupload.client.IUploadStatus.Status;
+import gwtupload.client.IUploader;
+import gwtupload.client.IUploader.OnFinishUploaderHandler;
+import gwtupload.client.IUploader.OnStartUploaderHandler;
+import cc.kune.common.client.notify.NotifyUser;
+import cc.kune.core.client.rpcservices.UserServiceAsync;
+import cc.kune.core.client.state.Session;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+import cc.kune.gspace.client.options.EntityOptions;
+
+import com.google.gwt.event.shared.EventBus;
+import com.google.gwt.user.client.ui.IsWidget;
+import com.google.inject.Provider;
+
+public abstract class EntityOptLogoPresenter implements GroupOptLogo, UserOptLogo {
+ private final EntityOptions entityOptions;
+ protected final EventBus eventBus;
+ private final I18nTranslationService i18n;
+ protected final Session session;
+ protected final Provider<UserServiceAsync> userService;
+ protected EntityOptLogoView view;
+
+ public EntityOptLogoPresenter(final EventBus eventBus, final Session session,
+ final EntityOptions entityOptions, final Provider<UserServiceAsync> userService,
+ final I18nTranslationService i18n) {
+ this.eventBus = eventBus;
+ this.session = session;
+ this.entityOptions = entityOptions;
+ this.userService = userService;
+ this.i18n = i18n;
+ }
+
+ public IsWidget getView() {
+ return view;
+ }
+
+ protected void init(final EntityOptLogoView view) {
+ this.view = view;
+ entityOptions.addTab(view, view.getTabTitle());
+ setState();
+ view.addOnStartUploadHandler(new OnStartUploaderHandler() {
+ @Override
+ public void onStart(final IUploader uploader) {
+ setState();
+ }
+ });
+ view.addOnFinishUploadHandler(new OnFinishUploaderHandler() {
+ @Override
+ public void onFinish(final IUploader uploader) {
+ onSubmitComplete(uploader);
+ }
+ });
+ }
+
+ public void onSubmitComplete(final IUploader uploader) {
+ final String response = uploader.getServerInfo().message;
+ if (uploader.getStatus() == Status.SUCCESS) {
+ if (response != null) {
+ NotifyUser.info(response);
+ }
+ CurrentLogoChangedEvent.fire(eventBus);
+ } else {
+ onSubmitFailed(response);
+ }
+ }
+
+ public void onSubmitFailed(final String responseText) {
+ NotifyUser.error(i18n.t("Error setting the logo", responseText));
+ }
+
+ protected abstract void setState();
+
+}
Property changes on: trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptLogoPresenter.java
___________________________________________________________________
Name: svn:mergeinfo
+
Copied: trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptLogoView.java (from rev 1409, trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptionsLogoView.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptLogoView.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptLogoView.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -0,0 +1,47 @@
+/*
+ *
+ * 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.gspace.client.options.logo;
+
+import gwtupload.client.IUploader;
+import gwtupload.client.IUploader.OnCancelUploaderHandler;
+import cc.kune.common.client.utils.OnAcceptCallback;
+import cc.kune.gspace.client.options.EntityOptionsTabView;
+
+import com.google.gwt.event.shared.HandlerRegistration;
+
+public interface EntityOptLogoView extends EntityOptionsTabView {
+
+ HandlerRegistration addOnCancelUploadHandler(OnCancelUploaderHandler handler);
+
+ HandlerRegistration addOnChangeUploadHandler(IUploader.OnChangeUploaderHandler handler);
+
+ HandlerRegistration addOnFinishUploadHandler(IUploader.OnFinishUploaderHandler handler);
+
+ HandlerRegistration addOnStartUploadHandler(IUploader.OnStartUploaderHandler handler);
+
+ OnAcceptCallback getOnSubmit();
+
+ void setNormalGroupsLabels();
+
+ void setPersonalGroupsLabels();
+
+ void setUploadParams(String userHash, String token);
+
+}
Property changes on: trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptLogoView.java
___________________________________________________________________
Name: svn:mergeinfo
+
Copied: trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptUploadButton.java (from rev 1412, trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptionsUploadButton.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptUploadButton.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptUploadButton.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -0,0 +1,33 @@
+package cc.kune.gspace.client.options.logo;
+
+import com.google.gwt.event.dom.client.ClickEvent;
+import com.google.gwt.event.dom.client.ClickHandler;
+import com.google.gwt.event.dom.client.HasClickHandlers;
+import com.google.gwt.event.shared.HandlerRegistration;
+import com.google.gwt.user.client.ui.Button;
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.DecoratorPanel;
+import com.google.gwt.user.client.ui.HasText;
+
+public class EntityOptUploadButton extends Composite implements HasClickHandlers {
+ private final Button btn;
+ DecoratorPanel widget = new DecoratorPanel();
+
+ public EntityOptUploadButton(final String text) {
+ final DecoratorPanel widget = new DecoratorPanel();
+ btn = new Button(text);
+ btn.addStyleName("k-button");
+ initWidget(widget);
+ widget.setWidget(btn);
+ widget.setHeight("50px");
+ }
+
+ @Override
+ public HandlerRegistration addClickHandler(final ClickHandler handler) {
+ return addDomHandler(handler, ClickEvent.getType());
+ }
+
+ public HasText getBtn() {
+ return btn;
+ }
+}
\ No newline at end of file
Property changes on: trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptUploadButton.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptionsLogo.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptionsLogo.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptionsLogo.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -1,23 +0,0 @@
-/*
- *
- * 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.gspace.client.options.logo;
-
-public interface EntityOptionsLogo {
-}
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptionsLogoPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptionsLogoPanel.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptionsLogoPanel.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -1,117 +0,0 @@
-/*
- *
- * 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.gspace.client.options.logo;
-
-import gwtupload.client.IUploader.OnCancelUploaderHandler;
-import gwtupload.client.IUploader.OnChangeUploaderHandler;
-import gwtupload.client.IUploader.OnFinishUploaderHandler;
-import gwtupload.client.IUploader.OnStartUploaderHandler;
-import cc.kune.common.client.ui.IconLabel;
-import cc.kune.common.client.utils.OnAcceptCallback;
-import cc.kune.core.client.resources.CoreMessages;
-import cc.kune.core.client.resources.nav.NavResources;
-import cc.kune.core.client.services.FileConstants;
-import cc.kune.core.shared.i18n.I18nTranslationService;
-import cc.kune.gspace.client.options.EntityOptionsView;
-
-import com.google.gwt.event.shared.EventBus;
-import com.google.gwt.event.shared.HandlerRegistration;
-import com.google.gwt.user.client.ui.Composite;
-import com.google.gwt.user.client.ui.IsWidget;
-
-public class EntityOptionsLogoPanel extends Composite implements EntityOptionsLogoView {
-
- public static final String ICON_UPLD_SERVLET = "servlets/EntityLogoUploadManager";
- private final EntityUploaderForm uploader;
- private final I18nTranslationService i18n;
- private final IconLabel tabTitle;
-
- public EntityOptionsLogoPanel(final EventBus eventBus, final I18nTranslationService i18n,
- final String panelId, final String buttonId, final String inputId, final NavResources res) {
- super();
- this.i18n = i18n;
- tabTitle = new IconLabel(res.picture(), "");
-
- uploader = new EntityUploaderForm(ICON_UPLD_SERVLET, i18n.t("Choose"));
-
- initWidget(uploader);
- setHeight(String.valueOf(EntityOptionsView.HEIGHT) + "px");
- setWidth(String.valueOf(EntityOptionsView.WIDTH) + "px");
-
- addStyleName("k-overflow-y-auto");
- addStyleName("k-tab-panel");
- }
-
- @Override
- public HandlerRegistration addOnCancelUploadHandler(final OnCancelUploaderHandler handler) {
- return uploader.addOnCancelUploadHandler(handler);
- }
-
- @Override
- public HandlerRegistration addOnChangeUploadHandler(final OnChangeUploaderHandler handler) {
- return uploader.addOnChangeUploadHandler(handler);
- }
-
- @Override
- public HandlerRegistration addOnFinishUploadHandler(final OnFinishUploaderHandler handler) {
- return uploader.addOnFinishUploadHandler(handler);
- }
-
- @Override
- public HandlerRegistration addOnStartUploadHandler(final OnStartUploaderHandler handler) {
- return uploader.addOnStartUploadHandler(handler);
- }
-
- @Override
- public OnAcceptCallback getOnSubmit() {
- return null;
- }
-
- @Override
- public IsWidget getTabTitle() {
- return tabTitle;
- }
-
- public void reset() {
- uploader.reset();
- }
-
- @Override
- public void setNormalGroupsLabels() {
- uploader.setLabelText(i18n.t("Select an image in your computer as the logo for this group. "
- + "For best results use a [%d]x[%d] pixel image. We will automatically resize bigger images.",
- FileConstants.LOGO_DEF_HEIGHT, FileConstants.LOGO_DEF_HEIGHT));
- tabTitle.setText(CoreMessages.ENT_LOGO_SELECTOR_NORMAL_TITLE);
- }
-
- @Override
- public void setPersonalGroupsLabels() {
- uploader.setLabelText(i18n.t("Select an image in your computer as your avatar. "
- + "For best results use a [%d]x[%d] pixel image. We will automatically resize bigger images.",
- FileConstants.LOGO_DEF_HEIGHT, FileConstants.LOGO_DEF_HEIGHT));
- tabTitle.setText(CoreMessages.ENT_LOGO_SELECTOR_PERSON_TITLE);
- }
-
- @Override
- public void setUploadParams(final String userHash, final String token) {
- uploader.setUploadParams(userHash, token);
- }
-
-}
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptionsLogoPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptionsLogoPresenter.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptionsLogoPresenter.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -1,94 +0,0 @@
-/*
- *
- * 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.gspace.client.options.logo;
-
-import gwtupload.client.IUploadStatus.Status;
-import gwtupload.client.IUploader;
-import gwtupload.client.IUploader.OnFinishUploaderHandler;
-import gwtupload.client.IUploader.OnStartUploaderHandler;
-import cc.kune.common.client.notify.NotifyUser;
-import cc.kune.core.client.rpcservices.UserServiceAsync;
-import cc.kune.core.client.state.Session;
-import cc.kune.core.shared.i18n.I18nTranslationService;
-import cc.kune.gspace.client.options.EntityOptions;
-
-import com.google.gwt.event.shared.EventBus;
-import com.google.gwt.user.client.ui.IsWidget;
-import com.google.inject.Provider;
-
-public abstract class EntityOptionsLogoPresenter implements GroupOptionsLogo, UserOptionsLogo {
- private final EntityOptions entityOptions;
- protected final EventBus eventBus;
- private final I18nTranslationService i18n;
- protected final Session session;
- protected final Provider<UserServiceAsync> userService;
- protected EntityOptionsLogoView view;
-
- public EntityOptionsLogoPresenter(final EventBus eventBus, final Session session,
- final EntityOptions entityOptions, final Provider<UserServiceAsync> userService,
- final I18nTranslationService i18n) {
- this.eventBus = eventBus;
- this.session = session;
- this.entityOptions = entityOptions;
- this.userService = userService;
- this.i18n = i18n;
- }
-
- public IsWidget getView() {
- return view;
- }
-
- protected void init(final EntityOptionsLogoView view) {
- this.view = view;
- entityOptions.addTab(view, view.getTabTitle());
- setState();
- view.addOnStartUploadHandler(new OnStartUploaderHandler() {
- @Override
- public void onStart(final IUploader uploader) {
- setState();
- }
- });
- view.addOnFinishUploadHandler(new OnFinishUploaderHandler() {
- @Override
- public void onFinish(final IUploader uploader) {
- onSubmitComplete(uploader);
- }
- });
- }
-
- public void onSubmitComplete(final IUploader uploader) {
- final String response = uploader.getServerInfo().message;
- if (uploader.getStatus() == Status.SUCCESS) {
- if (response != null) {
- NotifyUser.info(response);
- }
- CurrentLogoChangedEvent.fire(eventBus);
- } else {
- onSubmitFailed(response);
- }
- }
-
- public void onSubmitFailed(final String responseText) {
- NotifyUser.error(i18n.t("Error setting the logo", responseText));
- }
-
- protected abstract void setState();
-
-}
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptionsLogoView.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptionsLogoView.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptionsLogoView.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -1,47 +0,0 @@
-/*
- *
- * 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.gspace.client.options.logo;
-
-import gwtupload.client.IUploader;
-import gwtupload.client.IUploader.OnCancelUploaderHandler;
-import cc.kune.common.client.utils.OnAcceptCallback;
-import cc.kune.gspace.client.options.EntityOptionsTabView;
-
-import com.google.gwt.event.shared.HandlerRegistration;
-
-public interface EntityOptionsLogoView extends EntityOptionsTabView {
-
- HandlerRegistration addOnCancelUploadHandler(OnCancelUploaderHandler handler);
-
- HandlerRegistration addOnChangeUploadHandler(IUploader.OnChangeUploaderHandler handler);
-
- HandlerRegistration addOnFinishUploadHandler(IUploader.OnFinishUploaderHandler handler);
-
- HandlerRegistration addOnStartUploadHandler(IUploader.OnStartUploaderHandler handler);
-
- OnAcceptCallback getOnSubmit();
-
- void setNormalGroupsLabels();
-
- void setPersonalGroupsLabels();
-
- void setUploadParams(String userHash, String token);
-
-}
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptionsUploadButton.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptionsUploadButton.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptionsUploadButton.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -1,27 +0,0 @@
-package cc.kune.gspace.client.options.logo;
-
-import com.google.gwt.event.dom.client.ClickEvent;
-import com.google.gwt.event.dom.client.ClickHandler;
-import com.google.gwt.event.dom.client.HasClickHandlers;
-import com.google.gwt.event.shared.HandlerRegistration;
-import com.google.gwt.user.client.ui.Button;
-import com.google.gwt.user.client.ui.Composite;
-import com.google.gwt.user.client.ui.DecoratorPanel;
-
-public class EntityOptionsUploadButton extends Composite implements HasClickHandlers {
- DecoratorPanel widget = new DecoratorPanel();
-
- public EntityOptionsUploadButton(final String text) {
- final DecoratorPanel widget = new DecoratorPanel();
- final Button btn = new Button(text);
- btn.addStyleName("k-button");
- initWidget(widget);
- widget.setWidget(btn);
- widget.setHeight("50px");
- }
-
- @Override
- public HandlerRegistration addClickHandler(final ClickHandler handler) {
- return addDomHandler(handler, ClickEvent.getType());
- }
-}
\ No newline at end of file
Modified: trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityUploaderForm.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityUploaderForm.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityUploaderForm.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -11,31 +11,30 @@
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FlowPanel;
+import com.google.gwt.user.client.ui.HasText;
import com.google.gwt.user.client.ui.Hidden;
import com.google.gwt.user.client.ui.Label;
public class EntityUploaderForm extends Composite {
+ private final EntityOptUploadButton btn;
private final Label dialogInfoLabel;
private final Hidden tokenField;
private final MultiUploader uploader;
private final Hidden userhashField;
public EntityUploaderForm(final String servlet, final String btnText) {
- final EntityOptionsUploadButton btn = new EntityOptionsUploadButton(btnText);
+ btn = new EntityOptUploadButton(btnText);
uploader = new MultiUploader(FileInputType.CUSTOM.with(btn));
uploader.setServletPath(servlet);
uploader.setMaximumFiles(1);
+ uploader.setValidExtensions("png", "jpg", "gif", "jpeg", "bmp");
dialogInfoLabel = new Label();
dialogInfoLabel.setWordWrap(true);
dialogInfoLabel.addStyleName("kune-Margin-20-tb");
- uploader.setValidExtensions("png", "jpg", "gif", "jpeg", "bmp");
-
userhashField = new Hidden(FileConstants.HASH, FileConstants.HASH);
tokenField = new Hidden(FileConstants.TOKEN, FileConstants.TOKEN);
-
final FlowPanel holder = new FlowPanel();
-
uploader.add(userhashField);
uploader.add(tokenField);
holder.add(dialogInfoLabel);
@@ -59,6 +58,10 @@
return uploader.addOnStartUploadHandler(handler);
}
+ public HasText getBtn() {
+ return btn.getBtn();
+ }
+
public void reset() {
uploader.reset();
}
Copied: trunk/src/main/java/cc/kune/gspace/client/options/logo/GroupOptLogo.java (from rev 1409, trunk/src/main/java/cc/kune/gspace/client/options/logo/GroupOptionsLogo.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/logo/GroupOptLogo.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/logo/GroupOptLogo.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -0,0 +1,24 @@
+/*
+ *
+ * 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.gspace.client.options.logo;
+
+public interface GroupOptLogo extends EntityOptLogo {
+
+}
Copied: trunk/src/main/java/cc/kune/gspace/client/options/logo/GroupOptLogoPanel.java (from rev 1409, trunk/src/main/java/cc/kune/gspace/client/options/logo/GroupOptionsLogoPanel.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/logo/GroupOptLogoPanel.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/logo/GroupOptLogoPanel.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -0,0 +1,38 @@
+/*
+ *
+ * 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.gspace.client.options.logo;
+
+import cc.kune.core.client.resources.nav.NavResources;
+import cc.kune.core.client.services.FileConstants;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+
+import com.google.gwt.event.shared.EventBus;
+import com.google.inject.Inject;
+
+public class GroupOptLogoPanel extends EntityOptLogoPanel implements GroupOptLogoView {
+ public static final String BUTTON_ID = "k-golp-sendb";
+ public static final String PANEL_ID = "k-golp-pan";
+
+ @Inject
+ public GroupOptLogoPanel(final EventBus eventBus, final I18nTranslationService i18n, final NavResources res) {
+ super(eventBus, i18n, PANEL_ID, BUTTON_ID, FileConstants.GROUP_LOGO_FIELD, res);
+ }
+
+}
Copied: trunk/src/main/java/cc/kune/gspace/client/options/logo/GroupOptLogoPresenter.java (from rev 1412, trunk/src/main/java/cc/kune/gspace/client/options/logo/GroupOptionsLogoPresenter.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/logo/GroupOptLogoPresenter.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/logo/GroupOptLogoPresenter.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -0,0 +1,60 @@
+/*
+ *
+ * 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.gspace.client.options.logo;
+
+import cc.kune.core.client.rpcservices.UserServiceAsync;
+import cc.kune.core.client.state.GroupChangedEvent;
+import cc.kune.core.client.state.GroupChangedEvent.GroupChangedHandler;
+import cc.kune.core.client.state.Session;
+import cc.kune.core.client.state.StateManager;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+import cc.kune.gspace.client.options.GroupOptions;
+
+import com.google.gwt.event.shared.EventBus;
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+
+public class GroupOptLogoPresenter extends EntityOptLogoPresenter {
+
+ @Inject
+ public GroupOptLogoPresenter(final EventBus eventBus, final Session session,
+ final GroupOptions entityOptions, final StateManager stateManager,
+ final Provider<UserServiceAsync> userService, final GroupOptLogoView view,
+ final I18nTranslationService i18n) {
+ super(eventBus, session, entityOptions, userService, i18n);
+ init(view);
+ stateManager.onGroupChanged(true, new GroupChangedHandler() {
+ @Override
+ public void onGroupChanged(final GroupChangedEvent event) {
+ setState();
+ }
+ });
+ }
+
+ private void init(final GroupOptLogoView view) {
+ super.init(view);
+ view.setNormalGroupsLabels();
+ }
+
+ @Override
+ protected void setState() {
+ view.setUploadParams(session.getUserHash(), session.getCurrentStateToken().toString());
+ }
+}
Copied: trunk/src/main/java/cc/kune/gspace/client/options/logo/GroupOptLogoView.java (from rev 1409, trunk/src/main/java/cc/kune/gspace/client/options/logo/GroupOptionsLogoView.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/logo/GroupOptLogoView.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/logo/GroupOptLogoView.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -0,0 +1,24 @@
+/*
+ *
+ * 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.gspace.client.options.logo;
+
+public interface GroupOptLogoView extends EntityOptLogoView {
+
+}
Property changes on: trunk/src/main/java/cc/kune/gspace/client/options/logo/GroupOptLogoView.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/logo/GroupOptionsLogo.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/logo/GroupOptionsLogo.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/options/logo/GroupOptionsLogo.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -1,24 +0,0 @@
-/*
- *
- * 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.gspace.client.options.logo;
-
-public interface GroupOptionsLogo extends EntityOptionsLogo {
-
-}
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/logo/GroupOptionsLogoPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/logo/GroupOptionsLogoPanel.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/options/logo/GroupOptionsLogoPanel.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -1,38 +0,0 @@
-/*
- *
- * 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.gspace.client.options.logo;
-
-import cc.kune.core.client.resources.nav.NavResources;
-import cc.kune.core.client.services.FileConstants;
-import cc.kune.core.shared.i18n.I18nTranslationService;
-
-import com.google.gwt.event.shared.EventBus;
-import com.google.inject.Inject;
-
-public class GroupOptionsLogoPanel extends EntityOptionsLogoPanel implements GroupOptionsLogoView {
- public static final String BUTTON_ID = "k-golp-sendb";
- public static final String PANEL_ID = "k-golp-pan";
-
- @Inject
- public GroupOptionsLogoPanel(final EventBus eventBus, final I18nTranslationService i18n, final NavResources res) {
- super(eventBus, i18n, PANEL_ID, BUTTON_ID, FileConstants.GROUP_LOGO_FIELD, res);
- }
-
-}
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/logo/GroupOptionsLogoPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/logo/GroupOptionsLogoPresenter.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/options/logo/GroupOptionsLogoPresenter.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -1,60 +0,0 @@
-/*
- *
- * 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.gspace.client.options.logo;
-
-import cc.kune.core.client.rpcservices.UserServiceAsync;
-import cc.kune.core.client.state.GroupChangedEvent;
-import cc.kune.core.client.state.GroupChangedEvent.GroupChangedHandler;
-import cc.kune.core.client.state.Session;
-import cc.kune.core.client.state.StateManager;
-import cc.kune.core.shared.i18n.I18nTranslationService;
-import cc.kune.gspace.client.options.GroupOptions;
-
-import com.google.gwt.event.shared.EventBus;
-import com.google.inject.Inject;
-import com.google.inject.Provider;
-
-public class GroupOptionsLogoPresenter extends EntityOptionsLogoPresenter {
-
- @Inject
- public GroupOptionsLogoPresenter(final EventBus eventBus, final Session session,
- final GroupOptions entityOptions, final StateManager stateManager,
- final Provider<UserServiceAsync> userService, final GroupOptionsLogoView view,
- final I18nTranslationService i18n) {
- super(eventBus, session, entityOptions, userService, i18n);
- init(view);
- stateManager.onGroupChanged(true, new GroupChangedHandler() {
- @Override
- public void onGroupChanged(final GroupChangedEvent event) {
- setState();
- }
- });
- }
-
- private void init(final GroupOptionsLogoView view) {
- super.init(view);
- view.setNormalGroupsLabels();
- }
-
- @Override
- protected void setState() {
- view.setUploadParams(session.getUserHash(), session.getCurrentStateToken().toString());
- }
-}
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/logo/GroupOptionsLogoView.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/logo/GroupOptionsLogoView.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/options/logo/GroupOptionsLogoView.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -1,24 +0,0 @@
-/*
- *
- * 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.gspace.client.options.logo;
-
-public interface GroupOptionsLogoView extends EntityOptionsLogoView {
-
-}
Copied: trunk/src/main/java/cc/kune/gspace/client/options/logo/UserOptLogo.java (from rev 1409, trunk/src/main/java/cc/kune/gspace/client/options/logo/UserOptionsLogo.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/logo/UserOptLogo.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/logo/UserOptLogo.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -0,0 +1,24 @@
+/*
+ *
+ * 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.gspace.client.options.logo;
+
+public interface UserOptLogo extends EntityOptLogo {
+
+}
Copied: trunk/src/main/java/cc/kune/gspace/client/options/logo/UserOptLogoPanel.java (from rev 1409, trunk/src/main/java/cc/kune/gspace/client/options/logo/UserOptionsLogoPanel.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/logo/UserOptLogoPanel.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/logo/UserOptLogoPanel.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -0,0 +1,38 @@
+/*
+ *
+ * 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.gspace.client.options.logo;
+
+import cc.kune.core.client.resources.nav.NavResources;
+import cc.kune.core.client.services.FileConstants;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+
+import com.google.gwt.event.shared.EventBus;
+import com.google.inject.Inject;
+
+public class UserOptLogoPanel extends EntityOptLogoPanel implements UserOptLogoView {
+ public static final String BUTTON_ID = "k-uolp-sendb";
+ public static final String PANEL_ID = "k-uolp-pan";
+
+ @Inject
+ public UserOptLogoPanel(final EventBus eventBus, final I18nTranslationService i18n, final NavResources res) {
+ super(eventBus, i18n, PANEL_ID, BUTTON_ID, FileConstants.USER_LOGO_FIELD, res);
+ }
+
+}
Copied: trunk/src/main/java/cc/kune/gspace/client/options/logo/UserOptLogoPresenter.java (from rev 1412, trunk/src/main/java/cc/kune/gspace/client/options/logo/UserOptionsLogoPresenter.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/logo/UserOptLogoPresenter.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/logo/UserOptLogoPresenter.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -0,0 +1,79 @@
+/*
+ *
+ * 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.gspace.client.options.logo;
+
+import gwtupload.client.IUploader;
+import cc.kune.core.client.events.AvatarChangedEvent;
+import cc.kune.core.client.rpcservices.AsyncCallbackSimple;
+import cc.kune.core.client.rpcservices.UserServiceAsync;
+import cc.kune.core.client.state.Session;
+import cc.kune.core.client.state.StateManager;
+import cc.kune.core.client.state.UserSignInEvent;
+import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler;
+import cc.kune.core.shared.dto.GroupDTO;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+import cc.kune.gspace.client.options.UserOptions;
+
+import com.google.gwt.event.shared.EventBus;
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+
+public class UserOptLogoPresenter extends EntityOptLogoPresenter {
+
+ @Inject
+ public UserOptLogoPresenter(final EventBus eventBus, final Session session,
+ final UserOptions entityOptions, final StateManager stateManager,
+ final Provider<UserServiceAsync> userService, final UserOptLogoView view,
+ final I18nTranslationService i18n) {
+ super(eventBus, session, entityOptions, userService, i18n);
+ init(view);
+ session.onUserSignIn(true, new UserSignInHandler() {
+ @Override
+ public void onUserSignIn(final UserSignInEvent event) {
+ setState();
+ }
+ });
+ }
+
+ private void init(final UserOptLogoView view) {
+ super.init(view);
+ view.setPersonalGroupsLabels();
+ }
+
+ @Override
+ public void onSubmitComplete(final IUploader uploader) {
+ super.onSubmitComplete(uploader);
+ final GroupDTO group = session.getCurrentState().getGroup();
+ if (session.getCurrentUser().getShortName().equals(group.getShortName())) {
+ userService.get().getUserAvatarBaser64(session.getUserHash(), group.getStateToken(),
+ new AsyncCallbackSimple<String>() {
+ @Override
+ public void onSuccess(final String photoBinary) {
+ AvatarChangedEvent.fire(eventBus, photoBinary);
+ }
+ });
+ }
+ }
+
+ @Override
+ protected void setState() {
+ view.setUploadParams(session.getUserHash(), session.getCurrentUser().getStateToken().toString());
+ }
+}
Copied: trunk/src/main/java/cc/kune/gspace/client/options/logo/UserOptLogoView.java (from rev 1409, trunk/src/main/java/cc/kune/gspace/client/options/logo/UserOptionsLogoView.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/logo/UserOptLogoView.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/logo/UserOptLogoView.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -0,0 +1,24 @@
+/*
+ *
+ * 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.gspace.client.options.logo;
+
+public interface UserOptLogoView extends EntityOptLogoView {
+
+}
Property changes on: trunk/src/main/java/cc/kune/gspace/client/options/logo/UserOptLogoView.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/logo/UserOptionsLogo.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/logo/UserOptionsLogo.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/options/logo/UserOptionsLogo.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -1,24 +0,0 @@
-/*
- *
- * 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.gspace.client.options.logo;
-
-public interface UserOptionsLogo extends EntityOptionsLogo {
-
-}
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/logo/UserOptionsLogoPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/logo/UserOptionsLogoPanel.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/options/logo/UserOptionsLogoPanel.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -1,38 +0,0 @@
-/*
- *
- * 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.gspace.client.options.logo;
-
-import cc.kune.core.client.resources.nav.NavResources;
-import cc.kune.core.client.services.FileConstants;
-import cc.kune.core.shared.i18n.I18nTranslationService;
-
-import com.google.gwt.event.shared.EventBus;
-import com.google.inject.Inject;
-
-public class UserOptionsLogoPanel extends EntityOptionsLogoPanel implements UserOptionsLogoView {
- public static final String BUTTON_ID = "k-uolp-sendb";
- public static final String PANEL_ID = "k-uolp-pan";
-
- @Inject
- public UserOptionsLogoPanel(final EventBus eventBus, final I18nTranslationService i18n, final NavResources res) {
- super(eventBus, i18n, PANEL_ID, BUTTON_ID, FileConstants.USER_LOGO_FIELD, res);
- }
-
-}
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/logo/UserOptionsLogoPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/logo/UserOptionsLogoPresenter.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/options/logo/UserOptionsLogoPresenter.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -1,79 +0,0 @@
-/*
- *
- * 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.gspace.client.options.logo;
-
-import gwtupload.client.IUploader;
-import cc.kune.core.client.events.AvatarChangedEvent;
-import cc.kune.core.client.rpcservices.AsyncCallbackSimple;
-import cc.kune.core.client.rpcservices.UserServiceAsync;
-import cc.kune.core.client.state.Session;
-import cc.kune.core.client.state.StateManager;
-import cc.kune.core.client.state.UserSignInEvent;
-import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler;
-import cc.kune.core.shared.dto.GroupDTO;
-import cc.kune.core.shared.i18n.I18nTranslationService;
-import cc.kune.gspace.client.options.UserOptions;
-
-import com.google.gwt.event.shared.EventBus;
-import com.google.inject.Inject;
-import com.google.inject.Provider;
-
-public class UserOptionsLogoPresenter extends EntityOptionsLogoPresenter {
-
- @Inject
- public UserOptionsLogoPresenter(final EventBus eventBus, final Session session,
- final UserOptions entityOptions, final StateManager stateManager,
- final Provider<UserServiceAsync> userService, final UserOptionsLogoView view,
- final I18nTranslationService i18n) {
- super(eventBus, session, entityOptions, userService, i18n);
- init(view);
- session.onUserSignIn(true, new UserSignInHandler() {
- @Override
- public void onUserSignIn(final UserSignInEvent event) {
- setState();
- }
- });
- }
-
- private void init(final UserOptionsLogoView view) {
- super.init(view);
- view.setPersonalGroupsLabels();
- }
-
- @Override
- public void onSubmitComplete(final IUploader uploader) {
- super.onSubmitComplete(uploader);
- final GroupDTO group = session.getCurrentState().getGroup();
- if (session.getCurrentUser().getShortName().equals(group.getShortName())) {
- userService.get().getUserAvatarBaser64(session.getUserHash(), group.getStateToken(),
- new AsyncCallbackSimple<String>() {
- @Override
- public void onSuccess(final String photoBinary) {
- AvatarChangedEvent.fire(eventBus, photoBinary);
- }
- });
- }
- }
-
- @Override
- protected void setState() {
- view.setUploadParams(session.getUserHash(), session.getCurrentUser().getStateToken().toString());
- }
-}
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/logo/UserOptionsLogoView.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/logo/UserOptionsLogoView.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/options/logo/UserOptionsLogoView.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -1,24 +0,0 @@
-/*
- *
- * 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.gspace.client.options.logo;
-
-public interface UserOptionsLogoView extends EntityOptionsLogoView {
-
-}
Copied: trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptStyle.java (from rev 1409, trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConf.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptStyle.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptStyle.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -0,0 +1,24 @@
+/*
+ *
+ * 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.gspace.client.options.style;
+
+
+public interface EntityOptStyle {
+}
Copied: trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptStylePanel.java (from rev 1412, trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConfPanel.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptStylePanel.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptStylePanel.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -0,0 +1,179 @@
+/*
+ *
+ * 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.gspace.client.options.style;
+
+import gwtupload.client.IUploader.OnCancelUploaderHandler;
+import gwtupload.client.IUploader.OnChangeUploaderHandler;
+import gwtupload.client.IUploader.OnFinishUploaderHandler;
+import gwtupload.client.IUploader.OnStartUploaderHandler;
+import cc.kune.common.client.notify.NotifyUser;
+import cc.kune.common.client.tooltip.Tooltip;
+import cc.kune.common.client.ui.BasicThumb;
+import cc.kune.common.client.ui.IconLabel;
+import cc.kune.common.client.utils.TextUtils;
+import cc.kune.core.client.resources.CoreResources;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+import cc.kune.gspace.client.options.EntityOptionsView;
+import cc.kune.gspace.client.options.logo.EntityUploaderForm;
+import cc.kune.gspace.client.themes.GSpaceThemeSelectorPanel;
+
+import com.google.gwt.event.dom.client.ClickEvent;
+import com.google.gwt.event.dom.client.ClickHandler;
+import com.google.gwt.event.dom.client.HasClickHandlers;
+import com.google.gwt.event.shared.HandlerRegistration;
+import com.google.gwt.user.client.ui.Button;
+import com.google.gwt.user.client.ui.FlowPanel;
+import com.google.gwt.user.client.ui.Image;
+import com.google.gwt.user.client.ui.IsWidget;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.VerticalPanel;
+
+public class EntityOptStylePanel extends FlowPanel implements EntityOptStyleView {
+
+ public static final String ICON_UPLD_SERVLET = "servlets/EntityBackgroundUploadManager";
+ private final Label backgroundLabel;
+ private final Image backImage;
+ private final String changeImage;
+ private final String chooseImage;
+ private final Button clearBtn;
+ private final String hasBackLabel;
+ private final String noHasBacklabel;
+ private final IconLabel tabTitle;
+ private final EntityUploaderForm uploader;
+
+ public EntityOptStylePanel(final I18nTranslationService i18n, final CoreResources res,
+ final GSpaceThemeSelectorPanel styleSelector) {
+ tabTitle = new IconLabel(res.themeChoose(), i18n.t("Style"));
+ super.setHeight(String.valueOf(EntityOptionsView.HEIGHT) + "px");
+ super.setWidth(String.valueOf(EntityOptionsView.WIDTH) + "px");
+
+ final FlowPanel flow = new FlowPanel();
+ final Label wsThemeInfo = new Label(i18n.t("Change this workspace theme:"));
+ flow.addStyleName("kune-Margin-20-tb");
+ wsThemeInfo.addStyleName("k-fl");
+ styleSelector.addStyleName("k-fl");
+ styleSelector.addStyleName("kune-Margin-10-lr");
+ flow.add(wsThemeInfo);
+ flow.add(styleSelector);
+ hasBackLabel = i18n.t("Current background image: ");
+ noHasBacklabel = i18n.t("Also you can upload a background:");
+ backgroundLabel = new Label(hasBackLabel);
+ backgroundLabel.addStyleName("k-clear");
+ chooseImage = i18n.t("Choose");
+ changeImage = i18n.t("Change");
+ uploader = new EntityUploaderForm(ICON_UPLD_SERVLET, chooseImage);
+ uploader.addStyleName("k-fl");
+ backImage = new Image();
+ backImage.addStyleName("kune-Margin-Medium-trbl");
+ clearBtn = new Button(i18n.t("Clear"));
+ clearBtn.setStyleName("k-button");
+ clearBtn.addStyleName("k-fl");
+ clearBtn.addStyleName("kune-Margin-20-lr");
+ Tooltip.to(clearBtn, i18n.t("Remove current background image"));
+ flow.add(backgroundLabel);
+ flow.add(backImage);
+ flow.add(clearBtn);
+ flow.add(uploader);
+ flow.addStyleName("oc-clean");
+ backImage.addStyleName("k-fl");
+ add(flow);
+ final Label wsInfo = new Label(i18n.t("Select and configure the public space theme of this group:"));
+ wsInfo.addStyleName("kune-Margin-Medium-tb");
+ // add(wsInfo);
+
+ final VerticalPanel stylesPanel = new VerticalPanel();
+ final ClickHandler clickHandler = new ClickHandler() {
+
+ @Override
+ public void onClick(final ClickEvent event) {
+ NotifyUser.info(TextUtils.IN_DEVELOPMENT);
+ }
+ };
+ for (int i = 1; i <= 6; i++) {
+ final BasicThumb thumb = new BasicThumb("images/styles/styl" + i + ".png", "Style " + i,
+ clickHandler);
+ thumb.setTooltip(i18n.t("Click to select and configure this theme"));
+ // add(thumb);
+ }
+ stylesPanel.addStyleName("oc-clean");
+ add(stylesPanel);
+ setBackImageVisibleImpl(false);
+ super.addStyleName("k-overflow-y-auto");
+ super.addStyleName("k-tab-panel");
+ }
+
+ @Override
+ public HandlerRegistration addOnCancelUploadHandler(final OnCancelUploaderHandler handler) {
+ return uploader.addOnCancelUploadHandler(handler);
+ }
+
+ @Override
+ public HandlerRegistration addOnChangeUploadHandler(final OnChangeUploaderHandler handler) {
+ return uploader.addOnChangeUploadHandler(handler);
+ }
+
+ @Override
+ public HandlerRegistration addOnFinishUploadHandler(final OnFinishUploaderHandler handler) {
+ return uploader.addOnFinishUploadHandler(handler);
+ }
+
+ @Override
+ public HandlerRegistration addOnStartUploadHandler(final OnStartUploaderHandler handler) {
+ return uploader.addOnStartUploadHandler(handler);
+ }
+
+ @Override
+ public void clearBackImage() {
+ setBackImageVisibleImpl(false);
+ }
+
+ @Override
+ public HasClickHandlers getClearBtn() {
+ return clearBtn;
+ }
+
+ @Override
+ public IsWidget getTabTitle() {
+ return tabTitle;
+ }
+
+ @Override
+ public void reset() {
+ uploader.reset();
+ }
+
+ @Override
+ public void setBackImage(final String url) {
+ backImage.setUrl(url);
+ setBackImageVisibleImpl(true);
+ }
+
+ private void setBackImageVisibleImpl(final boolean visible) {
+ backImage.setVisible(visible);
+ clearBtn.setVisible(visible);
+ backgroundLabel.setText(visible ? hasBackLabel : noHasBacklabel);
+ uploader.getBtn().setText(visible ? changeImage : chooseImage);
+ }
+
+ @Override
+ public void setUploadParams(final String userHash, final String token) {
+ uploader.setUploadParams(userHash, token);
+ }
+}
Copied: trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptStylePresenter.java (from rev 1412, trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConfPresenter.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptStylePresenter.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptStylePresenter.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -0,0 +1,169 @@
+/*
+ *
+ * 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.gspace.client.options.style;
+
+import gwtupload.client.IUploadStatus.Status;
+import gwtupload.client.IUploader;
+import gwtupload.client.IUploader.OnFinishUploaderHandler;
+import gwtupload.client.IUploader.OnStartUploaderHandler;
+import cc.kune.common.client.notify.NotifyUser;
+import cc.kune.common.client.utils.TextUtils;
+import cc.kune.core.client.rpcservices.AsyncCallbackSimple;
+import cc.kune.core.client.rpcservices.GroupServiceAsync;
+import cc.kune.core.client.services.FileDownloadUtils;
+import cc.kune.core.client.services.ImageSize;
+import cc.kune.core.client.state.Session;
+import cc.kune.core.client.state.StateChangedEvent;
+import cc.kune.core.client.state.StateChangedEvent.StateChangedHandler;
+import cc.kune.core.client.state.StateManager;
+import cc.kune.core.shared.domain.utils.StateToken;
+import cc.kune.core.shared.dto.GroupDTO;
+import cc.kune.core.shared.dto.StateAbstractDTO;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+import cc.kune.gspace.client.options.EntityOptions;
+import cc.kune.gspace.client.style.ClearBackImageEvent;
+import cc.kune.gspace.client.style.GSpaceBackManager;
+import cc.kune.gspace.client.style.SetBackImageEvent;
+import cc.kune.gspace.client.themes.GSpaceThemeSelectorPresenter;
+
+import com.google.gwt.event.dom.client.ClickEvent;
+import com.google.gwt.event.dom.client.ClickHandler;
+import com.google.gwt.event.shared.EventBus;
+import com.google.gwt.user.client.ui.IsWidget;
+import com.google.inject.Provider;
+
+public abstract class EntityOptStylePresenter implements EntityOptStyle {
+ private final GSpaceBackManager backManager;
+ private final EntityOptions entityOptions;
+ private final EventBus eventBus;
+ private final FileDownloadUtils fileDownloadUtils;
+ private final Provider<GroupServiceAsync> groupService;
+ private final I18nTranslationService i18n;
+ private final Session session;
+ private final StateManager stateManager;
+ private EntityOptStyleView view;
+
+ protected EntityOptStylePresenter(final EventBus eventBus, final Session session,
+ final StateManager stateManager, final EntityOptions entityOptions,
+ final Provider<GroupServiceAsync> groupService, final GSpaceBackManager backManager,
+ final GSpaceThemeSelectorPresenter styleSelector, final I18nTranslationService i18n,
+ final FileDownloadUtils fileDownloadUtils) {
+ this.eventBus = eventBus;
+ this.session = session;
+ this.stateManager = stateManager;
+ this.entityOptions = entityOptions;
+ this.groupService = groupService;
+ this.backManager = backManager;
+ this.i18n = i18n;
+ this.fileDownloadUtils = fileDownloadUtils;
+ }
+
+ private void clearBackImage() {
+ groupService.get().clearGroupBackImage(session.getUserHash(), session.getCurrentStateToken(),
+ new AsyncCallbackSimple<GroupDTO>() {
+ @Override
+ public void onSuccess(final GroupDTO result) {
+ view.clearBackImage();
+ backManager.clearBackImage();
+ ClearBackImageEvent.fire(eventBus);
+ }
+ });
+ }
+
+ public IsWidget getView() {
+ return view;
+ }
+
+ public void init(final EntityOptStyleView view) {
+ this.view = view;
+ entityOptions.addTab(view, view.getTabTitle());
+ setState();
+ view.getClearBtn().addClickHandler(new ClickHandler() {
+ @Override
+ public void onClick(final ClickEvent event) {
+ clearBackImage();
+ }
+ });
+ stateManager.onStateChanged(true, new StateChangedHandler() {
+ @Override
+ public void onStateChanged(final StateChangedEvent event) {
+ setState();
+ }
+ });
+ eventBus.addHandler(SetBackImageEvent.getType(), new SetBackImageEvent.SetBackImageHandler() {
+ @Override
+ public void onSetBackImage(final SetBackImageEvent event) {
+ final StateToken token = event.getToken();
+ backManager.setBackImage(token);
+ setBackImage(event.getToken());
+ }
+ });
+ eventBus.addHandler(ClearBackImageEvent.getType(), new ClearBackImageEvent.ClearBackImageHandler() {
+ @Override
+ public void onClearBackImage(final ClearBackImageEvent event) {
+ view.clearBackImage();
+ }
+ });
+ view.addOnStartUploadHandler(new OnStartUploaderHandler() {
+ @Override
+ public void onStart(final IUploader uploader) {
+ setState();
+ }
+ });
+ view.addOnFinishUploadHandler(new OnFinishUploaderHandler() {
+ @Override
+ public void onFinish(final IUploader uploader) {
+ onSubmitComplete(uploader);
+ }
+ });
+ }
+
+ private void onSubmitComplete(final IUploader uploader) {
+ final String response = uploader.getServerInfo().message;
+ if (uploader.getStatus() == Status.SUCCESS) {
+ if (!TextUtils.empty(response)) {
+ NotifyUser.info(response);
+ }
+ SetBackImageEvent.fire(eventBus, session.getCurrentState().getGroup().getStateToken());
+ } else {
+ onSubmitFailed(response);
+ }
+ }
+
+ private void onSubmitFailed(final String responseText) {
+ NotifyUser.error(i18n.t("Error setting the background"), responseText);
+ }
+
+ private void setBackImage(final StateToken token) {
+ view.setBackImage(fileDownloadUtils.getBackgroundResizedUrl(token, ImageSize.thumb));
+ }
+
+ private void setState() {
+ final StateAbstractDTO state = session.getCurrentState();
+ final GroupDTO group = state.getGroup();
+ if (group.getBackgroundImage() == null) {
+ view.clearBackImage();
+ } else {
+ setBackImage(group.getStateToken());
+ }
+ view.setUploadParams(session.getUserHash(), session.getCurrentStateToken().toString());
+ }
+
+}
Copied: trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptStyleView.java (from rev 1412, trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConfView.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptStyleView.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptStyleView.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -0,0 +1,49 @@
+/*
+ *
+ * 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.gspace.client.options.style;
+
+import gwtupload.client.IUploader;
+import gwtupload.client.IUploader.OnCancelUploaderHandler;
+import cc.kune.gspace.client.options.EntityOptionsTabView;
+
+import com.google.gwt.event.dom.client.HasClickHandlers;
+import com.google.gwt.event.shared.HandlerRegistration;
+
+public interface EntityOptStyleView extends EntityOptionsTabView {
+
+ HandlerRegistration addOnCancelUploadHandler(OnCancelUploaderHandler handler);
+
+ HandlerRegistration addOnChangeUploadHandler(IUploader.OnChangeUploaderHandler handler);
+
+ HandlerRegistration addOnFinishUploadHandler(IUploader.OnFinishUploaderHandler handler);
+
+ HandlerRegistration addOnStartUploadHandler(IUploader.OnStartUploaderHandler handler);
+
+ public void clearBackImage();
+
+ HasClickHandlers getClearBtn();
+
+ void reset();
+
+ public void setBackImage(final String url);
+
+ void setUploadParams(String userHash, String token);
+
+}
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConf.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConf.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConf.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -1,24 +0,0 @@
-/*
- *
- * 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.gspace.client.options.style;
-
-
-public interface EntityOptionsStyleConf {
-}
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConfPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConfPanel.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConfPanel.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -1,177 +0,0 @@
-/*
- *
- * 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.gspace.client.options.style;
-
-import gwtupload.client.IUploader.OnCancelUploaderHandler;
-import gwtupload.client.IUploader.OnChangeUploaderHandler;
-import gwtupload.client.IUploader.OnFinishUploaderHandler;
-import gwtupload.client.IUploader.OnStartUploaderHandler;
-import cc.kune.common.client.notify.NotifyUser;
-import cc.kune.common.client.tooltip.Tooltip;
-import cc.kune.common.client.ui.BasicThumb;
-import cc.kune.common.client.ui.IconLabel;
-import cc.kune.common.client.utils.TextUtils;
-import cc.kune.core.client.resources.CoreResources;
-import cc.kune.core.shared.i18n.I18nTranslationService;
-import cc.kune.gspace.client.options.EntityOptionsView;
-import cc.kune.gspace.client.options.logo.EntityUploaderForm;
-import cc.kune.gspace.client.themes.GSpaceThemeSelectorPanel;
-
-import com.google.gwt.event.dom.client.ClickEvent;
-import com.google.gwt.event.dom.client.ClickHandler;
-import com.google.gwt.event.dom.client.HasClickHandlers;
-import com.google.gwt.event.shared.HandlerRegistration;
-import com.google.gwt.user.client.ui.Button;
-import com.google.gwt.user.client.ui.FlowPanel;
-import com.google.gwt.user.client.ui.Image;
-import com.google.gwt.user.client.ui.IsWidget;
-import com.google.gwt.user.client.ui.Label;
-import com.google.gwt.user.client.ui.VerticalPanel;
-
-public class EntityOptionsStyleConfPanel extends FlowPanel implements EntityOptionsStyleConfView {
-
- public static final String ICON_UPLD_SERVLET = "servlets/EntityBackgroundUploadManager";
- private final Image backImage;
- private final Button clearBtn;
- private final Label currentBackLabel;
- private final Label noBackLabel;
- private final IconLabel tabTitle;
- private final EntityUploaderForm uploader;
-
- public EntityOptionsStyleConfPanel(final I18nTranslationService i18n, final CoreResources res,
- final GSpaceThemeSelectorPanel styleSelector) {
- ;
- tabTitle = new IconLabel(res.themeChoose(), i18n.t("Style"));
- super.setHeight(String.valueOf(EntityOptionsView.HEIGHT) + "px");
- super.setWidth(String.valueOf(EntityOptionsView.WIDTH) + "px");
-
- final FlowPanel flow = new FlowPanel();
- final Label wsThemeInfo = new Label(i18n.t("Change this workspace theme:"));
- flow.addStyleName("kune-Margin-20-tb");
- wsThemeInfo.addStyleName("k-fl");
- styleSelector.addStyleName("k-fl");
- styleSelector.addStyleName("kune-Margin-10-trbl");
- flow.add(wsThemeInfo);
- flow.add(styleSelector);
- currentBackLabel = new Label(i18n.t("Current background image: "));
- noBackLabel = new Label(i18n.t("Also you can upload a background:"));
- currentBackLabel.addStyleName("k-clear");
- noBackLabel.addStyleName("k-clear");
- uploader = new EntityUploaderForm(ICON_UPLD_SERVLET, i18n.t("Choose"));
- uploader.addStyleName("k-fl");
- backImage = new Image();
- backImage.addStyleName("kune-Margin-Medium-trbl");
- noBackLabel.addStyleName("kune-Margin-Medium-tb");
- clearBtn = new Button(i18n.t("Clear"));
- clearBtn.setStyleName("k-button");
- clearBtn.addStyleName("k-fl");
- Tooltip.to(clearBtn, i18n.t("Remove current background image"));
- flow.add(noBackLabel);
- flow.add(currentBackLabel);
- flow.add(backImage);
- flow.add(uploader);
- flow.add(clearBtn);
- flow.addStyleName("oc-clean");
- backImage.addStyleName("k-fr");
- add(flow);
- final Label wsInfo = new Label(i18n.t("Select and configure the public space theme of this group:"));
- wsInfo.addStyleName("kune-Margin-Medium-tb");
- // add(wsInfo);
-
- final VerticalPanel stylesPanel = new VerticalPanel();
- final ClickHandler clickHandler = new ClickHandler() {
-
- @Override
- public void onClick(final ClickEvent event) {
- NotifyUser.info(TextUtils.IN_DEVELOPMENT);
- }
- };
- for (int i = 1; i <= 6; i++) {
- final BasicThumb thumb = new BasicThumb("images/styles/styl" + i + ".png", "Style " + i,
- clickHandler);
- thumb.setTooltip(i18n.t("Click to select and configure this theme"));
- // add(thumb);
- }
- stylesPanel.addStyleName("oc-clean");
- add(stylesPanel);
- setBackImageVisibleImpl(false);
- super.addStyleName("k-overflow-y-auto");
- super.addStyleName("k-tab-panel");
- }
-
- @Override
- public HandlerRegistration addOnCancelUploadHandler(final OnCancelUploaderHandler handler) {
- return uploader.addOnCancelUploadHandler(handler);
- }
-
- @Override
- public HandlerRegistration addOnChangeUploadHandler(final OnChangeUploaderHandler handler) {
- return uploader.addOnChangeUploadHandler(handler);
- }
-
- @Override
- public HandlerRegistration addOnFinishUploadHandler(final OnFinishUploaderHandler handler) {
- return uploader.addOnFinishUploadHandler(handler);
- }
-
- @Override
- public HandlerRegistration addOnStartUploadHandler(final OnStartUploaderHandler handler) {
- return uploader.addOnStartUploadHandler(handler);
- }
-
- @Override
- public void clearBackImage() {
- setBackImageVisibleImpl(false);
- }
-
- @Override
- public HasClickHandlers getClearBtn() {
- return clearBtn;
- }
-
- @Override
- public IsWidget getTabTitle() {
- return tabTitle;
- }
-
- @Override
- public void reset() {
- uploader.reset();
- }
-
- @Override
- public void setBackImage(final String url) {
- // backImage.setUrl(downUtils.getImageResizedUrl(token, ImageSize.thumb));
- backImage.setUrl(url);
- setBackImageVisibleImpl(true);
- }
-
- private void setBackImageVisibleImpl(final boolean visible) {
- backImage.setVisible(visible);
- currentBackLabel.setVisible(visible);
- clearBtn.setVisible(visible);
- noBackLabel.setVisible(!visible);
- }
-
- @Override
- public void setUploadParams(final String userHash, final String token) {
- uploader.setUploadParams(userHash, token);
- }
-}
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConfPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConfPresenter.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConfPresenter.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -1,169 +0,0 @@
-/*
- *
- * 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.gspace.client.options.style;
-
-import gwtupload.client.IUploadStatus.Status;
-import gwtupload.client.IUploader;
-import gwtupload.client.IUploader.OnFinishUploaderHandler;
-import gwtupload.client.IUploader.OnStartUploaderHandler;
-import cc.kune.common.client.notify.NotifyUser;
-import cc.kune.common.client.utils.TextUtils;
-import cc.kune.core.client.rpcservices.AsyncCallbackSimple;
-import cc.kune.core.client.rpcservices.GroupServiceAsync;
-import cc.kune.core.client.services.FileDownloadUtils;
-import cc.kune.core.client.services.ImageSize;
-import cc.kune.core.client.state.Session;
-import cc.kune.core.client.state.StateChangedEvent;
-import cc.kune.core.client.state.StateChangedEvent.StateChangedHandler;
-import cc.kune.core.client.state.StateManager;
-import cc.kune.core.shared.domain.utils.StateToken;
-import cc.kune.core.shared.dto.GroupDTO;
-import cc.kune.core.shared.dto.StateAbstractDTO;
-import cc.kune.core.shared.i18n.I18nTranslationService;
-import cc.kune.gspace.client.options.EntityOptions;
-import cc.kune.gspace.client.style.ClearBackImageEvent;
-import cc.kune.gspace.client.style.GSpaceBackManager;
-import cc.kune.gspace.client.style.SetBackImageEvent;
-import cc.kune.gspace.client.themes.GSpaceThemeSelectorPresenter;
-
-import com.google.gwt.event.dom.client.ClickEvent;
-import com.google.gwt.event.dom.client.ClickHandler;
-import com.google.gwt.event.shared.EventBus;
-import com.google.gwt.user.client.ui.IsWidget;
-import com.google.inject.Provider;
-
-public abstract class EntityOptionsStyleConfPresenter implements EntityOptionsStyleConf {
- private final GSpaceBackManager backManager;
- private final EntityOptions entityOptions;
- private final EventBus eventBus;
- private final FileDownloadUtils fileDownloadUtils;
- private final Provider<GroupServiceAsync> groupService;
- private final I18nTranslationService i18n;
- private final Session session;
- private final StateManager stateManager;
- private EntityOptionsStyleConfView view;
-
- protected EntityOptionsStyleConfPresenter(final EventBus eventBus, final Session session,
- final StateManager stateManager, final EntityOptions entityOptions,
- final Provider<GroupServiceAsync> groupService, final GSpaceBackManager backManager,
- final GSpaceThemeSelectorPresenter styleSelector, final I18nTranslationService i18n,
- final FileDownloadUtils fileDownloadUtils) {
- this.eventBus = eventBus;
- this.session = session;
- this.stateManager = stateManager;
- this.entityOptions = entityOptions;
- this.groupService = groupService;
- this.backManager = backManager;
- this.i18n = i18n;
- this.fileDownloadUtils = fileDownloadUtils;
- }
-
- private void clearBackImage() {
- groupService.get().clearGroupBackImage(session.getUserHash(), session.getCurrentStateToken(),
- new AsyncCallbackSimple<GroupDTO>() {
- @Override
- public void onSuccess(final GroupDTO result) {
- view.clearBackImage();
- backManager.clearBackImage();
- ClearBackImageEvent.fire(eventBus);
- }
- });
- }
-
- public IsWidget getView() {
- return view;
- }
-
- public void init(final EntityOptionsStyleConfView view) {
- this.view = view;
- entityOptions.addTab(view, view.getTabTitle());
- setState();
- view.getClearBtn().addClickHandler(new ClickHandler() {
- @Override
- public void onClick(final ClickEvent event) {
- clearBackImage();
- }
- });
- stateManager.onStateChanged(true, new StateChangedHandler() {
- @Override
- public void onStateChanged(final StateChangedEvent event) {
- setState();
- }
- });
- eventBus.addHandler(SetBackImageEvent.getType(), new SetBackImageEvent.SetBackImageHandler() {
- @Override
- public void onSetBackImage(final SetBackImageEvent event) {
- final StateToken token = event.getToken();
- backManager.setBackImage(token);
- setBackImage(event.getToken());
- }
- });
- eventBus.addHandler(ClearBackImageEvent.getType(), new ClearBackImageEvent.ClearBackImageHandler() {
- @Override
- public void onClearBackImage(final ClearBackImageEvent event) {
- view.clearBackImage();
- }
- });
- view.addOnStartUploadHandler(new OnStartUploaderHandler() {
- @Override
- public void onStart(final IUploader uploader) {
- setState();
- }
- });
- view.addOnFinishUploadHandler(new OnFinishUploaderHandler() {
- @Override
- public void onFinish(final IUploader uploader) {
- onSubmitComplete(uploader);
- }
- });
- }
-
- private void onSubmitComplete(final IUploader uploader) {
- final String response = uploader.getServerInfo().message;
- if (uploader.getStatus() == Status.SUCCESS) {
- if (!TextUtils.empty(response)) {
- NotifyUser.info(response);
- }
- SetBackImageEvent.fire(eventBus, session.getCurrentState().getGroup().getStateToken());
- } else {
- onSubmitFailed(response);
- }
- }
-
- private void onSubmitFailed(final String responseText) {
- NotifyUser.error(i18n.t("Error setting the background"), responseText);
- }
-
- private void setBackImage(final StateToken token) {
- view.setBackImage(fileDownloadUtils.getBackgroundResizedUrl(token, ImageSize.thumb));
- }
-
- private void setState() {
- final StateAbstractDTO state = session.getCurrentState();
- final GroupDTO group = state.getGroup();
- if (group.getBackgroundImage() == null) {
- view.clearBackImage();
- } else {
- setBackImage(group.getStateToken());
- }
- view.setUploadParams(session.getUserHash(), session.getCurrentStateToken().toString());
- }
-
-}
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConfView.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConfView.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConfView.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -1,49 +0,0 @@
-/*
- *
- * 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.gspace.client.options.style;
-
-import gwtupload.client.IUploader;
-import gwtupload.client.IUploader.OnCancelUploaderHandler;
-import cc.kune.gspace.client.options.EntityOptionsTabView;
-
-import com.google.gwt.event.dom.client.HasClickHandlers;
-import com.google.gwt.event.shared.HandlerRegistration;
-
-public interface EntityOptionsStyleConfView extends EntityOptionsTabView {
-
- HandlerRegistration addOnCancelUploadHandler(OnCancelUploaderHandler handler);
-
- HandlerRegistration addOnChangeUploadHandler(IUploader.OnChangeUploaderHandler handler);
-
- HandlerRegistration addOnFinishUploadHandler(IUploader.OnFinishUploaderHandler handler);
-
- HandlerRegistration addOnStartUploadHandler(IUploader.OnStartUploaderHandler handler);
-
- public void clearBackImage();
-
- HasClickHandlers getClearBtn();
-
- void reset();
-
- public void setBackImage(final String url);
-
- void setUploadParams(String userHash, String token);
-
-}
Copied: trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptStyle.java (from rev 1409, trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsStyleConf.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptStyle.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptStyle.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -0,0 +1,24 @@
+/*
+ *
+ * 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.gspace.client.options.style;
+
+public interface GroupOptStyle extends EntityOptStyle {
+
+}
Copied: trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptStylePanel.java (from rev 1412, trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsStyleConfPanel.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptStylePanel.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptStylePanel.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -0,0 +1,37 @@
+/*
+ *
+ * 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.gspace.client.options.style;
+
+import cc.kune.core.client.resources.CoreResources;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+import cc.kune.gspace.client.themes.GSpaceThemeSelectorPanel;
+
+import com.google.inject.Inject;
+
+public class GroupOptStylePanel extends EntityOptStylePanel implements
+ GroupOptStyleView {
+
+ @Inject
+ public GroupOptStylePanel(final I18nTranslationService i18n, final CoreResources res,
+ final GSpaceThemeSelectorPanel styleSelector) {
+ super(i18n, res, styleSelector);
+ }
+
+}
Property changes on: trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptStylePanel.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Copied: trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptStylePresenter.java (from rev 1412, trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsStyleConfPresenter.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptStylePresenter.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptStylePresenter.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -0,0 +1,49 @@
+/*
+ *
+ * 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.gspace.client.options.style;
+
+import cc.kune.core.client.rpcservices.GroupServiceAsync;
+import cc.kune.core.client.services.FileDownloadUtils;
+import cc.kune.core.client.state.Session;
+import cc.kune.core.client.state.StateManager;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+import cc.kune.gspace.client.options.GroupOptions;
+import cc.kune.gspace.client.style.GSpaceBackManager;
+import cc.kune.gspace.client.themes.GSpaceThemeSelectorPresenter;
+
+import com.google.gwt.event.shared.EventBus;
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+
+public class GroupOptStylePresenter extends EntityOptStylePresenter implements
+ GroupOptStyle {
+
+ @Inject
+ public GroupOptStylePresenter(final EventBus eventBus, final Session session,
+ final StateManager stateManager, final GroupOptions entityOptions,
+ final Provider<GroupServiceAsync> groupService, final GSpaceBackManager backManager,
+ final GroupOptStyleView view, final GSpaceThemeSelectorPresenter styleSelector,
+ final I18nTranslationService i18n, final FileDownloadUtils fileDownUtils) {
+ super(eventBus, session, stateManager, entityOptions, groupService, backManager, styleSelector,
+ i18n, fileDownUtils);
+ init(view);
+ }
+
+}
\ No newline at end of file
Copied: trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptStyleView.java (from rev 1409, trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsStyleConfView.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptStyleView.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptStyleView.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -0,0 +1,24 @@
+/*
+ *
+ * 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.gspace.client.options.style;
+
+public interface GroupOptStyleView extends EntityOptStyleView {
+
+}
Property changes on: trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptStyleView.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsStyleConf.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsStyleConf.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsStyleConf.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -1,24 +0,0 @@
-/*
- *
- * 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.gspace.client.options.style;
-
-public interface GroupOptionsStyleConf extends EntityOptionsStyleConf {
-
-}
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsStyleConfPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsStyleConfPanel.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsStyleConfPanel.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -1,37 +0,0 @@
-/*
- *
- * 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.gspace.client.options.style;
-
-import cc.kune.core.client.resources.CoreResources;
-import cc.kune.core.shared.i18n.I18nTranslationService;
-import cc.kune.gspace.client.themes.GSpaceThemeSelectorPanel;
-
-import com.google.inject.Inject;
-
-public class GroupOptionsStyleConfPanel extends EntityOptionsStyleConfPanel implements
- GroupOptionsStyleConfView {
-
- @Inject
- public GroupOptionsStyleConfPanel(final I18nTranslationService i18n, final CoreResources res,
- final GSpaceThemeSelectorPanel styleSelector) {
- super(i18n, res, styleSelector);
- }
-
-}
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsStyleConfPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsStyleConfPresenter.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsStyleConfPresenter.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -1,49 +0,0 @@
-/*
- *
- * 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.gspace.client.options.style;
-
-import cc.kune.core.client.rpcservices.GroupServiceAsync;
-import cc.kune.core.client.services.FileDownloadUtils;
-import cc.kune.core.client.state.Session;
-import cc.kune.core.client.state.StateManager;
-import cc.kune.core.shared.i18n.I18nTranslationService;
-import cc.kune.gspace.client.options.GroupOptions;
-import cc.kune.gspace.client.style.GSpaceBackManager;
-import cc.kune.gspace.client.themes.GSpaceThemeSelectorPresenter;
-
-import com.google.gwt.event.shared.EventBus;
-import com.google.inject.Inject;
-import com.google.inject.Provider;
-
-public class GroupOptionsStyleConfPresenter extends EntityOptionsStyleConfPresenter implements
- GroupOptionsStyleConf {
-
- @Inject
- public GroupOptionsStyleConfPresenter(final EventBus eventBus, final Session session,
- final StateManager stateManager, final GroupOptions entityOptions,
- final Provider<GroupServiceAsync> groupService, final GSpaceBackManager backManager,
- final GroupOptionsStyleConfView view, final GSpaceThemeSelectorPresenter styleSelector,
- final I18nTranslationService i18n, final FileDownloadUtils fileDownUtils) {
- super(eventBus, session, stateManager, entityOptions, groupService, backManager, styleSelector,
- i18n, fileDownUtils);
- init(view);
- }
-
-}
\ No newline at end of file
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsStyleConfView.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsStyleConfView.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsStyleConfView.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -1,24 +0,0 @@
-/*
- *
- * 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.gspace.client.options.style;
-
-public interface GroupOptionsStyleConfView extends EntityOptionsStyleConfView {
-
-}
Copied: trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptStyle.java (from rev 1409, trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsStyleConf.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptStyle.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptStyle.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -0,0 +1,24 @@
+/*
+ *
+ * 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.gspace.client.options.style;
+
+public interface UserOptStyle extends EntityOptStyle {
+
+}
Copied: trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptStylePanel.java (from rev 1412, trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsStyleConfPanel.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptStylePanel.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptStylePanel.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -0,0 +1,37 @@
+/*
+ *
+ * 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.gspace.client.options.style;
+
+import cc.kune.core.client.resources.CoreResources;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+import cc.kune.gspace.client.themes.GSpaceThemeSelectorPanel;
+
+import com.google.inject.Inject;
+
+public class UserOptStylePanel extends EntityOptStylePanel implements
+ UserOptStyleView {
+
+ @Inject
+ public UserOptStylePanel(final I18nTranslationService i18n, final CoreResources res,
+ final GSpaceThemeSelectorPanel styleSelector) {
+ super(i18n, res, styleSelector);
+ }
+
+}
Property changes on: trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptStylePanel.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Copied: trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptStylePresenter.java (from rev 1412, trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsStyleConfPresenter.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptStylePresenter.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptStylePresenter.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -0,0 +1,50 @@
+/*
+ *
+ * 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.gspace.client.options.style;
+
+import cc.kune.core.client.rpcservices.GroupServiceAsync;
+import cc.kune.core.client.services.FileDownloadUtils;
+import cc.kune.core.client.state.Session;
+import cc.kune.core.client.state.StateManager;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+import cc.kune.gspace.client.options.UserOptions;
+import cc.kune.gspace.client.style.GSpaceBackManager;
+import cc.kune.gspace.client.themes.GSpaceThemeSelectorPresenter;
+
+import com.google.gwt.event.shared.EventBus;
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+
+public class UserOptStylePresenter extends EntityOptStylePresenter implements
+ UserOptStyle {
+
+ // private final WsThemeSelector themeSelector;
+
+ @Inject
+ public UserOptStylePresenter(final EventBus eventBus, final Session session,
+ final StateManager stateManager, final UserOptions entityOptions,
+ final Provider<GroupServiceAsync> groupService, final GSpaceBackManager backManager,
+ final UserOptStyleView view, final GSpaceThemeSelectorPresenter styleSelector,
+ final I18nTranslationService i18n, final FileDownloadUtils fileDownUtils) {
+ super(eventBus, session, stateManager, entityOptions, groupService, backManager, styleSelector,
+ i18n, fileDownUtils);
+ init(view);
+ }
+}
Copied: trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptStyleView.java (from rev 1409, trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsStyleConfView.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptStyleView.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptStyleView.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -0,0 +1,24 @@
+/*
+ *
+ * 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.gspace.client.options.style;
+
+public interface UserOptStyleView extends EntityOptStyleView {
+
+}
Property changes on: trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptStyleView.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsStyleConf.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsStyleConf.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsStyleConf.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -1,24 +0,0 @@
-/*
- *
- * 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.gspace.client.options.style;
-
-public interface UserOptionsStyleConf extends EntityOptionsStyleConf {
-
-}
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsStyleConfPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsStyleConfPanel.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsStyleConfPanel.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -1,37 +0,0 @@
-/*
- *
- * 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.gspace.client.options.style;
-
-import cc.kune.core.client.resources.CoreResources;
-import cc.kune.core.shared.i18n.I18nTranslationService;
-import cc.kune.gspace.client.themes.GSpaceThemeSelectorPanel;
-
-import com.google.inject.Inject;
-
-public class UserOptionsStyleConfPanel extends EntityOptionsStyleConfPanel implements
- UserOptionsStyleConfView {
-
- @Inject
- public UserOptionsStyleConfPanel(final I18nTranslationService i18n, final CoreResources res,
- final GSpaceThemeSelectorPanel styleSelector) {
- super(i18n, res, styleSelector);
- }
-
-}
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsStyleConfPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsStyleConfPresenter.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsStyleConfPresenter.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -1,50 +0,0 @@
-/*
- *
- * 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.gspace.client.options.style;
-
-import cc.kune.core.client.rpcservices.GroupServiceAsync;
-import cc.kune.core.client.services.FileDownloadUtils;
-import cc.kune.core.client.state.Session;
-import cc.kune.core.client.state.StateManager;
-import cc.kune.core.shared.i18n.I18nTranslationService;
-import cc.kune.gspace.client.options.UserOptions;
-import cc.kune.gspace.client.style.GSpaceBackManager;
-import cc.kune.gspace.client.themes.GSpaceThemeSelectorPresenter;
-
-import com.google.gwt.event.shared.EventBus;
-import com.google.inject.Inject;
-import com.google.inject.Provider;
-
-public class UserOptionsStyleConfPresenter extends EntityOptionsStyleConfPresenter implements
- UserOptionsStyleConf {
-
- // private final WsThemeSelector themeSelector;
-
- @Inject
- public UserOptionsStyleConfPresenter(final EventBus eventBus, final Session session,
- final StateManager stateManager, final UserOptions entityOptions,
- final Provider<GroupServiceAsync> groupService, final GSpaceBackManager backManager,
- final UserOptionsStyleConfView view, final GSpaceThemeSelectorPresenter styleSelector,
- final I18nTranslationService i18n, final FileDownloadUtils fileDownUtils) {
- super(eventBus, session, stateManager, entityOptions, groupService, backManager, styleSelector,
- i18n, fileDownUtils);
- init(view);
- }
-}
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsStyleConfView.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsStyleConfView.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsStyleConfView.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -1,24 +0,0 @@
-/*
- *
- * 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.gspace.client.options.style;
-
-public interface UserOptionsStyleConfView extends EntityOptionsStyleConfView {
-
-}
Copied: trunk/src/main/java/cc/kune/gspace/client/options/tools/EntityOptTools.java (from rev 1409, trunk/src/main/java/cc/kune/gspace/client/options/tools/EntityOptionsToolsConf.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/tools/EntityOptTools.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/tools/EntityOptTools.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -0,0 +1,24 @@
+/*
+ *
+ * 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.gspace.client.options.tools;
+
+public interface EntityOptTools {
+
+}
Property changes on: trunk/src/main/java/cc/kune/gspace/client/options/tools/EntityOptTools.java
___________________________________________________________________
Name: svn:mergeinfo
+
Copied: trunk/src/main/java/cc/kune/gspace/client/options/tools/EntityOptToolsPanel.java (from rev 1409, trunk/src/main/java/cc/kune/gspace/client/options/tools/EntityOptionsToolsConfPanel.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/tools/EntityOptToolsPanel.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/tools/EntityOptToolsPanel.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -0,0 +1,158 @@
+/*
+ *
+ * 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.gspace.client.options.tools;
+
+import java.util.HashMap;
+
+import cc.kune.common.client.log.Log;
+import cc.kune.common.client.tooltip.Tooltip;
+import cc.kune.common.client.ui.IconLabel;
+import cc.kune.common.client.ui.MaskWidget;
+import cc.kune.core.client.resources.CoreResources;
+import cc.kune.core.client.ui.DefaultForm;
+import cc.kune.core.shared.dto.ToolSimpleDTO;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+import cc.kune.gspace.client.options.EntityOptionsView;
+
+import com.extjs.gxt.ui.client.event.BaseEvent;
+import com.extjs.gxt.ui.client.event.Events;
+import com.extjs.gxt.ui.client.event.Listener;
+import com.extjs.gxt.ui.client.widget.form.CheckBox;
+import com.google.gwt.event.dom.client.ClickHandler;
+import com.google.gwt.user.client.ui.IsWidget;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.Widget;
+
+public class EntityOptToolsPanel extends DefaultForm implements EntityOptToolsView {
+ private final HashMap<String, CheckBox> fields;
+ private final I18nTranslationService i18n;
+ private final MaskWidget maskWidget;
+ private final IconLabel tabTitle;
+
+ public EntityOptToolsPanel(final I18nTranslationService i18n, final CoreResources res,
+ final MaskWidget maskWidget) {
+ this.maskWidget = maskWidget;
+ tabTitle = new IconLabel(res.kunePreferences(), i18n.t("Tools"));
+ this.i18n = i18n;
+ // super.setHeight(EntityOptionsView.HEIGHT);
+ super.setWidth(EntityOptionsView.WIDTH);
+ super.setFrame(true);
+ // super.add(new HiddenField());
+ super.getFormPanel().setLabelWidth(20);
+ fields = new HashMap<String, CheckBox>();
+ super.addStyleName("k-overflow-y-auto");
+ // super.addStyleName("k-tab-panel");
+ }
+
+ @Override
+ public void add(final ToolSimpleDTO tool, final boolean enabled, final boolean checked,
+ final ClickHandler handler) {
+ final CheckBox checkbox = new CheckBox();
+ checkbox.setFieldLabel(tool.getRootName());
+ // checkbox.setFireChangeEventOnSetValue(false);
+ checkbox.setValue(checked);
+ setEnabled(checkbox, enabled);
+ checkbox.addListener(Events.Change, new Listener<BaseEvent>() {
+ @Override
+ public void handleEvent(final BaseEvent be) {
+ handler.onClick(null);
+ }
+ });
+ super.add(checkbox);
+ fields.put(tool.getName(), checkbox);
+ doLayoutIfNeeded();
+ }
+
+ @Override
+ public Widget asWidget() {
+ return super.getFormPanel();
+ }
+
+ @Override
+ public void clear() {
+ super.getFormPanel().removeAll();
+ fields.clear();
+ final Label label = new Label();
+ label.setText(i18n.t("Here you can select the tools used:"));
+ label.addStyleName("kune-Margin-10-tb");
+ super.add(label);
+ }
+
+ private void doLayoutIfNeeded() {
+ if (super.getFormPanel().isRendered()) {
+ super.getFormPanel().layout();
+ }
+ }
+
+ @Override
+ public IsWidget getTabTitle() {
+ return tabTitle;
+ }
+
+ private CheckBox getTool(final String tool) {
+ final CheckBox field = fields.get(tool);
+ if (field == null) {
+ Log.error("Field " + tool + " not found in EOTCP");
+ }
+ return field;
+ }
+
+ @Override
+ public boolean isChecked(final String tool) {
+ final CheckBox field = getTool(tool);
+ return field.getValue();
+ }
+
+ @Override
+ public void mask() {
+ maskWidget.mask(this);
+ }
+
+ @Override
+ public void setChecked(final String tool, final boolean checked) {
+ final CheckBox field = getTool(tool);
+ field.setValue(checked);
+ }
+
+ private void setEnabled(final CheckBox checkbox, final boolean enabled) {
+ if (enabled) {
+ checkbox.enable();
+ } else {
+ checkbox.disable();
+ }
+ }
+
+ @Override
+ public void setEnabled(final String tool, final boolean enabled) {
+ final CheckBox field = getTool(tool);
+ setEnabled(field, enabled);
+ }
+
+ @Override
+ public void setTooltip(final String tool, final String tip) {
+ final CheckBox field = getTool(tool);
+ Tooltip.to(field, tip);
+ }
+
+ @Override
+ public void unmask() {
+ maskWidget.unMask();
+ }
+}
Property changes on: trunk/src/main/java/cc/kune/gspace/client/options/tools/EntityOptToolsPanel.java
___________________________________________________________________
Name: svn:mergeinfo
+
Copied: trunk/src/main/java/cc/kune/gspace/client/options/tools/EntityOptToolsPresenter.java (from rev 1409, trunk/src/main/java/cc/kune/gspace/client/options/tools/EntityOptionsToolsConfPresenter.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/tools/EntityOptToolsPresenter.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/tools/EntityOptToolsPresenter.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -0,0 +1,147 @@
+/*
+ *
+ * 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.gspace.client.options.tools;
+
+import java.util.Collection;
+import java.util.List;
+
+import cc.kune.common.client.notify.NotifyLevel;
+import cc.kune.common.client.notify.NotifyUser;
+import cc.kune.core.client.rpcservices.GroupServiceAsync;
+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.ToolSimpleDTO;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+import cc.kune.gspace.client.options.EntityOptions;
+
+import com.google.gwt.event.dom.client.ClickEvent;
+import com.google.gwt.event.dom.client.ClickHandler;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.google.gwt.user.client.ui.IsWidget;
+import com.google.inject.Provider;
+
+public abstract class EntityOptToolsPresenter {
+
+ private final EntityOptions entityOptions;
+ private final Provider<GroupServiceAsync> groupService;
+ protected final I18nTranslationService i18n;
+ protected final Session session;
+ protected final StateManager stateManager;
+ private EntityOptToolsView view;
+
+ public EntityOptToolsPresenter(final Session session, final StateManager stateManager,
+ final I18nTranslationService i18n, final EntityOptions entityOptions,
+ final Provider<GroupServiceAsync> groupService) {
+ this.session = session;
+ this.stateManager = stateManager;
+ this.i18n = i18n;
+ this.entityOptions = entityOptions;
+ this.groupService = groupService;
+ }
+
+ protected abstract boolean applicable();
+
+ protected abstract Collection<ToolSimpleDTO> getAllTools();
+
+ protected abstract StateToken getDefContentToken();
+
+ protected abstract String getDefContentTooltip();
+
+ protected abstract List<String> getEnabledTools();
+
+ protected abstract StateToken getOperationToken();
+
+ public IsWidget getView() {
+ return view;
+ }
+
+ protected abstract void gotoDifLocationIfNecessary(String toolName);
+
+ public void init(final EntityOptToolsView view) {
+ this.view = view;
+ setState();
+ entityOptions.addTab(view, view.getTabTitle());
+ }
+
+ private void onCheck(final ToolSimpleDTO tool, final boolean checked) {
+ final List<String> enabledTools = getEnabledTools();
+ final String toolName = tool.getName();
+ setToolCheckedInServer(checked, toolName);
+ if (!checked) {
+ if (enabledTools.contains(toolName)) {
+ // FIXME uncomment this when fixed
+ // setToolCheckedInServer(checked, toolName);
+ // gotoDifLocationIfNecessary(toolName);
+ }
+ }
+ }
+
+ protected void reset() {
+ view.clear();
+ entityOptions.hideMessages();
+ }
+
+ protected void setState() {
+ reset();
+ final Collection<ToolSimpleDTO> toolCollection = getAllTools();
+ final List<String> enabledTools = getEnabledTools();
+ for (final ToolSimpleDTO tool : toolCollection) {
+ final boolean checked = enabledTools.contains(tool.getName());
+ final boolean enabled = true;
+ view.add(tool, enabled, checked, new ClickHandler() {
+ @Override
+ public void onClick(final ClickEvent event) {
+ onCheck(tool, view.isChecked(tool.getName()));
+ }
+ });
+ }
+ // Disable def content tool (don't works now)
+ final StateToken token = getDefContentToken();
+ if (token != null) {
+ final String defContentTool = token.getTool();
+ if (defContentTool != null) {
+ // view.setEnabled(defContentTool, false);
+ view.setTooltip(defContentTool, getDefContentTooltip());
+ }
+ }
+ }
+
+ protected void setToolCheckedInServer(final boolean checked, final String toolName) {
+ // view.mask();
+ // NotifyUser.info("Dis/Enabling tool" + toolName + " - " + checked);
+ groupService.get().setToolEnabled(session.getUserHash(), getOperationToken(), toolName, checked,
+ new AsyncCallback<Void>() {
+ @Override
+ public void onFailure(final Throwable caught) {
+ view.setChecked(toolName, !checked);
+ entityOptions.setErrorMessage(i18n.t("Error configuring the tool"), NotifyLevel.error);
+ NotifyUser.error(i18n.t("Error configuring the tool"));
+ // view.unmask();
+ }
+
+ @Override
+ public void onSuccess(final Void result) {
+ stateManager.reload();
+ // view.unmask();
+ }
+ });
+ }
+}
Property changes on: trunk/src/main/java/cc/kune/gspace/client/options/tools/EntityOptToolsPresenter.java
___________________________________________________________________
Name: svn:mergeinfo
+
Copied: trunk/src/main/java/cc/kune/gspace/client/options/tools/EntityOptToolsView.java (from rev 1409, trunk/src/main/java/cc/kune/gspace/client/options/tools/EntityOptionsToolsConfView.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/tools/EntityOptToolsView.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/tools/EntityOptToolsView.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -0,0 +1,44 @@
+/*
+ *
+ * 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.gspace.client.options.tools;
+
+import cc.kune.core.shared.dto.ToolSimpleDTO;
+import cc.kune.gspace.client.options.EntityOptionsTabView;
+
+import com.google.gwt.event.dom.client.ClickHandler;
+
+public interface EntityOptToolsView extends EntityOptionsTabView {
+
+ void add(ToolSimpleDTO tool, boolean enabled, boolean checked, ClickHandler clickHandler);
+
+ void clear();
+
+ boolean isChecked(String tool);
+
+ void mask();
+
+ void setChecked(String tool, boolean checked);
+
+ void setEnabled(String tool, boolean enabled);
+
+ void setTooltip(String tool, String tip);
+
+ void unmask();
+}
Property changes on: trunk/src/main/java/cc/kune/gspace/client/options/tools/EntityOptToolsView.java
___________________________________________________________________
Name: svn:mergeinfo
+
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/tools/EntityOptionsToolsConf.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/tools/EntityOptionsToolsConf.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/options/tools/EntityOptionsToolsConf.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -1,24 +0,0 @@
-/*
- *
- * 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.gspace.client.options.tools;
-
-public interface EntityOptionsToolsConf {
-
-}
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/tools/EntityOptionsToolsConfPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/tools/EntityOptionsToolsConfPanel.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/options/tools/EntityOptionsToolsConfPanel.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -1,158 +0,0 @@
-/*
- *
- * 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.gspace.client.options.tools;
-
-import java.util.HashMap;
-
-import cc.kune.common.client.log.Log;
-import cc.kune.common.client.tooltip.Tooltip;
-import cc.kune.common.client.ui.IconLabel;
-import cc.kune.common.client.ui.MaskWidget;
-import cc.kune.core.client.resources.CoreResources;
-import cc.kune.core.client.ui.DefaultForm;
-import cc.kune.core.shared.dto.ToolSimpleDTO;
-import cc.kune.core.shared.i18n.I18nTranslationService;
-import cc.kune.gspace.client.options.EntityOptionsView;
-
-import com.extjs.gxt.ui.client.event.BaseEvent;
-import com.extjs.gxt.ui.client.event.Events;
-import com.extjs.gxt.ui.client.event.Listener;
-import com.extjs.gxt.ui.client.widget.form.CheckBox;
-import com.google.gwt.event.dom.client.ClickHandler;
-import com.google.gwt.user.client.ui.IsWidget;
-import com.google.gwt.user.client.ui.Label;
-import com.google.gwt.user.client.ui.Widget;
-
-public class EntityOptionsToolsConfPanel extends DefaultForm implements EntityOptionsToolsConfView {
- private final HashMap<String, CheckBox> fields;
- private final I18nTranslationService i18n;
- private final MaskWidget maskWidget;
- private final IconLabel tabTitle;
-
- public EntityOptionsToolsConfPanel(final I18nTranslationService i18n, final CoreResources res,
- final MaskWidget maskWidget) {
- this.maskWidget = maskWidget;
- tabTitle = new IconLabel(res.kunePreferences(), i18n.t("Tools"));
- this.i18n = i18n;
- // super.setHeight(EntityOptionsView.HEIGHT);
- super.setWidth(EntityOptionsView.WIDTH);
- super.setFrame(true);
- // super.add(new HiddenField());
- super.getFormPanel().setLabelWidth(20);
- fields = new HashMap<String, CheckBox>();
- super.addStyleName("k-overflow-y-auto");
- // super.addStyleName("k-tab-panel");
- }
-
- @Override
- public void add(final ToolSimpleDTO tool, final boolean enabled, final boolean checked,
- final ClickHandler handler) {
- final CheckBox checkbox = new CheckBox();
- checkbox.setFieldLabel(tool.getRootName());
- // checkbox.setFireChangeEventOnSetValue(false);
- checkbox.setValue(checked);
- setEnabled(checkbox, enabled);
- checkbox.addListener(Events.Change, new Listener<BaseEvent>() {
- @Override
- public void handleEvent(final BaseEvent be) {
- handler.onClick(null);
- }
- });
- super.add(checkbox);
- fields.put(tool.getName(), checkbox);
- doLayoutIfNeeded();
- }
-
- @Override
- public Widget asWidget() {
- return super.getFormPanel();
- }
-
- @Override
- public void clear() {
- super.getFormPanel().removeAll();
- fields.clear();
- final Label label = new Label();
- label.setText(i18n.t("Here you can select the tools used:"));
- label.addStyleName("kune-Margin-10-tb");
- super.add(label);
- }
-
- private void doLayoutIfNeeded() {
- if (super.getFormPanel().isRendered()) {
- super.getFormPanel().layout();
- }
- }
-
- @Override
- public IsWidget getTabTitle() {
- return tabTitle;
- }
-
- private CheckBox getTool(final String tool) {
- final CheckBox field = fields.get(tool);
- if (field == null) {
- Log.error("Field " + tool + " not found in EOTCP");
- }
- return field;
- }
-
- @Override
- public boolean isChecked(final String tool) {
- final CheckBox field = getTool(tool);
- return field.getValue();
- }
-
- @Override
- public void mask() {
- maskWidget.mask(this);
- }
-
- @Override
- public void setChecked(final String tool, final boolean checked) {
- final CheckBox field = getTool(tool);
- field.setValue(checked);
- }
-
- private void setEnabled(final CheckBox checkbox, final boolean enabled) {
- if (enabled) {
- checkbox.enable();
- } else {
- checkbox.disable();
- }
- }
-
- @Override
- public void setEnabled(final String tool, final boolean enabled) {
- final CheckBox field = getTool(tool);
- setEnabled(field, enabled);
- }
-
- @Override
- public void setTooltip(final String tool, final String tip) {
- final CheckBox field = getTool(tool);
- Tooltip.to(field, tip);
- }
-
- @Override
- public void unmask() {
- maskWidget.unMask();
- }
-}
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/tools/EntityOptionsToolsConfPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/tools/EntityOptionsToolsConfPresenter.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/options/tools/EntityOptionsToolsConfPresenter.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -1,147 +0,0 @@
-/*
- *
- * 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.gspace.client.options.tools;
-
-import java.util.Collection;
-import java.util.List;
-
-import cc.kune.common.client.notify.NotifyLevel;
-import cc.kune.common.client.notify.NotifyUser;
-import cc.kune.core.client.rpcservices.GroupServiceAsync;
-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.ToolSimpleDTO;
-import cc.kune.core.shared.i18n.I18nTranslationService;
-import cc.kune.gspace.client.options.EntityOptions;
-
-import com.google.gwt.event.dom.client.ClickEvent;
-import com.google.gwt.event.dom.client.ClickHandler;
-import com.google.gwt.user.client.rpc.AsyncCallback;
-import com.google.gwt.user.client.ui.IsWidget;
-import com.google.inject.Provider;
-
-public abstract class EntityOptionsToolsConfPresenter {
-
- private final EntityOptions entityOptions;
- private final Provider<GroupServiceAsync> groupService;
- protected final I18nTranslationService i18n;
- protected final Session session;
- protected final StateManager stateManager;
- private EntityOptionsToolsConfView view;
-
- public EntityOptionsToolsConfPresenter(final Session session, final StateManager stateManager,
- final I18nTranslationService i18n, final EntityOptions entityOptions,
- final Provider<GroupServiceAsync> groupService) {
- this.session = session;
- this.stateManager = stateManager;
- this.i18n = i18n;
- this.entityOptions = entityOptions;
- this.groupService = groupService;
- }
-
- protected abstract boolean applicable();
-
- protected abstract Collection<ToolSimpleDTO> getAllTools();
-
- protected abstract StateToken getDefContentToken();
-
- protected abstract String getDefContentTooltip();
-
- protected abstract List<String> getEnabledTools();
-
- protected abstract StateToken getOperationToken();
-
- public IsWidget getView() {
- return view;
- }
-
- protected abstract void gotoDifLocationIfNecessary(String toolName);
-
- public void init(final EntityOptionsToolsConfView view) {
- this.view = view;
- setState();
- entityOptions.addTab(view, view.getTabTitle());
- }
-
- private void onCheck(final ToolSimpleDTO tool, final boolean checked) {
- final List<String> enabledTools = getEnabledTools();
- final String toolName = tool.getName();
- setToolCheckedInServer(checked, toolName);
- if (!checked) {
- if (enabledTools.contains(toolName)) {
- // FIXME uncomment this when fixed
- // setToolCheckedInServer(checked, toolName);
- // gotoDifLocationIfNecessary(toolName);
- }
- }
- }
-
- protected void reset() {
- view.clear();
- entityOptions.hideMessages();
- }
-
- protected void setState() {
- reset();
- final Collection<ToolSimpleDTO> toolCollection = getAllTools();
- final List<String> enabledTools = getEnabledTools();
- for (final ToolSimpleDTO tool : toolCollection) {
- final boolean checked = enabledTools.contains(tool.getName());
- final boolean enabled = true;
- view.add(tool, enabled, checked, new ClickHandler() {
- @Override
- public void onClick(final ClickEvent event) {
- onCheck(tool, view.isChecked(tool.getName()));
- }
- });
- }
- // Disable def content tool (don't works now)
- final StateToken token = getDefContentToken();
- if (token != null) {
- final String defContentTool = token.getTool();
- if (defContentTool != null) {
- // view.setEnabled(defContentTool, false);
- view.setTooltip(defContentTool, getDefContentTooltip());
- }
- }
- }
-
- protected void setToolCheckedInServer(final boolean checked, final String toolName) {
- // view.mask();
- // NotifyUser.info("Dis/Enabling tool" + toolName + " - " + checked);
- groupService.get().setToolEnabled(session.getUserHash(), getOperationToken(), toolName, checked,
- new AsyncCallback<Void>() {
- @Override
- public void onFailure(final Throwable caught) {
- view.setChecked(toolName, !checked);
- entityOptions.setErrorMessage(i18n.t("Error configuring the tool"), NotifyLevel.error);
- NotifyUser.error(i18n.t("Error configuring the tool"));
- // view.unmask();
- }
-
- @Override
- public void onSuccess(final Void result) {
- stateManager.reload();
- // view.unmask();
- }
- });
- }
-}
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/tools/EntityOptionsToolsConfView.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/tools/EntityOptionsToolsConfView.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/options/tools/EntityOptionsToolsConfView.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -1,44 +0,0 @@
-/*
- *
- * 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.gspace.client.options.tools;
-
-import cc.kune.core.shared.dto.ToolSimpleDTO;
-import cc.kune.gspace.client.options.EntityOptionsTabView;
-
-import com.google.gwt.event.dom.client.ClickHandler;
-
-public interface EntityOptionsToolsConfView extends EntityOptionsTabView {
-
- void add(ToolSimpleDTO tool, boolean enabled, boolean checked, ClickHandler clickHandler);
-
- void clear();
-
- boolean isChecked(String tool);
-
- void mask();
-
- void setChecked(String tool, boolean checked);
-
- void setEnabled(String tool, boolean enabled);
-
- void setTooltip(String tool, String tip);
-
- void unmask();
-}
Copied: trunk/src/main/java/cc/kune/gspace/client/options/tools/GroupOptTools.java (from rev 1409, trunk/src/main/java/cc/kune/gspace/client/options/tools/GroupOptionsToolsConf.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/tools/GroupOptTools.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/tools/GroupOptTools.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -0,0 +1,24 @@
+/*
+ *
+ * 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.gspace.client.options.tools;
+
+public interface GroupOptTools extends EntityOptTools {
+
+}
Copied: trunk/src/main/java/cc/kune/gspace/client/options/tools/GroupOptToolsPanel.java (from rev 1409, trunk/src/main/java/cc/kune/gspace/client/options/tools/GroupOptionsToolsConfPanel.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/tools/GroupOptToolsPanel.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/tools/GroupOptToolsPanel.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -0,0 +1,37 @@
+/*
+ *
+ * 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.gspace.client.options.tools;
+
+import cc.kune.common.client.ui.MaskWidget;
+import cc.kune.core.client.resources.CoreResources;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+
+import com.google.inject.Inject;
+
+public class GroupOptToolsPanel extends EntityOptToolsPanel implements
+ GroupOptToolsView {
+
+ @Inject
+ public GroupOptToolsPanel(final I18nTranslationService i18n, final CoreResources res,
+ final MaskWidget maskWidget) {
+ super(i18n, res, maskWidget);
+ }
+
+}
Property changes on: trunk/src/main/java/cc/kune/gspace/client/options/tools/GroupOptToolsPanel.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Copied: trunk/src/main/java/cc/kune/gspace/client/options/tools/GroupOptToolsPresenter.java (from rev 1409, trunk/src/main/java/cc/kune/gspace/client/options/tools/GroupOptionsToolsConfPresenter.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/tools/GroupOptToolsPresenter.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/tools/GroupOptToolsPresenter.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -0,0 +1,98 @@
+/*
+ *
+ * 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.gspace.client.options.tools;
+
+import java.util.Collection;
+import java.util.List;
+
+import cc.kune.core.client.rpcservices.GroupServiceAsync;
+import cc.kune.core.client.state.GroupChangedEvent;
+import cc.kune.core.client.state.GroupChangedEvent.GroupChangedHandler;
+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.ContentSimpleDTO;
+import cc.kune.core.shared.dto.ToolSimpleDTO;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+import cc.kune.gspace.client.options.GroupOptions;
+
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+
+public class GroupOptToolsPresenter extends EntityOptToolsPresenter implements
+ GroupOptTools {
+
+ @Inject
+ public GroupOptToolsPresenter(final StateManager stateManager, final Session session,
+ final I18nTranslationService i18n, final GroupOptions entityOptions,
+ final Provider<GroupServiceAsync> groupService, final GroupOptToolsView view) {
+ super(session, stateManager, i18n, entityOptions, groupService);
+ init(view);
+ stateManager.onGroupChanged(true, new GroupChangedHandler() {
+ @Override
+ public void onGroupChanged(final GroupChangedEvent event) {
+ setState();
+ }
+ });
+ }
+
+ @Override
+ protected boolean applicable() {
+ return session.isCurrentStateAGroup();
+ }
+
+ @Override
+ protected Collection<ToolSimpleDTO> getAllTools() {
+ return session.getGroupTools();
+ }
+
+ @Override
+ protected StateToken getDefContentToken() {
+ final ContentSimpleDTO defaultContent = session.getCurrentState().getGroup().getDefaultContent();
+ return defaultContent == null ? null : defaultContent.getStateToken();
+ }
+
+ @Override
+ protected String getDefContentTooltip() {
+ // FIXME
+ return i18n.t("You cannot disable this tool because it's where the current group home page is located. To do that you have to select other content as the default group home page but in another tool.");
+ }
+
+ @Override
+ protected List<String> getEnabledTools() {
+ return session.getCurrentState().getEnabledTools();
+ }
+
+ @Override
+ protected StateToken getOperationToken() {
+ return session.getCurrentStateToken();
+ }
+
+ @Override
+ protected void gotoDifLocationIfNecessary(final String toolName) {
+ if (session.getCurrentStateToken().getTool().equals(toolName)) {
+ final ContentSimpleDTO defaultContent = session.getCurrentState().getGroup().getDefaultContent();
+ if (defaultContent != null) {
+ stateManager.gotoStateToken(defaultContent.getStateToken());
+ }
+ }
+ }
+
+}
Property changes on: trunk/src/main/java/cc/kune/gspace/client/options/tools/GroupOptToolsPresenter.java
___________________________________________________________________
Name: svn:mergeinfo
+
Copied: trunk/src/main/java/cc/kune/gspace/client/options/tools/GroupOptToolsView.java (from rev 1409, trunk/src/main/java/cc/kune/gspace/client/options/tools/GroupOptionsToolsConfView.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/tools/GroupOptToolsView.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/tools/GroupOptToolsView.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -0,0 +1,24 @@
+/*
+ *
+ * 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.gspace.client.options.tools;
+
+public interface GroupOptToolsView extends EntityOptToolsView {
+
+}
Property changes on: trunk/src/main/java/cc/kune/gspace/client/options/tools/GroupOptToolsView.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/tools/GroupOptionsToolsConf.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/tools/GroupOptionsToolsConf.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/options/tools/GroupOptionsToolsConf.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -1,24 +0,0 @@
-/*
- *
- * 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.gspace.client.options.tools;
-
-public interface GroupOptionsToolsConf extends EntityOptionsToolsConf {
-
-}
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/tools/GroupOptionsToolsConfPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/tools/GroupOptionsToolsConfPanel.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/options/tools/GroupOptionsToolsConfPanel.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -1,37 +0,0 @@
-/*
- *
- * 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.gspace.client.options.tools;
-
-import cc.kune.common.client.ui.MaskWidget;
-import cc.kune.core.client.resources.CoreResources;
-import cc.kune.core.shared.i18n.I18nTranslationService;
-
-import com.google.inject.Inject;
-
-public class GroupOptionsToolsConfPanel extends EntityOptionsToolsConfPanel implements
- GroupOptionsToolsConfView {
-
- @Inject
- public GroupOptionsToolsConfPanel(final I18nTranslationService i18n, final CoreResources res,
- final MaskWidget maskWidget) {
- super(i18n, res, maskWidget);
- }
-
-}
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/tools/GroupOptionsToolsConfPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/tools/GroupOptionsToolsConfPresenter.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/options/tools/GroupOptionsToolsConfPresenter.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -1,98 +0,0 @@
-/*
- *
- * 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.gspace.client.options.tools;
-
-import java.util.Collection;
-import java.util.List;
-
-import cc.kune.core.client.rpcservices.GroupServiceAsync;
-import cc.kune.core.client.state.GroupChangedEvent;
-import cc.kune.core.client.state.GroupChangedEvent.GroupChangedHandler;
-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.ContentSimpleDTO;
-import cc.kune.core.shared.dto.ToolSimpleDTO;
-import cc.kune.core.shared.i18n.I18nTranslationService;
-import cc.kune.gspace.client.options.GroupOptions;
-
-import com.google.inject.Inject;
-import com.google.inject.Provider;
-
-public class GroupOptionsToolsConfPresenter extends EntityOptionsToolsConfPresenter implements
- GroupOptionsToolsConf {
-
- @Inject
- public GroupOptionsToolsConfPresenter(final StateManager stateManager, final Session session,
- final I18nTranslationService i18n, final GroupOptions entityOptions,
- final Provider<GroupServiceAsync> groupService, final GroupOptionsToolsConfView view) {
- super(session, stateManager, i18n, entityOptions, groupService);
- init(view);
- stateManager.onGroupChanged(true, new GroupChangedHandler() {
- @Override
- public void onGroupChanged(final GroupChangedEvent event) {
- setState();
- }
- });
- }
-
- @Override
- protected boolean applicable() {
- return session.isCurrentStateAGroup();
- }
-
- @Override
- protected Collection<ToolSimpleDTO> getAllTools() {
- return session.getGroupTools();
- }
-
- @Override
- protected StateToken getDefContentToken() {
- final ContentSimpleDTO defaultContent = session.getCurrentState().getGroup().getDefaultContent();
- return defaultContent == null ? null : defaultContent.getStateToken();
- }
-
- @Override
- protected String getDefContentTooltip() {
- // FIXME
- return i18n.t("You cannot disable this tool because it's where the current group home page is located. To do that you have to select other content as the default group home page but in another tool.");
- }
-
- @Override
- protected List<String> getEnabledTools() {
- return session.getCurrentState().getEnabledTools();
- }
-
- @Override
- protected StateToken getOperationToken() {
- return session.getCurrentStateToken();
- }
-
- @Override
- protected void gotoDifLocationIfNecessary(final String toolName) {
- if (session.getCurrentStateToken().getTool().equals(toolName)) {
- final ContentSimpleDTO defaultContent = session.getCurrentState().getGroup().getDefaultContent();
- if (defaultContent != null) {
- stateManager.gotoStateToken(defaultContent.getStateToken());
- }
- }
- }
-
-}
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/tools/GroupOptionsToolsConfView.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/tools/GroupOptionsToolsConfView.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/options/tools/GroupOptionsToolsConfView.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -1,24 +0,0 @@
-/*
- *
- * 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.gspace.client.options.tools;
-
-public interface GroupOptionsToolsConfView extends EntityOptionsToolsConfView {
-
-}
Copied: trunk/src/main/java/cc/kune/gspace/client/options/tools/UserOptTools.java (from rev 1409, trunk/src/main/java/cc/kune/gspace/client/options/tools/UserOptionsToolsConf.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/tools/UserOptTools.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/tools/UserOptTools.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -0,0 +1,24 @@
+/*
+ *
+ * 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.gspace.client.options.tools;
+
+public interface UserOptTools extends EntityOptTools {
+
+}
Copied: trunk/src/main/java/cc/kune/gspace/client/options/tools/UserOptToolsPanel.java (from rev 1409, trunk/src/main/java/cc/kune/gspace/client/options/tools/UserOptionsToolsConfPanel.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/tools/UserOptToolsPanel.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/tools/UserOptToolsPanel.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -0,0 +1,37 @@
+/*
+ *
+ * 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.gspace.client.options.tools;
+
+import cc.kune.common.client.ui.MaskWidget;
+import cc.kune.core.client.resources.CoreResources;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+
+import com.google.inject.Inject;
+
+public class UserOptToolsPanel extends EntityOptToolsPanel implements
+ UserOptToolsView {
+
+ @Inject
+ public UserOptToolsPanel(final I18nTranslationService i18n, final CoreResources res,
+ final MaskWidget maskWidget) {
+ super(i18n, res, maskWidget);
+ }
+
+}
Property changes on: trunk/src/main/java/cc/kune/gspace/client/options/tools/UserOptToolsPanel.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Copied: trunk/src/main/java/cc/kune/gspace/client/options/tools/UserOptToolsPresenter.java (from rev 1409, trunk/src/main/java/cc/kune/gspace/client/options/tools/UserOptionsToolsConfPresenter.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/tools/UserOptToolsPresenter.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/tools/UserOptToolsPresenter.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -0,0 +1,94 @@
+/*
+ *
+ * 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.gspace.client.options.tools;
+
+import java.util.Collection;
+import java.util.List;
+
+import cc.kune.core.client.rpcservices.GroupServiceAsync;
+import cc.kune.core.client.state.Session;
+import cc.kune.core.client.state.StateManager;
+import cc.kune.core.client.state.UserSignInEvent;
+import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler;
+import cc.kune.core.shared.domain.utils.StateToken;
+import cc.kune.core.shared.dto.ToolSimpleDTO;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+import cc.kune.gspace.client.options.UserOptions;
+
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+
+public class UserOptToolsPresenter extends EntityOptToolsPresenter implements
+ UserOptTools {
+
+ @Inject
+ public UserOptToolsPresenter(final Session session, final StateManager stateManager,
+ final I18nTranslationService i18n, final UserOptions entityOptions,
+ final Provider<GroupServiceAsync> groupService, final UserOptToolsView view) {
+ super(session, stateManager, i18n, entityOptions, groupService);
+ init(view);
+ session.onUserSignIn(true, new UserSignInHandler() {
+ @Override
+ public void onUserSignIn(final UserSignInEvent event) {
+ setState();
+ }
+ });
+ }
+
+ @Override
+ protected boolean applicable() {
+ return session.isLogged();
+ }
+
+ @Override
+ protected Collection<ToolSimpleDTO> getAllTools() {
+ return session.getUserTools();
+ }
+
+ @Override
+ protected StateToken getDefContentToken() {
+ final String homePage = session.getCurrentUserInfo().getHomePage();
+ return homePage == null ? null : new StateToken(homePage);
+ }
+
+ @Override
+ protected String getDefContentTooltip() {
+ // FIXME
+ return i18n.t("You cannot disable this tool because it's where your home page is located. To do that you have to select other content as the default home page but in another tool.");
+ }
+
+ @Override
+ protected List<String> getEnabledTools() {
+ return session.getCurrentUserInfo().getEnabledTools();
+ }
+
+ @Override
+ protected StateToken getOperationToken() {
+ return session.getCurrentUser().getStateToken();
+ }
+
+ @Override
+ protected void gotoDifLocationIfNecessary(final String toolName) {
+ if (session.getCurrentStateToken().getGroup().equals(session.getCurrentUserInfo().getShortName())
+ && session.getCurrentStateToken().getTool().equals(toolName)) {
+ stateManager.gotoStateToken(session.getCurrentState().getGroup().getDefaultContent().getStateToken());
+ }
+ }
+}
Copied: trunk/src/main/java/cc/kune/gspace/client/options/tools/UserOptToolsView.java (from rev 1409, trunk/src/main/java/cc/kune/gspace/client/options/tools/UserOptionsToolsConfView.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/tools/UserOptToolsView.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/tools/UserOptToolsView.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -0,0 +1,24 @@
+/*
+ *
+ * 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.gspace.client.options.tools;
+
+public interface UserOptToolsView extends EntityOptToolsView {
+
+}
Property changes on: trunk/src/main/java/cc/kune/gspace/client/options/tools/UserOptToolsView.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/tools/UserOptionsToolsConf.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/tools/UserOptionsToolsConf.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/options/tools/UserOptionsToolsConf.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -1,24 +0,0 @@
-/*
- *
- * 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.gspace.client.options.tools;
-
-public interface UserOptionsToolsConf extends EntityOptionsToolsConf {
-
-}
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/tools/UserOptionsToolsConfPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/tools/UserOptionsToolsConfPanel.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/options/tools/UserOptionsToolsConfPanel.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -1,37 +0,0 @@
-/*
- *
- * 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.gspace.client.options.tools;
-
-import cc.kune.common.client.ui.MaskWidget;
-import cc.kune.core.client.resources.CoreResources;
-import cc.kune.core.shared.i18n.I18nTranslationService;
-
-import com.google.inject.Inject;
-
-public class UserOptionsToolsConfPanel extends EntityOptionsToolsConfPanel implements
- UserOptionsToolsConfView {
-
- @Inject
- public UserOptionsToolsConfPanel(final I18nTranslationService i18n, final CoreResources res,
- final MaskWidget maskWidget) {
- super(i18n, res, maskWidget);
- }
-
-}
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/tools/UserOptionsToolsConfPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/tools/UserOptionsToolsConfPresenter.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/options/tools/UserOptionsToolsConfPresenter.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -1,94 +0,0 @@
-/*
- *
- * 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.gspace.client.options.tools;
-
-import java.util.Collection;
-import java.util.List;
-
-import cc.kune.core.client.rpcservices.GroupServiceAsync;
-import cc.kune.core.client.state.Session;
-import cc.kune.core.client.state.StateManager;
-import cc.kune.core.client.state.UserSignInEvent;
-import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler;
-import cc.kune.core.shared.domain.utils.StateToken;
-import cc.kune.core.shared.dto.ToolSimpleDTO;
-import cc.kune.core.shared.i18n.I18nTranslationService;
-import cc.kune.gspace.client.options.UserOptions;
-
-import com.google.inject.Inject;
-import com.google.inject.Provider;
-
-public class UserOptionsToolsConfPresenter extends EntityOptionsToolsConfPresenter implements
- UserOptionsToolsConf {
-
- @Inject
- public UserOptionsToolsConfPresenter(final Session session, final StateManager stateManager,
- final I18nTranslationService i18n, final UserOptions entityOptions,
- final Provider<GroupServiceAsync> groupService, final UserOptionsToolsConfView view) {
- super(session, stateManager, i18n, entityOptions, groupService);
- init(view);
- session.onUserSignIn(true, new UserSignInHandler() {
- @Override
- public void onUserSignIn(final UserSignInEvent event) {
- setState();
- }
- });
- }
-
- @Override
- protected boolean applicable() {
- return session.isLogged();
- }
-
- @Override
- protected Collection<ToolSimpleDTO> getAllTools() {
- return session.getUserTools();
- }
-
- @Override
- protected StateToken getDefContentToken() {
- final String homePage = session.getCurrentUserInfo().getHomePage();
- return homePage == null ? null : new StateToken(homePage);
- }
-
- @Override
- protected String getDefContentTooltip() {
- // FIXME
- return i18n.t("You cannot disable this tool because it's where your home page is located. To do that you have to select other content as the default home page but in another tool.");
- }
-
- @Override
- protected List<String> getEnabledTools() {
- return session.getCurrentUserInfo().getEnabledTools();
- }
-
- @Override
- protected StateToken getOperationToken() {
- return session.getCurrentUser().getStateToken();
- }
-
- @Override
- protected void gotoDifLocationIfNecessary(final String toolName) {
- if (session.getCurrentStateToken().getGroup().equals(session.getCurrentUserInfo().getShortName())
- && session.getCurrentStateToken().getTool().equals(toolName)) {
- stateManager.gotoStateToken(session.getCurrentState().getGroup().getDefaultContent().getStateToken());
- }
- }
-}
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/tools/UserOptionsToolsConfView.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/tools/UserOptionsToolsConfView.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/options/tools/UserOptionsToolsConfView.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -1,24 +0,0 @@
-/*
- *
- * 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.gspace.client.options.tools;
-
-public interface UserOptionsToolsConfView extends EntityOptionsToolsConfView {
-
-}
Modified: trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeSelectorPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeSelectorPresenter.java 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeSelectorPresenter.java 2011-06-21 21:29:32 UTC (rev 1413)
@@ -84,6 +84,8 @@
this.manager = manager;
this.view = view;
itemMap = new HashMap<String, MenuRadioItemDescriptor>();
+ this.view = view;
+ createActions();
eventBus.addHandler(GSpaceThemeChangeEvent.getType(), new GSpaceThemeChangeHandler() {
@Override
public void onGsThemeChange(final GSpaceThemeChangeEvent event) {
@@ -92,8 +94,6 @@
select(oldTheme, newTheme);
}
});
- this.view = view;
- createActions();
}
private void createActions() {
Modified: trunk/src/main/resources/kune.properties
===================================================================
--- trunk/src/main/resources/kune.properties 2011-06-21 20:03:39 UTC (rev 1412)
+++ trunk/src/main/resources/kune.properties 2011-06-21 21:29:32 UTC (rev 1413)
@@ -35,7 +35,7 @@
### Workspace enabled themes
# This names are also the name of the items in the theme menu and there are translated
-kune.wsthemes = default,green,purple,grey,red,sahara,blue,redblack,camp,pink,highcontrast,whiteblack,blackwhite
+kune.wsthemes = default,green,purple,grey,red,sahara,blue,redblack,camp,pink,highcontrast,whiteblack,blackwhite,transparent
kune.wsthemes.default = default
kune.wsthemes.default.backgrounds = #deaa87, #d99e76, #ce7f4b, #d99e76, #f6e7dd, #d99e76, #FFF, #f8eee7
kune.wsthemes.default.colors = #FFF,#FFF,#FFF,#FFF,#552200,#FFF,#a05a2c,#a05a2c
@@ -63,6 +63,8 @@
kune.wsthemes.whiteblack.colors = #000, #000, #000, #000, #000, #000, #000, #000
kune.wsthemes.blackwhite.backgrounds = #000, #000, #808080, #000, #000, #e6e6e6, #000, #000
kune.wsthemes.blackwhite.colors = #FFF, #FFF, #000, #FFF, #FFF, #000, #FFF, #FFF
+kune.wsthemes.transparent.backgrounds = transparent, transparent, #e6e6e6, transparent, transparent, #e6e6e6, transparent, transparent
+kune.wsthemes.transparent.colors = #000, #000, #000, #000, #000, #000, #000, #000
### Gallery options
kune.upload.gallerypermittedextensions = jpg,jpeg,png,gif,bmp,svg,avi,mpg,mpeg,ogg,mov,tif,tiff,mp3,wav
1
0
Author: vjrj_
Date: 2011-06-21 22:03:39 +0200 (Tue, 21 Jun 2011)
New Revision: 1412
Added:
trunk/src/main/java/cc/kune/core/server/manager/file/EntityBackgroundDownloadManager.java
trunk/src/main/java/cc/kune/core/server/manager/file/EntityBackgroundUploadManager.java
trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptionsUploadButton.java
trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityUploaderForm.java
Modified:
trunk/src/main/java/cc/kune/common/client/notify/NotifyUser.java
trunk/src/main/java/cc/kune/common/public/kune-common.css
trunk/src/main/java/cc/kune/core/client/rpcservices/GroupService.java
trunk/src/main/java/cc/kune/core/client/rpcservices/GroupServiceAsync.java
trunk/src/main/java/cc/kune/core/client/services/FileDownloadUtils.java
trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPresenter.java
trunk/src/main/java/cc/kune/core/public/ws.css
trunk/src/main/java/cc/kune/core/server/KuneRackModule.java
trunk/src/main/java/cc/kune/core/server/manager/FileManager.java
trunk/src/main/java/cc/kune/core/server/manager/GroupManager.java
trunk/src/main/java/cc/kune/core/server/manager/file/FileGwtUploadAbstractServlet.java
trunk/src/main/java/cc/kune/core/server/manager/file/FileManagerDefault.java
trunk/src/main/java/cc/kune/core/server/manager/file/FileUploadManager.java
trunk/src/main/java/cc/kune/core/server/manager/file/FileUtils.java
trunk/src/main/java/cc/kune/core/server/manager/file/ImageUtilsDefault.java
trunk/src/main/java/cc/kune/core/server/manager/impl/GroupManagerDefault.java
trunk/src/main/java/cc/kune/core/server/rpc/GroupRPC.java
trunk/src/main/java/cc/kune/core/shared/dto/GroupDTO.java
trunk/src/main/java/cc/kune/domain/Group.java
trunk/src/main/java/cc/kune/gspace/client/GSpaceArmor.java
trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.java
trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.ui.xml
trunk/src/main/java/cc/kune/gspace/client/options/logo/CurrentLogoChangedEvent.java
trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptionsLogoPanel.java
trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptionsLogoPresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/logo/GroupOptionsLogoPresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/logo/UserOptionsLogoPresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConfPanel.java
trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConfPresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConfView.java
trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsStyleConfPanel.java
trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsStyleConfPresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsStyleConfPanel.java
trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsStyleConfPresenter.java
trunk/src/main/java/cc/kune/gspace/client/resources/gSpaceArmor.css
trunk/src/main/java/cc/kune/gspace/client/style/GSpaceBackManager.java
trunk/src/main/java/cc/kune/gspace/client/style/GSpaceBackManagerImpl.java
trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeManager.java
trunk/src/main/java/cc/kune/pspace/client/PSpaceInDevelopment.ui.xml
trunk/src/main/java/org/ourproject/kune/gallery/client/GalleryClientActions.java
trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientActions.java
trunk/src/main/java/org/ourproject/kune/workspace/client/OldAbstractFoldableContentActions.java
Log:
Group Background management
Modified: trunk/src/main/java/cc/kune/common/client/notify/NotifyUser.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/notify/NotifyUser.java 2011-06-18 21:57:55 UTC (rev 1411)
+++ trunk/src/main/java/cc/kune/common/client/notify/NotifyUser.java 2011-06-21 20:03:39 UTC (rev 1412)
@@ -20,6 +20,7 @@
package cc.kune.common.client.notify;
import cc.kune.common.client.utils.SimpleResponseCallback;
+import cc.kune.common.client.utils.TextUtils;
import cc.kune.core.client.notify.msgs.UserNotifyEvent;
import cc.kune.core.client.notify.spiner.ProgressHideEvent;
import cc.kune.core.client.notify.spiner.ProgressShowEvent;
@@ -51,6 +52,11 @@
eventBus.fireEvent(new UserNotifyEvent(NotifyLevel.error, message, closeable));
}
+ public static void error(final String message, final String additionalMessage) {
+ eventBus.fireEvent(new UserNotifyEvent(NotifyLevel.error, message
+ + (TextUtils.empty(additionalMessage) ? "" : ": " + additionalMessage)));
+ }
+
public static void error(final String message, final String title, final boolean closeable) {
eventBus.fireEvent(new UserNotifyEvent(NotifyLevel.error, message, title, closeable));
}
Modified: trunk/src/main/java/cc/kune/common/public/kune-common.css
===================================================================
--- trunk/src/main/java/cc/kune/common/public/kune-common.css 2011-06-18 21:57:55 UTC (rev 1411)
+++ trunk/src/main/java/cc/kune/common/public/kune-common.css 2011-06-21 20:03:39 UTC (rev 1412)
@@ -211,7 +211,7 @@
float: right;
}
-.oc-clean {
+.oc-clean,.k-clear,.oc-clear,.k-clean {
clear: both;
}
Modified: trunk/src/main/java/cc/kune/core/client/rpcservices/GroupService.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/rpcservices/GroupService.java 2011-06-18 21:57:55 UTC (rev 1411)
+++ trunk/src/main/java/cc/kune/core/client/rpcservices/GroupService.java 2011-06-21 20:03:39 UTC (rev 1412)
@@ -32,23 +32,23 @@
@RemoteServiceRelativePath("GroupService")
public interface GroupService extends RemoteService {
- void changeDefLicense(final String userHash, final StateToken groupToken, final LicenseDTO license);
+ void changeDefLicense(final String userHash, final StateToken groupToken, final LicenseDTO license);
- void changeGroupWsTheme(String userHash, StateToken groupToken, String theme) throws DefaultException;
+ void changeGroupWsTheme(String userHash, StateToken groupToken, String theme) throws DefaultException;
- GroupDTO clearGroupBackImage(String userHash, StateToken token);
+ GroupDTO clearGroupBackImage(String userHash, StateToken token);
- StateToken createNewGroup(String userHash, GroupDTO group, String publicDesc, String tags, String[] enabledTools)
- throws DefaultException;
+ StateToken createNewGroup(String userHash, GroupDTO group, String publicDesc, String tags,
+ String[] enabledTools) throws DefaultException;
- GroupDTO getGroup(String userHash, StateToken token);
+ GroupDTO getGroup(String userHash, StateToken token);
- GroupDTO setGroupBackImage(String userHash, StateToken token);
+ void setGroupNewMembersJoiningPolicy(String userHash, StateToken groupToken,
+ AdmissionType admissionPolicy);
- void setGroupNewMembersJoiningPolicy(String userHash, StateToken groupToken, AdmissionType admissionPolicy);
+ void setSocialNetworkVisibility(String userHash, StateToken groupToken,
+ SocialNetworkVisibility visibility);
- void setSocialNetworkVisibility(String userHash, StateToken groupToken, SocialNetworkVisibility visibility);
+ void setToolEnabled(String userHash, StateToken groupToken, String toolName, boolean enabled);
- void setToolEnabled(String userHash, StateToken groupToken, String toolName, boolean enabled);
-
}
Modified: trunk/src/main/java/cc/kune/core/client/rpcservices/GroupServiceAsync.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/rpcservices/GroupServiceAsync.java 2011-06-18 21:57:55 UTC (rev 1411)
+++ trunk/src/main/java/cc/kune/core/client/rpcservices/GroupServiceAsync.java 2011-06-21 20:03:39 UTC (rev 1412)
@@ -29,27 +29,26 @@
public interface GroupServiceAsync {
- void changeDefLicense(final String userHash, final StateToken groupToken, final LicenseDTO license,
- AsyncCallback<Void> asyncCallback);
+ void changeDefLicense(final String userHash, final StateToken groupToken, final LicenseDTO license,
+ AsyncCallback<Void> asyncCallback);
- void changeGroupWsTheme(String userHash, StateToken groupToken, String theme, AsyncCallback<Void> callback);
+ void changeGroupWsTheme(String userHash, StateToken groupToken, String theme,
+ AsyncCallback<Void> callback);
- void clearGroupBackImage(String userHash, StateToken token, AsyncCallback<GroupDTO> asyncCallback);
+ void clearGroupBackImage(String userHash, StateToken token, AsyncCallback<GroupDTO> asyncCallback);
- void createNewGroup(String userHash, GroupDTO group, String publicDesc, String tags, String[] enabledTools,
- AsyncCallback<StateToken> callback);
+ void createNewGroup(String userHash, GroupDTO group, String publicDesc, String tags,
+ String[] enabledTools, AsyncCallback<StateToken> callback);
- void getGroup(String userHash, StateToken token, AsyncCallback<GroupDTO> asyncCallback);
+ void getGroup(String userHash, StateToken token, AsyncCallback<GroupDTO> asyncCallback);
- void setGroupBackImage(String userHash, StateToken token, AsyncCallback<GroupDTO> asyncCallback);
+ void setGroupNewMembersJoiningPolicy(String userHash, StateToken groupToken,
+ AdmissionType admissionPolicy, AsyncCallback<Void> asyncCallback);
- void setGroupNewMembersJoiningPolicy(String userHash, StateToken groupToken, AdmissionType admissionPolicy,
- AsyncCallback<Void> asyncCallback);
+ void setSocialNetworkVisibility(String userHash, StateToken token, SocialNetworkVisibility visibility,
+ AsyncCallback<Void> asyncCallback);
- void setSocialNetworkVisibility(String userHash, StateToken token, SocialNetworkVisibility visibility,
- AsyncCallback<Void> asyncCallback);
+ void setToolEnabled(String userHash, StateToken groupToken, String toolName, boolean enabled,
+ AsyncCallback<Void> asyncCallback);
- void setToolEnabled(String userHash, StateToken groupToken, String toolName, boolean enabled,
- AsyncCallback<Void> asyncCallback);
-
}
Modified: trunk/src/main/java/cc/kune/core/client/services/FileDownloadUtils.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/services/FileDownloadUtils.java 2011-06-18 21:57:55 UTC (rev 1411)
+++ trunk/src/main/java/cc/kune/core/client/services/FileDownloadUtils.java 2011-06-21 20:03:39 UTC (rev 1412)
@@ -33,6 +33,7 @@
public class FileDownloadUtils {
+ private static final String BACKDOWNLOADSERVLET = "servlets/EntityBackgroundDownloadManager";
private static final String DOWNLOADSERVLET = "servlets/FileDownloadManager";
protected static final String GROUP_NO_AVATAR_IMAGE = "images/group-def-icon.png";
private static final String LOGODOWNLOADSERVLET = "servlets/EntityLogoDownloadManager";
@@ -67,6 +68,16 @@
DOM.setElementAttribute(RootPanel.get("__download").getElement(), "src", url);
}
+ public String getBackgroundImageUrl(final StateToken token) {
+ return new Url(GWT.getModuleBaseURL() + BACKDOWNLOADSERVLET, new UrlParam(FileConstants.TOKEN,
+ token.toString())).toString();
+ }
+
+ public String getBackgroundResizedUrl(final StateToken token, final ImageSize imageSize) {
+ return new Url(GWT.getModuleBaseURL() + BACKDOWNLOADSERVLET, new UrlParam(FileConstants.TOKEN,
+ token.toString()), new UrlParam(FileConstants.IMGSIZE, imageSize.toString())).toString();
+ }
+
public String getGroupLogo(final GroupDTO group) {
return group.hasLogo() ? getLogoImageUrl(group.getStateToken())
: group.isPersonal() ? PERSON_NO_AVATAR_IMAGE : GROUP_NO_AVATAR_IMAGE;
Modified: trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPresenter.java 2011-06-18 21:57:55 UTC (rev 1411)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorPresenter.java 2011-06-21 20:03:39 UTC (rev 1412)
@@ -28,6 +28,7 @@
import cc.kune.core.client.state.TokenUtils;
import cc.kune.core.client.state.UserSignOutEvent;
import cc.kune.gspace.client.GSpaceArmor;
+import cc.kune.gspace.client.style.GSpaceBackManager;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
@@ -69,6 +70,7 @@
}
private final GSpaceArmor armor;
+ private final GSpaceBackManager backManager;
private Space currentSpace;
private String groupToken;
private String homeToken;
@@ -81,12 +83,13 @@
@Inject
public SpaceSelectorPresenter(final EventBus eventBus, final StateManager stateManager,
final SpaceSelectorView view, final SpaceSelectorProxy proxy, final GSpaceArmor armor,
- final Session session, final Provider<SignIn> signIn) {
+ final Session session, final Provider<SignIn> signIn, final GSpaceBackManager backManager) {
super(eventBus, view, proxy);
this.stateManager = stateManager;
this.armor = armor;
this.session = session;
this.signIn = signIn;
+ this.backManager = backManager;
currentSpace = null;
homeToken = SiteTokens.HOME;
userToken = SiteTokens.WAVEINBOX;
@@ -124,6 +127,7 @@
private void onGroupSpaceSelect() {
armor.selectGroupSpace();
+ backManager.restoreBackImage();
getView().setHomeBtnDown(false);
getView().setUserBtnDown(false);
getView().setGroupBtnDown(true);
@@ -133,6 +137,7 @@
private void onHomeSpaceSelect() {
armor.selectHomeSpace();
+ backManager.clearBackImage();
getView().setHomeBtnDown(true);
getView().setUserBtnDown(false);
getView().setGroupBtnDown(false);
@@ -142,6 +147,7 @@
private void onPublicSpaceSelect() {
armor.selectPublicSpace();
+ backManager.restoreBackImage();
getView().setHomeBtnDown(false);
getView().setUserBtnDown(false);
getView().setGroupBtnDown(false);
@@ -204,6 +210,7 @@
private void onUserSpaceSelect() {
if (session.isLogged()) {
armor.selectUserSpace();
+ backManager.clearBackImage();
getView().setHomeBtnDown(false);
getView().setUserBtnDown(true);
getView().setGroupBtnDown(false);
Modified: trunk/src/main/java/cc/kune/core/public/ws.css
===================================================================
--- trunk/src/main/java/cc/kune/core/public/ws.css 2011-06-18 21:57:55 UTC (rev 1411)
+++ trunk/src/main/java/cc/kune/core/public/ws.css 2011-06-21 20:03:39 UTC (rev 1412)
@@ -1,5 +1,6 @@
-CHARSET "UTF-8 "; body {
- background-color: white;
+CHARSET "UTF-8 ";
+body {
+ background-color: transparent;
color: black;
font-family: 'Ubuntu', Arial;
font-size: small;
Modified: trunk/src/main/java/cc/kune/core/server/KuneRackModule.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/KuneRackModule.java 2011-06-18 21:57:55 UTC (rev 1411)
+++ trunk/src/main/java/cc/kune/core/server/KuneRackModule.java 2011-06-21 20:03:39 UTC (rev 1412)
@@ -33,6 +33,8 @@
import cc.kune.core.client.rpcservices.SocialNetworkService;
import cc.kune.core.client.rpcservices.UserService;
import cc.kune.core.server.init.FinderRegistry;
+import cc.kune.core.server.manager.file.EntityBackgroundDownloadManager;
+import cc.kune.core.server.manager.file.EntityBackgroundUploadManager;
import cc.kune.core.server.manager.file.EntityLogoDownloadManager;
import cc.kune.core.server.manager.file.EntityLogoUploadManager;
import cc.kune.core.server.manager.file.FileDownloadManager;
@@ -139,7 +141,8 @@
builder.installRESTServices("^/ws/json/", TestJSONService.class, GroupJSONService.class,
UserJSONService.class, I18nTranslationJSONService.class, ContentJSONService.class);
builder.installServlet("^/ws/servlets/", FileUploadManager.class, FileDownloadManager.class,
- EntityLogoUploadManager.class, EntityLogoDownloadManager.class, FileGwtUploadServlet.class);
+ EntityLogoUploadManager.class, EntityLogoDownloadManager.class, FileGwtUploadServlet.class,
+ EntityBackgroundDownloadManager.class, EntityBackgroundUploadManager.class);
builder.at("^/ws/(.*)$").install(new ForwardFilter("^/ws/(.*)$", "/ws/{0}"));
}
Modified: trunk/src/main/java/cc/kune/core/server/manager/FileManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/FileManager.java 2011-06-18 21:57:55 UTC (rev 1411)
+++ trunk/src/main/java/cc/kune/core/server/manager/FileManager.java 2011-06-21 20:03:39 UTC (rev 1412)
@@ -24,31 +24,39 @@
public interface FileManager {
- /**
- * Create a new file adding a numeric sequence if the file already exists
- *
- * @param dir
- * the directory (use File.separator for dir delimiters)
- * @param fileName
- * (the new file name)
- * @return if 'file.txt' exists it creates 'file 1.txt' and if 'file 1.txt'
- * exists it creates 'file 2.txt' and so on
- * @throws IOException
- */
- File createFileWithSequentialName(String dir, String fileName) throws IOException;
+ /**
+ * Create a new file adding a numeric sequence if the file already exists
+ *
+ * @param dir
+ * the directory (use File.separator for dir delimiters)
+ * @param fileName
+ * (the new file name)
+ * @return if 'file.txt' exists it creates 'file 1.txt' and if 'file 1.txt'
+ * exists it creates 'file 2.txt' and so on
+ * @throws IOException
+ */
+ File createFileWithSequentialName(String dir, String fileName) throws IOException;
- /**
- * @param dir
- * the directory (use File.separator for dir delimiters)
- * @return true if and only if the directory was created, along with all
- * necessary parent directories; false otherwise
- */
- boolean mkdir(String dir);
+ /**
+ * @param dir
+ * the directory (use File.separator for dir delimiters)
+ * @return true if and only if the directory was created, along with all
+ * necessary parent directories; false otherwise
+ */
+ boolean mkdir(String dir);
- /**
- * @param dir
- * the directory (use File.separator for dir delimiters)
- */
- boolean rmdir(String dir) throws IOException;
+ /**
+ * @param dir
+ * the directory (use File.separator for dir delimiters)
+ * @param file
+ * the file to remove
+ */
+ boolean rm(String dir, String file);
+ /**
+ * @param dir
+ * the directory (use File.separator for dir delimiters)
+ */
+ boolean rmdir(String dir) throws IOException;
+
}
Modified: trunk/src/main/java/cc/kune/core/server/manager/GroupManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/GroupManager.java 2011-06-18 21:57:55 UTC (rev 1411)
+++ trunk/src/main/java/cc/kune/core/server/manager/GroupManager.java 2011-06-21 20:03:39 UTC (rev 1412)
@@ -32,46 +32,46 @@
public interface GroupManager extends Manager<Group, Long> {
- void changeDefLicense(User user, Group group, String licenseShortName);
+ void changeDefLicense(User user, Group group, String licenseShortName);
- void changeWsTheme(User user, Group group, String theme) throws AccessViolationException;
+ void changeWsTheme(User user, Group group, String theme) throws AccessViolationException;
- void clearGroupBackImage(Group group);
+ void clearGroupBackImage(Group group);
- Group createGroup(Group group, User user, String publicDescrip) throws GroupNameInUseException,
- UserMustBeLoggedException;
+ Group createGroup(Group group, User user, String publicDescrip) throws GroupNameInUseException,
+ UserMustBeLoggedException;
- Group createUserGroup(User user) throws GroupNameInUseException, EmailAddressInUseException;
+ Group createUserGroup(User user) throws GroupNameInUseException, EmailAddressInUseException;
- Group createUserGroup(User user, boolean wantPersonalHomepage) throws GroupNameInUseException,
- EmailAddressInUseException;
+ Group createUserGroup(User user, boolean wantPersonalHomepage) throws GroupNameInUseException,
+ EmailAddressInUseException;
- List<Group> findAdminInGroups(Long groupId);
+ List<Group> findAdminInGroups(Long groupId);
- Group findByShortName(String groupName);
+ Group findByShortName(String groupName);
- List<Group> findCollabInGroups(Long groupId);
+ List<Group> findCollabInGroups(Long groupId);
- List<String> findEnabledTools(Long id);
+ List<String> findEnabledTools(Long id);
- /**
- * IMPORTANT: returns null if userId is null
- *
- * @param userId
- * @return
- */
- Group getGroupOfUserWithId(Long userId);
+ /**
+ * IMPORTANT: returns null if userId is null
+ *
+ * @param userId
+ * @return
+ */
+ Group getGroupOfUserWithId(Long userId);
- Group getSiteDefaultGroup();
+ Group getSiteDefaultGroup();
- SearchResult<Group> search(String search);
+ SearchResult<Group> search(String search);
- SearchResult<Group> search(String search, Integer firstResult, Integer maxResults);
+ SearchResult<Group> search(String search, Integer firstResult, Integer maxResults);
- void setDefaultContent(String groupShortName, Content content);
+ void setDefaultContent(String groupShortName, Content content);
- void setGroupBackImage(Group group, Content content);
+ void setGroupBackgroundImage(Group group, String backgroundFileName, String mime);
- void setToolEnabled(User userLogged, String groupShortName, String toolName, boolean enabled);
+ void setToolEnabled(User userLogged, String groupShortName, String toolName, boolean enabled);
}
Added: trunk/src/main/java/cc/kune/core/server/manager/file/EntityBackgroundDownloadManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/file/EntityBackgroundDownloadManager.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/server/manager/file/EntityBackgroundDownloadManager.java 2011-06-21 20:03:39 UTC (rev 1412)
@@ -0,0 +1,120 @@
+/*
+ *
+ * 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.core.server.manager.file;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.OutputStream;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import cc.kune.core.client.errors.ContentNotFoundException;
+import cc.kune.core.client.services.FileConstants;
+import cc.kune.core.client.services.ImageSize;
+import cc.kune.core.server.manager.GroupManager;
+import cc.kune.core.server.properties.KuneProperties;
+import cc.kune.core.shared.domain.utils.StateToken;
+import cc.kune.domain.Group;
+
+import com.google.inject.Inject;
+
+/**
+ * Some snippets from:
+ * http://www.onjava.com/pub/a/onjava/excerpt/jebp_3/index1.html?page=1
+ *
+ */
+
+public class EntityBackgroundDownloadManager extends HttpServlet {
+
+ static final String APPLICATION_X_DOWNLOAD = "application/x-download";
+
+ public static final Log LOG = LogFactory.getLog(FileDownloadManager.class);
+ static final String RESP_HEADER_ATTACHMENT_FILENAME = "attachment; filename=\"";
+ static final String RESP_HEADER_CONTEND_DISP = "Content-Disposition";
+
+ static final String RESP_HEADER_END = "\"";
+
+ private static final long serialVersionUID = -1160659289588014049L;
+
+ @Inject
+ FileUtils fileUtils;
+ @Inject
+ GroupManager groupManager;
+ @Inject
+ KuneProperties kuneProperties;
+
+ String buildResponse(final StateToken statetoken, final String filename, final String mimeType,
+ final ImageSize imgsize, final HttpServletResponse resp) throws FileNotFoundException, IOException {
+ final String absDir = kuneProperties.get(KuneProperties.UPLOAD_LOCATION)
+ + FileUtils.groupToDir(statetoken.getGroup());
+ String absFilename = absDir + filename;
+
+ if (imgsize != null) {
+ final String imgsizePrefix = "." + imgsize;
+ final String extension = FileUtils.getFileNameExtension(filename, true);
+ final String filenameWithoutExtension = FileUtils.getFileNameWithoutExtension(filename, extension);
+ final String filenameResized = filenameWithoutExtension + imgsizePrefix + extension;
+ if (fileUtils.exist(absDir + filenameResized)) {
+ absFilename = absDir + filenameResized;
+ }
+ }
+
+ final File file = new File(absFilename);
+
+ resp.setContentLength((int) file.length());
+
+ final String contentType = mimeType.toString();
+
+ resp.setContentType(contentType);
+ LOG.info("Content type returned: " + contentType);
+
+ resp.setHeader(RESP_HEADER_CONTEND_DISP, RESP_HEADER_ATTACHMENT_FILENAME + filename
+ + RESP_HEADER_END);
+ return absFilename;
+ }
+
+ @Override
+ protected void doGet(final HttpServletRequest req, final HttpServletResponse resp)
+ throws ServletException, IOException {
+
+ final StateToken stateToken = new StateToken(req.getParameter(FileConstants.TOKEN));
+ final String imageSizeS = req.getParameter(FileConstants.IMGSIZE);
+ final ImageSize imgsize = imageSizeS == null ? null : ImageSize.valueOf(imageSizeS);
+
+ try {
+ final Group group = groupManager.findByShortName(stateToken.getGroup());
+
+ final String absFilename = buildResponse(stateToken, group.getBackgroundImage(),
+ group.getBackgroundMime(), imgsize, resp);
+ final OutputStream out = resp.getOutputStream();
+ FileDownloadManagerUtils.returnFile(absFilename, out);
+ } catch (final ContentNotFoundException e) {
+ FileDownloadManagerUtils.returnNotFound(resp);
+ return;
+ }
+ }
+}
Property changes on: trunk/src/main/java/cc/kune/core/server/manager/file/EntityBackgroundDownloadManager.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/src/main/java/cc/kune/core/server/manager/file/EntityBackgroundUploadManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/file/EntityBackgroundUploadManager.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/server/manager/file/EntityBackgroundUploadManager.java 2011-06-21 20:03:39 UTC (rev 1412)
@@ -0,0 +1,103 @@
+/*
+ *
+ * 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.core.server.manager.file;
+
+import java.io.File;
+
+import org.apache.commons.fileupload.FileItem;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import cc.kune.core.server.auth.ActionLevel;
+import cc.kune.core.server.auth.Authenticated;
+import cc.kune.core.server.auth.Authorizated;
+import cc.kune.core.server.manager.FileManager;
+import cc.kune.core.server.manager.GroupManager;
+import cc.kune.core.server.properties.KuneProperties;
+import cc.kune.core.shared.domain.AccessRol;
+import cc.kune.core.shared.domain.utils.StateToken;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+import cc.kune.domain.BasicMimeType;
+import cc.kune.domain.Group;
+
+import com.google.inject.Inject;
+import com.google.inject.persist.Transactional;
+
+public class EntityBackgroundUploadManager extends FileGwtUploadAbstractServlet {
+
+ public static final Log LOG = LogFactory.getLog(FileGwtUploadServlet.class);
+ private static final long serialVersionUID = 1L;
+ private final FileManager fileManager;
+ private final GroupManager groupManager;
+ private final I18nTranslationService i18n;
+
+ @Inject
+ public EntityBackgroundUploadManager(final KuneProperties kuneProperties,
+ final GroupManager groupManager, final I18nTranslationService i18n, final FileManager fileManager) {
+ super(kuneProperties);
+ this.groupManager = groupManager;
+ this.i18n = i18n;
+ this.fileManager = fileManager;
+ }
+
+ @Override
+ @Authenticated
+ @Authorizated(accessRolRequired = AccessRol.Administrator, actionLevel = ActionLevel.group)
+ @Transactional
+ protected String createUploadedFile(final String userHash, final StateToken stateToken,
+ final String fileName, final FileItem origFile, final String typeId) {
+ try {
+ final String mimeTypeS = origFile.getContentType();
+ final BasicMimeType mimeType = new BasicMimeType(mimeTypeS);
+ if (!mimeType.getType().equals("image")) {
+ return "Trying to set a non image (" + mimeTypeS + ") as group background";
+ }
+ final Group group = groupManager.findByShortName(stateToken.getGroup());
+
+ if (group == Group.NO_GROUP) {
+ LOG.error("Group not found trying to set the background");
+ return i18n.t("Error uploading file");
+ }
+
+ final String relDir = FileUtils.groupToDir(group.getShortName());
+ final String absDir = kuneProperties.get(KuneProperties.UPLOAD_LOCATION) + relDir;
+ fileManager.mkdir(absDir);
+
+ File destFile = null;
+ final String filenameUTF8 = new String(origFile.getName().getBytes(), UTF8);
+ destFile = fileManager.createFileWithSequentialName(absDir, filenameUTF8);
+ origFile.write(destFile);
+
+ final String extension = FileUtils.getFileNameExtension(filenameUTF8, false);
+ ImageUtilsDefault.generateThumbs(absDir, filenameUTF8, extension, false,
+ Integer.parseInt(kuneProperties.get(KuneProperties.IMAGES_RESIZEWIDTH)),
+ Integer.parseInt(kuneProperties.get(KuneProperties.IMAGES_THUMBSIZE)),
+ Integer.parseInt(kuneProperties.get(KuneProperties.IMAGES_CROPSIZE)),
+ Integer.parseInt(kuneProperties.get(KuneProperties.IMAGES_ICONSIZE)));
+
+ LOG.info("Mimetype: " + mimeType);
+ groupManager.setGroupBackgroundImage(group, filenameUTF8, mimeTypeS);
+
+ } catch (final Exception e) {
+ return i18n.t("Error uploading file");
+ }
+ return i18n.t("Success uploading");
+ }
+}
Property changes on: trunk/src/main/java/cc/kune/core/server/manager/file/EntityBackgroundUploadManager.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: trunk/src/main/java/cc/kune/core/server/manager/file/FileGwtUploadAbstractServlet.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/file/FileGwtUploadAbstractServlet.java 2011-06-18 21:57:55 UTC (rev 1411)
+++ trunk/src/main/java/cc/kune/core/server/manager/file/FileGwtUploadAbstractServlet.java 2011-06-21 20:03:39 UTC (rev 1412)
@@ -34,12 +34,18 @@
import cc.kune.core.server.properties.KuneProperties;
import cc.kune.core.shared.domain.utils.StateToken;
+import com.google.inject.servlet.RequestScoped;
+
+@RequestScoped
public abstract class FileGwtUploadAbstractServlet extends UploadAction {
public static final Log LOG = LogFactory.getLog(FileGwtUploadAbstractServlet.class);
private static final long serialVersionUID = 1L;
+ protected static final String UTF8 = "UTF-8";
+ protected final KuneProperties kuneProperties;
public FileGwtUploadAbstractServlet(final KuneProperties kuneProperties) {
+ this.kuneProperties = kuneProperties;
this.maxSize = Integer.valueOf(kuneProperties.get(KuneProperties.UPLOAD_MAX_FILE_SIZE_IN_KS));
this.uploadDelay = Integer.valueOf(kuneProperties.get(KuneProperties.UPLOAD_DELAY_FOR_TEST));
}
Modified: trunk/src/main/java/cc/kune/core/server/manager/file/FileManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/file/FileManagerDefault.java 2011-06-18 21:57:55 UTC (rev 1411)
+++ trunk/src/main/java/cc/kune/core/server/manager/file/FileManagerDefault.java 2011-06-21 20:03:39 UTC (rev 1412)
@@ -22,7 +22,6 @@
import java.io.File;
import java.io.IOException;
-
import cc.kune.core.server.manager.FileManager;
import com.google.inject.Singleton;
@@ -30,34 +29,43 @@
@Singleton
public class FileManagerDefault implements FileManager {
- public File createFileWithSequentialName(final String dir, final String fileName) throws IOException {
- String fileNameProposal = String.valueOf(fileName);
- File file = new File(dir, fileNameProposal);
- while (file.exists()) {
- fileNameProposal = FileUtils.getNextSequentialFileName(fileNameProposal, true);
- // @PMD:REVIEWED:AvoidInstantiatingObjectsInLoops: by vjrj on
- // 21/05/09 13:15
- file = new File(dir, fileNameProposal);
- }
- if (file.createNewFile()) {
- return file;
- } else {
- throw new IOException("Cannot create sequential file name");
- }
+ @Override
+ public File createFileWithSequentialName(final String dir, final String fileName) throws IOException {
+ String fileNameProposal = String.valueOf(fileName);
+ File file = new File(dir, fileNameProposal);
+ while (file.exists()) {
+ fileNameProposal = FileUtils.getNextSequentialFileName(fileNameProposal, true);
+ // @PMD:REVIEWED:AvoidInstantiatingObjectsInLoops: by vjrj on
+ // 21/05/09 13:15
+ file = new File(dir, fileNameProposal);
}
-
- public boolean mkdir(final String dir) {
- return new File(dir).mkdirs();
+ if (file.createNewFile()) {
+ return file;
+ } else {
+ throw new IOException("Cannot create sequential file name");
}
+ }
- public boolean rmdir(final String dir) throws IOException {
- final File file = new File(dir);
- if (!file.isDirectory()) {
- throw new IOException("rmdir: " + dir + ": Not a directory");
- }
- if (file.listFiles().length != 0) {
- throw new IOException("rmdir: " + dir + ": Directory not empty");
- }
- return file.delete();
+ @Override
+ public boolean mkdir(final String dir) {
+ return new File(dir).mkdirs();
+ }
+
+ @Override
+ public boolean rm(final String dir, final String fileName) {
+ final File file = new File(dir, fileName);
+ return file.delete();
+ }
+
+ @Override
+ public boolean rmdir(final String dir) throws IOException {
+ final File file = new File(dir);
+ if (!file.isDirectory()) {
+ throw new IOException("rmdir: " + dir + ": Not a directory");
}
+ if (file.listFiles().length != 0) {
+ throw new IOException("rmdir: " + dir + ": Directory not empty");
+ }
+ return file.delete();
+ }
}
Modified: trunk/src/main/java/cc/kune/core/server/manager/file/FileUploadManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/file/FileUploadManager.java 2011-06-18 21:57:55 UTC (rev 1411)
+++ trunk/src/main/java/cc/kune/core/server/manager/file/FileUploadManager.java 2011-06-21 20:03:39 UTC (rev 1412)
@@ -20,14 +20,11 @@
package cc.kune.core.server.manager.file;
import java.io.File;
-import java.io.FileNotFoundException;
-import magick.MagickException;
import net.sf.json.JSONObject;
import org.apache.commons.fileupload.FileItem;
-import cc.kune.core.client.services.ImageSize;
import cc.kune.core.server.UserSession;
import cc.kune.core.server.access.AccessService;
import cc.kune.core.server.auth.ActionLevel;
@@ -53,129 +50,109 @@
@RequestScoped
public class FileUploadManager extends FileJsonUploadManagerAbstract {
- private static final long serialVersionUID = -7209922761735338754L;
- @Inject
- AccessService accessService;
- @Inject
- ContentManager contentManager;
- @Inject
- FileManager fileManager;
- @Inject
- I18nTranslationService i18n;
- @Inject
- UserSession userSession;
+ private static final long serialVersionUID = -7209922761735338754L;
+ @Inject
+ AccessService accessService;
+ @Inject
+ ContentManager contentManager;
+ @Inject
+ FileManager fileManager;
+ @Inject
+ I18nTranslationService i18n;
+ @Inject
+ UserSession userSession;
- @Override
- protected void beforePostStart() {
- }
+ @Override
+ protected void beforePostStart() {
+ }
- @Override
- protected JSONObject createJsonResponse(final boolean success, final String message) {
- /**
- *
- * http://max-bazhenov.com/dev/upload-dialog-2.0/index.php
- *
- * Server side handler.
- *
- * The files in the queue are posted one at a time, the file field name
- * is 'file'. The handler should return json encoded object with
- * following properties: { success: true|false, // required error:
- * 'Error or success message' // optional, also can be named 'message' }
- */
+ @Override
+ protected JSONObject createJsonResponse(final boolean success, final String message) {
+ /**
+ *
+ * http://max-bazhenov.com/dev/upload-dialog-2.0/index.php
+ *
+ * Server side handler.
+ *
+ * The files in the queue are posted one at a time, the file field name is
+ * 'file'. The handler should return json encoded object with following
+ * properties: { success: true|false, // required error: 'Error or success
+ * message' // optional, also can be named 'message' }
+ */
- JSONObject response = null;
- try {
- response = new JSONObject();
- response.put("success", success);
- response.put("error", message);
- response.put("code", "232");
- } catch (final Exception e) {
- LOG.error("Error building response");
- }
- return response;
+ JSONObject response = null;
+ try {
+ response = new JSONObject();
+ response.put("success", success);
+ response.put("error", message);
+ response.put("code", "232");
+ } catch (final Exception e) {
+ LOG.error("Error building response");
}
+ return response;
+ }
- @Override
- protected void createUploadedFile(final String userHash, final StateToken stateToken, final String fileName,
- final FileItem file, final String typeId) throws Exception {
- createUploadedFileWrapped(userHash, stateToken, fileName, file, typeId);
- }
+ @Override
+ protected void createUploadedFile(final String userHash, final StateToken stateToken,
+ final String fileName, final FileItem file, final String typeId) throws Exception {
+ createUploadedFileWrapped(userHash, stateToken, fileName, file, typeId);
+ }
- @Authenticated
- @Authorizated(accessRolRequired = AccessRol.Editor, actionLevel = ActionLevel.container, mustCheckMembership = false)
- @Transactional
- Content createUploadedFileWrapped(final String userHash, final StateToken stateToken, final String fileName,
- final FileItem fileUploadItem, final String typeId) throws Exception {
- final String relDir = FileUtils.toDir(stateToken);
- final String absDir = kuneProperties.get(KuneProperties.UPLOAD_LOCATION) + relDir;
- fileManager.mkdir(absDir);
+ @Authenticated
+ @Authorizated(accessRolRequired = AccessRol.Editor, actionLevel = ActionLevel.container, mustCheckMembership = false)
+ @Transactional
+ Content createUploadedFileWrapped(final String userHash, final StateToken stateToken,
+ final String fileName, final FileItem fileUploadItem, final String typeId) throws Exception {
+ final String relDir = FileUtils.toDir(stateToken);
+ final String absDir = kuneProperties.get(KuneProperties.UPLOAD_LOCATION) + relDir;
+ fileManager.mkdir(absDir);
- File file = null;
- try {
- final String filenameUTF8 = new String(fileName.getBytes(), UTF8);
- file = fileManager.createFileWithSequentialName(absDir, filenameUTF8);
- fileUploadItem.write(file);
+ File file = null;
+ try {
+ final String filenameUTF8 = new String(fileName.getBytes(), UTF8);
+ file = fileManager.createFileWithSequentialName(absDir, filenameUTF8);
+ fileUploadItem.write(file);
- final String mimetype = fileUploadItem.getContentType();
- final BasicMimeType basicMimeType = new BasicMimeType(mimetype);
- LOG.info("Mimetype: " + basicMimeType);
- final String extension = FileUtils.getFileNameExtension(file.getName(), false);
+ final String mimetype = fileUploadItem.getContentType();
+ final BasicMimeType basicMimeType = new BasicMimeType(mimetype);
+ LOG.info("Mimetype: " + basicMimeType);
+ final String extension = FileUtils.getFileNameExtension(file.getName(), false);
- String preview = "";
+ String preview = "";
- if (basicMimeType.isImage()) {
- generateThumbs(absDir, file.getName(), extension, false);
- } else if (basicMimeType.isPdf()) {
- generateThumbs(absDir, file.getName(), "png", true);
- } else if (basicMimeType.isText()) {
- final String textPreview = new String(FileUtils.getBytesFromFile(file));
- preview = "<pre>" + StringW.wordWrap(textPreview) + "</pre>";
- }
+ if (basicMimeType.isImage()) {
+ generateThumbs(absDir, file.getName(), extension, false);
+ } else if (basicMimeType.isPdf()) {
+ generateThumbs(absDir, file.getName(), "png", true);
+ } else if (basicMimeType.isText()) {
+ final String textPreview = new String(FileUtils.getBytesFromFile(file));
+ preview = "<pre>" + StringW.wordWrap(textPreview) + "</pre>";
+ }
- // Persist
- final User user = userSession.getUser();
- final Container container = accessService.accessToContainer(ContentUtils.parseId(stateToken.getFolder()),
- user, AccessRol.Editor);
- final Content content = contentManager.createContent(
- FileUtils.getFileNameWithoutExtension(file.getName(), extension), preview, user, container, typeId);
- content.setMimeType(basicMimeType);
- content.setFilename(file.getName());
- return content;
- } catch (final Exception e) {
- if (file != null && file.exists()) {
- logFileDel(file.delete());
- }
- throw e;
- }
+ // Persist
+ final User user = userSession.getUser();
+ final Container container = accessService.accessToContainer(
+ ContentUtils.parseId(stateToken.getFolder()), user, AccessRol.Editor);
+ final Content content = contentManager.createContent(
+ FileUtils.getFileNameWithoutExtension(file.getName(), extension), preview, user, container,
+ typeId);
+ content.setMimeType(basicMimeType);
+ content.setFilename(file.getName());
+ return content;
+ } catch (final Exception e) {
+ if (file != null && file.exists()) {
+ logFileDel(file.delete());
+ }
+ throw e;
}
+ }
- private void generateThumbs(final String absDir, final String filename, final String extension, final boolean isPdf) {
- try {
- final String fileOrig = absDir + filename;
- final String withoutExtension = FileUtils.getFileNameWithoutExtension(filename, extension);
-
- final String resizeName = absDir + withoutExtension + "." + ImageSize.sized + "." + extension;
- final String thumbName = absDir + withoutExtension + "." + ImageSize.thumb + "." + extension;
- final String iconName = absDir + withoutExtension + "." + ImageSize.ico + "." + extension;
- final String previewName = absDir + withoutExtension + "." + extension;
-
- final int resizeWidth = Integer.parseInt(kuneProperties.get(KuneProperties.IMAGES_RESIZEWIDTH));
- final int thumbSize = Integer.parseInt(kuneProperties.get(KuneProperties.IMAGES_THUMBSIZE));
- final int cropSize = Integer.parseInt(kuneProperties.get(KuneProperties.IMAGES_CROPSIZE));
- final int iconSize = Integer.parseInt(kuneProperties.get(KuneProperties.IMAGES_ICONSIZE));
-
- ImageUtilsDefault.scaleImageToMax(fileOrig, resizeName, resizeWidth);
- ImageUtilsDefault.createThumb(fileOrig, thumbName, thumbSize, cropSize);
- ImageUtilsDefault.createThumb(fileOrig, iconName, iconSize);
- if (isPdf) {
- ImageUtilsDefault.createThumbFromPdf(fileOrig, previewName);
- }
- } catch (final NumberFormatException e) {
- LOG.error("Image sizes in kune.properties are not integers", e);
- } catch (final MagickException e) {
- LOG.info("Problem generating image thumb for " + filename, e);
- } catch (final FileNotFoundException e) {
- LOG.info("Original image not found generating image thumb for " + filename, e);
- }
- }
+ private void generateThumbs(final String absDir, final String filename, final String extension,
+ final boolean isPdf) {
+ ImageUtilsDefault.generateThumbs(absDir, filename, extension, isPdf,
+ Integer.parseInt(kuneProperties.get(KuneProperties.IMAGES_RESIZEWIDTH)),
+ Integer.parseInt(kuneProperties.get(KuneProperties.IMAGES_THUMBSIZE)),
+ Integer.parseInt(kuneProperties.get(KuneProperties.IMAGES_CROPSIZE)),
+ Integer.parseInt(kuneProperties.get(KuneProperties.IMAGES_ICONSIZE)));
+ }
}
Modified: trunk/src/main/java/cc/kune/core/server/manager/file/FileUtils.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/file/FileUtils.java 2011-06-18 21:57:55 UTC (rev 1411)
+++ trunk/src/main/java/cc/kune/core/server/manager/file/FileUtils.java 2011-06-21 20:03:39 UTC (rev 1412)
@@ -28,109 +28,113 @@
public class FileUtils {
- public static final String SLASH = File.separator;
+ public static final String SLASH = File.separator;
- /**
- * Snippet from:
- * http://www.java-tips.org/java-se-tips/java.io/reading-a-file
- * -into-a-byte-array.html
- */
- public static byte[] getBytesFromFile(final File file) throws IOException {
- final InputStream iStream = new FileInputStream(file);
+ /**
+ * Snippet from: http://www.java-tips.org/java-se-tips/java.io/reading-a-file
+ * -into-a-byte-array.html
+ */
+ public static byte[] getBytesFromFile(final File file) throws IOException {
+ final InputStream iStream = new FileInputStream(file);
- // Get the size of the file
- final long length = file.length();
+ // Get the size of the file
+ final long length = file.length();
- if (length > Integer.MAX_VALUE) {
- // File is too large
- }
+ if (length > Integer.MAX_VALUE) {
+ // File is too large
+ }
- // Create the byte array to hold the data
- final byte[] bytes = new byte[(int) length];
+ // Create the byte array to hold the data
+ final byte[] bytes = new byte[(int) length];
- // Read in the bytes
- int offset = 0;
- int numRead = 0;
- while (offset < bytes.length && (numRead = iStream.read(bytes, offset, bytes.length - offset)) >= 0) {
- offset += numRead;
- }
-
- // Ensure all the bytes have been read in
- if (offset < bytes.length) {
- throw new IOException("Could not completely read file " + file.getName());
- }
-
- // Close the input stream and return bytes
- iStream.close();
- return bytes;
+ // Read in the bytes
+ int offset = 0;
+ int numRead = 0;
+ while (offset < bytes.length && (numRead = iStream.read(bytes, offset, bytes.length - offset)) >= 0) {
+ offset += numRead;
}
- /**
- * For filename extension info see:
- * http://en.wikipedia.org/wiki/File_name_extension
- *
- * @param filename
- * @return
- */
- public static String getFileNameExtension(final String filename, final boolean withDot) {
- // also we can use FilenameUtils
- if (filename == null) {
- return "";
- }
- final int dotIndex = filename.lastIndexOf('.');
- if (dotIndex == -1 || dotIndex == 0) {
- return "";
- } else {
- if (withDot) {
- final String ext = filename.substring(dotIndex);
- return ext.length() == 1 ? "" : ext;
- } else {
- return filename.substring(dotIndex + 1);
- }
- }
+ // Ensure all the bytes have been read in
+ if (offset < bytes.length) {
+ throw new IOException("Could not completely read file " + file.getName());
}
- public static String getFileNameWithoutExtension(final String fileName, final String extension) {
- final int extlength = extension.length();
- if (extlength > 0) {
- final boolean withDot = extension.charAt(0) == '.';
- return fileName.substring(0, fileName.length() - extlength - (withDot ? 0 : 1));
- } else {
- return fileName;
- }
+ // Close the input stream and return bytes
+ iStream.close();
+ return bytes;
+ }
+
+ /**
+ * For filename extension info see:
+ * http://en.wikipedia.org/wiki/File_name_extension
+ *
+ * @param filename
+ * @return
+ */
+ public static String getFileNameExtension(final String filename, final boolean withDot) {
+ // also we can use FilenameUtils
+ if (filename == null) {
+ return "";
}
+ final int dotIndex = filename.lastIndexOf('.');
+ if (dotIndex == -1 || dotIndex == 0) {
+ return "";
+ } else {
+ if (withDot) {
+ final String ext = filename.substring(dotIndex);
+ return ext.length() == 1 ? "" : ext;
+ } else {
+ return filename.substring(dotIndex + 1);
+ }
+ }
+ }
- public static String getNextSequentialFileName(final String fileName) {
- final int lastSpace = fileName.lastIndexOf(" ");
- if (lastSpace != -1) {
- final String suffix = fileName.substring(lastSpace + 1);
- try {
- final Integer i = Integer.valueOf(suffix);
- return fileName.substring(0, lastSpace + 1) + (i + 1);
- } catch (final NumberFormatException e) {
- }
- }
- return fileName + " 1";
+ public static String getFileNameWithoutExtension(final String fileName, final String extension) {
+ final int extlength = extension.length();
+ if (extlength > 0) {
+ final boolean withDot = extension.charAt(0) == '.';
+ return fileName.substring(0, fileName.length() - extlength - (withDot ? 0 : 1));
+ } else {
+ return fileName;
}
+ }
- public static String getNextSequentialFileName(final String fileName, final boolean preserveExtension) {
- if (!preserveExtension) {
- return getNextSequentialFileName(fileName);
- }
- final int dotIndex = fileName.lastIndexOf(".");
- if (dotIndex == -1 || dotIndex == 0) {
- return getNextSequentialFileName(fileName);
- } else {
- final String ext = fileName.substring(dotIndex);
- return getNextSequentialFileName(fileName.substring(0, dotIndex)) + ext;
- }
+ public static String getNextSequentialFileName(final String fileName) {
+ final int lastSpace = fileName.lastIndexOf(" ");
+ if (lastSpace != -1) {
+ final String suffix = fileName.substring(lastSpace + 1);
+ try {
+ final Integer i = Integer.valueOf(suffix);
+ return fileName.substring(0, lastSpace + 1) + (i + 1);
+ } catch (final NumberFormatException e) {
+ }
}
+ return fileName + " 1";
+ }
- public static String toDir(final StateToken stateToken) {
- return SLASH + stateToken.getGroup() + SLASH + stateToken.getTool() + SLASH + stateToken.getFolder() + SLASH;
+ public static String getNextSequentialFileName(final String fileName, final boolean preserveExtension) {
+ if (!preserveExtension) {
+ return getNextSequentialFileName(fileName);
}
+ final int dotIndex = fileName.lastIndexOf(".");
+ if (dotIndex == -1 || dotIndex == 0) {
+ return getNextSequentialFileName(fileName);
+ } else {
+ final String ext = fileName.substring(dotIndex);
+ return getNextSequentialFileName(fileName.substring(0, dotIndex)) + ext;
+ }
+ }
- public boolean exist(final String file) {
- return new File(file).exists();
- }
+ public static String groupToDir(final String groupName) {
+ return SLASH + groupName + SLASH;
+ }
+
+ public static String toDir(final StateToken stateToken) {
+ return SLASH + stateToken.getGroup() + SLASH + stateToken.getTool() + SLASH + stateToken.getFolder()
+ + SLASH;
+ }
+
+ public boolean exist(final String file) {
+ return new File(file).exists();
+ }
}
Modified: trunk/src/main/java/cc/kune/core/server/manager/file/ImageUtilsDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/file/ImageUtilsDefault.java 2011-06-18 21:57:55 UTC (rev 1411)
+++ trunk/src/main/java/cc/kune/core/server/manager/file/ImageUtilsDefault.java 2011-06-21 20:03:39 UTC (rev 1412)
@@ -28,173 +28,212 @@
import magick.MagickException;
import magick.MagickImage;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import cc.kune.core.client.services.ImageSize;
+
public class ImageUtilsDefault {
- /**
- * http://en.wikipedia.org/wiki/Thumbnail
- *
- * @throws FileNotFoundException
- *
- */
- public static void createThumb(String fileOrig, String fileDest, int cropDimension) throws MagickException,
- FileNotFoundException {
- createThumb(fileOrig, fileDest, cropDimension, cropDimension);
- }
+ public static final Log LOG = LogFactory.getLog(ImageUtilsDefault.class);
- public static void createThumb(String fileOrig, String fileDest, int thumbDimension, int cropDimension)
- throws MagickException, FileNotFoundException {
- checkExist(fileOrig);
- if (thumbDimension < cropDimension) {
- throw new IndexOutOfBoundsException("Thumb dimension must be bigger than crop dimension");
- }
- MagickImage imageOrig = readImage(fileOrig);
- Dimension origDimension = imageOrig.getDimension();
- int origHeight = origDimension.height;
- int origWidth = origDimension.width;
- Dimension proportionalDim = calculatePropDim(origWidth, origHeight, thumbDimension, true);
- MagickImage scaled = scaleImage(imageOrig, proportionalDim.width, proportionalDim.height);
- int x = calculateCenteredCoordinate(proportionalDim.width, cropDimension);
- int y = calculateCenteredCoordinate(proportionalDim.height, cropDimension);
- cropImage(scaled, fileDest, x, y, cropDimension, cropDimension);
- }
+ static int calculateCenteredCoordinate(final int size, final int crop) {
+ final int i = (size - crop) / 2;
+ return i < 0 ? 0 : i;
+ }
- /**
- * convert -density 300 -quality 100 -resize 720x file.pdf result.png
- *
- * @param pdfFile
- * @param newPngFile
- * @return
- * @throws MagickException
- */
- static public boolean createThumbFromPdf(String pdfFile, String newPngFile) throws MagickException {
- MagickImage pdf = readImage(pdfFile);
- MagickImage pdf1 = pdf.breakFrames()[0];
- return writeImage(pdf1, newPngFile);
- }
+ static Dimension calculatePropDim(final int origWidth, final int origHeight, final int maxSize) {
+ return calculatePropDim(origWidth, origHeight, maxSize, true);
+ }
- public static boolean cropImage(String fileOrig, String fileDest, int x, int y, int width, int height)
- throws MagickException, FileNotFoundException {
- Rectangle rectangle = new Rectangle(x, y, width, height);
- return cropImage(fileOrig, fileDest, rectangle);
+ static Dimension calculatePropDim(final int origWidth, final int origHeight, final int maxSize,
+ final boolean toShortest) {
+ final boolean higher = origHeight > origWidth;
+ final int propHeight = origHeight * maxSize / origWidth;
+ final int propWidth = origWidth * maxSize / origHeight;
+ final double height = toShortest ? (higher ? propHeight : maxSize) : (higher ? maxSize : propHeight);
+ final double width = toShortest ? (!higher ? propWidth : maxSize) : (!higher ? maxSize : propWidth);
+ if ((higher && origHeight <= maxSize) || (!higher && origWidth <= maxSize)) {
+ return new Dimension(origWidth, origHeight);
}
+ return new Dimension((int) width, (int) height);
+ }
- public static boolean cropImage(String fileOrig, String fileDest, Rectangle rectangle) throws MagickException,
- FileNotFoundException {
- checkExist(fileOrig);
- return cropImage(readImage(fileOrig), fileDest, rectangle);
+ private static void checkExist(final String fileOrig) throws FileNotFoundException {
+ final File file = new File(fileOrig);
+ if (!file.exists()) {
+ throw new FileNotFoundException();
}
+ }
- public static Dimension getDimension(String file) throws MagickException {
- MagickImage imageOrig = readImage(file);
- return imageOrig.getDimension();
- }
+ private static ImageInfo createEmptyImageInfo() throws MagickException {
+ final ImageInfo imageInfo = new ImageInfo();
+ return imageInfo;
+ }
- /**
- * FIXME: Not working, returns null always (bug)
- *
- */
- public static String getPage(String file) throws MagickException {
- ImageInfo imageInfo = new ImageInfo(file);
- new MagickImage(imageInfo);
- return imageInfo.getPage();
- }
+ private static ImageInfo createEmptyImageInfoWithNoPage() throws MagickException {
+ final ImageInfo imageInfo = createEmptyImageInfo();
+ imageInfo.setPage("0x0+0+0");
+ return imageInfo;
+ }
- public static boolean scaleImage(String fileOrig, String fileDest, Dimension dimension) throws MagickException,
- FileNotFoundException {
- checkExist(fileOrig);
- MagickImage imageOrig = readImage(fileOrig);
- return scaleImage(imageOrig, fileDest, (int) dimension.getWidth(), (int) dimension.getHeight());
- }
+ /**
+ * http://en.wikipedia.org/wiki/Thumbnail
+ *
+ * @throws FileNotFoundException
+ *
+ */
+ public static void createThumb(final String fileOrig, final String fileDest, final int cropDimension)
+ throws MagickException, FileNotFoundException {
+ createThumb(fileOrig, fileDest, cropDimension, cropDimension);
+ }
- public static boolean scaleImage(String fileOrig, String fileDest, int width, int height) throws MagickException,
- FileNotFoundException {
- checkExist(fileOrig);
- MagickImage imageOrig = readImage(fileOrig);
- return scaleImage(imageOrig, fileDest, width, height);
+ public static void createThumb(final String fileOrig, final String fileDest, final int thumbDimension,
+ final int cropDimension) throws MagickException, FileNotFoundException {
+ checkExist(fileOrig);
+ if (thumbDimension < cropDimension) {
+ throw new IndexOutOfBoundsException("Thumb dimension must be bigger than crop dimension");
}
+ final MagickImage imageOrig = readImage(fileOrig);
+ final Dimension origDimension = imageOrig.getDimension();
+ final int origHeight = origDimension.height;
+ final int origWidth = origDimension.width;
+ final Dimension proportionalDim = calculatePropDim(origWidth, origHeight, thumbDimension, true);
+ final MagickImage scaled = scaleImage(imageOrig, proportionalDim.width, proportionalDim.height);
+ final int x = calculateCenteredCoordinate(proportionalDim.width, cropDimension);
+ final int y = calculateCenteredCoordinate(proportionalDim.height, cropDimension);
+ cropImage(scaled, fileDest, x, y, cropDimension, cropDimension);
+ }
- public static boolean scaleImageToMax(String fileOrig, String fileDest, int maxSize) throws MagickException,
- FileNotFoundException {
- checkExist(fileOrig);
- MagickImage imageOrig = readImage(fileOrig);
- Dimension origDimension = imageOrig.getDimension();
- int origHeight = origDimension.height;
- int origWidth = origDimension.width;
- Dimension proportionalDim = calculatePropDim(origWidth, origHeight, maxSize, false);
- MagickImage scaled = scaleImage(imageOrig, proportionalDim.width, proportionalDim.height);
+ /**
+ * convert -density 300 -quality 100 -resize 720x file.pdf result.png
+ *
+ * @param pdfFile
+ * @param newPngFile
+ * @return
+ * @throws MagickException
+ */
+ static public boolean createThumbFromPdf(final String pdfFile, final String newPngFile)
+ throws MagickException {
+ final MagickImage pdf = readImage(pdfFile);
+ final MagickImage pdf1 = pdf.breakFrames()[0];
+ return writeImage(pdf1, newPngFile);
+ }
- return writeImage(scaled, fileDest);
- }
+ private static boolean cropImage(final MagickImage fileOrig, final String fileDest, final int x,
+ final int y, final int width, final int height) throws MagickException {
+ final Rectangle rectangle = new Rectangle(x, y, width, height);
+ return cropImage(fileOrig, fileDest, rectangle);
+ }
- static int calculateCenteredCoordinate(int size, int crop) {
- int i = (size - crop) / 2;
- return i < 0 ? 0 : i;
- }
+ private static boolean cropImage(final MagickImage fileOrig, final String fileDest,
+ final Rectangle rectangle) throws MagickException {
+ final MagickImage cropped = fileOrig.cropImage(rectangle);
+ cropped.setFileName(fileDest);
+ final ImageInfo imageInfo = createEmptyImageInfoWithNoPage();
+ return cropped.writeImage(imageInfo);
+ }
- static Dimension calculatePropDim(int origWidth, int origHeight, int maxSize) {
- return calculatePropDim(origWidth, origHeight, maxSize, true);
- }
+ public static boolean cropImage(final String fileOrig, final String fileDest, final int x,
+ final int y, final int width, final int height) throws MagickException, FileNotFoundException {
+ final Rectangle rectangle = new Rectangle(x, y, width, height);
+ return cropImage(fileOrig, fileDest, rectangle);
+ }
- static Dimension calculatePropDim(int origWidth, int origHeight, int maxSize, boolean toShortest) {
- boolean higher = origHeight > origWidth;
- int propHeight = origHeight * maxSize / origWidth;
- int propWidth = origWidth * maxSize / origHeight;
- double height = toShortest ? (higher ? propHeight : maxSize) : (higher ? maxSize : propHeight);
- double width = toShortest ? (!higher ? propWidth : maxSize) : (!higher ? maxSize : propWidth);
- if ((higher && origHeight <= maxSize) || (!higher && origWidth <= maxSize)) {
- return new Dimension(origWidth, origHeight);
- }
- return new Dimension((int) width, (int) height);
- }
+ public static boolean cropImage(final String fileOrig, final String fileDest, final Rectangle rectangle)
+ throws MagickException, FileNotFoundException {
+ checkExist(fileOrig);
+ return cropImage(readImage(fileOrig), fileDest, rectangle);
+ }
- private static void checkExist(String fileOrig) throws FileNotFoundException {
- File file = new File(fileOrig);
- if (!file.exists()) {
- throw new FileNotFoundException();
- }
- }
+ public static void generateThumbs(final String absDir, final String filename, final String extension,
+ final boolean isPdf, final int resizeWidth, final int thumbSize, final int cropSize,
+ final int iconSize) {
+ try {
+ final String fileOrig = absDir + filename;
+ final String withoutExtension = FileUtils.getFileNameWithoutExtension(filename, extension);
- private static ImageInfo createEmptyImageInfo() throws MagickException {
- ImageInfo imageInfo = new ImageInfo();
- return imageInfo;
- }
+ final String resizeName = absDir + withoutExtension + "." + ImageSize.sized + "." + extension;
+ final String thumbName = absDir + withoutExtension + "." + ImageSize.thumb + "." + extension;
+ final String iconName = absDir + withoutExtension + "." + ImageSize.ico + "." + extension;
+ final String previewName = absDir + withoutExtension + "." + extension;
- private static ImageInfo createEmptyImageInfoWithNoPage() throws MagickException {
- ImageInfo imageInfo = createEmptyImageInfo();
- imageInfo.setPage("0x0+0+0");
- return imageInfo;
+ scaleImageToMax(fileOrig, resizeName, resizeWidth);
+ createThumb(fileOrig, thumbName, thumbSize, cropSize);
+ createThumb(fileOrig, iconName, iconSize);
+ if (isPdf) {
+ createThumbFromPdf(fileOrig, previewName);
+ }
+ } catch (final NumberFormatException e) {
+ LOG.error("Image sizes in kune.properties are not integers", e);
+ } catch (final MagickException e) {
+ LOG.info("Problem generating image thumb for " + filename, e);
+ } catch (final FileNotFoundException e) {
+ LOG.info("Original image not found generating image thumb for " + filename, e);
}
+ }
- private static boolean cropImage(MagickImage fileOrig, String fileDest, int x, int y, int width, int height)
- throws MagickException {
- Rectangle rectangle = new Rectangle(x, y, width, height);
- return cropImage(fileOrig, fileDest, rectangle);
- }
+ public static Dimension getDimension(final String file) throws MagickException {
+ final MagickImage imageOrig = readImage(file);
+ return imageOrig.getDimension();
+ }
- private static boolean cropImage(MagickImage fileOrig, String fileDest, Rectangle rectangle) throws MagickException {
- MagickImage cropped = fileOrig.cropImage(rectangle);
- cropped.setFileName(fileDest);
- ImageInfo imageInfo = createEmptyImageInfoWithNoPage();
- return cropped.writeImage(imageInfo);
- }
+ /**
+ * FIXME: Not working, returns null always (bug)
+ *
+ */
+ public static String getPage(final String file) throws MagickException {
+ final ImageInfo imageInfo = new ImageInfo(file);
+ new MagickImage(imageInfo);
+ return imageInfo.getPage();
+ }
- private static MagickImage readImage(String file) throws MagickException {
- ImageInfo imageInfo = new ImageInfo(file);
- return new MagickImage(imageInfo);
- }
+ private static MagickImage readImage(final String file) throws MagickException {
+ final ImageInfo imageInfo = new ImageInfo(file);
+ return new MagickImage(imageInfo);
+ }
- private static MagickImage scaleImage(MagickImage imageOrig, int width, int height) throws MagickException {
- return imageOrig.scaleImage(width, height);
- }
+ private static MagickImage scaleImage(final MagickImage imageOrig, final int width, final int height)
+ throws MagickException {
+ return imageOrig.scaleImage(width, height);
+ }
- private static boolean scaleImage(MagickImage imageOrig, String fileDest, int width, int height)
- throws MagickException {
- MagickImage imageDest = scaleImage(imageOrig, width, height);
- return writeImage(imageDest, fileDest);
- }
+ private static boolean scaleImage(final MagickImage imageOrig, final String fileDest, final int width,
+ final int height) throws MagickException {
+ final MagickImage imageDest = scaleImage(imageOrig, width, height);
+ return writeImage(imageDest, fileDest);
+ }
- private static boolean writeImage(MagickImage imageDest, String fileDest) throws MagickException {
- imageDest.setFileName(fileDest);
- return imageDest.writeImage(createEmptyImageInfo());
- }
+ public static boolean scaleImage(final String fileOrig, final String fileDest,
+ final Dimension dimension) throws MagickException, FileNotFoundException {
+ checkExist(fileOrig);
+ final MagickImage imageOrig = readImage(fileOrig);
+ return scaleImage(imageOrig, fileDest, (int) dimension.getWidth(), (int) dimension.getHeight());
+ }
+
+ public static boolean scaleImage(final String fileOrig, final String fileDest, final int width,
+ final int height) throws MagickException, FileNotFoundException {
+ checkExist(fileOrig);
+ final MagickImage imageOrig = readImage(fileOrig);
+ return scaleImage(imageOrig, fileDest, width, height);
+ }
+
+ public static boolean scaleImageToMax(final String fileOrig, final String fileDest, final int maxSize)
+ throws MagickException, FileNotFoundException {
+ checkExist(fileOrig);
+ final MagickImage imageOrig = readImage(fileOrig);
+ final Dimension origDimension = imageOrig.getDimension();
+ final int origHeight = origDimension.height;
+ final int origWidth = origDimension.width;
+ final Dimension proportionalDim = calculatePropDim(origWidth, origHeight, maxSize, false);
+ final MagickImage scaled = scaleImage(imageOrig, proportionalDim.width, proportionalDim.height);
+
+ return writeImage(scaled, fileDest);
+ }
+
+ private static boolean writeImage(final MagickImage imageDest, final String fileDest)
+ throws MagickException {
+ imageDest.setFileName(fileDest);
+ return imageDest.writeImage(createEmptyImageInfo());
+ }
}
Modified: trunk/src/main/java/cc/kune/core/server/manager/impl/GroupManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/impl/GroupManagerDefault.java 2011-06-18 21:57:55 UTC (rev 1411)
+++ trunk/src/main/java/cc/kune/core/server/manager/impl/GroupManagerDefault.java 2011-06-21 20:03:39 UTC (rev 1412)
@@ -33,12 +33,13 @@
import org.hibernate.exception.ConstraintViolationException;
import cc.kune.core.client.errors.AccessViolationException;
-import cc.kune.core.client.errors.DefaultException;
import cc.kune.core.client.errors.EmailAddressInUseException;
import cc.kune.core.client.errors.GroupNameInUseException;
import cc.kune.core.client.errors.UserMustBeLoggedException;
+import cc.kune.core.server.manager.FileManager;
import cc.kune.core.server.manager.GroupManager;
import cc.kune.core.server.manager.LicenseManager;
+import cc.kune.core.server.manager.file.FileUtils;
import cc.kune.core.server.properties.DatabaseProperties;
import cc.kune.core.server.properties.KuneProperties;
import cc.kune.core.server.tool.ServerTool;
@@ -66,6 +67,7 @@
@Singleton
public class GroupManagerDefault extends DefaultManager<Group, Long> implements GroupManager {
+ private final FileManager fileManager;
private final GroupFinder finder;
private final I18nTranslationService i18n;
private final KuneProperties kuneProperties;
@@ -81,7 +83,8 @@
final UserFinder userFinder, final KuneProperties kuneProperties,
final DatabaseProperties properties, final ServerToolRegistry registry,
final LicenseManager licenseManager, final LicenseFinder licenseFinder,
- final ServerToolRegistry serverToolRegistry, final I18nTranslationService i18n) {
+ final FileManager fileManager, final ServerToolRegistry serverToolRegistry,
+ final I18nTranslationService i18n) {
super(provider, Group.class);
this.finder = finder;
this.userFinder = userFinder;
@@ -90,6 +93,7 @@
this.registry = registry;
this.licenseManager = licenseManager;
this.licenseFinder = licenseFinder;
+ this.fileManager = fileManager;
this.serverToolRegistry = serverToolRegistry;
this.i18n = i18n;
}
@@ -112,7 +116,12 @@
@Override
public void clearGroupBackImage(final Group group) {
- group.setGroupBackImage(null);
+ final String file = group.getBackgroundImage();
+ if (file != null) {
+ fileManager.rm(FileUtils.groupToDir(group.getShortName()), file);
+ }
+ group.setBackgroundImage(null);
+ group.setBackgroundMime(null);
}
@Override
@@ -271,12 +280,11 @@
}
@Override
- public void setGroupBackImage(final Group group, final Content content) {
- if (content.getMimeType().isImage()) {
- group.setGroupBackImage(content);
- } else {
- throw new DefaultException("Trying to set not a image as group logo");
- }
+ public void setGroupBackgroundImage(final Group group, final String backgroundFileName,
+ final String mime) {
+ clearGroupBackImage(group);
+ group.setBackgroundImage(backgroundFileName);
+ group.setBackgroundMime(mime);
}
@Override
Modified: trunk/src/main/java/cc/kune/core/server/rpc/GroupRPC.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/rpc/GroupRPC.java 2011-06-18 21:57:55 UTC (rev 1411)
+++ trunk/src/main/java/cc/kune/core/server/rpc/GroupRPC.java 2011-06-21 20:03:39 UTC (rev 1412)
@@ -26,7 +26,6 @@
import cc.kune.core.server.auth.Authenticated;
import cc.kune.core.server.auth.Authorizated;
import cc.kune.core.server.content.ContentManager;
-import cc.kune.core.server.content.ContentUtils;
import cc.kune.core.server.manager.GroupManager;
import cc.kune.core.server.mapper.Mapper;
import cc.kune.core.shared.domain.AccessRol;
@@ -36,7 +35,6 @@
import cc.kune.core.shared.dto.GroupDTO;
import cc.kune.core.shared.dto.LicenseDTO;
import cc.kune.core.shared.i18n.I18nTranslationService;
-import cc.kune.domain.Content;
import cc.kune.domain.Group;
import cc.kune.domain.User;
import cc.kune.wave.server.KuneWaveManagerDefault;
@@ -130,17 +128,6 @@
}
@Override
- @Authenticated
- @Authorizated(actionLevel = ActionLevel.group, accessRolRequired = AccessRol.Administrator)
- @Transactional
- public GroupDTO setGroupBackImage(final String userHash, final StateToken token) {
- final Group group = groupManager.findByShortName(token.getGroup());
- final Content content = contentManager.find(ContentUtils.parseId(token.getDocument()));
- groupManager.setGroupBackImage(group, content);
- return mapper.map(group, GroupDTO.class);
- }
-
- @Override
@Authenticated(mandatory = true)
@Authorizated(accessRolRequired = AccessRol.Administrator, actionLevel = ActionLevel.group)
@Transactional
Modified: trunk/src/main/java/cc/kune/core/shared/dto/GroupDTO.java
===================================================================
--- trunk/src/main/java/cc/kune/core/shared/dto/GroupDTO.java 2011-06-18 21:57:55 UTC (rev 1411)
+++ trunk/src/main/java/cc/kune/core/shared/dto/GroupDTO.java 2011-06-21 20:03:39 UTC (rev 1412)
@@ -26,163 +26,163 @@
public class GroupDTO implements IsSerializable {
- AdmissionType admissionType;
- private ContentSimpleDTO defaultContent;
- private LicenseDTO defaultLicense;
- private ContentSimpleDTO groupBackImage;
- private GroupType groupType;
- private boolean hasLogo;
- private Long id;
- private String longName;
- private String shortName;
- private StateToken stateToken;
- private String workspaceTheme;
+ AdmissionType admissionType;
+ private String backgroundImage;
+ private ContentSimpleDTO defaultContent;
+ private LicenseDTO defaultLicense;
+ private GroupType groupType;
+ private boolean hasLogo;
+ private Long id;
+ private String longName;
+ private String shortName;
+ private StateToken stateToken;
+ private String workspaceTheme;
- public GroupDTO() {
- this(null, null, GroupType.ORGANIZATION);
- }
+ public GroupDTO() {
+ this(null, null, GroupType.ORGANIZATION);
+ }
- public GroupDTO(final String shortName, final String longName, final GroupType type) {
- this.shortName = shortName;
- this.longName = longName;
- this.groupType = type;
- }
+ public GroupDTO(final String shortName, final String longName, final GroupType type) {
+ this.shortName = shortName;
+ this.longName = longName;
+ this.groupType = type;
+ }
- @Override
- public boolean equals(final Object obj) {
- if (this == obj) {
- return true;
- }
- if (obj == null) {
- return false;
- }
- if (getClass() != obj.getClass()) {
- return false;
- }
- final GroupDTO other = (GroupDTO) obj;
- if (shortName == null) {
- if (other.shortName != null) {
- return false;
- }
- } else if (!shortName.equals(other.shortName)) {
- return false;
- }
- return true;
+ @Override
+ public boolean equals(final Object obj) {
+ if (this == obj) {
+ return true;
}
-
- public AdmissionType getAdmissionType() {
- return admissionType;
+ if (obj == null) {
+ return false;
}
-
- public ContentSimpleDTO getDefaultContent() {
- return defaultContent;
+ if (getClass() != obj.getClass()) {
+ return false;
}
-
- public LicenseDTO getDefaultLicense() {
- return defaultLicense;
+ final GroupDTO other = (GroupDTO) obj;
+ if (shortName == null) {
+ if (other.shortName != null) {
+ return false;
+ }
+ } else if (!shortName.equals(other.shortName)) {
+ return false;
}
+ return true;
+ }
- public ContentSimpleDTO getGroupBackImage() {
- return groupBackImage;
- }
+ public AdmissionType getAdmissionType() {
+ return admissionType;
+ }
- public GroupType getGroupType() {
- return groupType;
- }
+ public String getBackgroundImage() {
+ return backgroundImage;
+ }
- public boolean getHasLogo() {
- return hasLogo;
- }
+ public ContentSimpleDTO getDefaultContent() {
+ return defaultContent;
+ }
- public Long getId() {
- return id;
- }
+ public LicenseDTO getDefaultLicense() {
+ return defaultLicense;
+ }
- public String getLongName() {
- return longName;
- }
+ public GroupType getGroupType() {
+ return groupType;
+ }
- public String getShortName() {
- return shortName;
- }
+ public boolean getHasLogo() {
+ return hasLogo;
+ }
- public StateToken getStateToken() {
- if (stateToken == null) {
- stateToken = new StateToken(shortName);
- }
- return stateToken;
- }
+ public Long getId() {
+ return id;
+ }
- public String getWorkspaceTheme() {
- return workspaceTheme;
- }
+ public String getLongName() {
+ return longName;
+ }
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + (defaultLicense == null ? 0 : defaultLicense.hashCode());
- result = prime * result + (id == null ? 0 : id.hashCode());
- result = prime * result + (longName == null ? 0 : longName.hashCode());
- result = prime * result + (shortName == null ? 0 : shortName.hashCode());
- result = prime * result + (groupType == null ? 0 : groupType.hashCode());
- return result;
- }
+ public String getShortName() {
+ return shortName;
+ }
- public boolean hasLogo() {
- return getHasLogo();
+ public StateToken getStateToken() {
+ if (stateToken == null) {
+ stateToken = new StateToken(shortName);
}
+ return stateToken;
+ }
- public boolean isNotPersonal() {
- return !isPersonal();
- }
+ public String getWorkspaceTheme() {
+ return workspaceTheme;
+ }
- public boolean isPersonal() {
- return groupType.equals(GroupType.PERSONAL);
- }
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + (defaultLicense == null ? 0 : defaultLicense.hashCode());
+ result = prime * result + (id == null ? 0 : id.hashCode());
+ result = prime * result + (longName == null ? 0 : longName.hashCode());
+ result = prime * result + (shortName == null ? 0 : shortName.hashCode());
+ result = prime * result + (groupType == null ? 0 : groupType.hashCode());
+ return result;
+ }
- public void setAdmissionType(final AdmissionType admissionType) {
- this.admissionType = admissionType;
- }
+ public boolean hasLogo() {
+ return getHasLogo();
+ }
- public void setDefaultContent(final ContentSimpleDTO defaultContent) {
- this.defaultContent = defaultContent;
- }
+ public boolean isNotPersonal() {
+ return !isPersonal();
+ }
- public void setDefaultLicense(final LicenseDTO defaultLicense) {
- this.defaultLicense = defaultLicense;
- }
+ public boolean isPersonal() {
+ return groupType.equals(GroupType.PERSONAL);
+ }
- public void setGroupBackImage(final ContentSimpleDTO groupBackImage) {
- this.groupBackImage = groupBackImage;
- }
+ public void setAdmissionType(final AdmissionType admissionType) {
+ this.admissionType = admissionType;
+ }
- public void setGroupType(final GroupType groupType) {
- this.groupType = groupType;
- }
+ public void setBackgroundImage(final String backgroundImage) {
+ this.backgroundImage = backgroundImage;
+ }
- public void setHasLogo(final boolean hasLogo) {
- this.hasLogo = hasLogo;
- }
+ public void setDefaultContent(final ContentSimpleDTO defaultContent) {
+ this.defaultContent = defaultContent;
+ }
- public void setId(final Long id) {
- this.id = id;
- }
+ public void setDefaultLicense(final LicenseDTO defaultLicense) {
+ this.defaultLicense = defaultLicense;
+ }
- public void setLongName(final String name) {
- this.longName = name;
- }
+ public void setGroupType(final GroupType groupType) {
+ this.groupType = groupType;
+ }
- public void setShortName(final String shortName) {
- this.shortName = shortName;
- }
+ public void setHasLogo(final boolean hasLogo) {
+ this.hasLogo = hasLogo;
+ }
- public void setWorkspaceTheme(final String workspaceTheme) {
- this.workspaceTheme = workspaceTheme;
- }
+ public void setId(final Long id) {
+ this.id = id;
+ }
- @Override
- public String toString() {
- return "GroupDTO[" + shortName + "]";
- }
+ public void setLongName(final String name) {
+ this.longName = name;
+ }
+
+ public void setShortName(final String shortName) {
+ this.shortName = shortName;
+ }
+
+ public void setWorkspaceTheme(final String workspaceTheme) {
+ this.workspaceTheme = workspaceTheme;
+ }
+
+ @Override
+ public String toString() {
+ return "GroupDTO[" + shortName + "]";
+ }
}
Modified: trunk/src/main/java/cc/kune/domain/Group.java
===================================================================
--- trunk/src/main/java/cc/kune/domain/Group.java 2011-06-18 21:57:55 UTC (rev 1411)
+++ trunk/src/main/java/cc/kune/domain/Group.java 2011-06-21 20:03:39 UTC (rev 1412)
@@ -55,258 +55,268 @@
@Table(name = "groups")
public class Group implements HasId {
- // see: http://docs.codehaus.org/display/PICO/Good+Citizen:
- // Never expect or return null
- public static final Group NO_GROUP = null;
- // public static final String PROPS_ID = "groupprops";
+ // see: http://docs.codehaus.org/display/PICO/Good+Citizen:
+ // Never expect or return null
+ public static final Group NO_GROUP = null;
+ // public static final String PROPS_ID = "groupprops";
- @Enumerated(EnumType.STRING)
- @Column(nullable = false)
- AdmissionType admissionType;
+ @Enumerated(EnumType.STRING)
+ @Column(nullable = false)
+ AdmissionType admissionType;
- @Basic(optional = false)
- private final Long createdOn;
+ private String backgroundImage;
- @OneToOne
- private Content defaultContent;
+ private String backgroundMime;
- @OneToOne
- private License defaultLicense;
+ @Basic(optional = false)
+ private final Long createdOn;
- @OneToOne
- private Content groupBackImage;
+ @OneToOne
+ private Content defaultContent;
- @Enumerated(EnumType.STRING)
- @Column(nullable = false)
- GroupType groupType;
+ @OneToOne
+ private License defaultLicense;
- @Id
- @DocumentId
- @GeneratedValue
- private Long id;
+ @Enumerated(EnumType.STRING)
+ @Column(nullable = false)
+ GroupType groupType;
- @Lob
- private byte[] logo;
+ @Id
+ @DocumentId
+ @GeneratedValue
+ private Long id;
- @Embedded
- private BasicMimeType logoMime;
+ @Lob
+ private byte[] logo;
- @Field(index = Index.TOKENIZED, store = Store.NO)
- @Column(unique = true)
- @Length(min = 3, max = 50, message = "The longName must be between 3 and 50 characters of length")
- private String longName;
+ @Embedded
+ private BasicMimeType logoMime;
- @Field(index = Index.UN_TOKENIZED, store = Store.NO)
- @Column(unique = true)
- @Length(min = 3, max = 15, message = "The shortname must be between 3 and 15 characters of length")
- @Pattern(regex = "^[a-z0-9]+$", message = "The name must be between 3 and 15 lowercase characters. It can only contain Western characters, numbers, and dashes")
- private String shortName;
+ @Field(index = Index.TOKENIZED, store = Store.NO)
+ @Column(unique = true)
+ @Length(min = 3, max = 50, message = "The longName must be between 3 and 50 characters of length")
+ private String longName;
- @OneToOne(cascade = CascadeType.ALL)
- private SocialNetwork socialNetwork;
+ @Field(index = Index.UN_TOKENIZED, store = Store.NO)
+ @Column(unique = true)
+ @Length(min = 3, max = 15, message = "The shortname must be between 3 and 15 characters of length")
+ @Pattern(regex = "^[a-z0-9]+$", message = "The name must be between 3 and 15 lowercase characters. It can only contain Western characters, numbers, and dashes")
+ private String shortName;
- @OneToMany
- private final Map<String, ToolConfiguration> toolsConfig;
+ @OneToOne(cascade = CascadeType.ALL)
+ private SocialNetwork socialNetwork;
- private String workspaceTheme;
+ @OneToMany
+ private final Map<String, ToolConfiguration> toolsConfig;
- public Group() {
- this(null, null, null, null);
- }
+ private String workspaceTheme;
- public Group(final String shortName, final String longName) {
- this(shortName, longName, null, GroupType.PROJECT);
- }
+ public Group() {
+ this(null, null, null, null);
+ }
- public Group(final String shortName, final String longName, final License defaultLicense, final GroupType type) {
- this.shortName = shortName;
- this.longName = longName;
- this.toolsConfig = new HashMap<String, ToolConfiguration>();
- this.socialNetwork = new SocialNetwork();
- this.defaultLicense = defaultLicense;
- this.groupType = type;
- this.admissionType = AdmissionType.Moderated;
- this.createdOn = System.currentTimeMillis();
- }
+ public Group(final String shortName, final String longName) {
+ this(shortName, longName, null, GroupType.PROJECT);
+ }
- @Override
- public boolean equals(final Object obj) {
- if (this == obj) {
- return true;
- }
- if (obj == null) {
- return false;
- }
- if (getClass() != obj.getClass()) {
- return false;
- }
- final Group other = (Group) obj;
- if (shortName == null) {
- if (other.shortName != null) {
- return false;
- }
- } else if (!shortName.equals(other.shortName)) {
- return false;
- }
- return true;
- }
+ public Group(final String shortName, final String longName, final License defaultLicense,
+ final GroupType type) {
+ this.shortName = shortName;
+ this.longName = longName;
+ this.toolsConfig = new HashMap<String, ToolConfiguration>();
+ this.socialNetwork = new SocialNetwork();
+ this.defaultLicense = defaultLicense;
+ this.groupType = type;
+ this.admissionType = AdmissionType.Moderated;
+ this.createdOn = System.currentTimeMillis();
+ }
- public boolean existToolConfig(final String toolName) {
- return toolsConfig.get(toolName) != null;
+ @Override
+ public boolean equals(final Object obj) {
+ if (this == obj) {
+ return true;
}
-
- @Transient
- public AccessLists getAccessLists() {
- return getSocialNetwork().getAccessLists();
+ if (obj == null) {
+ return false;
}
-
- public AdmissionType getAdmissionType() {
- return admissionType;
+ if (getClass() != obj.getClass()) {
+ return false;
}
-
- public Long getCreatedOn() {
- return createdOn;
+ final Group other = (Group) obj;
+ if (shortName == null) {
+ if (other.shortName != null) {
+ return false;
+ }
+ } else if (!shortName.equals(other.shortName)) {
+ return false;
}
+ return true;
+ }
- public Content getDefaultContent() {
- return defaultContent;
- }
+ public boolean existToolConfig(final String toolName) {
+ return toolsConfig.get(toolName) != null;
+ }
- public License getDefaultLicense() {
- return defaultLicense;
- }
+ @Transient
+ public AccessLists getAccessLists() {
+ return getSocialNetwork().getAccessLists();
+ }
- public Content getGroupBackImage() {
- return groupBackImage;
- }
+ public AdmissionType getAdmissionType() {
+ return admissionType;
+ }
- public GroupType getGroupType() {
- return groupType;
- }
+ public String getBackgroundImage() {
+ return backgroundImage;
+ }
- public boolean getHasLogo() {
- return hasLogo();
- }
+ public String getBackgroundMime() {
+ return backgroundMime;
+ }
- @Override
- public Long getId() {
- return id;
- }
+ public Long getCreatedOn() {
+ return createdOn;
+ }
- public byte[] getLogo() {
- return logo;
- }
+ public Content getDefaultContent() {
+ return defaultContent;
+ }
- public BasicMimeType getLogoMime() {
- return logoMime;
- }
+ public License getDefaultLicense() {
+ return defaultLicense;
+ }
- public String getLongName() {
- return longName;
- }
+ public GroupType getGroupType() {
+ return groupType;
+ }
- public Container getRoot(final String toolName) {
- return toolsConfig.get(toolName).getRoot();
- }
+ public boolean getHasLogo() {
+ return hasLogo();
+ }
- public String getShortName() {
- return shortName;
- }
+ @Override
+ public Long getId() {
+ return id;
+ }
- public SocialNetwork getSocialNetwork() {
- return socialNetwork;
- }
+ public byte[] getLogo() {
+ return logo;
+ }
- @Transient
- public StateToken getStateToken() {
- return new StateToken(shortName);
- }
+ public BasicMimeType getLogoMime() {
+ return logoMime;
+ }
- public ToolConfiguration getToolConfiguration(final String name) {
- return toolsConfig.get(name);
- }
+ public String getLongName() {
+ return longName;
+ }
- public Map<String, ToolConfiguration> getToolsConfig() {
- return toolsConfig;
- }
+ public Container getRoot(final String toolName) {
+ return toolsConfig.get(toolName).getRoot();
+ }
- public String getWorkspaceTheme() {
- return workspaceTheme;
- }
+ public String getShortName() {
+ return shortName;
+ }
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + (shortName == null ? 0 : shortName.hashCode());
- return result;
- }
+ public SocialNetwork getSocialNetwork() {
+ return socialNetwork;
+ }
- @Transient
- public boolean hasLogo() {
- return (logo != null && logo.length > 0 && logoMime != null);
- }
+ @Transient
+ public StateToken getStateToken() {
+ return new StateToken(shortName);
+ }
- public boolean isPersonal() {
- return getGroupType().equals(GroupType.PERSONAL);
- }
+ public ToolConfiguration getToolConfiguration(final String name) {
+ return toolsConfig.get(name);
+ }
- public void setAdmissionType(final AdmissionType admissionType) {
- this.admissionType = admissionType;
- }
+ public Map<String, ToolConfiguration> getToolsConfig() {
+ return toolsConfig;
+ }
- public void setDefaultContent(final Content defaultContent) {
- this.defaultContent = defaultContent;
- }
+ public String getWorkspaceTheme() {
+ return workspaceTheme;
+ }
- public void setDefaultLicense(final License defaultLicense) {
- this.defaultLicense = defaultLicense;
- }
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + (shortName == null ? 0 : shortName.hashCode());
+ return result;
+ }
- public void setGroupBackImage(final Content groupBackImage) {
- this.groupBackImage = groupBackImage;
- }
+ @Transient
+ public boolean hasLogo() {
+ return (logo != null && logo.length > 0 && logoMime != null);
+ }
- public void setGroupType(final GroupType groupType) {
- this.groupType = groupType;
- }
+ public boolean isPersonal() {
+ return getGroupType().equals(GroupType.PERSONAL);
+ }
- @Override
- public void setId(final Long id) {
- this.id = id;
- }
+ public void setAdmissionType(final AdmissionType admissionType) {
+ this.admissionType = admissionType;
+ }
- public void setLogo(final byte[] logo) {
- this.logo = logo;
- }
+ public void setBackgroundImage(final String backgroundImage) {
+ this.backgroundImage = backgroundImage;
+ }
- public void setLogoMime(final BasicMimeType logoMime) {
- this.logoMime = logoMime;
- }
+ public void setBackgroundMime(final String backgroundMime) {
+ this.backgroundMime = backgroundMime;
+ }
- public void setLongName(final String longName) {
- this.longName = longName;
- }
+ public void setDefaultContent(final Content defaultContent) {
+ this.defaultContent = defaultContent;
+ }
- public void setShortName(final String shortName) {
- this.shortName = shortName;
- }
+ public void setDefaultLicense(final License defaultLicense) {
+ this.defaultLicense = defaultLicense;
+ }
- public void setSocialNetwork(final SocialNetwork socialNetwork) {
- this.socialNetwork = socialNetwork;
- }
+ public void setGroupType(final GroupType groupType) {
+ this.groupType = groupType;
+ }
- public ToolConfiguration setToolConfig(final String name, final ToolConfiguration config) {
- toolsConfig.put(name, config);
- return config;
- }
+ @Override
+ public void setId(final Long id) {
+ this.id = id;
+ }
- public void setWorkspaceTheme(final String workspaceTheme) {
- this.workspaceTheme = workspaceTheme;
- }
+ public void setLogo(final byte[] logo) {
+ this.logo = logo;
+ }
- @Override
- public String toString() {
- return "Group[" + shortName + "]";
- }
+ public void setLogoMime(final BasicMimeType logoMime) {
+ this.logoMime = logoMime;
+ }
+
+ public void setLongName(final String longName) {
+ this.longName = longName;
+ }
+
+ public void setShortName(final String shortName) {
+ this.shortName = shortName;
+ }
+
+ public void setSocialNetwork(final SocialNetwork socialNetwork) {
+ this.socialNetwork = socialNetwork;
+ }
+
+ public ToolConfiguration setToolConfig(final String name, final ToolConfiguration config) {
+ toolsConfig.put(name, config);
+ return config;
+ }
+
+ public void setWorkspaceTheme(final String workspaceTheme) {
+ this.workspaceTheme = workspaceTheme;
+ }
+
+ @Override
+ public String toString() {
+ return "Group[" + shortName + "]";
+ }
}
\ No newline at end of file
Modified: trunk/src/main/java/cc/kune/gspace/client/GSpaceArmor.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/GSpaceArmor.java 2011-06-18 21:57:55 UTC (rev 1411)
+++ trunk/src/main/java/cc/kune/gspace/client/GSpaceArmor.java 2011-06-21 20:03:39 UTC (rev 1412)
@@ -26,6 +26,8 @@
public interface GSpaceArmor {
+ void clearBackImage();
+
ForIsWidget getDocContainer();
ForIsWidget getDocFooter();
@@ -64,5 +66,7 @@
void selectUserSpace();
+ void setBackImage(String url);
+
void setContentVisible(boolean visible);
}
\ No newline at end of file
Modified: trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.java 2011-06-18 21:57:55 UTC (rev 1411)
+++ trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.java 2011-06-21 20:03:39 UTC (rev 1412)
@@ -19,6 +19,8 @@
*/
package cc.kune.gspace.client;
+import org.cobogw.gwt.user.client.CSS;
+
import cc.kune.common.client.actions.ui.ActionFlowPanel;
import cc.kune.common.client.actions.ui.IsActionExtensible;
@@ -96,7 +98,6 @@
public GSpaceArmorImpl(final Provider<ActionFlowPanel> toolbarProv) {
initWidget(uiBinder.createAndBindUi(this));
groupSpace.setWidgetMinSize(splitEast, 150);
- tabs.setStyleName("k-spaces");
homeSpace.add(RootPanel.get("k-home-wrapper"));
DOM.setStyleAttribute((Element) groupSpace.getWidgetContainerElement(splitEast), "overflow",
"visible");
@@ -110,9 +111,15 @@
getDocFooter().add(footerToolbar);
entityToolsNorth.getElement().getStyle().setPosition(Position.RELATIVE);
// entityToolsSouth.setVisible(false);
+ mainpanel.getWidgetContainerElement(tabs).addClassName("k-spaces");
}
@Override
+ public void clearBackImage() {
+ DOM.setStyleAttribute(mainpanel.getElement(), CSS.A.BACKGROUND, "transparent");
+ }
+
+ @Override
public ForIsWidget getDocContainer() {
return docContainer;
}
@@ -208,6 +215,12 @@
}
@Override
+ public void setBackImage(final String url) {
+ final String bodyProp = "#FFFFFF url('" + url + "') fixed no-repeat top left";
+ DOM.setStyleAttribute(mainpanel.getElement(), CSS.A.BACKGROUND, bodyProp);
+ }
+
+ @Override
public void setContentVisible(final boolean visible) {
// NotifyUser.info("Visible: " + visible);
// docContainer.getElement().getStyle().setOpacity(visible ? 1d : .0d);
Modified: trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.ui.xml
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.ui.xml 2011-06-18 21:57:55 UTC (rev 1411)
+++ trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.ui.xml 2011-06-21 20:03:39 UTC (rev 1412)
@@ -22,12 +22,12 @@
barUnit='PX' barHeight='0' ui:field="tabs">
<g:tab>
<g:header size='0' />
- <g:SimplePanel ui:field="homeSpace" width="100%"
+ <g:SimplePanel styleName="k-space" ui:field="homeSpace" width="100%"
height="100%"></g:SimplePanel>
</g:tab>
<g:tab>
<g:header size='0' />
- <g:FlowPanel ui:field="userSpace" width="100%"
+ <g:FlowPanel ui:field="userSpace" styleName="k-space" width="100%"
height="100%">
<!-- <g:Frame url="/" styleName="{style.frame}" -->
<!-- ui:field="frame" width="100%" height="100%" /> -->
@@ -35,7 +35,7 @@
</g:tab>
<g:tab>
<g:header size='0' />
- <g:SplitLayoutPanel width="100%" height="100%"
+ <g:SplitLayoutPanel width="100%" height="100%" styleName="k-space"
ui:field="groupSpace">
<g:center size="1.0">
<g:DockLayoutPanel unit="PX" ui:field="splitCenter">
@@ -109,7 +109,7 @@
</g:tab>
<g:tab>
<g:header size='0' />
- <g:SimplePanel ui:field="publicSpace" width="100%"
+ <g:SimplePanel ui:field="publicSpace" width="100%" styleName="k-space"
height="100%"></g:SimplePanel>
</g:tab>
</g:TabLayoutPanel>
Modified: trunk/src/main/java/cc/kune/gspace/client/options/logo/CurrentLogoChangedEvent.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/logo/CurrentLogoChangedEvent.java 2011-06-18 21:57:55 UTC (rev 1411)
+++ trunk/src/main/java/cc/kune/gspace/client/options/logo/CurrentLogoChangedEvent.java 2011-06-21 20:03:39 UTC (rev 1412)
@@ -26,49 +26,49 @@
public class CurrentLogoChangedEvent extends GwtEvent<CurrentLogoChangedEvent.CurrentLogoChangedHandler> {
- public interface CurrentLogoChangedHandler extends EventHandler {
- public void onCurrentLogoChanged(CurrentLogoChangedEvent event);
- }
+ public interface CurrentLogoChangedHandler extends EventHandler {
+ public void onCurrentLogoChanged(CurrentLogoChangedEvent event);
+ }
- public interface HasCurrentLogoChangedHandlers extends HasHandlers {
- HandlerRegistration addCurrentLogoChangedHandler(CurrentLogoChangedHandler handler);
- }
+ public interface HasCurrentLogoChangedHandlers extends HasHandlers {
+ HandlerRegistration addCurrentLogoChangedHandler(CurrentLogoChangedHandler handler);
+ }
- private static final Type<CurrentLogoChangedHandler> TYPE = new Type<CurrentLogoChangedHandler>();
+ private static final Type<CurrentLogoChangedHandler> TYPE = new Type<CurrentLogoChangedHandler>();
- public static void fire(final HasHandlers source) {
- source.fireEvent(new CurrentLogoChangedEvent());
- }
+ public static void fire(final HasHandlers source) {
+ source.fireEvent(new CurrentLogoChangedEvent());
+ }
- public static Type<CurrentLogoChangedHandler> getType() {
- return TYPE;
- }
+ public static Type<CurrentLogoChangedHandler> getType() {
+ return TYPE;
+ }
- public CurrentLogoChangedEvent() {
- }
+ public CurrentLogoChangedEvent() {
+ }
- @Override
- protected void dispatch(final CurrentLogoChangedHandler handler) {
- handler.onCurrentLogoChanged(this);
- }
+ @Override
+ protected void dispatch(final CurrentLogoChangedHandler handler) {
+ handler.onCurrentLogoChanged(this);
+ }
- @Override
- public boolean equals(final Object obj) {
- return super.equals(obj);
- }
+ @Override
+ public boolean equals(final Object obj) {
+ return super.equals(obj);
+ }
- @Override
- public Type<CurrentLogoChangedHandler> getAssociatedType() {
- return TYPE;
- }
+ @Override
+ public Type<CurrentLogoChangedHandler> getAssociatedType() {
+ return TYPE;
+ }
- @Override
- public int hashCode() {
- return super.hashCode();
- }
+ @Override
+ public int hashCode() {
+ return super.hashCode();
+ }
- @Override
- public String toString() {
- return "CurrentLogoChangedEvent[" + "]";
- }
+ @Override
+ public String toString() {
+ return "CurrentLogoChangedEvent[" + "]";
+ }
}
Modified: trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptionsLogoPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptionsLogoPanel.java 2011-06-18 21:57:55 UTC (rev 1411)
+++ trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptionsLogoPanel.java 2011-06-21 20:03:39 UTC (rev 1412)
@@ -19,12 +19,10 @@
\*/
package cc.kune.gspace.client.options.logo;
-import gwtupload.client.IFileInput.FileInputType;
import gwtupload.client.IUploader.OnCancelUploaderHandler;
import gwtupload.client.IUploader.OnChangeUploaderHandler;
import gwtupload.client.IUploader.OnFinishUploaderHandler;
import gwtupload.client.IUploader.OnStartUploaderHandler;
-import gwtupload.client.MultiUploader;
import cc.kune.common.client.ui.IconLabel;
import cc.kune.common.client.utils.OnAcceptCallback;
import cc.kune.core.client.resources.CoreMessages;
@@ -33,46 +31,17 @@
import cc.kune.core.shared.i18n.I18nTranslationService;
import cc.kune.gspace.client.options.EntityOptionsView;
-import com.google.gwt.event.dom.client.ClickEvent;
-import com.google.gwt.event.dom.client.ClickHandler;
-import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.event.shared.HandlerRegistration;
-import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Composite;
-import com.google.gwt.user.client.ui.DecoratorPanel;
-import com.google.gwt.user.client.ui.FlowPanel;
-import com.google.gwt.user.client.ui.Hidden;
import com.google.gwt.user.client.ui.IsWidget;
-import com.google.gwt.user.client.ui.Label;
public class EntityOptionsLogoPanel extends Composite implements EntityOptionsLogoView {
- public class UploadButton extends Composite implements HasClickHandlers {
- DecoratorPanel widget = new DecoratorPanel();
-
- public UploadButton() {
- final DecoratorPanel widget = new DecoratorPanel();
- final Button btn = new Button(i18n.t("Choose"));
- btn.addStyleName("k-button");
- initWidget(widget);
- widget.setWidget(btn);
- widget.setHeight("50px");
- }
-
- @Override
- public HandlerRegistration addClickHandler(final ClickHandler handler) {
- return addDomHandler(handler, ClickEvent.getType());
- }
- }
-
public static final String ICON_UPLD_SERVLET = "servlets/EntityLogoUploadManager";
- private final Label dialogInfoLabel;
+ private final EntityUploaderForm uploader;
private final I18nTranslationService i18n;
private final IconLabel tabTitle;
- private final Hidden tokenField;
- private final MultiUploader uploader;
- private final Hidden userhashField;
public EntityOptionsLogoPanel(final EventBus eventBus, final I18nTranslationService i18n,
final String panelId, final String buttonId, final String inputId, final NavResources res) {
@@ -80,29 +49,11 @@
this.i18n = i18n;
tabTitle = new IconLabel(res.picture(), "");
- final UploadButton btn = new UploadButton();
- uploader = new MultiUploader(FileInputType.CUSTOM.with(btn));
- uploader.setServletPath(ICON_UPLD_SERVLET);
- uploader.setMaximumFiles(1);
- dialogInfoLabel = new Label();
- dialogInfoLabel.setWordWrap(true);
- dialogInfoLabel.addStyleName("kune-Margin-20-tb");
- uploader.setValidExtensions("png", "jpg", "gif", "jpeg", "bmp");
+ uploader = new EntityUploaderForm(ICON_UPLD_SERVLET, i18n.t("Choose"));
- userhashField = new Hidden(FileConstants.HASH, FileConstants.HASH);
- tokenField = new Hidden(FileConstants.TOKEN, FileConstants.TOKEN);
-
- final FlowPanel holder = new FlowPanel();
-
- uploader.add(userhashField);
- uploader.add(tokenField);
- holder.add(dialogInfoLabel);
- holder.add(uploader);
-
- initWidget(holder);
+ initWidget(uploader);
setHeight(String.valueOf(EntityOptionsView.HEIGHT) + "px");
setWidth(String.valueOf(EntityOptionsView.WIDTH) + "px");
- // uploader.setHeight("100px");
addStyleName("k-overflow-y-auto");
addStyleName("k-tab-panel");
@@ -144,7 +95,7 @@
@Override
public void setNormalGroupsLabels() {
- dialogInfoLabel.setText(i18n.t("Select an image in your computer as the logo for this group. "
+ uploader.setLabelText(i18n.t("Select an image in your computer as the logo for this group. "
+ "For best results use a [%d]x[%d] pixel image. We will automatically resize bigger images.",
FileConstants.LOGO_DEF_HEIGHT, FileConstants.LOGO_DEF_HEIGHT));
tabTitle.setText(CoreMessages.ENT_LOGO_SELECTOR_NORMAL_TITLE);
@@ -152,7 +103,7 @@
@Override
public void setPersonalGroupsLabels() {
- dialogInfoLabel.setText(i18n.t("Select an image in your computer as your avatar. "
+ uploader.setLabelText(i18n.t("Select an image in your computer as your avatar. "
+ "For best results use a [%d]x[%d] pixel image. We will automatically resize bigger images.",
FileConstants.LOGO_DEF_HEIGHT, FileConstants.LOGO_DEF_HEIGHT));
tabTitle.setText(CoreMessages.ENT_LOGO_SELECTOR_PERSON_TITLE);
@@ -160,8 +111,7 @@
@Override
public void setUploadParams(final String userHash, final String token) {
- userhashField.setValue(userHash);
- tokenField.setValue(token);
+ uploader.setUploadParams(userHash, token);
}
}
Modified: trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptionsLogoPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptionsLogoPresenter.java 2011-06-18 21:57:55 UTC (rev 1411)
+++ trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptionsLogoPresenter.java 2011-06-21 20:03:39 UTC (rev 1412)
@@ -26,7 +26,7 @@
import cc.kune.common.client.notify.NotifyUser;
import cc.kune.core.client.rpcservices.UserServiceAsync;
import cc.kune.core.client.state.Session;
-import cc.kune.core.client.ws.entheader.EntityHeader;
+import cc.kune.core.shared.i18n.I18nTranslationService;
import cc.kune.gspace.client.options.EntityOptions;
import com.google.gwt.event.shared.EventBus;
@@ -34,21 +34,21 @@
import com.google.inject.Provider;
public abstract class EntityOptionsLogoPresenter implements GroupOptionsLogo, UserOptionsLogo {
- private final EntityHeader entityLogo;
private final EntityOptions entityOptions;
protected final EventBus eventBus;
+ private final I18nTranslationService i18n;
protected final Session session;
protected final Provider<UserServiceAsync> userService;
protected EntityOptionsLogoView view;
public EntityOptionsLogoPresenter(final EventBus eventBus, final Session session,
- final EntityHeader entityLogo, final EntityOptions entityOptions,
- final Provider<UserServiceAsync> userService) {
+ final EntityOptions entityOptions, final Provider<UserServiceAsync> userService,
+ final I18nTranslationService i18n) {
this.eventBus = eventBus;
this.session = session;
- this.entityLogo = entityLogo;
this.entityOptions = entityOptions;
this.userService = userService;
+ this.i18n = i18n;
}
public IsWidget getView() {
@@ -66,7 +66,6 @@
}
});
view.addOnFinishUploadHandler(new OnFinishUploaderHandler() {
-
@Override
public void onFinish(final IUploader uploader) {
onSubmitComplete(uploader);
@@ -87,7 +86,7 @@
}
public void onSubmitFailed(final String responseText) {
- NotifyUser.error("Error setting the logo: " + responseText);
+ NotifyUser.error(i18n.t("Error setting the logo", responseText));
}
protected abstract void setState();
Added: trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptionsUploadButton.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptionsUploadButton.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptionsUploadButton.java 2011-06-21 20:03:39 UTC (rev 1412)
@@ -0,0 +1,27 @@
+package cc.kune.gspace.client.options.logo;
+
+import com.google.gwt.event.dom.client.ClickEvent;
+import com.google.gwt.event.dom.client.ClickHandler;
+import com.google.gwt.event.dom.client.HasClickHandlers;
+import com.google.gwt.event.shared.HandlerRegistration;
+import com.google.gwt.user.client.ui.Button;
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.DecoratorPanel;
+
+public class EntityOptionsUploadButton extends Composite implements HasClickHandlers {
+ DecoratorPanel widget = new DecoratorPanel();
+
+ public EntityOptionsUploadButton(final String text) {
+ final DecoratorPanel widget = new DecoratorPanel();
+ final Button btn = new Button(text);
+ btn.addStyleName("k-button");
+ initWidget(widget);
+ widget.setWidget(btn);
+ widget.setHeight("50px");
+ }
+
+ @Override
+ public HandlerRegistration addClickHandler(final ClickHandler handler) {
+ return addDomHandler(handler, ClickEvent.getType());
+ }
+}
\ No newline at end of file
Property changes on: trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityOptionsUploadButton.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityUploaderForm.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityUploaderForm.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityUploaderForm.java 2011-06-21 20:03:39 UTC (rev 1412)
@@ -0,0 +1,75 @@
+package cc.kune.gspace.client.options.logo;
+
+import gwtupload.client.IFileInput.FileInputType;
+import gwtupload.client.IUploader.OnCancelUploaderHandler;
+import gwtupload.client.IUploader.OnChangeUploaderHandler;
+import gwtupload.client.IUploader.OnFinishUploaderHandler;
+import gwtupload.client.IUploader.OnStartUploaderHandler;
+import gwtupload.client.MultiUploader;
+import cc.kune.core.client.services.FileConstants;
+
+import com.google.gwt.event.shared.HandlerRegistration;
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.FlowPanel;
+import com.google.gwt.user.client.ui.Hidden;
+import com.google.gwt.user.client.ui.Label;
+
+public class EntityUploaderForm extends Composite {
+
+ private final Label dialogInfoLabel;
+ private final Hidden tokenField;
+ private final MultiUploader uploader;
+ private final Hidden userhashField;
+
+ public EntityUploaderForm(final String servlet, final String btnText) {
+ final EntityOptionsUploadButton btn = new EntityOptionsUploadButton(btnText);
+ uploader = new MultiUploader(FileInputType.CUSTOM.with(btn));
+ uploader.setServletPath(servlet);
+ uploader.setMaximumFiles(1);
+ dialogInfoLabel = new Label();
+ dialogInfoLabel.setWordWrap(true);
+ dialogInfoLabel.addStyleName("kune-Margin-20-tb");
+ uploader.setValidExtensions("png", "jpg", "gif", "jpeg", "bmp");
+
+ userhashField = new Hidden(FileConstants.HASH, FileConstants.HASH);
+ tokenField = new Hidden(FileConstants.TOKEN, FileConstants.TOKEN);
+
+ final FlowPanel holder = new FlowPanel();
+
+ uploader.add(userhashField);
+ uploader.add(tokenField);
+ holder.add(dialogInfoLabel);
+ holder.add(uploader);
+ initWidget(holder);
+ }
+
+ public HandlerRegistration addOnCancelUploadHandler(final OnCancelUploaderHandler handler) {
+ return uploader.addOnCancelUploadHandler(handler);
+ }
+
+ public HandlerRegistration addOnChangeUploadHandler(final OnChangeUploaderHandler handler) {
+ return uploader.addOnChangeUploadHandler(handler);
+ }
+
+ public HandlerRegistration addOnFinishUploadHandler(final OnFinishUploaderHandler handler) {
+ return uploader.addOnFinishUploadHandler(handler);
+ }
+
+ public HandlerRegistration addOnStartUploadHandler(final OnStartUploaderHandler handler) {
+ return uploader.addOnStartUploadHandler(handler);
+ }
+
+ public void reset() {
+ uploader.reset();
+ }
+
+ public void setLabelText(final String text) {
+ dialogInfoLabel.setText(text);
+ }
+
+ public void setUploadParams(final String userHash, final String token) {
+ userhashField.setValue(userHash);
+ tokenField.setValue(token);
+ }
+
+}
Property changes on: trunk/src/main/java/cc/kune/gspace/client/options/logo/EntityUploaderForm.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: trunk/src/main/java/cc/kune/gspace/client/options/logo/GroupOptionsLogoPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/logo/GroupOptionsLogoPresenter.java 2011-06-18 21:57:55 UTC (rev 1411)
+++ trunk/src/main/java/cc/kune/gspace/client/options/logo/GroupOptionsLogoPresenter.java 2011-06-21 20:03:39 UTC (rev 1412)
@@ -24,7 +24,7 @@
import cc.kune.core.client.state.GroupChangedEvent.GroupChangedHandler;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.StateManager;
-import cc.kune.core.client.ws.entheader.EntityHeader;
+import cc.kune.core.shared.i18n.I18nTranslationService;
import cc.kune.gspace.client.options.GroupOptions;
import com.google.gwt.event.shared.EventBus;
@@ -35,9 +35,10 @@
@Inject
public GroupOptionsLogoPresenter(final EventBus eventBus, final Session session,
- final EntityHeader entityLogo, final GroupOptions entityOptions, final StateManager stateManager,
- final Provider<UserServiceAsync> userService, final GroupOptionsLogoView view) {
- super(eventBus, session, entityLogo, entityOptions, userService);
+ final GroupOptions entityOptions, final StateManager stateManager,
+ final Provider<UserServiceAsync> userService, final GroupOptionsLogoView view,
+ final I18nTranslationService i18n) {
+ super(eventBus, session, entityOptions, userService, i18n);
init(view);
stateManager.onGroupChanged(true, new GroupChangedHandler() {
@Override
Modified: trunk/src/main/java/cc/kune/gspace/client/options/logo/UserOptionsLogoPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/logo/UserOptionsLogoPresenter.java 2011-06-18 21:57:55 UTC (rev 1411)
+++ trunk/src/main/java/cc/kune/gspace/client/options/logo/UserOptionsLogoPresenter.java 2011-06-21 20:03:39 UTC (rev 1412)
@@ -27,8 +27,8 @@
import cc.kune.core.client.state.StateManager;
import cc.kune.core.client.state.UserSignInEvent;
import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler;
-import cc.kune.core.client.ws.entheader.EntityHeader;
import cc.kune.core.shared.dto.GroupDTO;
+import cc.kune.core.shared.i18n.I18nTranslationService;
import cc.kune.gspace.client.options.UserOptions;
import com.google.gwt.event.shared.EventBus;
@@ -39,9 +39,10 @@
@Inject
public UserOptionsLogoPresenter(final EventBus eventBus, final Session session,
- final EntityHeader entityLogo, final UserOptions entityOptions, final StateManager stateManager,
- final Provider<UserServiceAsync> userService, final UserOptionsLogoView view) {
- super(eventBus, session, entityLogo, entityOptions, userService);
+ final UserOptions entityOptions, final StateManager stateManager,
+ final Provider<UserServiceAsync> userService, final UserOptionsLogoView view,
+ final I18nTranslationService i18n) {
+ super(eventBus, session, entityOptions, userService, i18n);
init(view);
session.onUserSignIn(true, new UserSignInHandler() {
@Override
Modified: trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConfPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConfPanel.java 2011-06-18 21:57:55 UTC (rev 1411)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConfPanel.java 2011-06-21 20:03:39 UTC (rev 1412)
@@ -19,22 +19,25 @@
*/
package cc.kune.gspace.client.options.style;
+import gwtupload.client.IUploader.OnCancelUploaderHandler;
+import gwtupload.client.IUploader.OnChangeUploaderHandler;
+import gwtupload.client.IUploader.OnFinishUploaderHandler;
+import gwtupload.client.IUploader.OnStartUploaderHandler;
import cc.kune.common.client.notify.NotifyUser;
import cc.kune.common.client.tooltip.Tooltip;
import cc.kune.common.client.ui.BasicThumb;
import cc.kune.common.client.ui.IconLabel;
import cc.kune.common.client.utils.TextUtils;
import cc.kune.core.client.resources.CoreResources;
-import cc.kune.core.client.services.FileDownloadUtils;
-import cc.kune.core.client.services.ImageSize;
-import cc.kune.core.shared.domain.utils.StateToken;
import cc.kune.core.shared.i18n.I18nTranslationService;
import cc.kune.gspace.client.options.EntityOptionsView;
+import cc.kune.gspace.client.options.logo.EntityUploaderForm;
import cc.kune.gspace.client.themes.GSpaceThemeSelectorPanel;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.HasClickHandlers;
+import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Image;
@@ -44,42 +47,50 @@
public class EntityOptionsStyleConfPanel extends FlowPanel implements EntityOptionsStyleConfView {
+ public static final String ICON_UPLD_SERVLET = "servlets/EntityBackgroundUploadManager";
private final Image backImage;
private final Button clearBtn;
private final Label currentBackLabel;
- private final FileDownloadUtils downUtils;
private final Label noBackLabel;
private final IconLabel tabTitle;
+ private final EntityUploaderForm uploader;
- public EntityOptionsStyleConfPanel(final I18nTranslationService i18n,
- final FileDownloadUtils downUtils, final CoreResources res,
+ public EntityOptionsStyleConfPanel(final I18nTranslationService i18n, final CoreResources res,
final GSpaceThemeSelectorPanel styleSelector) {
- this.downUtils = downUtils;
+ ;
tabTitle = new IconLabel(res.themeChoose(), i18n.t("Style"));
super.setHeight(String.valueOf(EntityOptionsView.HEIGHT) + "px");
super.setWidth(String.valueOf(EntityOptionsView.WIDTH) + "px");
- final FlowPanel wsHP = new FlowPanel();
+ final FlowPanel flow = new FlowPanel();
final Label wsThemeInfo = new Label(i18n.t("Change this workspace theme:"));
- wsThemeInfo.addStyleName("kune-Margin-20-tb");
+ flow.addStyleName("kune-Margin-20-tb");
+ wsThemeInfo.addStyleName("k-fl");
styleSelector.addStyleName("k-fl");
- wsHP.add(wsThemeInfo);
- wsHP.add(styleSelector);
- add(wsHP);
- final VerticalPanel backPanel = new VerticalPanel();
+ styleSelector.addStyleName("kune-Margin-10-trbl");
+ flow.add(wsThemeInfo);
+ flow.add(styleSelector);
currentBackLabel = new Label(i18n.t("Current background image: "));
- noBackLabel = new Label(i18n.t("Also you can upload any image and select it later as background."));
+ noBackLabel = new Label(i18n.t("Also you can upload a background:"));
+ currentBackLabel.addStyleName("k-clear");
+ noBackLabel.addStyleName("k-clear");
+ uploader = new EntityUploaderForm(ICON_UPLD_SERVLET, i18n.t("Choose"));
+ uploader.addStyleName("k-fl");
backImage = new Image();
backImage.addStyleName("kune-Margin-Medium-trbl");
noBackLabel.addStyleName("kune-Margin-Medium-tb");
clearBtn = new Button(i18n.t("Clear"));
+ clearBtn.setStyleName("k-button");
+ clearBtn.addStyleName("k-fl");
Tooltip.to(clearBtn, i18n.t("Remove current background image"));
- // backPanel.add(noBackLabel);
- backPanel.add(currentBackLabel);
- backPanel.add(backImage);
- backPanel.add(clearBtn);
- backPanel.addStyleName("oc-clean");
- // add(backPanel);
+ flow.add(noBackLabel);
+ flow.add(currentBackLabel);
+ flow.add(backImage);
+ flow.add(uploader);
+ flow.add(clearBtn);
+ flow.addStyleName("oc-clean");
+ backImage.addStyleName("k-fr");
+ add(flow);
final Label wsInfo = new Label(i18n.t("Select and configure the public space theme of this group:"));
wsInfo.addStyleName("kune-Margin-Medium-tb");
// add(wsInfo);
@@ -106,6 +117,26 @@
}
@Override
+ public HandlerRegistration addOnCancelUploadHandler(final OnCancelUploaderHandler handler) {
+ return uploader.addOnCancelUploadHandler(handler);
+ }
+
+ @Override
+ public HandlerRegistration addOnChangeUploadHandler(final OnChangeUploaderHandler handler) {
+ return uploader.addOnChangeUploadHandler(handler);
+ }
+
+ @Override
+ public HandlerRegistration addOnFinishUploadHandler(final OnFinishUploaderHandler handler) {
+ return uploader.addOnFinishUploadHandler(handler);
+ }
+
+ @Override
+ public HandlerRegistration addOnStartUploadHandler(final OnStartUploaderHandler handler) {
+ return uploader.addOnStartUploadHandler(handler);
+ }
+
+ @Override
public void clearBackImage() {
setBackImageVisibleImpl(false);
}
@@ -121,8 +152,14 @@
}
@Override
- public void setBackImage(final StateToken token) {
- backImage.setUrl(downUtils.getImageResizedUrl(token, ImageSize.thumb));
+ public void reset() {
+ uploader.reset();
+ }
+
+ @Override
+ public void setBackImage(final String url) {
+ // backImage.setUrl(downUtils.getImageResizedUrl(token, ImageSize.thumb));
+ backImage.setUrl(url);
setBackImageVisibleImpl(true);
}
@@ -132,4 +169,9 @@
clearBtn.setVisible(visible);
noBackLabel.setVisible(!visible);
}
+
+ @Override
+ public void setUploadParams(final String userHash, final String token) {
+ uploader.setUploadParams(userHash, token);
+ }
}
Modified: trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConfPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConfPresenter.java 2011-06-18 21:57:55 UTC (rev 1411)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConfPresenter.java 2011-06-21 20:03:39 UTC (rev 1412)
@@ -19,15 +19,24 @@
*/
package cc.kune.gspace.client.options.style;
+import gwtupload.client.IUploadStatus.Status;
+import gwtupload.client.IUploader;
+import gwtupload.client.IUploader.OnFinishUploaderHandler;
+import gwtupload.client.IUploader.OnStartUploaderHandler;
+import cc.kune.common.client.notify.NotifyUser;
+import cc.kune.common.client.utils.TextUtils;
import cc.kune.core.client.rpcservices.AsyncCallbackSimple;
import cc.kune.core.client.rpcservices.GroupServiceAsync;
+import cc.kune.core.client.services.FileDownloadUtils;
+import cc.kune.core.client.services.ImageSize;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.StateChangedEvent;
import cc.kune.core.client.state.StateChangedEvent.StateChangedHandler;
import cc.kune.core.client.state.StateManager;
-import cc.kune.core.shared.dto.ContentSimpleDTO;
+import cc.kune.core.shared.domain.utils.StateToken;
import cc.kune.core.shared.dto.GroupDTO;
import cc.kune.core.shared.dto.StateAbstractDTO;
+import cc.kune.core.shared.i18n.I18nTranslationService;
import cc.kune.gspace.client.options.EntityOptions;
import cc.kune.gspace.client.style.ClearBackImageEvent;
import cc.kune.gspace.client.style.GSpaceBackManager;
@@ -44,7 +53,9 @@
private final GSpaceBackManager backManager;
private final EntityOptions entityOptions;
private final EventBus eventBus;
+ private final FileDownloadUtils fileDownloadUtils;
private final Provider<GroupServiceAsync> groupService;
+ private final I18nTranslationService i18n;
private final Session session;
private final StateManager stateManager;
private EntityOptionsStyleConfView view;
@@ -52,22 +63,26 @@
protected EntityOptionsStyleConfPresenter(final EventBus eventBus, final Session session,
final StateManager stateManager, final EntityOptions entityOptions,
final Provider<GroupServiceAsync> groupService, final GSpaceBackManager backManager,
- final GSpaceThemeSelectorPresenter styleSelector) {
+ final GSpaceThemeSelectorPresenter styleSelector, final I18nTranslationService i18n,
+ final FileDownloadUtils fileDownloadUtils) {
this.eventBus = eventBus;
this.session = session;
this.stateManager = stateManager;
this.entityOptions = entityOptions;
this.groupService = groupService;
this.backManager = backManager;
+ this.i18n = i18n;
+ this.fileDownloadUtils = fileDownloadUtils;
}
- public void clearBackImage() {
+ private void clearBackImage() {
groupService.get().clearGroupBackImage(session.getUserHash(), session.getCurrentStateToken(),
new AsyncCallbackSimple<GroupDTO>() {
@Override
public void onSuccess(final GroupDTO result) {
view.clearBackImage();
backManager.clearBackImage();
+ ClearBackImageEvent.fire(eventBus);
}
});
}
@@ -79,7 +94,7 @@
public void init(final EntityOptionsStyleConfView view) {
this.view = view;
entityOptions.addTab(view, view.getTabTitle());
- setBackImage(session.getCurrentState().getGroup().getGroupBackImage());
+ setState();
view.getClearBtn().addClickHandler(new ClickHandler() {
@Override
public void onClick(final ClickEvent event) {
@@ -89,15 +104,15 @@
stateManager.onStateChanged(true, new StateChangedHandler() {
@Override
public void onStateChanged(final StateChangedEvent event) {
- final StateAbstractDTO state = event.getState();
- final ContentSimpleDTO backImage = state.getGroup().getGroupBackImage();
- setBackImage(backImage);
+ setState();
}
});
eventBus.addHandler(SetBackImageEvent.getType(), new SetBackImageEvent.SetBackImageHandler() {
@Override
public void onSetBackImage(final SetBackImageEvent event) {
- view.setBackImage(event.getToken());
+ final StateToken token = event.getToken();
+ backManager.setBackImage(token);
+ setBackImage(event.getToken());
}
});
eventBus.addHandler(ClearBackImageEvent.getType(), new ClearBackImageEvent.ClearBackImageHandler() {
@@ -106,13 +121,49 @@
view.clearBackImage();
}
});
+ view.addOnStartUploadHandler(new OnStartUploaderHandler() {
+ @Override
+ public void onStart(final IUploader uploader) {
+ setState();
+ }
+ });
+ view.addOnFinishUploadHandler(new OnFinishUploaderHandler() {
+ @Override
+ public void onFinish(final IUploader uploader) {
+ onSubmitComplete(uploader);
+ }
+ });
}
- private void setBackImage(final ContentSimpleDTO backImage) {
- if (backImage == null) {
+ private void onSubmitComplete(final IUploader uploader) {
+ final String response = uploader.getServerInfo().message;
+ if (uploader.getStatus() == Status.SUCCESS) {
+ if (!TextUtils.empty(response)) {
+ NotifyUser.info(response);
+ }
+ SetBackImageEvent.fire(eventBus, session.getCurrentState().getGroup().getStateToken());
+ } else {
+ onSubmitFailed(response);
+ }
+ }
+
+ private void onSubmitFailed(final String responseText) {
+ NotifyUser.error(i18n.t("Error setting the background"), responseText);
+ }
+
+ private void setBackImage(final StateToken token) {
+ view.setBackImage(fileDownloadUtils.getBackgroundResizedUrl(token, ImageSize.thumb));
+ }
+
+ private void setState() {
+ final StateAbstractDTO state = session.getCurrentState();
+ final GroupDTO group = state.getGroup();
+ if (group.getBackgroundImage() == null) {
view.clearBackImage();
} else {
- view.setBackImage(backImage.getStateToken());
+ setBackImage(group.getStateToken());
}
+ view.setUploadParams(session.getUserHash(), session.getCurrentStateToken().toString());
}
+
}
Modified: trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConfView.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConfView.java 2011-06-18 21:57:55 UTC (rev 1411)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConfView.java 2011-06-21 20:03:39 UTC (rev 1412)
@@ -19,17 +19,31 @@
*/
package cc.kune.gspace.client.options.style;
-import cc.kune.core.shared.domain.utils.StateToken;
+import gwtupload.client.IUploader;
+import gwtupload.client.IUploader.OnCancelUploaderHandler;
import cc.kune.gspace.client.options.EntityOptionsTabView;
import com.google.gwt.event.dom.client.HasClickHandlers;
+import com.google.gwt.event.shared.HandlerRegistration;
public interface EntityOptionsStyleConfView extends EntityOptionsTabView {
- public void clearBackImage();
+ HandlerRegistration addOnCancelUploadHandler(OnCancelUploaderHandler handler);
- HasClickHandlers getClearBtn();
+ HandlerRegistration addOnChangeUploadHandler(IUploader.OnChangeUploaderHandler handler);
- public void setBackImage(final StateToken token);
+ HandlerRegistration addOnFinishUploadHandler(IUploader.OnFinishUploaderHandler handler);
+ HandlerRegistration addOnStartUploadHandler(IUploader.OnStartUploaderHandler handler);
+
+ public void clearBackImage();
+
+ HasClickHandlers getClearBtn();
+
+ void reset();
+
+ public void setBackImage(final String url);
+
+ void setUploadParams(String userHash, String token);
+
}
Modified: trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsStyleConfPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsStyleConfPanel.java 2011-06-18 21:57:55 UTC (rev 1411)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsStyleConfPanel.java 2011-06-21 20:03:39 UTC (rev 1412)
@@ -20,7 +20,6 @@
package cc.kune.gspace.client.options.style;
import cc.kune.core.client.resources.CoreResources;
-import cc.kune.core.client.services.FileDownloadUtils;
import cc.kune.core.shared.i18n.I18nTranslationService;
import cc.kune.gspace.client.themes.GSpaceThemeSelectorPanel;
@@ -30,10 +29,9 @@
GroupOptionsStyleConfView {
@Inject
- public GroupOptionsStyleConfPanel(final I18nTranslationService i18n,
- final FileDownloadUtils downUtils, final CoreResources res,
+ public GroupOptionsStyleConfPanel(final I18nTranslationService i18n, final CoreResources res,
final GSpaceThemeSelectorPanel styleSelector) {
- super(i18n, downUtils, res, styleSelector);
+ super(i18n, res, styleSelector);
}
}
Modified: trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsStyleConfPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsStyleConfPresenter.java 2011-06-18 21:57:55 UTC (rev 1411)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsStyleConfPresenter.java 2011-06-21 20:03:39 UTC (rev 1412)
@@ -20,10 +20,10 @@
package cc.kune.gspace.client.options.style;
import cc.kune.core.client.rpcservices.GroupServiceAsync;
+import cc.kune.core.client.services.FileDownloadUtils;
import cc.kune.core.client.state.Session;
-import cc.kune.core.client.state.StateChangedEvent;
-import cc.kune.core.client.state.StateChangedEvent.StateChangedHandler;
import cc.kune.core.client.state.StateManager;
+import cc.kune.core.shared.i18n.I18nTranslationService;
import cc.kune.gspace.client.options.GroupOptions;
import cc.kune.gspace.client.style.GSpaceBackManager;
import cc.kune.gspace.client.themes.GSpaceThemeSelectorPresenter;
@@ -39,17 +39,11 @@
public GroupOptionsStyleConfPresenter(final EventBus eventBus, final Session session,
final StateManager stateManager, final GroupOptions entityOptions,
final Provider<GroupServiceAsync> groupService, final GSpaceBackManager backManager,
- final GroupOptionsStyleConfView view, final GSpaceThemeSelectorPresenter styleSelector) {
- super(eventBus, session, stateManager, entityOptions, groupService, backManager, styleSelector);
+ final GroupOptionsStyleConfView view, final GSpaceThemeSelectorPresenter styleSelector,
+ final I18nTranslationService i18n, final FileDownloadUtils fileDownUtils) {
+ super(eventBus, session, stateManager, entityOptions, groupService, backManager, styleSelector,
+ i18n, fileDownUtils);
init(view);
- stateManager.onStateChanged(true, new StateChangedHandler() {
-
- @Override
- public void onStateChanged(final StateChangedEvent event) {
- // final String theme = state.getGroup().getWorkspaceTheme();
- // themeSelector.select(theme);
- }
- });
}
}
\ No newline at end of file
Modified: trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsStyleConfPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsStyleConfPanel.java 2011-06-18 21:57:55 UTC (rev 1411)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsStyleConfPanel.java 2011-06-21 20:03:39 UTC (rev 1412)
@@ -20,7 +20,6 @@
package cc.kune.gspace.client.options.style;
import cc.kune.core.client.resources.CoreResources;
-import cc.kune.core.client.services.FileDownloadUtils;
import cc.kune.core.shared.i18n.I18nTranslationService;
import cc.kune.gspace.client.themes.GSpaceThemeSelectorPanel;
@@ -30,9 +29,9 @@
UserOptionsStyleConfView {
@Inject
- public UserOptionsStyleConfPanel(final I18nTranslationService i18n, final FileDownloadUtils downUtils,
- final CoreResources res, final GSpaceThemeSelectorPanel styleSelector) {
- super(i18n, downUtils, res, styleSelector);
+ public UserOptionsStyleConfPanel(final I18nTranslationService i18n, final CoreResources res,
+ final GSpaceThemeSelectorPanel styleSelector) {
+ super(i18n, res, styleSelector);
}
}
Modified: trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsStyleConfPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsStyleConfPresenter.java 2011-06-18 21:57:55 UTC (rev 1411)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsStyleConfPresenter.java 2011-06-21 20:03:39 UTC (rev 1412)
@@ -20,11 +20,10 @@
package cc.kune.gspace.client.options.style;
import cc.kune.core.client.rpcservices.GroupServiceAsync;
+import cc.kune.core.client.services.FileDownloadUtils;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.StateManager;
-import cc.kune.core.client.state.UserSignInEvent;
-import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler;
-import cc.kune.core.shared.dto.UserInfoDTO;
+import cc.kune.core.shared.i18n.I18nTranslationService;
import cc.kune.gspace.client.options.UserOptions;
import cc.kune.gspace.client.style.GSpaceBackManager;
import cc.kune.gspace.client.themes.GSpaceThemeSelectorPresenter;
@@ -42,30 +41,10 @@
public UserOptionsStyleConfPresenter(final EventBus eventBus, final Session session,
final StateManager stateManager, final UserOptions entityOptions,
final Provider<GroupServiceAsync> groupService, final GSpaceBackManager backManager,
- final UserOptionsStyleConfView view, final GSpaceThemeSelectorPresenter styleSelector) {
- super(eventBus, session, stateManager, entityOptions, groupService, backManager, styleSelector);
- // this.themeSelector = themeSelector;
- // themeSelector.addThemeSelected(new Listener<WsTheme>() {
- // public void onEvent(final WsTheme theme) {
- // themeManager.changeTheme(session.getCurrentUser().getStateToken(),
- // theme);
- // }
- // });
- final UserInfoDTO userInfo = session.getCurrentUserInfo();
- if (userInfo != null) {
- setSelector(userInfo);
- }
+ final UserOptionsStyleConfView view, final GSpaceThemeSelectorPresenter styleSelector,
+ final I18nTranslationService i18n, final FileDownloadUtils fileDownUtils) {
+ super(eventBus, session, stateManager, entityOptions, groupService, backManager, styleSelector,
+ i18n, fileDownUtils);
init(view);
- session.onUserSignIn(true, new UserSignInHandler() {
- @Override
- public void onUserSignIn(final UserSignInEvent event) {
- // setSelector(userInfo);
- }
- });
}
-
- private void setSelector(final UserInfoDTO userInfo) {
- // themeSelector.select(userInfo.getUserGroup().getWorkspaceTheme());
- }
-
}
Modified: trunk/src/main/java/cc/kune/gspace/client/resources/gSpaceArmor.css
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/resources/gSpaceArmor.css 2011-06-18 21:57:55 UTC (rev 1411)
+++ trunk/src/main/java/cc/kune/gspace/client/resources/gSpaceArmor.css 2011-06-21 20:03:39 UTC (rev 1412)
@@ -7,17 +7,31 @@
.mainPanel {
border-top: 2px solid white;
- border-bottom: 7px solid white;
- border-right: 7px solid white;
- border-left: 7px solid white;
+/* border-bottom: 7px solid transparent;
+ border-right: 17px solid transparent;
+ border-left: 17px solid transparent; */
}
+.k-spaces {
+ margin: 5px 17px 7px 17px;
+ border-collapse: separate;
+}
+
+.k-space {
+}
+
.floatRight {
float: right;
}
.siteBar {
overflow: hidden;
+ background-color: #fff !important;
+ padding: 0px 5px;
+ /*kfilter: alpha(opacity = 38) !important;
+ -moz-opacity: 0.38 !important;
+ -khtml-opacity: 0.38 !important;
+ opacity: 0.38 !important; */
}
.entityHeader {
Modified: trunk/src/main/java/cc/kune/gspace/client/style/GSpaceBackManager.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/style/GSpaceBackManager.java 2011-06-18 21:57:55 UTC (rev 1411)
+++ trunk/src/main/java/cc/kune/gspace/client/style/GSpaceBackManager.java 2011-06-21 20:03:39 UTC (rev 1412)
@@ -23,8 +23,9 @@
public interface GSpaceBackManager {
- void clearBackImage();
+ void clearBackImage();
- void setBackImage(StateToken token);
+ void restoreBackImage();
+ void setBackImage(StateToken token);
}
Modified: trunk/src/main/java/cc/kune/gspace/client/style/GSpaceBackManagerImpl.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/style/GSpaceBackManagerImpl.java 2011-06-18 21:57:55 UTC (rev 1411)
+++ trunk/src/main/java/cc/kune/gspace/client/style/GSpaceBackManagerImpl.java 2011-06-21 20:03:39 UTC (rev 1412)
@@ -19,46 +19,50 @@
*/
package cc.kune.gspace.client.style;
-import org.cobogw.gwt.user.client.CSS;
+import javax.annotation.Nonnull;
import cc.kune.core.client.services.FileDownloadUtils;
import cc.kune.core.shared.domain.utils.StateToken;
+import cc.kune.gspace.client.GSpaceArmor;
-import com.google.gwt.event.shared.EventBus;
-import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.ui.RootPanel;
import com.google.inject.Inject;
public class GSpaceBackManagerImpl implements GSpaceBackManager {
- private static final StateToken NO_TOKEN = new StateToken("none.none.0.0");
- private final FileDownloadUtils downloadUtils;
- private final EventBus eventBus;
- private StateToken lastToken;
+ private static final StateToken NO_TOKEN = new StateToken("none.none.0.0");
+ private final FileDownloadUtils downloadUtils;
+ private final GSpaceArmor gSpaceArmor;
+ private StateToken lastToken;
- @Inject
- public GSpaceBackManagerImpl(final EventBus eventBus, final FileDownloadUtils downloadUtils) {
- this.eventBus = eventBus;
- this.downloadUtils = downloadUtils;
- lastToken = NO_TOKEN;
+ @Inject
+ public GSpaceBackManagerImpl(final FileDownloadUtils downloadUtils, final GSpaceArmor gSpaceArmor) {
+ this.downloadUtils = downloadUtils;
+ this.gSpaceArmor = gSpaceArmor;
+ lastToken = NO_TOKEN;
+ }
+
+ @Override
+ public void clearBackImage() {
+ if (!lastToken.equals(NO_TOKEN)) {
+ gSpaceArmor.clearBackImage();
+ lastToken = NO_TOKEN;
}
+ }
- @Override
- public void clearBackImage() {
- if (!lastToken.equals(NO_TOKEN)) {
- DOM.setStyleAttribute(RootPanel.getBodyElement(), CSS.A.BACKGROUND, "transparent");
- lastToken = NO_TOKEN;
- }
- ClearBackImageEvent.fire(eventBus);
+ @Override
+ public void restoreBackImage() {
+ if (!lastToken.equals(NO_TOKEN)) {
+ gSpaceArmor.setBackImage(downloadUtils.getBackgroundImageUrl(lastToken));
}
+ }
- @Override
- public void setBackImage(final StateToken token) {
- if (!token.equals(lastToken)) {
- final String bodyProp = "#FFFFFF url('" + downloadUtils.getImageUrl(token) + "') fixed no-repeat top left";
- DOM.setStyleAttribute(RootPanel.getBodyElement(), CSS.A.BACKGROUND, bodyProp);
- lastToken = token;
- }
- SetBackImageEvent.fire(eventBus, token);
+ @Override
+ public void setBackImage(final @Nonnull StateToken token) {
+ final StateToken tokenNoGroup = token.clearDocument().clearDocument();
+ if (!tokenNoGroup.equals(lastToken)) {
+ gSpaceArmor.setBackImage(downloadUtils.getBackgroundImageUrl(tokenNoGroup));
+ lastToken = tokenNoGroup;
}
+
+ }
}
Modified: trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeManager.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeManager.java 2011-06-18 21:57:55 UTC (rev 1411)
+++ trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeManager.java 2011-06-21 20:03:39 UTC (rev 1412)
@@ -27,13 +27,13 @@
import cc.kune.core.client.init.AppStartEvent.AppStartHandler;
import cc.kune.core.client.rpcservices.AsyncCallbackSimple;
import cc.kune.core.client.rpcservices.GroupServiceAsync;
+import cc.kune.core.client.state.GroupChangedEvent;
+import cc.kune.core.client.state.GroupChangedEvent.GroupChangedHandler;
import cc.kune.core.client.state.Session;
-import cc.kune.core.client.state.StateChangedEvent;
-import cc.kune.core.client.state.StateChangedEvent.StateChangedHandler;
import cc.kune.core.client.state.StateManager;
import cc.kune.core.shared.domain.utils.StateToken;
-import cc.kune.core.shared.dto.ContentSimpleDTO;
import cc.kune.core.shared.dto.GSpaceTheme;
+import cc.kune.core.shared.dto.GroupDTO;
import cc.kune.core.shared.dto.InitDataDTO;
import cc.kune.core.shared.dto.StateAbstractDTO;
import cc.kune.gspace.client.resources.GSpaceArmorResources;
@@ -69,10 +69,10 @@
public void onAppStart(final AppStartEvent event) {
final InitDataDTO initdata = session.getInitData();
themes = initdata.getgSpaceThemes();
- stateManager.onStateChanged(true, new StateChangedHandler() {
+ stateManager.onGroupChanged(true, new GroupChangedHandler() {
@Override
- public void onStateChanged(final StateChangedEvent event) {
- setState(event.getState());
+ public void onGroupChanged(final GroupChangedEvent event) {
+ setState(session.getCurrentState());
}
});
}
@@ -117,11 +117,12 @@
private void setState(final StateAbstractDTO state) {
setTheme(themes.get(state.getGroup().getWorkspaceTheme()));
- final ContentSimpleDTO groupBackImage = state.getGroup().getGroupBackImage();
+ final GroupDTO group = state.getGroup();
+ final String groupBackImage = group.getBackgroundImage();
if (groupBackImage == null) {
wsBackManager.clearBackImage();
} else {
- wsBackManager.setBackImage(groupBackImage.getStateToken());
+ wsBackManager.setBackImage(state.getGroup().getStateToken());
}
}
Modified: trunk/src/main/java/cc/kune/pspace/client/PSpaceInDevelopment.ui.xml
===================================================================
--- trunk/src/main/java/cc/kune/pspace/client/PSpaceInDevelopment.ui.xml 2011-06-18 21:57:55 UTC (rev 1411)
+++ trunk/src/main/java/cc/kune/pspace/client/PSpaceInDevelopment.ui.xml 2011-06-21 20:03:39 UTC (rev 1412)
@@ -5,7 +5,7 @@
.container {
margin: 10px;
font-family: 'Ubuntu', Arial;
- background-color: white;
+ background-color: transparent;
}
.entityLogo {
Modified: trunk/src/main/java/org/ourproject/kune/gallery/client/GalleryClientActions.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/gallery/client/GalleryClientActions.java 2011-06-18 21:57:55 UTC (rev 1411)
+++ trunk/src/main/java/org/ourproject/kune/gallery/client/GalleryClientActions.java 2011-06-21 20:03:39 UTC (rev 1412)
@@ -46,68 +46,71 @@
import com.calclab.suco.client.ioc.Provider;
public class GalleryClientActions extends OldAbstractFoldableContentActions {
- public GalleryClientActions(final I18nUITranslationService i18n, final ContextNavigator contextNavigator,
- final Session session, final StateManager stateManager, final SchedulerManager deferredCommandWrapper,
- final Provider<ContentServiceAsync> contentServiceProvider,
- final Provider<GroupServiceAsync> groupServiceProvider, final Provider<FileUploader> fileUploaderProvider,
- final ContentActionRegistry contentActionRegistry, final ContextActionRegistry contextActionRegistry,
- final Provider<FileDownloadUtils> fileDownloadProvider, final EntityHeader entityLogo,
- final Provider<ContentEditor> textEditorProvider, final ErrorHandler errorHandler,
- final GalleryViewer documentViewer, final Provider<ContextPropEditor> contextProvEditorProvider,
- final GSpaceBackManager wsBackManager) {
- super(session, stateManager, i18n, errorHandler, deferredCommandWrapper, groupServiceProvider,
- contentServiceProvider, fileUploaderProvider, contextNavigator, contentActionRegistry,
- contextActionRegistry, fileDownloadProvider, textEditorProvider, contextProvEditorProvider,
- documentViewer, entityLogo, wsBackManager);
- }
+ public GalleryClientActions(final I18nUITranslationService i18n,
+ final ContextNavigator contextNavigator, final Session session, final StateManager stateManager,
+ final SchedulerManager deferredCommandWrapper,
+ final Provider<ContentServiceAsync> contentServiceProvider,
+ final Provider<GroupServiceAsync> groupServiceProvider,
+ final Provider<FileUploader> fileUploaderProvider,
+ final ContentActionRegistry contentActionRegistry,
+ final ContextActionRegistry contextActionRegistry,
+ final Provider<FileDownloadUtils> fileDownloadProvider, final EntityHeader entityLogo,
+ final Provider<ContentEditor> textEditorProvider, final ErrorHandler errorHandler,
+ final GalleryViewer documentViewer, final Provider<ContextPropEditor> contextProvEditorProvider,
+ final GSpaceBackManager wsBackManager) {
+ super(session, stateManager, i18n, errorHandler, deferredCommandWrapper, groupServiceProvider,
+ contentServiceProvider, fileUploaderProvider, contextNavigator, contentActionRegistry,
+ contextActionRegistry, fileDownloadProvider, textEditorProvider, contextProvEditorProvider,
+ documentViewer, entityLogo, wsBackManager);
+ }
- @Override
- protected void createActions() {
- final String[] all = { TYPE_ROOT, TYPE_ALBUM, TYPE_UPLOADEDFILE };
- final String[] containers = { TYPE_ROOT, TYPE_ALBUM };
- final String[] contentsModerated = { TYPE_UPLOADEDFILE };
- final String[] containersNoRoot = { TYPE_ALBUM };
- final String[] contents = { TYPE_UPLOADEDFILE };
+ @Override
+ protected void createActions() {
+ final String[] all = { TYPE_ROOT, TYPE_ALBUM, TYPE_UPLOADEDFILE };
+ final String[] containers = { TYPE_ROOT, TYPE_ALBUM };
+ final String[] contentsModerated = { TYPE_UPLOADEDFILE };
+ final String[] containersNoRoot = { TYPE_ALBUM };
+ final String[] contents = { TYPE_UPLOADEDFILE };
- final String parentMenuTitle = i18n.t("File");
- final String parentMenuTitleCtx = i18n.t("Album");
+ final String parentMenuTitle = i18n.t("File");
+ final String parentMenuTitleCtx = i18n.t("Album");
- createNewContainerAction(TYPE_ALBUM, "images/nav/gallery_add.png", i18n.t("New sub-album"), parentMenuTitleCtx,
- i18n.t("New"), i18n.t("New sub-album"), Position.ctx, TYPE_ALBUM);
- createNewContainerAction(TYPE_ALBUM, "images/nav/gallery_add.png", i18n.t("New album"), parentMenuTitleCtx,
- i18n.t("New"), i18n.t("New album"), Position.ctx, TYPE_ROOT);
+ createNewContainerAction(TYPE_ALBUM, "images/nav/gallery_add.png", i18n.t("New sub-album"),
+ parentMenuTitleCtx, i18n.t("New"), i18n.t("New sub-album"), Position.ctx, TYPE_ALBUM);
+ createNewContainerAction(TYPE_ALBUM, "images/nav/gallery_add.png", i18n.t("New album"),
+ parentMenuTitleCtx, i18n.t("New"), i18n.t("New album"), Position.ctx, TYPE_ROOT);
- createContentRenameAction(parentMenuTitle, i18n.t("Rename"), contents);
- createContentModeratedActions(parentMenuTitle, contentsModerated);
- createRenameContentInCtxAction(parentMenuTitleCtx, i18n.t("Rename"), containersNoRoot);
+ createContentRenameAction(parentMenuTitle, i18n.t("Rename"), contents);
+ createContentModeratedActions(parentMenuTitle, contentsModerated);
+ createRenameContentInCtxAction(parentMenuTitleCtx, i18n.t("Rename"), containersNoRoot);
- // final ActionToolbarMenuDescriptor<StateToken> setAsDefGroupCxt =
- // createSetAsDefContent(parentMenuTitleCtx);
+ // final ActionToolbarMenuDescriptor<StateToken> setAsDefGroupCxt =
+ // createSetAsDefContent(parentMenuTitleCtx);
- createRefreshCntAction(parentMenuTitle, contents);
- createRefreshCxtAction(parentMenuTitleCtx, containers);
+ createRefreshCntAction(parentMenuTitle, contents);
+ createRefreshCxtAction(parentMenuTitleCtx, containers);
- createSetAsDefContent(parentMenuTitle, contents);
- createSetGroupBackImageAction(parentMenuTitle, TYPE_UPLOADEDFILE);
+ createSetAsDefContent(parentMenuTitle, contents);
+ // createSetGroupBackImageAction(parentMenuTitle, TYPE_UPLOADEDFILE);
- // createUploadAction(i18n.t("Upload file"), "images/nav/upload.png",
- // i18n.t("Upload some files (images, PDFs, ...)"), null, containers);
+ // createUploadAction(i18n.t("Upload file"), "images/nav/upload.png",
+ // i18n.t("Upload some files (images, PDFs, ...)"), null, containers);
- createDownloadActions(TYPE_UPLOADEDFILE);
+ createDownloadActions(TYPE_UPLOADEDFILE);
- createGoAction(all);
+ createGoAction(all);
- createGoHomeAction(containers);
+ createGoHomeAction(containers);
- // createTranslateAction(TYPE_ALBUM, TYPE_UPLOADEDFILE);
+ // createTranslateAction(TYPE_ALBUM, TYPE_UPLOADEDFILE);
- createDelContainerAction("Delete folder", parentMenuTitleCtx, containersNoRoot);
- createDelContentAction(parentMenuTitle, i18n.t("Delete"), contents);
- createShowDeletedItems(parentMenuTitleCtx, all);
- }
+ createDelContainerAction("Delete folder", parentMenuTitleCtx, containersNoRoot);
+ createDelContentAction(parentMenuTitle, i18n.t("Delete"), contents);
+ createShowDeletedItems(parentMenuTitleCtx, all);
+ }
- @Override
- protected void createPostSessionInitActions() {
- super.createUploadMediaAction(TYPE_ALBUM);
- }
+ @Override
+ protected void createPostSessionInitActions() {
+ super.createUploadMediaAction(TYPE_ALBUM);
+ }
}
Modified: trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientActions.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientActions.java 2011-06-18 21:57:55 UTC (rev 1411)
+++ trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientActions.java 2011-06-21 20:03:39 UTC (rev 1412)
@@ -47,69 +47,72 @@
import com.calclab.suco.client.ioc.Provider;
public class WikiClientActions extends OldAbstractFoldableContentActions {
- public WikiClientActions(final I18nUITranslationService i18n, final ContextNavigator contextNavigator,
- final Session session, final StateManager stateManager, final SchedulerManager deferredCommandWrapper,
- final Provider<ContentServiceAsync> contentServiceProvider,
- final Provider<GroupServiceAsync> groupServiceProvider, final Provider<FileUploader> fileUploaderProvider,
- final ContentActionRegistry contentActionRegistry, final ContextActionRegistry contextActionRegistry,
- final Provider<FileDownloadUtils> fileDownloadProvider, final EntityHeader entityLogo,
- final Provider<ContentEditor> textEditorProvider, final ErrorHandler errorHandler,
- final WikiViewer documentViewer, final Provider<ContextPropEditor> contextProvEditorProvider,
- final GSpaceBackManager wsBackManager) {
- super(session, stateManager, i18n, errorHandler, deferredCommandWrapper, groupServiceProvider,
- contentServiceProvider, fileUploaderProvider, contextNavigator, contentActionRegistry,
- contextActionRegistry, fileDownloadProvider, textEditorProvider, contextProvEditorProvider,
- documentViewer, entityLogo, wsBackManager);
- }
+ public WikiClientActions(final I18nUITranslationService i18n, final ContextNavigator contextNavigator,
+ final Session session, final StateManager stateManager,
+ final SchedulerManager deferredCommandWrapper,
+ final Provider<ContentServiceAsync> contentServiceProvider,
+ final Provider<GroupServiceAsync> groupServiceProvider,
+ final Provider<FileUploader> fileUploaderProvider,
+ final ContentActionRegistry contentActionRegistry,
+ final ContextActionRegistry contextActionRegistry,
+ final Provider<FileDownloadUtils> fileDownloadProvider, final EntityHeader entityLogo,
+ final Provider<ContentEditor> textEditorProvider, final ErrorHandler errorHandler,
+ final WikiViewer documentViewer, final Provider<ContextPropEditor> contextProvEditorProvider,
+ final GSpaceBackManager wsBackManager) {
+ super(session, stateManager, i18n, errorHandler, deferredCommandWrapper, groupServiceProvider,
+ contentServiceProvider, fileUploaderProvider, contextNavigator, contentActionRegistry,
+ contextActionRegistry, fileDownloadProvider, textEditorProvider, contextProvEditorProvider,
+ documentViewer, entityLogo, wsBackManager);
+ }
- @Override
- protected void createActions() {
- final String[] all = { TYPE_ROOT, TYPE_FOLDER, TYPE_WIKIPAGE, TYPE_UPLOADEDFILE };
- final String[] containers = { TYPE_ROOT, TYPE_FOLDER };
- // final String[] contentsModerated = { };
- final String[] containersNoRoot = { TYPE_FOLDER };
- final String[] contents = { TYPE_WIKIPAGE, TYPE_UPLOADEDFILE };
+ @Override
+ protected void createActions() {
+ final String[] all = { TYPE_ROOT, TYPE_FOLDER, TYPE_WIKIPAGE, TYPE_UPLOADEDFILE };
+ final String[] containers = { TYPE_ROOT, TYPE_FOLDER };
+ // final String[] contentsModerated = { };
+ final String[] containersNoRoot = { TYPE_FOLDER };
+ final String[] contents = { TYPE_WIKIPAGE, TYPE_UPLOADEDFILE };
- final String parentMenuTitle = i18n.t("Wikipage");
- final String parentMenuTitleCtx = i18n.t("Wiki");
+ final String parentMenuTitle = i18n.t("Wikipage");
+ final String parentMenuTitleCtx = i18n.t("Wiki");
- createNewContainerAction(TYPE_FOLDER, "images/nav/folder_add.png", i18n.t("New folder"), parentMenuTitleCtx,
- i18n.t("New"), i18n.t("New folder"), Position.ctx, TYPE_ROOT, TYPE_FOLDER);
+ createNewContainerAction(TYPE_FOLDER, "images/nav/folder_add.png", i18n.t("New folder"),
+ parentMenuTitleCtx, i18n.t("New"), i18n.t("New folder"), Position.ctx, TYPE_ROOT, TYPE_FOLDER);
- createNewContentAction(TYPE_WIKIPAGE, "images/nav/wikipage_add.png", i18n.t("New wikipage"),
- parentMenuTitleCtx, Position.ctx, TYPE_ROOT, TYPE_FOLDER);
+ createNewContentAction(TYPE_WIKIPAGE, "images/nav/wikipage_add.png", i18n.t("New wikipage"),
+ parentMenuTitleCtx, Position.ctx, TYPE_ROOT, TYPE_FOLDER);
- // createContentModeratedActions(parentMenuTitle, contentsModerated);
- createTranslateAction(parentMenuTitle, TYPE_FOLDER, TYPE_WIKIPAGE);
- createContentRenameAction(parentMenuTitle, i18n.t("Rename"), contents);
- createRenameContentInCtxAction(parentMenuTitleCtx, i18n.t("Rename"), containersNoRoot);
- createEditAction(parentMenuTitle, TYPE_WIKIPAGE);
+ // createContentModeratedActions(parentMenuTitle, contentsModerated);
+ createTranslateAction(parentMenuTitle, TYPE_FOLDER, TYPE_WIKIPAGE);
+ createContentRenameAction(parentMenuTitle, i18n.t("Rename"), contents);
+ createRenameContentInCtxAction(parentMenuTitleCtx, i18n.t("Rename"), containersNoRoot);
+ createEditAction(parentMenuTitle, TYPE_WIKIPAGE);
- // final ActionToolbarMenuDescriptor<StateToken> setAsDefGroupCxt =
- // createSetAsDefContent(parentMenuTitleCtx);
+ // final ActionToolbarMenuDescriptor<StateToken> setAsDefGroupCxt =
+ // createSetAsDefContent(parentMenuTitleCtx);
- createRefreshCntAction(parentMenuTitle, contents);
- createRefreshCxtAction(parentMenuTitleCtx, containers);
+ createRefreshCntAction(parentMenuTitle, contents);
+ createRefreshCxtAction(parentMenuTitleCtx, containers);
- createSetAsDefContent(parentMenuTitle, contents);
- createSetGroupBackImageAction(parentMenuTitle, TYPE_UPLOADEDFILE);
+ createSetAsDefContent(parentMenuTitle, contents);
+ // createSetGroupBackImageAction(parentMenuTitle, TYPE_UPLOADEDFILE);
- createUploadAction(i18n.t("Upload file"), "images/nav/upload.png",
- i18n.t("Upload some files (images, PDFs, ...)"), null, containers);
+ createUploadAction(i18n.t("Upload file"), "images/nav/upload.png",
+ i18n.t("Upload some files (images, PDFs, ...)"), null, containers);
- createDownloadActions(TYPE_UPLOADEDFILE);
+ createDownloadActions(TYPE_UPLOADEDFILE);
- createGoAction(all);
+ createGoAction(all);
- createGoHomeAction(containers);
+ createGoHomeAction(containers);
- createDelContainerAction("Delete folder", parentMenuTitleCtx, containersNoRoot);
- createDelContentAction(parentMenuTitle, i18n.t("Delete"), contents);
- createShowDeletedItems(parentMenuTitleCtx, all);
- }
+ createDelContainerAction("Delete folder", parentMenuTitleCtx, containersNoRoot);
+ createDelContentAction(parentMenuTitle, i18n.t("Delete"), contents);
+ createShowDeletedItems(parentMenuTitleCtx, all);
+ }
- @Override
- protected void createPostSessionInitActions() {
- // super.createUploadMediaAction();
- }
+ @Override
+ protected void createPostSessionInitActions() {
+ // super.createUploadMediaAction();
+ }
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/OldAbstractFoldableContentActions.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/OldAbstractFoldableContentActions.java 2011-06-18 21:57:55 UTC (rev 1411)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/OldAbstractFoldableContentActions.java 2011-06-21 20:03:39 UTC (rev 1412)
@@ -55,7 +55,6 @@
import cc.kune.core.shared.domain.utils.StateToken;
import cc.kune.core.shared.dto.AccessRolDTO;
import cc.kune.core.shared.dto.ContentSimpleDTO;
-import cc.kune.core.shared.dto.GroupDTO;
import cc.kune.core.shared.dto.InitDataDTO;
import cc.kune.core.shared.dto.StateAbstractDTO;
import cc.kune.core.shared.dto.StateContainerDTO;
@@ -70,603 +69,616 @@
public abstract class OldAbstractFoldableContentActions {
- protected enum Position {
- cnt, ctx
- }
+ protected enum Position {
+ cnt, ctx
+ }
- public static final ActionToolbarPosition CONTENT_BOTTOMBAR = new ActionToolbarPosition("afca-ctn-bottom");
+ public static final ActionToolbarPosition CONTENT_BOTTOMBAR = new ActionToolbarPosition(
+ "afca-ctn-bottom");
- public static final ActionToolbarPosition CONTENT_TOPBAR = new ActionToolbarPosition("afca-ctn-top");
- public static final ActionToolbarPosition CONTEXT_BOTTOMBAR = new ActionToolbarPosition("afca-ctx-bottom");
- public static final ActionToolbarPosition CONTEXT_TOPBAR = new ActionToolbarPosition("afca-ctx-top");
- private static final String PUBLICATION_MENU = "Publication";
+ public static final ActionToolbarPosition CONTENT_TOPBAR = new ActionToolbarPosition("afca-ctn-top");
+ public static final ActionToolbarPosition CONTEXT_BOTTOMBAR = new ActionToolbarPosition(
+ "afca-ctx-bottom");
+ public static final ActionToolbarPosition CONTEXT_TOPBAR = new ActionToolbarPosition("afca-ctx-top");
+ private static final String PUBLICATION_MENU = "Publication";
- protected final ContentActionRegistry contentActionRegistry;
- protected final Provider<ContentServiceAsync> contentServiceProvider;
- protected final ContextActionRegistry contextActionRegistry;
- protected final ContextNavigator contextNavigator;
- protected final Provider<ContextPropEditor> contextPropEditorProvider;
- protected final SchedulerManager deferredCommandWrapper;
- protected final EntityHeader entityLogo;
- protected final ErrorHandler errorHandler;
- protected final Provider<FileDownloadUtils> fileDownloadProvider;
- protected final Provider<FileUploader> fileUploaderProvider;
- protected final FoldableContent foldableContent;
- protected final Provider<GroupServiceAsync> groupServiceProvider;
- protected final I18nUITranslationService i18n;
+ protected final ContentActionRegistry contentActionRegistry;
+ protected final Provider<ContentServiceAsync> contentServiceProvider;
+ protected final ContextActionRegistry contextActionRegistry;
+ protected final ContextNavigator contextNavigator;
+ protected final Provider<ContextPropEditor> contextPropEditorProvider;
+ protected final SchedulerManager deferredCommandWrapper;
+ protected final EntityHeader entityLogo;
+ protected final ErrorHandler errorHandler;
+ protected final Provider<FileDownloadUtils> fileDownloadProvider;
+ protected final Provider<FileUploader> fileUploaderProvider;
+ protected final FoldableContent foldableContent;
+ protected final Provider<GroupServiceAsync> groupServiceProvider;
+ protected final I18nUITranslationService i18n;
- protected final Session session;
- protected final StateManager stateManager;
- protected final Provider<ContentEditor> textEditorProvider;
+ protected final Session session;
+ protected final StateManager stateManager;
+ protected final Provider<ContentEditor> textEditorProvider;
- private final GSpaceBackManager wsBackManager;
+ private final GSpaceBackManager wsBackManager;
- public OldAbstractFoldableContentActions(final Session session, final StateManager stateManager,
- final I18nUITranslationService i18n, final ErrorHandler errorHandler,
- final SchedulerManager deferredCommandWrapper, final Provider<GroupServiceAsync> groupServiceProvider,
- final Provider<ContentServiceAsync> contentServiceProvider,
- final Provider<FileUploader> fileUploaderProvider, final ContextNavigator contextNavigator,
- final ContentActionRegistry contentActionRegistry, final ContextActionRegistry contextActionRegistry,
- final Provider<FileDownloadUtils> fileDownloadProvider, final Provider<ContentEditor> textEditorProvider,
- final Provider<ContextPropEditor> contextPropEditorProvider, final FoldableContent foldableContent,
- final EntityHeader entityLogo, final GSpaceBackManager wsBackManager) {
- this.session = session;
- this.stateManager = stateManager;
- this.i18n = i18n;
- this.errorHandler = errorHandler;
- this.deferredCommandWrapper = deferredCommandWrapper;
- this.groupServiceProvider = groupServiceProvider;
- this.contentServiceProvider = contentServiceProvider;
- this.fileUploaderProvider = fileUploaderProvider;
- this.contextNavigator = contextNavigator;
- this.contentActionRegistry = contentActionRegistry;
- this.contextActionRegistry = contextActionRegistry;
- this.fileDownloadProvider = fileDownloadProvider;
- this.textEditorProvider = textEditorProvider;
- this.contextPropEditorProvider = contextPropEditorProvider;
- this.foldableContent = foldableContent;
- this.entityLogo = entityLogo;
- this.wsBackManager = wsBackManager;
- createActions();
- session.onInitDataReceived(new Listener<InitDataDTO>() {
- @Override
- public void onEvent(final InitDataDTO parameter) {
- createPostSessionInitActions();
- }
- });
- }
+ public OldAbstractFoldableContentActions(final Session session, final StateManager stateManager,
+ final I18nUITranslationService i18n, final ErrorHandler errorHandler,
+ final SchedulerManager deferredCommandWrapper,
+ final Provider<GroupServiceAsync> groupServiceProvider,
+ final Provider<ContentServiceAsync> contentServiceProvider,
+ final Provider<FileUploader> fileUploaderProvider, final ContextNavigator contextNavigator,
+ final ContentActionRegistry contentActionRegistry,
+ final ContextActionRegistry contextActionRegistry,
+ final Provider<FileDownloadUtils> fileDownloadProvider,
+ final Provider<ContentEditor> textEditorProvider,
+ final Provider<ContextPropEditor> contextPropEditorProvider,
+ final FoldableContent foldableContent, final EntityHeader entityLogo,
+ final GSpaceBackManager wsBackManager) {
+ this.session = session;
+ this.stateManager = stateManager;
+ this.i18n = i18n;
+ this.errorHandler = errorHandler;
+ this.deferredCommandWrapper = deferredCommandWrapper;
+ this.groupServiceProvider = groupServiceProvider;
+ this.contentServiceProvider = contentServiceProvider;
+ this.fileUploaderProvider = fileUploaderProvider;
+ this.contextNavigator = contextNavigator;
+ this.contentActionRegistry = contentActionRegistry;
+ this.contextActionRegistry = contextActionRegistry;
+ this.fileDownloadProvider = fileDownloadProvider;
+ this.textEditorProvider = textEditorProvider;
+ this.contextPropEditorProvider = contextPropEditorProvider;
+ this.foldableContent = foldableContent;
+ this.entityLogo = entityLogo;
+ this.wsBackManager = wsBackManager;
+ createActions();
+ session.onInitDataReceived(new Listener<InitDataDTO>() {
+ @Override
+ public void onEvent(final InitDataDTO parameter) {
+ createPostSessionInitActions();
+ }
+ });
+ }
- protected abstract void createActions();
+ protected abstract void createActions();
- protected void createContentModeratedActions(final String parentMenuTitle, final String... contentsModerated) {
- createSetStatusAction(AccessRolDTO.Administrator, i18n.t("Published online"), ContentStatus.publishedOnline,
- contentsModerated);
- createSetStatusAction(AccessRolDTO.Editor, i18n.t("Editing in progress"), ContentStatus.editingInProgress,
- contentsModerated);
- createSetStatusAction(AccessRolDTO.Administrator, i18n.t("Rejected"), ContentStatus.rejected, contentsModerated);
- createSetStatusAction(AccessRolDTO.Editor, i18n.t("Submitted for publish"),
- ContentStatus.submittedForEvaluation, contentsModerated);
- createSetStatusAction(AccessRolDTO.Administrator, i18n.t("In the rubbish bin"), ContentStatus.inTheDustbin,
- contentsModerated);
- }
+ protected void createContentModeratedActions(final String parentMenuTitle,
+ final String... contentsModerated) {
+ createSetStatusAction(AccessRolDTO.Administrator, i18n.t("Published online"),
+ ContentStatus.publishedOnline, contentsModerated);
+ createSetStatusAction(AccessRolDTO.Editor, i18n.t("Editing in progress"),
+ ContentStatus.editingInProgress, contentsModerated);
+ createSetStatusAction(AccessRolDTO.Administrator, i18n.t("Rejected"), ContentStatus.rejected,
+ contentsModerated);
+ createSetStatusAction(AccessRolDTO.Editor, i18n.t("Submitted for publish"),
+ ContentStatus.submittedForEvaluation, contentsModerated);
+ createSetStatusAction(AccessRolDTO.Administrator, i18n.t("In the rubbish bin"),
+ ContentStatus.inTheDustbin, contentsModerated);
+ }
- protected void createContentRenameAction(final String parentMenuTitle, final String textDescription,
- final String... registerInTypes) {
- final ActionToolbarMenuAndItemDescriptor<StateToken> renameCtn = new ActionToolbarMenuAndItemDescriptor<StateToken>(
- AccessRolDTO.Editor, CONTENT_TOPBAR, new Listener<StateToken>() {
- @Override
- public void onEvent(final StateToken stateToken) {
- contextNavigator.editItem(stateToken);
- }
- });
- renameCtn.setTextDescription(textDescription);
- renameCtn.setParentMenuTitle(parentMenuTitle);
- renameCtn.setEnableCondition(notDeleted());
+ protected void createContentRenameAction(final String parentMenuTitle, final String textDescription,
+ final String... registerInTypes) {
+ final ActionToolbarMenuAndItemDescriptor<StateToken> renameCtn = new ActionToolbarMenuAndItemDescriptor<StateToken>(
+ AccessRolDTO.Editor, CONTENT_TOPBAR, new Listener<StateToken>() {
+ @Override
+ public void onEvent(final StateToken stateToken) {
+ contextNavigator.editItem(stateToken);
+ }
+ });
+ renameCtn.setTextDescription(textDescription);
+ renameCtn.setParentMenuTitle(parentMenuTitle);
+ renameCtn.setEnableCondition(notDeleted());
- // contentActionRegistry.addAction(renameCtn, registerInTypes);
- }
+ // contentActionRegistry.addAction(renameCtn, registerInTypes);
+ }
- protected void createDelContainerAction(final String text, final String parentMenuTitle,
- final String... registerInTypes) {
- final ActionToolbarMenuAndItemDescriptor<StateToken> delContainer = new ActionToolbarMenuAndItemDescriptor<StateToken>(
- AccessRolDTO.Administrator, CONTENT_TOPBAR, new Listener<StateToken>() {
- @Override
- public void onEvent(final StateToken token) {
- OldNotifyUser.info("Sorry, in development");
- }
- });
- delContainer.setParentMenuTitle(parentMenuTitle);
- delContainer.setTextDescription(i18n.t(text));
- delContainer.setMustBeConfirmed(true);
- delContainer.setConfirmationTitle(i18n.t("Please confirm"));
- delContainer.setConfirmationText(i18n.t("You will delete it with all its contents. Are you sure?"));
- contextActionRegistry.addAction(delContainer, registerInTypes);
- }
+ protected void createDelContainerAction(final String text, final String parentMenuTitle,
+ final String... registerInTypes) {
+ final ActionToolbarMenuAndItemDescriptor<StateToken> delContainer = new ActionToolbarMenuAndItemDescriptor<StateToken>(
+ AccessRolDTO.Administrator, CONTENT_TOPBAR, new Listener<StateToken>() {
+ @Override
+ public void onEvent(final StateToken token) {
+ OldNotifyUser.info("Sorry, in development");
+ }
+ });
+ delContainer.setParentMenuTitle(parentMenuTitle);
+ delContainer.setTextDescription(i18n.t(text));
+ delContainer.setMustBeConfirmed(true);
+ delContainer.setConfirmationTitle(i18n.t("Please confirm"));
+ delContainer.setConfirmationText(i18n.t("You will delete it with all its contents. Are you sure?"));
+ contextActionRegistry.addAction(delContainer, registerInTypes);
+ }
- protected void createDelContentAction(final String parentMenuTitle, final String textDescription,
- final String... registerInTypes) {
- final ActionToolbarMenuAndItemDescriptor<StateToken> delContent = new ActionToolbarMenuAndItemDescriptor<StateToken>(
- AccessRolDTO.Administrator, CONTENT_TOPBAR, new Listener<StateToken>() {
- @Override
- public void onEvent(final StateToken token) {
- contentServiceProvider.get().delContent(session.getUserHash(), token,
- new AsyncCallbackSimple<StateContentDTO>() {
- @Override
- public void onSuccess(final StateContentDTO state) {
- session.setCurrentState(state);
- final StateToken parent = token.copy().clearDocument();
- stateManager.gotoStateToken(parent);
- contextNavigator.clear();
- contextNavigator.refreshState();
- }
- });
- }
+ protected void createDelContentAction(final String parentMenuTitle, final String textDescription,
+ final String... registerInTypes) {
+ final ActionToolbarMenuAndItemDescriptor<StateToken> delContent = new ActionToolbarMenuAndItemDescriptor<StateToken>(
+ AccessRolDTO.Administrator, CONTENT_TOPBAR, new Listener<StateToken>() {
+ @Override
+ public void onEvent(final StateToken token) {
+ contentServiceProvider.get().delContent(session.getUserHash(), token,
+ new AsyncCallbackSimple<StateContentDTO>() {
+ @Override
+ public void onSuccess(final StateContentDTO state) {
+ session.setCurrentState(state);
+ final StateToken parent = token.copy().clearDocument();
+ stateManager.gotoStateToken(parent);
+ contextNavigator.clear();
+ contextNavigator.refreshState();
+ }
});
- delContent.setParentMenuTitle(parentMenuTitle);
- delContent.setTextDescription(textDescription);
- delContent.setMustBeConfirmed(true);
- delContent.setConfirmationTitle(i18n.t("Please confirm"));
- delContent.setConfirmationText(i18n.t("Are you sure?"));
- delContent.setEnableCondition(notDefAndNotDeleted());
- // contentActionRegistry.addAction(delContent, registerInTypes);
- }
+ }
+ });
+ delContent.setParentMenuTitle(parentMenuTitle);
+ delContent.setTextDescription(textDescription);
+ delContent.setMustBeConfirmed(true);
+ delContent.setConfirmationTitle(i18n.t("Please confirm"));
+ delContent.setConfirmationText(i18n.t("Are you sure?"));
+ delContent.setEnableCondition(notDefAndNotDeleted());
+ // contentActionRegistry.addAction(delContent, registerInTypes);
+ }
- protected void createDownloadActions(final String typeUploadedfile) {
- final ActionToolbarButtonDescriptor<StateToken> download = new ActionToolbarButtonDescriptor<StateToken>(
- AccessRolDTO.Viewer, CONTENT_TOPBAR, new Listener<StateToken>() {
- @Override
- public void onEvent(final StateToken token) {
- downloadContent(token);
- }
- });
- download.setMustBeAuthenticated(false);
- download.setTextDescription(i18n.t("Download"));
- download.setToolTip(i18n.t("Download this file"));
- download.setIconUrl("images/nav/download.png");
+ protected void createDownloadActions(final String typeUploadedfile) {
+ final ActionToolbarButtonDescriptor<StateToken> download = new ActionToolbarButtonDescriptor<StateToken>(
+ AccessRolDTO.Viewer, CONTENT_TOPBAR, new Listener<StateToken>() {
+ @Override
+ public void onEvent(final StateToken token) {
+ downloadContent(token);
+ }
+ });
+ download.setMustBeAuthenticated(false);
+ download.setTextDescription(i18n.t("Download"));
+ download.setToolTip(i18n.t("Download this file"));
+ download.setIconUrl("images/nav/download.png");
- final ActionMenuItemDescriptor<StateToken> downloadCtx = new ActionMenuItemDescriptor<StateToken>(
- AccessRolDTO.Viewer, new Listener<StateToken>() {
- @Override
- public void onEvent(final StateToken token) {
- downloadContent(token);
- }
- });
- downloadCtx.setMustBeAuthenticated(false);
- downloadCtx.setTextDescription(i18n.t("Download"));
- downloadCtx.setIconUrl("images/nav/download.png");
+ final ActionMenuItemDescriptor<StateToken> downloadCtx = new ActionMenuItemDescriptor<StateToken>(
+ AccessRolDTO.Viewer, new Listener<StateToken>() {
+ @Override
+ public void onEvent(final StateToken token) {
+ downloadContent(token);
+ }
+ });
+ downloadCtx.setMustBeAuthenticated(false);
+ downloadCtx.setTextDescription(i18n.t("Download"));
+ downloadCtx.setIconUrl("images/nav/download.png");
- // contentActionRegistry.addAction(download, typeUploadedfile);
- contextActionRegistry.addAction(downloadCtx, typeUploadedfile);
- }
+ // contentActionRegistry.addAction(download, typeUploadedfile);
+ contextActionRegistry.addAction(downloadCtx, typeUploadedfile);
+ }
- protected ActionToolbarButtonDescriptor<StateToken> createEditAction(final String fileMenuTitle,
- final String... registerInTypes) {
- final ActionToolbarButtonDescriptor<StateToken> editContent = new ActionToolbarButtonDescriptor<StateToken>(
- AccessRolDTO.Editor, CONTENT_TOPBAR, new Listener<StateToken>() {
- @Override
- public void onEvent(final StateToken stateToken) {
- OldNotifyUser.showProgressProcessing();
- session.check(new AsyncCallbackSimple<Void>() {
- @Override
- public void onSuccess(final Void result) {
- final ContentEditor editor = textEditorProvider.get();
- foldableContent.detach();
- contextNavigator.detach();
- contextPropEditorProvider.get().attach();
- editor.edit(session.getContentState().getContent(), new Listener<String>() {
- @Override
- public void onEvent(final String html) {
- OldNotifyUser.showProgressSaving();
- contentServiceProvider.get().save(session.getUserHash(), stateToken, html,
- new AsyncCallback<Void>() {
- @Override
- public void onFailure(final Throwable caught) {
- OldNotifyUser.hideProgress();
- if (caught instanceof SessionExpiredException) {
- errorHandler.doSessionExpired();
- } else {
- OldNotifyUser.error(i18n.t("Error saving document. Retrying..."));
- errorHandler.process(caught);
- editor.onSaveFailed();
- }
- }
+ protected ActionToolbarButtonDescriptor<StateToken> createEditAction(final String fileMenuTitle,
+ final String... registerInTypes) {
+ final ActionToolbarButtonDescriptor<StateToken> editContent = new ActionToolbarButtonDescriptor<StateToken>(
+ AccessRolDTO.Editor, CONTENT_TOPBAR, new Listener<StateToken>() {
+ @Override
+ public void onEvent(final StateToken stateToken) {
+ OldNotifyUser.showProgressProcessing();
+ session.check(new AsyncCallbackSimple<Void>() {
+ @Override
+ public void onSuccess(final Void result) {
+ final ContentEditor editor = textEditorProvider.get();
+ foldableContent.detach();
+ contextNavigator.detach();
+ contextPropEditorProvider.get().attach();
+ editor.edit(session.getContentState().getContent(), new Listener<String>() {
+ @Override
+ public void onEvent(final String html) {
+ OldNotifyUser.showProgressSaving();
+ contentServiceProvider.get().save(session.getUserHash(), stateToken, html,
+ new AsyncCallback<Void>() {
+ @Override
+ public void onFailure(final Throwable caught) {
+ OldNotifyUser.hideProgress();
+ if (caught instanceof SessionExpiredException) {
+ errorHandler.doSessionExpired();
+ } else {
+ OldNotifyUser.error(i18n.t("Error saving document. Retrying..."));
+ errorHandler.process(caught);
+ editor.onSaveFailed();
+ }
+ }
- @Override
- public void onSuccess(final Void param) {
- OldNotifyUser.hideProgress();
- session.getContentState().setContent(html);
- editor.onSavedSuccessful();
- }
- });
- }
- }, new Listener0() {
- @Override
- public void onEvent() {
- // onClose
- deferredCommandWrapper.addCommand(new ScheduledCommand() {
- @Override
- public void execute() {
- foldableContent.attach();
- contextPropEditorProvider.get().detach();
- contextNavigator.attach();
- if (session.inSameToken(stateToken)) {
- contextNavigator.refreshState();
- foldableContent.refreshState();
- }
- }
- });
- }
- });
- editor.setFileMenuTitle(fileMenuTitle);
- OldNotifyUser.hideProgress();
- }
+ @Override
+ public void onSuccess(final Void param) {
+ OldNotifyUser.hideProgress();
+ session.getContentState().setContent(html);
+ editor.onSavedSuccessful();
+ }
});
- }
+ }
+ }, new Listener0() {
+ @Override
+ public void onEvent() {
+ // onClose
+ deferredCommandWrapper.addCommand(new ScheduledCommand() {
+ @Override
+ public void execute() {
+ foldableContent.attach();
+ contextPropEditorProvider.get().detach();
+ contextNavigator.attach();
+ if (session.inSameToken(stateToken)) {
+ contextNavigator.refreshState();
+ foldableContent.refreshState();
+ }
+ }
+ });
+ }
});
- editContent.setTextDescription(i18n.tWithNT("Edit", "used in button"));
- editContent.setIconUrl("images/content_edit.png");
- editContent.setLeftSeparator(ActionToolbarButtonSeparator.spacer);
- editContent.setEnableCondition(notDeleted());
- // contentActionRegistry.addAction(editContent, registerInTypes);
- return editContent;
- }
+ editor.setFileMenuTitle(fileMenuTitle);
+ OldNotifyUser.hideProgress();
+ }
+ });
+ }
+ });
+ editContent.setTextDescription(i18n.tWithNT("Edit", "used in button"));
+ editContent.setIconUrl("images/content_edit.png");
+ editContent.setLeftSeparator(ActionToolbarButtonSeparator.spacer);
+ editContent.setEnableCondition(notDeleted());
+ // contentActionRegistry.addAction(editContent, registerInTypes);
+ return editContent;
+ }
- protected ActionMenuItemDescriptor<StateToken> createGoAction(final String... registerInTypes) {
- final ActionMenuItemDescriptor<StateToken> go = new ActionMenuItemDescriptor<StateToken>(AccessRolDTO.Viewer,
- new Listener<StateToken>() {
- @Override
- public void onEvent(final StateToken token) {
- stateManager.gotoStateToken(token);
- }
- });
- go.setMustBeAuthenticated(false);
- go.setTextDescription(i18n.t("Open"));
- go.setIconUrl("images/nav/go.png");
- contextActionRegistry.addAction(go, registerInTypes);
- return go;
- }
+ protected ActionMenuItemDescriptor<StateToken> createGoAction(final String... registerInTypes) {
+ final ActionMenuItemDescriptor<StateToken> go = new ActionMenuItemDescriptor<StateToken>(
+ AccessRolDTO.Viewer, new Listener<StateToken>() {
+ @Override
+ public void onEvent(final StateToken token) {
+ stateManager.gotoStateToken(token);
+ }
+ });
+ go.setMustBeAuthenticated(false);
+ go.setTextDescription(i18n.t("Open"));
+ go.setIconUrl("images/nav/go.png");
+ contextActionRegistry.addAction(go, registerInTypes);
+ return go;
+ }
- protected ActionToolbarButtonDescriptor<StateToken> createGoHomeAction(final String... registerInTypes) {
- final ActionToolbarButtonDescriptor<StateToken> goGroupHome = new ActionToolbarButtonDescriptor<StateToken>(
- AccessRolDTO.Viewer, CONTEXT_TOPBAR, new Listener<StateToken>() {
- @Override
- public void onEvent(final StateToken token) {
- stateManager.gotoHistoryToken(token.getGroup());
- }
- });
- goGroupHome.setMustBeAuthenticated(false);
- goGroupHome.setIconUrl("images/group-home.png");
- goGroupHome.setEnableCondition(new ActionEnableCondition<StateToken>() {
- @Override
- public boolean mustBeEnabled(final StateToken token) {
- final StateToken defContentToken = session.getCurrentState().getGroup().getDefaultContent().getStateToken();
- return !session.getCurrentStateToken().equals(defContentToken);
- }
+ protected ActionToolbarButtonDescriptor<StateToken> createGoHomeAction(final String... registerInTypes) {
+ final ActionToolbarButtonDescriptor<StateToken> goGroupHome = new ActionToolbarButtonDescriptor<StateToken>(
+ AccessRolDTO.Viewer, CONTEXT_TOPBAR, new Listener<StateToken>() {
+ @Override
+ public void onEvent(final StateToken token) {
+ stateManager.gotoHistoryToken(token.getGroup());
+ }
});
- goGroupHome.setLeftSeparator(ActionToolbarButtonSeparator.fill);
- contextActionRegistry.addAction(goGroupHome, registerInTypes);
- return goGroupHome;
- }
+ goGroupHome.setMustBeAuthenticated(false);
+ goGroupHome.setIconUrl("images/group-home.png");
+ goGroupHome.setEnableCondition(new ActionEnableCondition<StateToken>() {
+ @Override
+ public boolean mustBeEnabled(final StateToken token) {
+ final StateToken defContentToken = session.getCurrentState().getGroup().getDefaultContent().getStateToken();
+ return !session.getCurrentStateToken().equals(defContentToken);
+ }
+ });
+ goGroupHome.setLeftSeparator(ActionToolbarButtonSeparator.fill);
+ contextActionRegistry.addAction(goGroupHome, registerInTypes);
+ return goGroupHome;
+ }
- protected void createNewContainerAction(final String contentTypeId, final String iconUrl,
- final String textDescription, final String parentMenuTitle, final String parentMenuSubtitle,
- final String defaultName, final Position position, final String... registerInTypes) {
- final ActionToolbarMenuAndItemDescriptor<StateToken> addFolder;
- addFolder = new ActionToolbarMenuAndItemDescriptor<StateToken>(AccessRolDTO.Editor, CONTEXT_TOPBAR,
- new Listener<StateToken>() {
- @Override
- public void onEvent(final StateToken stateToken) {
- OldNotifyUser.showProgressProcessing();
- contentServiceProvider.get().addFolder(session.getUserHash(), stateToken, defaultName,
- contentTypeId, new AsyncCallbackSimple<StateContainerDTO>() {
- @Override
- public void onSuccess(final StateContainerDTO state) {
- contextNavigator.setEditOnNextStateChange(true);
- stateManager.setRetrievedStateAndGo(state);
- }
- });
- }
+ protected void createNewContainerAction(final String contentTypeId, final String iconUrl,
+ final String textDescription, final String parentMenuTitle, final String parentMenuSubtitle,
+ final String defaultName, final Position position, final String... registerInTypes) {
+ final ActionToolbarMenuAndItemDescriptor<StateToken> addFolder;
+ addFolder = new ActionToolbarMenuAndItemDescriptor<StateToken>(AccessRolDTO.Editor, CONTEXT_TOPBAR,
+ new Listener<StateToken>() {
+ @Override
+ public void onEvent(final StateToken stateToken) {
+ OldNotifyUser.showProgressProcessing();
+ contentServiceProvider.get().addFolder(session.getUserHash(), stateToken, defaultName,
+ contentTypeId, new AsyncCallbackSimple<StateContainerDTO>() {
+ @Override
+ public void onSuccess(final StateContainerDTO state) {
+ contextNavigator.setEditOnNextStateChange(true);
+ stateManager.setRetrievedStateAndGo(state);
+ }
});
- addFolder.setTextDescription(textDescription);
- addFolder.setParentMenuTitle(parentMenuTitle);
- addFolder.setParentSubMenuTitle(parentMenuSubtitle);
- addFolder.setIconUrl(iconUrl);
- register(addFolder, position, registerInTypes);
- }
+ }
+ });
+ addFolder.setTextDescription(textDescription);
+ addFolder.setParentMenuTitle(parentMenuTitle);
+ addFolder.setParentSubMenuTitle(parentMenuSubtitle);
+ addFolder.setIconUrl(iconUrl);
+ register(addFolder, position, registerInTypes);
+ }
- protected ActionToolbarMenuAndItemDescriptor<StateToken> createNewContentAction(final String typeId,
- final String iconUrl, final String description, final String parentMenuTitle, final Position position,
- final String... registerInTypes) {
- final ActionToolbarMenuAndItemDescriptor<StateToken> addContent = new ActionToolbarMenuAndItemDescriptor<StateToken>(
- AccessRolDTO.Editor, CONTEXT_TOPBAR, new Listener0() {
- @Override
- public void onEvent() {
- OldNotifyUser.showProgressProcessing();
- contentServiceProvider.get().addContent(session.getUserHash(),
- session.getCurrentState().getStateToken(), description, typeId,
- new AsyncCallbackSimple<StateContentDTO>() {
- @Override
- public void onSuccess(final StateContentDTO state) {
- contextNavigator.setEditOnNextStateChange(true);
- stateManager.setRetrievedStateAndGo(state);
- }
- });
- }
+ protected ActionToolbarMenuAndItemDescriptor<StateToken> createNewContentAction(final String typeId,
+ final String iconUrl, final String description, final String parentMenuTitle,
+ final Position position, final String... registerInTypes) {
+ final ActionToolbarMenuAndItemDescriptor<StateToken> addContent = new ActionToolbarMenuAndItemDescriptor<StateToken>(
+ AccessRolDTO.Editor, CONTEXT_TOPBAR, new Listener0() {
+ @Override
+ public void onEvent() {
+ OldNotifyUser.showProgressProcessing();
+ contentServiceProvider.get().addContent(session.getUserHash(),
+ session.getCurrentState().getStateToken(), description, typeId,
+ new AsyncCallbackSimple<StateContentDTO>() {
+ @Override
+ public void onSuccess(final StateContentDTO state) {
+ contextNavigator.setEditOnNextStateChange(true);
+ stateManager.setRetrievedStateAndGo(state);
+ }
});
- addContent.setTextDescription(description);
- addContent.setParentMenuTitle(parentMenuTitle);
- addContent.setParentSubMenuTitle(i18n.t("New"));
- addContent.setIconUrl(iconUrl);
- register(addContent, position, registerInTypes);
- return addContent;
- }
+ }
+ });
+ addContent.setTextDescription(description);
+ addContent.setParentMenuTitle(parentMenuTitle);
+ addContent.setParentSubMenuTitle(i18n.t("New"));
+ addContent.setIconUrl(iconUrl);
+ register(addContent, position, registerInTypes);
+ return addContent;
+ }
- protected abstract void createPostSessionInitActions();
+ protected abstract void createPostSessionInitActions();
- protected ActionToolbarMenuDescriptor<StateToken> createRefreshCntAction(final String parentMenuTitle,
- final String... registerInTypes) {
- final ActionToolbarMenuDescriptor<StateToken> refreshCnt = new ActionToolbarMenuDescriptor<StateToken>(
- AccessRolDTO.Editor, CONTENT_TOPBAR, new Listener<StateToken>() {
- @Override
- public void onEvent(final StateToken stateToken) {
- stateManager.reload();
- contextNavigator.selectItem(stateToken);
- }
- });
- refreshCnt.setMustBeAuthenticated(false);
- refreshCnt.setParentMenuTitle(parentMenuTitle);
- refreshCnt.setTextDescription(i18n.t("Refresh"));
- refreshCnt.setIconUrl("images/nav/refresh.png");
- // contentActionRegistry.addAction(refreshCnt, registerInTypes);
- return refreshCnt;
- }
+ protected ActionToolbarMenuDescriptor<StateToken> createRefreshCntAction(final String parentMenuTitle,
+ final String... registerInTypes) {
+ final ActionToolbarMenuDescriptor<StateToken> refreshCnt = new ActionToolbarMenuDescriptor<StateToken>(
+ AccessRolDTO.Editor, CONTENT_TOPBAR, new Listener<StateToken>() {
+ @Override
+ public void onEvent(final StateToken stateToken) {
+ stateManager.reload();
+ contextNavigator.selectItem(stateToken);
+ }
+ });
+ refreshCnt.setMustBeAuthenticated(false);
+ refreshCnt.setParentMenuTitle(parentMenuTitle);
+ refreshCnt.setTextDescription(i18n.t("Refresh"));
+ refreshCnt.setIconUrl("images/nav/refresh.png");
+ // contentActionRegistry.addAction(refreshCnt, registerInTypes);
+ return refreshCnt;
+ }
- protected ActionToolbarMenuDescriptor<StateToken> createRefreshCxtAction(final String parentMenuTitleCtx,
- final String... registerInTypes) {
- final ActionToolbarMenuDescriptor<StateToken> refreshCtx = new ActionToolbarMenuDescriptor<StateToken>(
- AccessRolDTO.Editor, CONTEXT_TOPBAR, new Listener<StateToken>() {
- @Override
- public void onEvent(final StateToken stateToken) {
- stateManager.reload();
- contextNavigator.selectItem(stateToken);
- }
- });
- refreshCtx.setMustBeAuthenticated(false);
- refreshCtx.setParentMenuTitle(parentMenuTitleCtx);
- refreshCtx.setTextDescription(i18n.t("Refresh"));
- refreshCtx.setIconUrl("images/nav/refresh.png");
- contextActionRegistry.addAction(refreshCtx, registerInTypes);
- return refreshCtx;
- }
+ protected ActionToolbarMenuDescriptor<StateToken> createRefreshCxtAction(
+ final String parentMenuTitleCtx, final String... registerInTypes) {
+ final ActionToolbarMenuDescriptor<StateToken> refreshCtx = new ActionToolbarMenuDescriptor<StateToken>(
+ AccessRolDTO.Editor, CONTEXT_TOPBAR, new Listener<StateToken>() {
+ @Override
+ public void onEvent(final StateToken stateToken) {
+ stateManager.reload();
+ contextNavigator.selectItem(stateToken);
+ }
+ });
+ refreshCtx.setMustBeAuthenticated(false);
+ refreshCtx.setParentMenuTitle(parentMenuTitleCtx);
+ refreshCtx.setTextDescription(i18n.t("Refresh"));
+ refreshCtx.setIconUrl("images/nav/refresh.png");
+ contextActionRegistry.addAction(refreshCtx, registerInTypes);
+ return refreshCtx;
+ }
- protected ActionToolbarMenuAndItemDescriptor<StateToken> createRenameContentInCtxAction(
- final String parentMenuTitleCtx, final String textDescription, final String... registerInTypes) {
- final ActionToolbarMenuAndItemDescriptor<StateToken> renameCtx = new ActionToolbarMenuAndItemDescriptor<StateToken>(
- AccessRolDTO.Editor, CONTEXT_TOPBAR, new Listener<StateToken>() {
- @Override
- public void onEvent(final StateToken stateToken) {
- contextNavigator.editItem(stateToken);
- }
- });
- renameCtx.setTextDescription(textDescription);
- renameCtx.setParentMenuTitle(parentMenuTitleCtx);
- contextActionRegistry.addAction(renameCtx, registerInTypes);
- return renameCtx;
- }
+ protected ActionToolbarMenuAndItemDescriptor<StateToken> createRenameContentInCtxAction(
+ final String parentMenuTitleCtx, final String textDescription, final String... registerInTypes) {
+ final ActionToolbarMenuAndItemDescriptor<StateToken> renameCtx = new ActionToolbarMenuAndItemDescriptor<StateToken>(
+ AccessRolDTO.Editor, CONTEXT_TOPBAR, new Listener<StateToken>() {
+ @Override
+ public void onEvent(final StateToken stateToken) {
+ contextNavigator.editItem(stateToken);
+ }
+ });
+ renameCtx.setTextDescription(textDescription);
+ renameCtx.setParentMenuTitle(parentMenuTitleCtx);
+ contextActionRegistry.addAction(renameCtx, registerInTypes);
+ return renameCtx;
+ }
- protected ActionToolbarMenuDescriptor<StateToken> createSetAsDefContent(final String parentMenuTitle,
- final String... registerInTypes) {
- final ActionToolbarMenuDescriptor<StateToken> setAsDefGroupContent;
- setAsDefGroupContent = new ActionToolbarMenuDescriptor<StateToken>(AccessRolDTO.Administrator, CONTENT_TOPBAR,
- new Listener<StateToken>() {
- @Override
- public void onEvent(final StateToken token) {
- OldNotifyUser.showProgressProcessing();
- contentServiceProvider.get().setAsDefaultContent(session.getUserHash(), token,
- new AsyncCallbackSimple<ContentSimpleDTO>() {
- @Override
- public void onSuccess(final ContentSimpleDTO defContent) {
- session.getCurrentState().getGroup().setDefaultContent(defContent);
- OldNotifyUser.hideProgress();
- OldNotifyUser.info(i18n.t("Content selected as the group homepage"));
- }
- });
- }
+ protected ActionToolbarMenuDescriptor<StateToken> createSetAsDefContent(final String parentMenuTitle,
+ final String... registerInTypes) {
+ final ActionToolbarMenuDescriptor<StateToken> setAsDefGroupContent;
+ setAsDefGroupContent = new ActionToolbarMenuDescriptor<StateToken>(AccessRolDTO.Administrator,
+ CONTENT_TOPBAR, new Listener<StateToken>() {
+ @Override
+ public void onEvent(final StateToken token) {
+ OldNotifyUser.showProgressProcessing();
+ contentServiceProvider.get().setAsDefaultContent(session.getUserHash(), token,
+ new AsyncCallbackSimple<ContentSimpleDTO>() {
+ @Override
+ public void onSuccess(final ContentSimpleDTO defContent) {
+ session.getCurrentState().getGroup().setDefaultContent(defContent);
+ OldNotifyUser.hideProgress();
+ OldNotifyUser.info(i18n.t("Content selected as the group homepage"));
+ }
});
- setAsDefGroupContent.setTextDescription(i18n.t("Set this as the default group page"));
- setAsDefGroupContent.setIconUrl("images/group-home.png");
- setAsDefGroupContent.setEnableCondition(notDefAndNotDeleted());
- setAsDefGroupContent.setParentMenuTitle(parentMenuTitle);
- // contentActionRegistry.addAction(setAsDefGroupContent,
- // registerInTypes);
- return setAsDefGroupContent;
- }
+ }
+ });
+ setAsDefGroupContent.setTextDescription(i18n.t("Set this as the default group page"));
+ setAsDefGroupContent.setIconUrl("images/group-home.png");
+ setAsDefGroupContent.setEnableCondition(notDefAndNotDeleted());
+ setAsDefGroupContent.setParentMenuTitle(parentMenuTitle);
+ // contentActionRegistry.addAction(setAsDefGroupContent,
+ // registerInTypes);
+ return setAsDefGroupContent;
+ }
- protected void createSetGroupBackImageAction(final String parentMenuTitle, final String... registerInTypes) {
- final ActionToolbarMenuAndItemDescriptor<StateToken> setGroupBackImage = new ActionToolbarMenuAndItemDescriptor<StateToken>(
- AccessRolDTO.Administrator, CONTENT_TOPBAR, new Listener<StateToken>() {
- @Override
- public void onEvent(final StateToken token) {
- groupServiceProvider.get().setGroupBackImage(session.getUserHash(), token,
- new AsyncCallbackSimple<GroupDTO>() {
- @Override
- public void onSuccess(final GroupDTO newGroup) {
- if (session.getCurrentState().getGroup().getShortName().equals(
- newGroup.getShortName())) {
- session.getCurrentState().setGroup(newGroup);
- wsBackManager.clearBackImage();
- wsBackManager.setBackImage(newGroup.getGroupBackImage().getStateToken());
- }
- }
- });
- }
- });
- setGroupBackImage.setParentMenuTitle(parentMenuTitle);
- setGroupBackImage.setTextDescription(i18n.t("Set this as the group background image"));
- setGroupBackImage.setIconUrl("images/nav/picture.png");
- setGroupBackImage.setEnableCondition(new ActionEnableCondition<StateToken>() {
- @Override
- public boolean mustBeEnabled(final StateToken token) {
- return session.getContentState().getMimeType().isImage();
+ //
+ // protected void createSetGroupBackImageAction(final String parentMenuTitle,
+ // final String... registerInTypes) {
+ // final ActionToolbarMenuAndItemDescriptor<StateToken> setGroupBackImage =
+ // new ActionToolbarMenuAndItemDescriptor<StateToken>(
+ // AccessRolDTO.Administrator, CONTENT_TOPBAR, new Listener<StateToken>() {
+ // @Override
+ // public void onEvent(final StateToken token) {
+ // groupServiceProvider.get().setGroupBackImage(session.getUserHash(), token,
+ // new AsyncCallbackSimple<GroupDTO>() {
+ // @Override
+ // public void onSuccess(final GroupDTO newGroup) {
+ // if (session.getCurrentState().getGroup().getShortName().equals(
+ // newGroup.getShortName())) {
+ // session.getCurrentState().setGroup(newGroup);
+ // wsBackManager.clearBackImage();
+ // wsBackManager.setBackImage(newGroup.getGroupBackImage().getStateToken());
+ // }
+ // }
+ // });
+ // }
+ // });
+ // setGroupBackImage.setParentMenuTitle(parentMenuTitle);
+ // setGroupBackImage.setTextDescription(i18n.t("Set this as the group background image"));
+ // setGroupBackImage.setIconUrl("images/nav/picture.png");
+ // setGroupBackImage.setEnableCondition(new
+ // ActionEnableCondition<StateToken>() {
+ // @Override
+ // public boolean mustBeEnabled(final StateToken token) {
+ // return session.getContentState().getMimeType().isImage();
+ // }
+ // });
+ // // contentActionRegistry.addAction(setGroupBackImage, registerInTypes);
+ // }
+
+ protected void createSetStatusAction(final AccessRolDTO rol, final String textDescription,
+ final ContentStatus status, final String[] contentsModerated) {
+ final ActionToolbarMenuRadioDescriptor<StateToken> action = new ActionToolbarMenuRadioDescriptor<StateToken>(
+ rol, CONTENT_TOPBAR, new Listener<StateToken>() {
+ @Override
+ public void onEvent(final StateToken stateToken) {
+ setContentStatus(status, stateToken);
+ }
+ }, "ContentRadioStatus", new RadioMustBeChecked() {
+ @Override
+ public boolean mustBeChecked() {
+ if (session.getContainerState() instanceof StateContentDTO) {
+ final ContentStatus currentStatus = session.getContentState().getStatus();
+ return status.equals(currentStatus);
}
+ return false;
+ }
});
- // contentActionRegistry.addAction(setGroupBackImage, registerInTypes);
- }
+ action.setTextDescription(textDescription);
+ action.setParentMenuTitle(PUBLICATION_MENU);
+ action.setParentMenuIconUrl("images/anybody.png");
+ // contentActionRegistry.addAction(action, contentsModerated);
+ }
- protected void createSetStatusAction(final AccessRolDTO rol, final String textDescription,
- final ContentStatus status, final String[] contentsModerated) {
- final ActionToolbarMenuRadioDescriptor<StateToken> action = new ActionToolbarMenuRadioDescriptor<StateToken>(
- rol, CONTENT_TOPBAR, new Listener<StateToken>() {
- @Override
- public void onEvent(final StateToken stateToken) {
- setContentStatus(status, stateToken);
- }
- }, "ContentRadioStatus", new RadioMustBeChecked() {
- @Override
- public boolean mustBeChecked() {
- if (session.getContainerState() instanceof StateContentDTO) {
- final ContentStatus currentStatus = session.getContentState().getStatus();
- return status.equals(currentStatus);
- }
- return false;
- }
- });
- action.setTextDescription(textDescription);
- action.setParentMenuTitle(PUBLICATION_MENU);
- action.setParentMenuIconUrl("images/anybody.png");
- // contentActionRegistry.addAction(action, contentsModerated);
- }
+ protected void createShowDeletedItems(final String parentMenuTitle, final String... registerInTypes) {
+ final ActionToolbarMenuCheckItemDescriptor<StateToken> showDeletedItems = new ActionToolbarMenuCheckItemDescriptor<StateToken>(
+ AccessRolDTO.Editor, CONTEXT_TOPBAR, new Listener0() {
+ @Override
+ public void onEvent() {
+ final boolean mustShow = !session.getCurrentUserInfo().getShowDeletedContent();
+ session.getCurrentUserInfo().setShowDeletedContent(mustShow);
+ if (!mustShow && session.isCurrentStateAContent()
+ && session.getContentState().getStatus().equals(ContentStatus.inTheDustbin)) {
+ stateManager.gotoHistoryToken(session.getCurrentStateToken().getGroup());
+ }
+ contextNavigator.clear();
+ contextNavigator.refreshState();
+ }
+ }, new ActionCheckedCondition() {
+ @Override
+ public boolean mustBeChecked() {
+ return session.getShowDeletedContent();
+ }
+ });
+ showDeletedItems.setParentMenuTitle(parentMenuTitle);
+ showDeletedItems.setTextDescription("Show deleted items");
+ showDeletedItems.setMustBeAuthenticated(true);
+ contextActionRegistry.addAction(showDeletedItems, registerInTypes);
+ }
- protected void createShowDeletedItems(final String parentMenuTitle, final String... registerInTypes) {
- final ActionToolbarMenuCheckItemDescriptor<StateToken> showDeletedItems = new ActionToolbarMenuCheckItemDescriptor<StateToken>(
- AccessRolDTO.Editor, CONTEXT_TOPBAR, new Listener0() {
- @Override
- public void onEvent() {
- final boolean mustShow = !session.getCurrentUserInfo().getShowDeletedContent();
- session.getCurrentUserInfo().setShowDeletedContent(mustShow);
- if (!mustShow && session.isCurrentStateAContent()
- && session.getContentState().getStatus().equals(ContentStatus.inTheDustbin)) {
- stateManager.gotoHistoryToken(session.getCurrentStateToken().getGroup());
- }
- contextNavigator.clear();
- contextNavigator.refreshState();
- }
- }, new ActionCheckedCondition() {
- @Override
- public boolean mustBeChecked() {
- return session.getShowDeletedContent();
- }
- });
- showDeletedItems.setParentMenuTitle(parentMenuTitle);
- showDeletedItems.setTextDescription("Show deleted items");
- showDeletedItems.setMustBeAuthenticated(true);
- contextActionRegistry.addAction(showDeletedItems, registerInTypes);
- }
+ protected ActionToolbarMenuDescriptor<StateToken> createTranslateAction(final String fileMenuTitle,
+ final String... registerInTypes) {
+ final ActionToolbarMenuDescriptor<StateToken> translateContent = new ActionToolbarMenuDescriptor<StateToken>(
+ AccessRolDTO.Editor, CONTENT_TOPBAR, new Listener<StateToken>() {
+ @Override
+ public void onEvent(final StateToken stateToken) {
+ OldNotifyUser.important(i18n.t("Sorry, this functionality is currently in development"));
+ }
+ });
+ translateContent.setParentMenuTitle(fileMenuTitle);
+ translateContent.setTextDescription(i18n.tWithNT("Translate", "used in button"));
+ translateContent.setToolTip(i18n.t("Translate this document to other languages"));
+ translateContent.setIconUrl("images/language.gif");
+ translateContent.setEnableCondition(notDeleted());
+ // contentActionRegistry.addAction(translateContent, registerInTypes);
+ return translateContent;
+ }
- protected ActionToolbarMenuDescriptor<StateToken> createTranslateAction(final String fileMenuTitle,
- final String... registerInTypes) {
- final ActionToolbarMenuDescriptor<StateToken> translateContent = new ActionToolbarMenuDescriptor<StateToken>(
- AccessRolDTO.Editor, CONTENT_TOPBAR, new Listener<StateToken>() {
- @Override
- public void onEvent(final StateToken stateToken) {
- OldNotifyUser.important(i18n.t("Sorry, this functionality is currently in development"));
- }
- });
- translateContent.setParentMenuTitle(fileMenuTitle);
- translateContent.setTextDescription(i18n.tWithNT("Translate", "used in button"));
- translateContent.setToolTip(i18n.t("Translate this document to other languages"));
- translateContent.setIconUrl("images/language.gif");
- translateContent.setEnableCondition(notDeleted());
- // contentActionRegistry.addAction(translateContent, registerInTypes);
- return translateContent;
- }
+ protected ActionToolbarButtonAndItemDescriptor<StateToken> createUploadAction(
+ final String textDescription, final String iconUrl, final String toolTip,
+ final String permitedExtensions, final String... registerInTypes) {
+ final ActionToolbarButtonAndItemDescriptor<StateToken> uploadFile;
+ uploadFile = new ActionToolbarButtonAndItemDescriptor<StateToken>(AccessRolDTO.Editor,
+ CONTEXT_BOTTOMBAR, new Listener0() {
+ @Override
+ public void onEvent() {
+ if (permitedExtensions != null) {
+ // FIXME: can't be reset ...
+ // fileUploaderProvider.get().setPermittedExtensions(permitedExtensions);
+ } else {
+ // FIXME: can't be reset ...
+ // fileUploaderProvider.get().resetPermittedExtensions();
+ }
+ fileUploaderProvider.get().show();
+ }
+ });
+ uploadFile.setTextDescription(textDescription);
+ uploadFile.setIconUrl(iconUrl);
+ uploadFile.setToolTip(toolTip);
+ contextActionRegistry.addAction(uploadFile, registerInTypes);
+ return uploadFile;
+ }
- protected ActionToolbarButtonAndItemDescriptor<StateToken> createUploadAction(final String textDescription,
- final String iconUrl, final String toolTip, final String permitedExtensions,
- final String... registerInTypes) {
- final ActionToolbarButtonAndItemDescriptor<StateToken> uploadFile;
- uploadFile = new ActionToolbarButtonAndItemDescriptor<StateToken>(AccessRolDTO.Editor, CONTEXT_BOTTOMBAR,
- new Listener0() {
- @Override
- public void onEvent() {
- if (permitedExtensions != null) {
- // FIXME: can't be reset ...
- // fileUploaderProvider.get().setPermittedExtensions(permitedExtensions);
- } else {
- // FIXME: can't be reset ...
- // fileUploaderProvider.get().resetPermittedExtensions();
- }
- fileUploaderProvider.get().show();
- }
- });
- uploadFile.setTextDescription(textDescription);
- uploadFile.setIconUrl(iconUrl);
- uploadFile.setToolTip(toolTip);
- contextActionRegistry.addAction(uploadFile, registerInTypes);
- return uploadFile;
- }
+ protected ActionToolbarButtonAndItemDescriptor<StateToken> createUploadMediaAction(
+ final String... registerInTypes) {
+ final ActionToolbarButtonAndItemDescriptor<StateToken> uploadMedia = createUploadAction(
+ i18n.t("Upload media"), "images/nav/upload.png",
+ i18n.t("Upload some media (images, videos...)"), session.getGalleryPermittedExtensions());
+ contextActionRegistry.addAction(uploadMedia, registerInTypes);
+ return uploadMedia;
+ }
- protected ActionToolbarButtonAndItemDescriptor<StateToken> createUploadMediaAction(final String... registerInTypes) {
- final ActionToolbarButtonAndItemDescriptor<StateToken> uploadMedia = createUploadAction(i18n.t("Upload media"),
- "images/nav/upload.png", i18n.t("Upload some media (images, videos...)"),
- session.getGalleryPermittedExtensions());
- contextActionRegistry.addAction(uploadMedia, registerInTypes);
- return uploadMedia;
- }
+ protected void downloadContent(final StateToken token) {
+ fileDownloadProvider.get().downloadFile(token);
+ }
- protected void downloadContent(final StateToken token) {
- fileDownloadProvider.get().downloadFile(token);
- }
+ private ActionEnableCondition<StateToken> notDefAndNotDeleted() {
+ return new ActionEnableCondition<StateToken>() {
+ @Override
+ public boolean mustBeEnabled(final StateToken token) {
+ final boolean isNotDefContentToken = !session.getCurrentState().getGroup().getDefaultContent().getStateToken().equals(
+ session.getCurrentStateToken());
+ return isNotDefContentToken && notDeleted().mustBeEnabled(token);
+ }
+ };
+ }
- private ActionEnableCondition<StateToken> notDefAndNotDeleted() {
- return new ActionEnableCondition<StateToken>() {
- @Override
- public boolean mustBeEnabled(final StateToken token) {
- final boolean isNotDefContentToken = !session.getCurrentState().getGroup().getDefaultContent().getStateToken().equals(
- session.getCurrentStateToken());
- return isNotDefContentToken && notDeleted().mustBeEnabled(token);
- }
- };
- }
+ private ActionEnableCondition<StateToken> notDeleted() {
+ return new ActionEnableCondition<StateToken>() {
+ @Override
+ public boolean mustBeEnabled(final StateToken token) {
+ final boolean isNotDeleted = !(session.isCurrentStateAContent() && session.getContentState().getStatus().equals(
+ ContentStatus.inTheDustbin));
+ return isNotDeleted;
+ }
+ };
+ }
- private ActionEnableCondition<StateToken> notDeleted() {
- return new ActionEnableCondition<StateToken>() {
- @Override
- public boolean mustBeEnabled(final StateToken token) {
- final boolean isNotDeleted = !(session.isCurrentStateAContent() && session.getContentState().getStatus().equals(
- ContentStatus.inTheDustbin));
- return isNotDeleted;
- }
- };
+ private void register(final ActionToolbarMenuAndItemDescriptor<StateToken> action,
+ final Position position, final String... registerInTypes) {
+ if (position.equals(Position.ctx)) {
+ contextActionRegistry.addAction(action, registerInTypes);
+ } else if (position.equals(Position.cnt)) {
+ // contentActionRegistry.addAction(action, registerInTypes);
}
+ }
- private void register(final ActionToolbarMenuAndItemDescriptor<StateToken> action, final Position position,
- final String... registerInTypes) {
- if (position.equals(Position.ctx)) {
- contextActionRegistry.addAction(action, registerInTypes);
- } else if (position.equals(Position.cnt)) {
- // contentActionRegistry.addAction(action, registerInTypes);
+ private void setContentStatus(final ContentStatus status, final StateToken stateToken) {
+ final AsyncCallbackSimple<StateAbstractDTO> callback = new AsyncCallbackSimple<StateAbstractDTO>() {
+ @Override
+ public void onSuccess(final StateAbstractDTO state) {
+ if (session.inSameToken(stateToken)) {
+ session.setCurrentState(state);
+ // publicLink.setState(state);
+ foldableContent.refreshState();
}
+ contextNavigator.setItemStatus(stateToken, status);
+ }
+ };
+ if (status.equals(ContentStatus.publishedOnline) || status.equals(ContentStatus.rejected)
+ || status.equals(ContentStatus.inTheDustbin)) {
+ contentServiceProvider.get().setStatusAsAdmin(session.getUserHash(), stateToken, status, callback);
+ } else {
+ contentServiceProvider.get().setStatus(session.getUserHash(), stateToken, status, callback);
}
+ }
- private void setContentStatus(final ContentStatus status, final StateToken stateToken) {
- final AsyncCallbackSimple<StateAbstractDTO> callback = new AsyncCallbackSimple<StateAbstractDTO>() {
- @Override
- public void onSuccess(final StateAbstractDTO state) {
- if (session.inSameToken(stateToken)) {
- session.setCurrentState(state);
- // publicLink.setState(state);
- foldableContent.refreshState();
- }
- contextNavigator.setItemStatus(stateToken, status);
- }
- };
- if (status.equals(ContentStatus.publishedOnline) || status.equals(ContentStatus.rejected)
- || status.equals(ContentStatus.inTheDustbin)) {
- contentServiceProvider.get().setStatusAsAdmin(session.getUserHash(), stateToken, status, callback);
- } else {
- contentServiceProvider.get().setStatus(session.getUserHash(), stateToken, status, callback);
- }
- }
-
}
1
0
r1411 - in trunk/src: main/java/cc/kune/core/client/sn main/java/cc/kune/core/server main/java/cc/kune/core/server/auth main/java/cc/kune/core/server/manager main/java/cc/kune/core/server/manager/impl main/java/cc/kune/core/server/rpc main/java/cc/kune/gspace/client/resources test/java/cc/kune/core/server/integration/site
by Vicente J. Ruiz Jurado 18 Jun '11
by Vicente J. Ruiz Jurado 18 Jun '11
18 Jun '11
Author: vjrj_
Date: 2011-06-18 23:57:55 +0200 (Sat, 18 Jun 2011)
New Revision: 1411
Added:
trunk/src/main/java/cc/kune/core/server/CustomPersistFilter.java
Modified:
trunk/src/main/java/cc/kune/core/client/sn/UserSNPanel.java
trunk/src/main/java/cc/kune/core/server/KuneRackModule.java
trunk/src/main/java/cc/kune/core/server/auth/AuthenticatedMethodInterceptor.java
trunk/src/main/java/cc/kune/core/server/manager/UserManager.java
trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java
trunk/src/main/java/cc/kune/core/server/rpc/ContentRPC.java
trunk/src/main/java/cc/kune/core/server/rpc/GroupRPC.java
trunk/src/main/java/cc/kune/core/server/rpc/I18nRPC.java
trunk/src/main/java/cc/kune/core/server/rpc/RPC.java
trunk/src/main/java/cc/kune/core/server/rpc/SiteRPC.java
trunk/src/main/java/cc/kune/core/server/rpc/SocialNetworkRPC.java
trunk/src/main/java/cc/kune/core/server/rpc/UserRPC.java
trunk/src/main/java/cc/kune/gspace/client/resources/gSpaceArmorTheme.css
trunk/src/test/java/cc/kune/core/server/integration/site/UserServiceTest.java
Log:
Added Guice Persist Filter
Modified: trunk/src/main/java/cc/kune/core/client/sn/UserSNPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/UserSNPanel.java 2011-06-16 23:33:52 UTC (rev 1410)
+++ trunk/src/main/java/cc/kune/core/client/sn/UserSNPanel.java 2011-06-18 21:57:55 UTC (rev 1411)
@@ -44,6 +44,7 @@
setVisibleImpl(false);
mainTitle.setText(i18n.t("His/her network:"));
mainTitle.setTitle(i18n.t("This user buddies and groups where participes"));
+ firstCategoryLabel.setText(i18n.t("Buddies"));
setTooltip(firstCategoryLabel, i18n.t("This user buddies"));
sndCategoryLabel.setText(i18n.t("Participates in"));
setTooltip(sndCategoryLabel, i18n.t("Groups in which this user participates"));
@@ -72,7 +73,9 @@
@Override
public void addTextToBuddieList(final String text) {
- firstCategoryFlow.add(new Label(text));
+ final Label label = new Label(text);
+ label.addStyleName("k-sn-collabsCountlabel");
+ firstCategoryFlow.add(label);
}
@Override
Added: trunk/src/main/java/cc/kune/core/server/CustomPersistFilter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/CustomPersistFilter.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/server/CustomPersistFilter.java 2011-06-18 21:57:55 UTC (rev 1411)
@@ -0,0 +1,109 @@
+/**
+ * Copyright (C) 2010 Google, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package cc.kune.core.server;
+
+import java.io.IOException;
+
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+import com.google.inject.persist.PersistService;
+import com.google.inject.persist.UnitOfWork;
+
+/**
+ * Apply this filter to enable the HTTP Request unit of work and to have
+ * guice-persist manage the lifecycle of active units of work. The filter
+ * automatically starts and stops the relevant {@link PersistService} upon
+ * {@link javax.servlet.Filter#init(javax.servlet.FilterConfig)} and
+ * {@link javax.servlet.Filter#destroy()} respectively.
+ *
+ * <p>
+ * To be able to use the open session-in-view pattern (i.e. work per request),
+ * register this filter <b>once</b> in your Guice {@code ServletModule}. It is
+ * important that you register this filter before any other filter.
+ *
+ * For multiple providers, you should register this filter once per provider,
+ * inside a private module for each persist module installed (this must be the
+ * same private module where the specific persist module is itself installed).
+ *
+ * <p>
+ * Example configuration:
+ *
+ * <pre>
+ * {
+ * @code
+ * public class MyModule extends ServletModule {
+ * public void configureServlets() {
+ * filter("/*").through(PersistFilter.class);
+ *
+ * serve("/index.html").with(MyHtmlServlet.class);
+ * // Etc.
+ * }
+ * }
+ * }
+ * </pre>
+ * <p>
+ * This filter is thread safe and allows you to create injectors concurrently
+ * and deploy multiple guice-persist modules within the same injector, or even
+ * multiple injectors with persist modules withing the same JVM or web app.
+ * <p>
+ * This filter requires the Guice Servlet extension.
+ *
+ * @author Dhanji R. Prasanna (dhanji(a)gmail.com)
+ *
+ * (Custom PersistFilter.class modified for kune needs without
+ * persistence start/stop)
+ */
+
+@Singleton
+public class CustomPersistFilter implements Filter {
+ private final PersistService persistService;
+ private final UnitOfWork unitOfWork;
+
+ @Inject
+ public CustomPersistFilter(final UnitOfWork unitOfWork, final PersistService persistService) {
+ this.unitOfWork = unitOfWork;
+ this.persistService = persistService;
+ }
+
+ @Override
+ public void destroy() {
+ // persistService.stop();
+ }
+
+ @Override
+ public void doFilter(final ServletRequest servletRequest, final ServletResponse servletResponse,
+ final FilterChain filterChain) throws IOException, ServletException {
+
+ unitOfWork.begin();
+ try {
+ filterChain.doFilter(servletRequest, servletResponse);
+ } finally {
+ unitOfWork.end();
+ }
+ }
+
+ @Override
+ public void init(final FilterConfig filterConfig) throws ServletException {
+ // persistService.start();
+ }
+}
\ No newline at end of file
Property changes on: trunk/src/main/java/cc/kune/core/server/CustomPersistFilter.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: trunk/src/main/java/cc/kune/core/server/KuneRackModule.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/KuneRackModule.java 2011-06-16 23:33:52 UTC (rev 1410)
+++ trunk/src/main/java/cc/kune/core/server/KuneRackModule.java 2011-06-18 21:57:55 UTC (rev 1411)
@@ -146,7 +146,13 @@
private void installGuiceModules(final RackBuilder builder) {
// https://code.google.com/p/google-guice/wiki/ServletModule
- builder.use(new ServletModule());
+ builder.use(new ServletModule() {
+ @Override
+ protected void configureServlets() {
+ filter("/*").through(CustomPersistFilter.class);
+ super.configureServlets();
+ }
+ });
builder.use(new PlatformServerModule());
builder.use(new DocumentServerModule());
builder.use(new BlogServerModule());
Modified: trunk/src/main/java/cc/kune/core/server/auth/AuthenticatedMethodInterceptor.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/auth/AuthenticatedMethodInterceptor.java 2011-06-16 23:33:52 UTC (rev 1410)
+++ trunk/src/main/java/cc/kune/core/server/auth/AuthenticatedMethodInterceptor.java 2011-06-18 21:57:55 UTC (rev 1411)
@@ -32,7 +32,6 @@
import com.google.inject.Inject;
import com.google.inject.Provider;
-import com.google.inject.persist.UnitOfWork;
public class AuthenticatedMethodInterceptor implements MethodInterceptor {
@@ -45,17 +44,16 @@
Provider<SessionService> sessionServiceProvider;
// https://code.google.com/p/google-guice/wiki/Transactions
+ // @Inject
+ // private UnitOfWork unitOfWork;
@Inject
- private UnitOfWork unitOfWork;
-
- @Inject
Provider<UserSession> userSessionProvider;
@Override
public Object invoke(final MethodInvocation invocation) throws Throwable {
// https://code.google.com/p/google-guice/wiki/Transactions
- unitOfWork.end();
- unitOfWork.begin();
+ // unitOfWork.end();
+ // unitOfWork.begin();
try {
final Object[] arguments = invocation.getArguments();
// Some browsers getCookie returns "null" as String instead of null
@@ -95,7 +93,7 @@
final Object result = invocation.proceed();
return result;
} finally {
- unitOfWork.end();
+ // unitOfWork.end();
}
}
Modified: trunk/src/main/java/cc/kune/core/server/manager/UserManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/UserManager.java 2011-06-16 23:33:52 UTC (rev 1410)
+++ trunk/src/main/java/cc/kune/core/server/manager/UserManager.java 2011-06-18 21:57:55 UTC (rev 1411)
@@ -23,47 +23,50 @@
import cc.kune.core.client.errors.I18nNotFoundException;
import cc.kune.core.server.manager.impl.SearchResult;
+import cc.kune.core.shared.domain.UserSNetVisibility;
import cc.kune.domain.User;
import cc.kune.domain.utils.UserBuddiesData;
public interface UserManager {
- /**
- * CreateUser new method with language country and timezone params
- *
- * @param shortName
- * @param longName
- * @param email
- * @param passwd
- * @param timezone
- * @param country
- * @param language
- * @param timezone
- * @return User
- * @throws I18nNotFoundException
- */
- User createUser(String shortName, String longName, String email, String passwd, String language, String country,
- String timezone) throws I18nNotFoundException;
+ /**
+ * CreateUser new method with language country and timezone params
+ *
+ * @param shortName
+ * @param longName
+ * @param email
+ * @param passwd
+ * @param timezone
+ * @param country
+ * @param language
+ * @param timezone
+ * @return User
+ * @throws I18nNotFoundException
+ */
+ User createUser(String shortName, String longName, String email, String passwd, String language,
+ String country, String timezone) throws I18nNotFoundException;
- void createWaveAccount(String shortName, PasswordDigest passwdDigest);
+ void createWaveAccount(String shortName, PasswordDigest passwdDigest);
- /**
- * IMPORTANT: if userId == null, it returns User.UNKNOWN_USER
- *
- * @param userId
- * @return
- */
- User find(Long userId);
+ /**
+ * IMPORTANT: if userId == null, it returns User.UNKNOWN_USER
+ *
+ * @param userId
+ * @return
+ */
+ User find(Long userId);
- User findByShortname(String shortName);
+ User findByShortname(String shortName);
- UserBuddiesData getUserBuddies(String shortName);
+ UserBuddiesData getUserBuddies(String shortName);
- User login(String nickOrEmail, String passwd);
+ User login(String nickOrEmail, String passwd);
- void reIndex();
+ void reIndex();
- SearchResult<User> search(String search);
+ SearchResult<User> search(String search);
- SearchResult<User> search(String search, Integer firstResult, Integer maxResults);
+ SearchResult<User> search(String search, Integer firstResult, Integer maxResults);
+ void setSNetVisibility(User user, UserSNetVisibility visibility);
+
}
Modified: trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java 2011-06-16 23:33:52 UTC (rev 1410)
+++ trunk/src/main/java/cc/kune/core/server/manager/impl/UserManagerDefault.java 2011-06-18 21:57:55 UTC (rev 1411)
@@ -49,6 +49,7 @@
import cc.kune.core.server.xmpp.ChatConnection;
import cc.kune.core.server.xmpp.ChatException;
import cc.kune.core.server.xmpp.XmppManager;
+import cc.kune.core.shared.domain.UserSNetVisibility;
import cc.kune.core.shared.i18n.I18nTranslationService;
import cc.kune.domain.I18nCountry;
import cc.kune.domain.I18nLanguage;
@@ -283,4 +284,10 @@
return super.search(query, firstResult, maxResults);
}
+ @Override
+ public void setSNetVisibility(final User user, final UserSNetVisibility visibility) {
+ user.setSNetVisibility(visibility);
+ persist(user);
+ }
+
}
Modified: trunk/src/main/java/cc/kune/core/server/rpc/ContentRPC.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/rpc/ContentRPC.java 2011-06-16 23:33:52 UTC (rev 1410)
+++ trunk/src/main/java/cc/kune/core/server/rpc/ContentRPC.java 2011-06-18 21:57:55 UTC (rev 1411)
@@ -68,10 +68,8 @@
import com.google.inject.Inject;
import com.google.inject.Provider;
-import com.google.inject.Singleton;
import com.google.inject.persist.Transactional;
-@Singleton
public class ContentRPC implements ContentService, RPC {
private final AccessService accessService;
private final ChatManager chatManager;
Modified: trunk/src/main/java/cc/kune/core/server/rpc/GroupRPC.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/rpc/GroupRPC.java 2011-06-16 23:33:52 UTC (rev 1410)
+++ trunk/src/main/java/cc/kune/core/server/rpc/GroupRPC.java 2011-06-18 21:57:55 UTC (rev 1411)
@@ -43,10 +43,8 @@
import com.google.inject.Inject;
import com.google.inject.Provider;
-import com.google.inject.Singleton;
import com.google.inject.persist.Transactional;
-@Singleton
public class GroupRPC implements RPC, GroupService {
private final ContentManager contentManager;
private final GroupManager groupManager;
Modified: trunk/src/main/java/cc/kune/core/server/rpc/I18nRPC.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/rpc/I18nRPC.java 2011-06-16 23:33:52 UTC (rev 1410)
+++ trunk/src/main/java/cc/kune/core/server/rpc/I18nRPC.java 2011-06-18 21:57:55 UTC (rev 1411)
@@ -24,7 +24,6 @@
import javax.persistence.NoResultException;
import javax.servlet.http.HttpServletRequest;
-
import cc.kune.core.client.errors.DefaultException;
import cc.kune.core.client.errors.SessionExpiredException;
import cc.kune.core.client.rpcservices.I18nService;
@@ -39,95 +38,94 @@
import com.google.inject.Inject;
import com.google.inject.Provider;
-import com.google.inject.Singleton;
import com.google.inject.persist.Transactional;
-@Singleton
public class I18nRPC implements RPC, I18nService {
- private final I18nTranslationManager i18nTranslationManager;
- private final I18nLanguageManager languageManager;
- private final Mapper mapper;
- private final Provider<HttpServletRequest> requestProvider;
- private final Provider<UserSession> userSessionProvider;
+ private final I18nTranslationManager i18nTranslationManager;
+ private final I18nLanguageManager languageManager;
+ private final Mapper mapper;
+ private final Provider<HttpServletRequest> requestProvider;
+ private final Provider<UserSession> userSessionProvider;
- @Inject
- public I18nRPC(final Provider<HttpServletRequest> requestProvider, final Provider<UserSession> userSessionProvider,
- final I18nTranslationManager i18nTranslationManager, final I18nLanguageManager languageManager,
- final Mapper mapper) {
- this.requestProvider = requestProvider;
- this.userSessionProvider = userSessionProvider;
- this.i18nTranslationManager = i18nTranslationManager;
- this.languageManager = languageManager;
- this.mapper = mapper;
- }
+ @Inject
+ public I18nRPC(final Provider<HttpServletRequest> requestProvider,
+ final Provider<UserSession> userSessionProvider,
+ final I18nTranslationManager i18nTranslationManager, final I18nLanguageManager languageManager,
+ final Mapper mapper) {
+ this.requestProvider = requestProvider;
+ this.userSessionProvider = userSessionProvider;
+ this.i18nTranslationManager = i18nTranslationManager;
+ this.languageManager = languageManager;
+ this.mapper = mapper;
+ }
- @Override
- @Transactional
- public I18nLanguageDTO getInitialLanguage(final String localeParam) {
- String initLanguage;
- I18nLanguage lang;
- final UserSession userSession = getUserSession();
- if (localeParam != null) {
- initLanguage = localeParam;
+ @Override
+ @Transactional
+ public I18nLanguageDTO getInitialLanguage(final String localeParam) {
+ String initLanguage;
+ I18nLanguage lang;
+ final UserSession userSession = getUserSession();
+ if (localeParam != null) {
+ initLanguage = localeParam;
+ } else {
+ if (userSession.isUserLoggedIn()) {
+ initLanguage = userSession.getUser().getLanguage().getCode();
+ } else {
+ final String browserLang = requestProvider.get().getLocale().getLanguage();
+ if (browserLang != null) {
+ // Not logged, use browser language if possible
+ final String country = requestProvider.get().getLocale().getCountry();
+ if (browserLang.equals("pt") && country != null && country.equals("BR")) {
+ // FIXME: the only supported rfc 3066 lang supported
+ initLanguage = "pt-br";
+ } else {
+ initLanguage = browserLang;
+ }
} else {
- if (userSession.isUserLoggedIn()) {
- initLanguage = userSession.getUser().getLanguage().getCode();
- } else {
- final String browserLang = requestProvider.get().getLocale().getLanguage();
- if (browserLang != null) {
- // Not logged, use browser language if possible
- final String country = requestProvider.get().getLocale().getCountry();
- if (browserLang.equals("pt") && country != null && country.equals("BR")) {
- // FIXME: the only supported rfc 3066 lang supported
- initLanguage = "pt-br";
- } else {
- initLanguage = browserLang;
- }
- } else {
- initLanguage = I18nTranslation.DEFAULT_LANG;
- }
- }
+ initLanguage = I18nTranslation.DEFAULT_LANG;
}
- try {
- lang = languageManager.findByCode(initLanguage);
- } catch (final NoResultException e) {
- lang = languageManager.findByCode(I18nTranslation.DEFAULT_LANG);
- }
- return mapper.map(lang, I18nLanguageDTO.class);
+ }
}
-
- @Override
- @Transactional
- public HashMap<String, String> getLexicon(final String language) {
- return i18nTranslationManager.getLexicon(language);
+ try {
+ lang = languageManager.findByCode(initLanguage);
+ } catch (final NoResultException e) {
+ lang = languageManager.findByCode(I18nTranslation.DEFAULT_LANG);
}
+ return mapper.map(lang, I18nLanguageDTO.class);
+ }
- @Override
- @Transactional
- public String getTranslation(final String userHash, final String language, final String text) {
- String translation = null;
- try {
- translation = getTranslationWrapper(language, text);
- } catch (final SessionExpiredException e) {
- }
- return translation;
- }
+ @Override
+ @Transactional
+ public HashMap<String, String> getLexicon(final String language) {
+ return i18nTranslationManager.getLexicon(language);
+ }
- @Authenticated(mandatory = false)
- private String getTranslationWrapper(final String language, final String text) {
- return i18nTranslationManager.getTranslation(language, text);
+ @Override
+ @Transactional
+ public String getTranslation(final String userHash, final String language, final String text) {
+ String translation = null;
+ try {
+ translation = getTranslationWrapper(language, text);
+ } catch (final SessionExpiredException e) {
}
+ return translation;
+ }
- private UserSession getUserSession() {
- return userSessionProvider.get();
- }
+ @Authenticated(mandatory = false)
+ private String getTranslationWrapper(final String language, final String text) {
+ return i18nTranslationManager.getTranslation(language, text);
+ }
- @Override
- @Authenticated
- @Transactional
- public String setTranslation(final String userHash, final String id, final String translation)
- throws DefaultException {
- return i18nTranslationManager.setTranslation(id, translation);
- }
+ private UserSession getUserSession() {
+ return userSessionProvider.get();
+ }
+ @Override
+ @Authenticated
+ @Transactional
+ public String setTranslation(final String userHash, final String id, final String translation)
+ throws DefaultException {
+ return i18nTranslationManager.setTranslation(id, translation);
+ }
+
}
Modified: trunk/src/main/java/cc/kune/core/server/rpc/RPC.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/rpc/RPC.java 2011-06-16 23:33:52 UTC (rev 1410)
+++ trunk/src/main/java/cc/kune/core/server/rpc/RPC.java 2011-06-18 21:57:55 UTC (rev 1411)
@@ -19,6 +19,8 @@
*/
package cc.kune.core.server.rpc;
+import com.google.inject.Singleton;
+
/**
* marker interface (should not contain any method!)
*
@@ -32,6 +34,7 @@
* </ul>
*
*/
+@Singleton
public interface RPC {
}
Modified: trunk/src/main/java/cc/kune/core/server/rpc/SiteRPC.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/rpc/SiteRPC.java 2011-06-16 23:33:52 UTC (rev 1410)
+++ trunk/src/main/java/cc/kune/core/server/rpc/SiteRPC.java 2011-06-18 21:57:55 UTC (rev 1411)
@@ -41,10 +41,8 @@
import com.google.inject.Inject;
import com.google.inject.Provider;
-import com.google.inject.Singleton;
import com.google.inject.persist.Transactional;
-@Singleton
public class SiteRPC implements RPC, SiteService {
private final ChatProperties chatProperties;
private final I18nCountryManager countryManager;
Modified: trunk/src/main/java/cc/kune/core/server/rpc/SocialNetworkRPC.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/rpc/SocialNetworkRPC.java 2011-06-16 23:33:52 UTC (rev 1410)
+++ trunk/src/main/java/cc/kune/core/server/rpc/SocialNetworkRPC.java 2011-06-18 21:57:55 UTC (rev 1411)
@@ -37,196 +37,197 @@
import com.google.inject.Inject;
import com.google.inject.Provider;
-import com.google.inject.Singleton;
import com.google.inject.persist.Transactional;
-@Singleton
public class SocialNetworkRPC implements SocialNetworkService, RPC {
- private final GroupManager groupManager;
- private final Mapper mapper;
- private final SocialNetworkManager socialNetworkManager;
- private final Provider<UserSession> userSessionProvider;
+ private final GroupManager groupManager;
+ private final Mapper mapper;
+ private final SocialNetworkManager socialNetworkManager;
+ private final Provider<UserSession> userSessionProvider;
- @Inject
- public SocialNetworkRPC(final Provider<UserSession> userSessionProvider, final GroupManager groupManager,
- final SocialNetworkManager socialNetworkManager, final Mapper mapper) {
- this.userSessionProvider = userSessionProvider;
- this.groupManager = groupManager;
- this.socialNetworkManager = socialNetworkManager;
- this.mapper = mapper;
- }
+ @Inject
+ public SocialNetworkRPC(final Provider<UserSession> userSessionProvider,
+ final GroupManager groupManager, final SocialNetworkManager socialNetworkManager,
+ final Mapper mapper) {
+ this.userSessionProvider = userSessionProvider;
+ this.groupManager = groupManager;
+ this.socialNetworkManager = socialNetworkManager;
+ this.mapper = mapper;
+ }
- @Override
- @Authenticated
- @Authorizated(actionLevel = ActionLevel.group, accessRolRequired = AccessRol.Administrator)
- @Transactional
- public SocialNetworkDataDTO acceptJoinGroup(final String hash, final StateToken groupToken,
- final String groupToAcceptShortName) throws DefaultException {
- final UserSession userSession = getUserSession();
- final User userLogged = userSession.getUser();
- final Group group = groupManager.findByShortName(groupToken.getGroup());
- checkIsNotPersonalGroup(group);
- final Group groupToAccept = groupManager.findByShortName(groupToAcceptShortName);
- socialNetworkManager.acceptJoinGroup(userLogged, groupToAccept, group);
- return generateResponse(userLogged, group);
- }
+ @Override
+ @Authenticated
+ @Authorizated(actionLevel = ActionLevel.group, accessRolRequired = AccessRol.Administrator)
+ @Transactional
+ public SocialNetworkDataDTO acceptJoinGroup(final String hash, final StateToken groupToken,
+ final String groupToAcceptShortName) throws DefaultException {
+ final UserSession userSession = getUserSession();
+ final User userLogged = userSession.getUser();
+ final Group group = groupManager.findByShortName(groupToken.getGroup());
+ checkIsNotPersonalGroup(group);
+ final Group groupToAccept = groupManager.findByShortName(groupToAcceptShortName);
+ socialNetworkManager.acceptJoinGroup(userLogged, groupToAccept, group);
+ return generateResponse(userLogged, group);
+ }
- @Override
- @Authenticated
- @Authorizated(actionLevel = ActionLevel.group, accessRolRequired = AccessRol.Administrator)
- @Transactional
- public SocialNetworkDataDTO addAdminMember(final String hash, final StateToken groupToken,
- final String groupToAddShortName) throws DefaultException {
- final UserSession userSession = getUserSession();
- final User userLogged = userSession.getUser();
- final Group group = groupManager.findByShortName(groupToken.getGroup());
- checkIsNotPersonalGroup(group);
- final Group groupToAdd = groupManager.findByShortName(groupToAddShortName);
- socialNetworkManager.addGroupToAdmins(userLogged, groupToAdd, group);
- return generateResponse(userLogged, group);
- }
+ @Override
+ @Authenticated
+ @Authorizated(actionLevel = ActionLevel.group, accessRolRequired = AccessRol.Administrator)
+ @Transactional
+ public SocialNetworkDataDTO addAdminMember(final String hash, final StateToken groupToken,
+ final String groupToAddShortName) throws DefaultException {
+ final UserSession userSession = getUserSession();
+ final User userLogged = userSession.getUser();
+ final Group group = groupManager.findByShortName(groupToken.getGroup());
+ checkIsNotPersonalGroup(group);
+ final Group groupToAdd = groupManager.findByShortName(groupToAddShortName);
+ socialNetworkManager.addGroupToAdmins(userLogged, groupToAdd, group);
+ return generateResponse(userLogged, group);
+ }
- @Override
- @Authenticated
- @Authorizated(actionLevel = ActionLevel.group, accessRolRequired = AccessRol.Administrator)
- @Transactional
- public SocialNetworkDataDTO addCollabMember(final String hash, final StateToken groupToken,
- final String groupToAddShortName) throws DefaultException {
- final UserSession userSession = getUserSession();
- final User userLogged = userSession.getUser();
- final Group group = groupManager.findByShortName(groupToken.getGroup());
- checkIsNotPersonalGroup(group);
- final Group groupToAdd = groupManager.findByShortName(groupToAddShortName);
- socialNetworkManager.addGroupToCollabs(userLogged, groupToAdd, group);
- return generateResponse(userLogged, group);
- }
+ @Override
+ @Authenticated
+ @Authorizated(actionLevel = ActionLevel.group, accessRolRequired = AccessRol.Administrator)
+ @Transactional
+ public SocialNetworkDataDTO addCollabMember(final String hash, final StateToken groupToken,
+ final String groupToAddShortName) throws DefaultException {
+ final UserSession userSession = getUserSession();
+ final User userLogged = userSession.getUser();
+ final Group group = groupManager.findByShortName(groupToken.getGroup());
+ checkIsNotPersonalGroup(group);
+ final Group groupToAdd = groupManager.findByShortName(groupToAddShortName);
+ socialNetworkManager.addGroupToCollabs(userLogged, groupToAdd, group);
+ return generateResponse(userLogged, group);
+ }
- @Override
- @Authenticated
- @Authorizated(actionLevel = ActionLevel.group, accessRolRequired = AccessRol.Administrator)
- @Transactional
- public SocialNetworkDataDTO addViewerMember(final String hash, final StateToken groupToken,
- final String groupToAddShortName) throws DefaultException {
- final UserSession userSession = getUserSession();
- final User userLogged = userSession.getUser();
- final Group group = groupManager.findByShortName(groupToken.getGroup());
- checkIsNotPersonalGroup(group);
- final Group groupToAdd = groupManager.findByShortName(groupToAddShortName);
- socialNetworkManager.addGroupToViewers(userLogged, groupToAdd, group);
- return generateResponse(userLogged, group);
- }
+ @Override
+ @Authenticated
+ @Authorizated(actionLevel = ActionLevel.group, accessRolRequired = AccessRol.Administrator)
+ @Transactional
+ public SocialNetworkDataDTO addViewerMember(final String hash, final StateToken groupToken,
+ final String groupToAddShortName) throws DefaultException {
+ final UserSession userSession = getUserSession();
+ final User userLogged = userSession.getUser();
+ final Group group = groupManager.findByShortName(groupToken.getGroup());
+ checkIsNotPersonalGroup(group);
+ final Group groupToAdd = groupManager.findByShortName(groupToAddShortName);
+ socialNetworkManager.addGroupToViewers(userLogged, groupToAdd, group);
+ return generateResponse(userLogged, group);
+ }
- private void checkIsNotPersonalGroup(final Group group) {
- if (group.isPersonal()) {
- throw new DefaultException();
- }
- ;
+ private void checkIsNotPersonalGroup(final Group group) {
+ if (group.isPersonal()) {
+ throw new DefaultException();
}
+ ;
+ }
- @Override
- @Authenticated
- @Authorizated(actionLevel = ActionLevel.group, accessRolRequired = AccessRol.Administrator)
- @Transactional
- public SocialNetworkDataDTO deleteMember(final String hash, final StateToken groupToken,
- final String groupToDeleleShortName) throws DefaultException {
- final UserSession userSession = getUserSession();
- final User userLogged = userSession.getUser();
- final Group group = groupManager.findByShortName(groupToken.getGroup());
- checkIsNotPersonalGroup(group);
- final Group groupToDelete = groupManager.findByShortName(groupToDeleleShortName);
- socialNetworkManager.deleteMember(userLogged, groupToDelete, group);
- return generateResponse(userLogged, group);
- }
+ @Override
+ @Authenticated
+ @Authorizated(actionLevel = ActionLevel.group, accessRolRequired = AccessRol.Administrator)
+ @Transactional
+ public SocialNetworkDataDTO deleteMember(final String hash, final StateToken groupToken,
+ final String groupToDeleleShortName) throws DefaultException {
+ final UserSession userSession = getUserSession();
+ final User userLogged = userSession.getUser();
+ final Group group = groupManager.findByShortName(groupToken.getGroup());
+ checkIsNotPersonalGroup(group);
+ final Group groupToDelete = groupManager.findByShortName(groupToDeleleShortName);
+ socialNetworkManager.deleteMember(userLogged, groupToDelete, group);
+ return generateResponse(userLogged, group);
+ }
- @Override
- @Authenticated
- @Authorizated(actionLevel = ActionLevel.group, accessRolRequired = AccessRol.Administrator)
- @Transactional
- public SocialNetworkDataDTO denyJoinGroup(final String hash, final StateToken groupToken,
- final String groupToDenyShortName) throws DefaultException {
- final UserSession userSession = getUserSession();
- final User userLogged = userSession.getUser();
- final Group group = groupManager.findByShortName(groupToken.getGroup());
- checkIsNotPersonalGroup(group);
- final Group groupToDenyJoin = groupManager.findByShortName(groupToDenyShortName);
- socialNetworkManager.denyJoinGroup(userLogged, groupToDenyJoin, group);
- return generateResponse(userLogged, group);
- }
+ @Override
+ @Authenticated
+ @Authorizated(actionLevel = ActionLevel.group, accessRolRequired = AccessRol.Administrator)
+ @Transactional
+ public SocialNetworkDataDTO denyJoinGroup(final String hash, final StateToken groupToken,
+ final String groupToDenyShortName) throws DefaultException {
+ final UserSession userSession = getUserSession();
+ final User userLogged = userSession.getUser();
+ final Group group = groupManager.findByShortName(groupToken.getGroup());
+ checkIsNotPersonalGroup(group);
+ final Group groupToDenyJoin = groupManager.findByShortName(groupToDenyShortName);
+ socialNetworkManager.denyJoinGroup(userLogged, groupToDenyJoin, group);
+ return generateResponse(userLogged, group);
+ }
- private SocialNetworkDataDTO generateResponse(final User userLogged, final Group group) {
- return mapper.map(socialNetworkManager.getSocialNetworkData(userLogged, group), SocialNetworkDataDTO.class);
- }
+ private SocialNetworkDataDTO generateResponse(final User userLogged, final Group group) {
+ return mapper.map(socialNetworkManager.getSocialNetworkData(userLogged, group),
+ SocialNetworkDataDTO.class);
+ }
- @Override
- @Authenticated(mandatory = false)
- // At least you can access as Viewer to the Group
- @Authorizated(actionLevel = ActionLevel.group, accessRolRequired = AccessRol.Viewer)
- @Transactional
- public SocialNetworkDataDTO getSocialNetwork(final String hash, final StateToken groupToken)
- throws DefaultException {
- final UserSession userSession = getUserSession();
- final User user = userSession.getUser();
- final Group group = groupManager.findByShortName(groupToken.getGroup());
- return generateResponse(user, group);
- }
+ @Override
+ @Authenticated(mandatory = false)
+ // At least you can access as Viewer to the Group
+ @Authorizated(actionLevel = ActionLevel.group, accessRolRequired = AccessRol.Viewer)
+ @Transactional
+ public SocialNetworkDataDTO getSocialNetwork(final String hash, final StateToken groupToken)
+ throws DefaultException {
+ final UserSession userSession = getUserSession();
+ final User user = userSession.getUser();
+ final Group group = groupManager.findByShortName(groupToken.getGroup());
+ return generateResponse(user, group);
+ }
- private UserSession getUserSession() {
- return userSessionProvider.get();
- }
+ private UserSession getUserSession() {
+ return userSessionProvider.get();
+ }
- @Override
- @Authenticated
- @Transactional
- public SocialNetworkRequestResult requestJoinGroup(final String hash, final StateToken groupToken)
- throws DefaultException {
- final UserSession userSession = getUserSession();
- final User user = userSession.getUser();
- final Group group = groupManager.findByShortName(groupToken.getGroup());
- checkIsNotPersonalGroup(group);
- return socialNetworkManager.requestToJoin(user, group);
- }
+ @Override
+ @Authenticated
+ @Transactional
+ public SocialNetworkRequestResult requestJoinGroup(final String hash, final StateToken groupToken)
+ throws DefaultException {
+ final UserSession userSession = getUserSession();
+ final User user = userSession.getUser();
+ final Group group = groupManager.findByShortName(groupToken.getGroup());
+ checkIsNotPersonalGroup(group);
+ return socialNetworkManager.requestToJoin(user, group);
+ }
- @Override
- @Authenticated
- @Authorizated(actionLevel = ActionLevel.group, accessRolRequired = AccessRol.Administrator)
- @Transactional
- public SocialNetworkDataDTO setAdminAsCollab(final String hash, final StateToken groupToken,
- final String groupToSetCollabShortName) throws DefaultException {
- final UserSession userSession = getUserSession();
- final User userLogged = userSession.getUser();
- final Group group = groupManager.findByShortName(groupToken.getGroup());
- checkIsNotPersonalGroup(group);
- final Group groupToSetCollab = groupManager.findByShortName(groupToSetCollabShortName);
- socialNetworkManager.setAdminAsCollab(userLogged, groupToSetCollab, group);
- return generateResponse(userLogged, group);
- }
+ @Override
+ @Authenticated
+ @Authorizated(actionLevel = ActionLevel.group, accessRolRequired = AccessRol.Administrator)
+ @Transactional
+ public SocialNetworkDataDTO setAdminAsCollab(final String hash, final StateToken groupToken,
+ final String groupToSetCollabShortName) throws DefaultException {
+ final UserSession userSession = getUserSession();
+ final User userLogged = userSession.getUser();
+ final Group group = groupManager.findByShortName(groupToken.getGroup());
+ checkIsNotPersonalGroup(group);
+ final Group groupToSetCollab = groupManager.findByShortName(groupToSetCollabShortName);
+ socialNetworkManager.setAdminAsCollab(userLogged, groupToSetCollab, group);
+ return generateResponse(userLogged, group);
+ }
- @Override
- @Authenticated
- @Authorizated(actionLevel = ActionLevel.group, accessRolRequired = AccessRol.Administrator)
- @Transactional
- public SocialNetworkDataDTO setCollabAsAdmin(final String hash, final StateToken groupToken,
- final String groupToSetAdminShortName) throws DefaultException {
- final UserSession userSession = getUserSession();
- final User userLogged = userSession.getUser();
- final Group group = groupManager.findByShortName(groupToken.getGroup());
- checkIsNotPersonalGroup(group);
- final Group groupToSetAdmin = groupManager.findByShortName(groupToSetAdminShortName);
- socialNetworkManager.setCollabAsAdmin(userLogged, groupToSetAdmin, group);
- return generateResponse(userLogged, group);
- }
+ @Override
+ @Authenticated
+ @Authorizated(actionLevel = ActionLevel.group, accessRolRequired = AccessRol.Administrator)
+ @Transactional
+ public SocialNetworkDataDTO setCollabAsAdmin(final String hash, final StateToken groupToken,
+ final String groupToSetAdminShortName) throws DefaultException {
+ final UserSession userSession = getUserSession();
+ final User userLogged = userSession.getUser();
+ final Group group = groupManager.findByShortName(groupToken.getGroup());
+ checkIsNotPersonalGroup(group);
+ final Group groupToSetAdmin = groupManager.findByShortName(groupToSetAdminShortName);
+ socialNetworkManager.setCollabAsAdmin(userLogged, groupToSetAdmin, group);
+ return generateResponse(userLogged, group);
+ }
- @Override
- @Authenticated
- @Transactional
- public SocialNetworkDataDTO unJoinGroup(final String hash, final StateToken groupToken) throws DefaultException {
- final UserSession userSession = getUserSession();
- final User userLogged = userSession.getUser();
- final Group group = groupManager.findByShortName(groupToken.getGroup());
- checkIsNotPersonalGroup(group);
- socialNetworkManager.unJoinGroup(userLogged.getUserGroup(), group);
- return generateResponse(userLogged, group);
- }
+ @Override
+ @Authenticated
+ @Transactional
+ public SocialNetworkDataDTO unJoinGroup(final String hash, final StateToken groupToken)
+ throws DefaultException {
+ final UserSession userSession = getUserSession();
+ final User userLogged = userSession.getUser();
+ final Group group = groupManager.findByShortName(groupToken.getGroup());
+ checkIsNotPersonalGroup(group);
+ socialNetworkManager.unJoinGroup(userLogged.getUserGroup(), group);
+ return generateResponse(userLogged, group);
+ }
}
Modified: trunk/src/main/java/cc/kune/core/server/rpc/UserRPC.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/rpc/UserRPC.java 2011-06-16 23:33:52 UTC (rev 1410)
+++ trunk/src/main/java/cc/kune/core/server/rpc/UserRPC.java 2011-06-18 21:57:55 UTC (rev 1411)
@@ -54,11 +54,9 @@
import com.google.inject.Inject;
import com.google.inject.Provider;
-import com.google.inject.Singleton;
import com.google.inject.name.Named;
import com.google.inject.persist.Transactional;
-@Singleton
public class UserRPC implements RPC, UserService {
private final ContentManager contentManager;
@@ -200,6 +198,6 @@
if (!groupToken.getGroup().equals(user.getShortName())) {
throw new AccessViolationException();
}
- user.setSNetVisibility(visibility);
+ userManager.setSNetVisibility(user, visibility);
}
}
Modified: trunk/src/main/java/cc/kune/gspace/client/resources/gSpaceArmorTheme.css
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/resources/gSpaceArmorTheme.css 2011-06-16 23:33:52 UTC (rev 1410)
+++ trunk/src/main/java/cc/kune/gspace/client/resources/gSpaceArmorTheme.css 2011-06-18 21:57:55 UTC (rev 1411)
@@ -22,7 +22,7 @@
}
.k-sn-maintitle {
- color: bc3;
+ color: c5;
}
.entityToolsNorth span ,.k-sn-deck div {
Modified: trunk/src/test/java/cc/kune/core/server/integration/site/UserServiceTest.java
===================================================================
--- trunk/src/test/java/cc/kune/core/server/integration/site/UserServiceTest.java 2011-06-16 23:33:52 UTC (rev 1410)
+++ trunk/src/test/java/cc/kune/core/server/integration/site/UserServiceTest.java 2011-06-18 21:57:55 UTC (rev 1411)
@@ -37,12 +37,14 @@
import cc.kune.core.server.manager.I18nLanguageManager;
import cc.kune.core.server.mapper.Mapper;
import cc.kune.core.server.properties.DatabaseProperties;
+import cc.kune.core.server.rpc.SocialNetworkRPC;
import cc.kune.core.server.users.UserInfo;
import cc.kune.core.server.users.UserInfoService;
import cc.kune.core.shared.domain.UserSNetVisibility;
import cc.kune.core.shared.dto.GroupDTO;
import cc.kune.core.shared.dto.I18nCountryDTO;
import cc.kune.core.shared.dto.I18nLanguageDTO;
+import cc.kune.core.shared.dto.SocialNetworkDataDTO;
import cc.kune.core.shared.dto.SubscriptionMode;
import cc.kune.core.shared.dto.TimeZoneDTO;
import cc.kune.core.shared.dto.UserDTO;
@@ -50,105 +52,113 @@
import cc.kune.domain.Group;
import com.google.inject.Inject;
+import com.google.inject.persist.UnitOfWork;
public class UserServiceTest extends IntegrationTest {
- private I18nCountryDTO country;
- @Inject
- I18nLanguageManager i18nLangManager;
- private I18nLanguageDTO lang;
- @Inject
- Mapper mapper;
- @Inject
- DatabaseProperties properties;
- private TimeZoneDTO timezone;
- @Inject
- UserInfoService userInfoService;
- @Inject
- UserService userService;
+ private I18nCountryDTO country;
+ @Inject
+ I18nLanguageManager i18nLangManager;
+ private I18nLanguageDTO lang;
+ @Inject
+ Mapper mapper;
+ @Inject
+ DatabaseProperties properties;
+ @Inject
+ SocialNetworkRPC sn;
+ private TimeZoneDTO timezone;
+ @Inject
+ UnitOfWork unitOfWork;
+ @Inject
+ UserInfoService userInfoService;
+ @Inject
+ UserService userService;
- private void assertEqualGroupLists(final List<GroupDTO> listDTO, final List<Group> list) {
- assertEquals(listDTO.size(), list.size());
- for (int i = 0; i < listDTO.size(); i++) {
- final Object object = listDTO.get(i);
- assertEquals(GroupDTO.class, object.getClass());
- final GroupDTO d = (GroupDTO) object;
- final Group l = list.get(i);
- assertNotNull(d);
- assertNotNull(l);
- final GroupDTO map = mapper.map(l, GroupDTO.class);
- assertEquals(map.getShortName(), d.getShortName());
- }
+ private void assertEqualGroupLists(final List<GroupDTO> listDTO, final List<Group> list) {
+ assertEquals(listDTO.size(), list.size());
+ for (int i = 0; i < listDTO.size(); i++) {
+ final Object object = listDTO.get(i);
+ assertEquals(GroupDTO.class, object.getClass());
+ final GroupDTO d = (GroupDTO) object;
+ final Group l = list.get(i);
+ assertNotNull(d);
+ assertNotNull(l);
+ final GroupDTO map = mapper.map(l, GroupDTO.class);
+ assertEquals(map.getShortName(), d.getShortName());
}
+ }
- @Test(expected = EmailAddressInUseException.class)
- public void createUserExistingEmailFails() throws Exception {
- assertNull(session.getUser().getId());
- final UserDTO user = new UserDTO("test", "test", "123456", properties.getAdminEmail(), lang, country, timezone,
- null, true, SubscriptionMode.manual, "blue");
- userService.createUser(user, false);
- }
+ @Test(expected = EmailAddressInUseException.class)
+ public void createUserExistingEmailFails() throws Exception {
+ assertNull(session.getUser().getId());
+ final UserDTO user = new UserDTO("test", "test", "123456", properties.getAdminEmail(), lang,
+ country, timezone, null, true, SubscriptionMode.manual, "blue");
+ userService.createUser(user, false);
+ }
- @Test(expected = GroupNameInUseException.class)
- public void createUserExistingNameFails() throws Exception {
- assertNull(session.getUser().getId());
- final UserDTO user = new UserDTO("test", properties.getAdminShortName(), "123456", "example1234(a)example.com",
- lang, country, timezone, null, true, SubscriptionMode.manual, "blue");
- userService.createUser(user, false);
- }
+ @Test(expected = GroupNameInUseException.class)
+ public void createUserExistingNameFails() throws Exception {
+ assertNull(session.getUser().getId());
+ final UserDTO user = new UserDTO("test", properties.getAdminShortName(), "123456",
+ "example1234(a)example.com", lang, country, timezone, null, true, SubscriptionMode.manual, "blue");
+ userService.createUser(user, false);
+ }
- @Before
- public void init() {
- new IntegrationTestHelper(this);
- lang = new I18nLanguageDTO();
- country = new I18nCountryDTO();
- timezone = new TimeZoneDTO();
- lang.setCode("en");
- country.setCode("GB");
- timezone.setId("GMT");
- }
+ @Before
+ public void init() {
+ new IntegrationTestHelper(this);
+ lang = new I18nLanguageDTO();
+ country = new I18nCountryDTO();
+ timezone = new TimeZoneDTO();
+ lang.setCode("en");
+ country.setCode("GB");
+ timezone.setId("GMT");
+ }
- @Test(expected = SessionExpiredException.class)
- public void testReloadUserInfoNotLogged() throws Exception {
- assertNull(session.getUser().getId());
- userService.reloadUserInfo("AndOldUserHash");
- }
+ @Test(expected = SessionExpiredException.class)
+ public void testReloadUserInfoNotLogged() throws Exception {
+ assertNull(session.getUser().getId());
+ userService.reloadUserInfo("AndOldUserHash");
+ }
- @Test
- public void testSetVisibility() throws Exception {
- assertNull(session.getUser().getId());
- doLogin();
- assertNotNull(session.getUser().getId());
- for (final UserSNetVisibility visibility : UserSNetVisibility.values()) {
- userService.setBuddiesVisibility(token, session.getUser().getStateToken(), visibility);
- assertEquals(visibility, session.getUser().getSNetVisibility());
- }
+ @Test
+ public void testSetVisibility() throws Exception {
+ assertNull(session.getUser().getId());
+ doLogin();
+ assertNotNull(session.getUser().getId());
+ for (final UserSNetVisibility visibility : UserSNetVisibility.values()) {
+ userService.setBuddiesVisibility(token, session.getUser().getStateToken(), visibility);
+ final SocialNetworkDataDTO snRetrieved = sn.getSocialNetwork(token,
+ session.getUser().getStateToken());
+ assertEquals(visibility, snRetrieved.getUserBuddiesVisibility());
+ assertEquals(visibility, session.getUser().getSNetVisibility());
}
+ }
- @Test
- public void testSiteEmailLogin() throws Exception {
- assertNull(session.getUser().getId());
- userService.login(properties.getAdminEmail(), properties.getAdminPassword(), token);
- assertNotNull(session.getUser().getId());
- }
+ @Test
+ public void testSiteEmailLogin() throws Exception {
+ assertNull(session.getUser().getId());
+ userService.login(properties.getAdminEmail(), properties.getAdminPassword(), token);
+ assertNotNull(session.getUser().getId());
+ }
- @Test
- public void testSiteNameLogin() throws Exception {
- assertNull(session.getUser().getId());
- userService.login(properties.getAdminShortName(), properties.getAdminPassword(), token);
- assertNotNull(session.getUser().getId());
- }
+ @Test
+ public void testSiteNameLogin() throws Exception {
+ assertNull(session.getUser().getId());
+ userService.login(properties.getAdminShortName(), properties.getAdminPassword(), token);
+ assertNotNull(session.getUser().getId());
+ }
- @Test
- public void testUserInfo() throws Exception {
- doLogin();
- final UserInfo userInfo = userInfoService.buildInfo(session.getUser(), session.getHash());
+ @Test
+ public void testUserInfo() throws Exception {
+ doLogin();
+ final UserInfo userInfo = userInfoService.buildInfo(session.getUser(), session.getHash());
- final UserInfoDTO userInfoDTO = mapper.map(userInfo, UserInfoDTO.class);
- assertEquals(userInfo.getName(), userInfoDTO.getName());
- assertEquals(userInfo.getChatName(), userInfoDTO.getChatName());
- final List<Group> adminsGroup = userInfo.getGroupsIsAdmin();
- final List<GroupDTO> adminsGroupDTO = userInfoDTO.getGroupsIsAdmin();
- assertEqualGroupLists(adminsGroupDTO, adminsGroup);
- }
+ final UserInfoDTO userInfoDTO = mapper.map(userInfo, UserInfoDTO.class);
+ assertEquals(userInfo.getName(), userInfoDTO.getName());
+ assertEquals(userInfo.getChatName(), userInfoDTO.getChatName());
+ final List<Group> adminsGroup = userInfo.getGroupsIsAdmin();
+ final List<GroupDTO> adminsGroupDTO = userInfoDTO.getGroupsIsAdmin();
+ assertEqualGroupLists(adminsGroupDTO, adminsGroup);
+ }
}
1
0
Author: vjrj_
Date: 2011-06-17 01:33:52 +0200 (Fri, 17 Jun 2011)
New Revision: 1410
Added:
trunk/img/webtemplate/highcontrast.png
Removed:
trunk/src/main/java/org/ourproject/kune/chat/KuneChat.gwt.xml
trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientActions.java
trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientTool.java
trunk/src/main/java/org/ourproject/kune/chat/client/ChatConnectionOptions.java
trunk/src/main/java/org/ourproject/kune/chat/client/ChatEngine.java
trunk/src/main/java/org/ourproject/kune/chat/client/ChatEngineDefault.java
trunk/src/main/java/org/ourproject/kune/chat/client/ChatMessages.java
trunk/src/main/java/org/ourproject/kune/chat/client/cnt/
trunk/src/main/java/org/ourproject/kune/chat/client/ctx/ChatContext.java
trunk/src/main/java/org/ourproject/kune/chat/client/ctx/ChatContextPresenter.java
trunk/src/main/java/org/ourproject/kune/chat/client/ctx/room/
trunk/src/main/java/org/ourproject/kune/chat/public/
trunk/src/test/java/org/ourproject/kune/chat/ChatToolTest.java
trunk/src/test/java/org/ourproject/kune/chat/server/
Modified:
trunk/img/webtemplate/theme-palettes.svg
trunk/src/main/java/cc/kune/chat/client/actions/NewRoomBtn.java
trunk/src/main/java/cc/kune/common/client/ui/IconLabel.java
trunk/src/main/java/cc/kune/core/server/auth/AuthenticatedMethodInterceptor.java
trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConfPanel.java
trunk/src/main/java/cc/kune/gspace/client/resources/gSpaceArmorTheme.css
trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeSelectorPresenter.java
trunk/src/main/resources/kune.properties
Log:
more styles and fixes
Added: trunk/img/webtemplate/highcontrast.png
===================================================================
(Binary files differ)
Property changes on: trunk/img/webtemplate/highcontrast.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: trunk/img/webtemplate/theme-palettes.svg
===================================================================
--- trunk/img/webtemplate/theme-palettes.svg 2011-06-16 23:29:11 UTC (rev 1409)
+++ trunk/img/webtemplate/theme-palettes.svg 2011-06-16 23:33:52 UTC (rev 1410)
@@ -26,15 +26,15 @@
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:zoom="1"
- inkscape:cx="459.51336"
- inkscape:cy="233.97795"
+ inkscape:cx="346.17698"
+ inkscape:cy="-166.02205"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1078"
inkscape:window-height="807"
- inkscape:window-x="3"
- inkscape:window-y="1042"
+ inkscape:window-x="4"
+ inkscape:window-y="1044"
inkscape:window-maximized="0" />
<metadata
id="metadata7388">
@@ -53,152 +53,152 @@
inkscape:groupmode="layer"
id="layer1">
<rect
- y="826.14136"
- x="768.34814"
+ y="1016.1414"
+ x="395.34814"
height="40"
width="150"
id="rect7955-1"
- style="color:#000000;fill:#ffffff;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ style="color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:0.73427981;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<rect
- style="color:#000000;fill:#ffffff;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ style="color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:0.73427981;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect7957-6"
width="150"
height="40"
- x="768.34814"
- y="866.14136" />
+ x="395.34814"
+ y="1056.1414" />
<rect
- y="906.14136"
- x="768.34814"
+ y="1096.1414"
+ x="395.34814"
height="40"
width="150"
id="rect7959-4"
- style="color:#000000;fill:#e6e6e6;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ style="color:#000000;fill:#e6e6e6;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:0.73427981;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<rect
- style="color:#000000;fill:#ffffff;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ style="color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:0.73427981;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect7961-9"
width="150"
height="40"
- x="768.34814"
- y="946.14136" />
+ x="395.34814"
+ y="1136.1414" />
<text
sodipodi:linespacing="125%"
id="text7963-2"
- y="851.14136"
- x="782.34814"
- style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ y="1041.1414"
+ x="409.34814"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
xml:space="preserve"><tspan
- y="851.14136"
- x="782.34814"
+ y="1041.1414"
+ x="409.34814"
id="tspan7965-7"
sodipodi:role="line">lorem </tspan></text>
<text
xml:space="preserve"
- style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
- x="782.34814"
- y="891.14136"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="409.34814"
+ y="1081.1414"
id="text7967-6"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan7969-5"
- x="782.34814"
- y="891.14136">lorem </tspan></text>
+ x="409.34814"
+ y="1081.1414">lorem </tspan></text>
<text
sodipodi:linespacing="125%"
id="text7971-2"
- y="931.14136"
- x="782.34814"
- style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ y="1121.1414"
+ x="409.34814"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
xml:space="preserve"><tspan
- y="931.14136"
- x="782.34814"
+ y="1121.1414"
+ x="409.34814"
id="tspan7973-1"
sodipodi:role="line"><tspan
id="tspan7975-5"
- style="font-weight:bold;-inkscape-font-specification:Ubuntu Bold;fill:#000000">lorem </tspan></tspan></text>
+ style="font-weight:bold;fill:#000000;-inkscape-font-specification:Ubuntu Bold">lorem </tspan></tspan></text>
<text
xml:space="preserve"
- style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
- x="782.34814"
- y="971.14136"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="409.34814"
+ y="1161.1414"
id="text7977-4"
sodipodi:linespacing="125%"><tspan
- style="font-weight:bold;-inkscape-font-specification:Ubuntu Bold;fill:#000000"
+ style="font-weight:bold;fill:#000000;-inkscape-font-specification:Ubuntu Bold"
sodipodi:role="line"
id="tspan7979-0"
- x="782.34814"
- y="971.14136">lorem </tspan></text>
+ x="409.34814"
+ y="1161.1414">lorem </tspan></text>
<rect
- style="color:#000000;fill:#ffffff;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ style="color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:0.73427981;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect7981-2"
width="150"
height="40"
- x="921.34814"
- y="826.14136" />
+ x="548.34814"
+ y="1016.1414" />
<rect
- y="866.14136"
- x="921.34814"
+ y="1056.1414"
+ x="548.34814"
height="40"
width="150"
id="rect7983-4"
- style="color:#000000;fill:#e6e6e6;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ style="color:#000000;fill:#e6e6e6;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:0.73427981;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<rect
- style="color:#000000;fill:#ffffff;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ style="color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:0.73427981;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect7985-7"
width="150"
height="40"
- x="921.34814"
- y="906.14136" />
+ x="548.34814"
+ y="1096.1414" />
<rect
- y="946.14136"
- x="921.34814"
+ y="1136.1414"
+ x="548.34814"
height="40"
width="150"
id="rect7987-4"
- style="color:#000000;fill:#ffffff;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ style="color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:0.73427981;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<text
sodipodi:linespacing="125%"
id="text7989-2"
- y="891.14136"
- x="935.34814"
- style="font-size:18px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold"
+ y="1081.1414"
+ x="562.34814"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold"
xml:space="preserve"><tspan
- y="891.14136"
- x="935.34814"
+ y="1081.1414"
+ x="562.34814"
id="tspan7991-6"
sodipodi:role="line">lorem </tspan></text>
<text
xml:space="preserve"
- style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
- x="934.34814"
- y="933.14136"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="561.34814"
+ y="1123.1414"
id="text7993-3"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan7995-9"
- x="934.34814"
- y="933.14136">lorem </tspan></text>
+ x="561.34814"
+ y="1123.1414">lorem </tspan></text>
<text
sodipodi:linespacing="125%"
id="text7997-0"
- y="971.14136"
- x="935.34814"
- style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ y="1161.1414"
+ x="562.34814"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
xml:space="preserve"><tspan
- y="971.14136"
- x="935.34814"
+ y="1161.1414"
+ x="562.34814"
id="tspan7999-6"
sodipodi:role="line">lorem </tspan></text>
<text
xml:space="preserve"
- style="font-size:28px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold"
- x="933.34814"
- y="855.14136"
+ style="font-size:28px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold"
+ x="560.34814"
+ y="1045.1414"
id="text8001-3"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan8003-9"
- x="933.34814"
- y="855.14136">lorem </tspan></text>
+ x="560.34814"
+ y="1045.1414">lorem </tspan></text>
<rect
style="color:#000000;fill:#000000;fill-opacity:0;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect7391-2"
@@ -207,11 +207,7 @@
x="24"
y="25.362183" />
<image
- xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAAAoCAYAAAAcwQPnAAAABHNCSVQICAgIfAhkiAAAAIlJREFU
-eJzt0kENgDAAwMAx8/OCKESgYCbWkJA7BX30eu71Djhsfh3APxmLhLFIGIuEsUgYi4SxSBiLhLFI
-GIuEsUgYi4SxSBiLhLFIGIuEsUgYi4SxSBiLhLFIGIuEsUgYi4SxSBiLhLFIGIuEsUgYi4SxSBiL
-hLFIGIuEsUgYi4SxSBiLhLFIbCnoA1F5o8FjAAAAAElFTkSuQmCC
-"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAAAoCAYAAAAcwQPnAAAABHNCSVQICAgIfAhkiAAAAIlJREFU eJzt0kENgDAAwMAx8/OCKESgYCbWkJA7BX30eu71Djhsfh3APxmLhLFIGIuEsUgYi4SxSBiLhLFI GIuEsUgYi4SxSBiLhLFIGIuEsUgYi4SxSBiLhLFIGIuEsUgYi4SxSBiLhLFIGIuEsUgYi4SxSBiL hLFIGIuEsUgYi4SxSBiLhLFIbCnoA1F5o8FjAAAAAElFTkSuQmCC "
width="150"
height="40"
transform="translate(24,25.362183)"
@@ -505,7 +501,7 @@
x="189"
y="254.36218">lorem </tspan></text>
<rect
- style="color:#000000;fill:#ffc0c0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ style="color:#000000;fill:#de8787;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect7605"
width="150"
height="40"
@@ -517,7 +513,7 @@
height="40"
width="150"
id="rect7607"
- style="color:#000000;fill:#de8888;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ style="color:#000000;fill:#d35f5f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<rect
style="color:#000000;fill:#c04141;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect7609"
@@ -799,7 +795,7 @@
x="189"
y="654.36218">lorem </tspan></text>
<rect
- style="color:#000000;fill:#f6f1de;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ style="color:#000000;fill:#ffe680;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect7705"
width="150"
height="40"
@@ -1981,5 +1977,347 @@
x="919"
id="tspan3370"
sodipodi:role="line">lorem </tspan></text>
+ <rect
+ y="1005.3622"
+ x="24"
+ height="40"
+ width="150"
+ id="rect3367"
+ style="color:#000000;fill:#000055;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427981;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/highcontrast.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ style="color:#000000;fill:#162d50;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427981;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect3369"
+ width="150"
+ height="40"
+ x="24"
+ y="1045.3622"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/highcontrast.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ y="1085.3622"
+ x="24"
+ height="40"
+ width="150"
+ id="rect3371"
+ style="color:#000000;fill:#00002b;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427981;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/highcontrast.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ style="color:#000000;fill:#000055;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427981;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect3373"
+ width="150"
+ height="40"
+ x="24"
+ y="1125.3622"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/highcontrast.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text3375"
+ y="1030.3622"
+ x="38"
+ style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold"
+ xml:space="preserve"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/highcontrast.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"><tspan
+ y="1030.3622"
+ x="38"
+ id="tspan3377"
+ sodipodi:role="line">lorem </tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold"
+ x="38"
+ y="1070.3622"
+ id="text3379"
+ sodipodi:linespacing="125%"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/highcontrast.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"><tspan
+ sodipodi:role="line"
+ id="tspan3381"
+ x="38"
+ y="1070.3622">lorem </tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text3383"
+ y="1110.3622"
+ x="38"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/highcontrast.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"><tspan
+ y="1110.3622"
+ x="38"
+ id="tspan3385"
+ sodipodi:role="line"><tspan
+ id="tspan3387"
+ style="font-weight:bold;-inkscape-font-specification:Ubuntu Bold">lorem </tspan></tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="38"
+ y="1150.3622"
+ id="text3389"
+ sodipodi:linespacing="125%"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/highcontrast.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"><tspan
+ style="font-weight:bold;-inkscape-font-specification:Ubuntu Bold"
+ sodipodi:role="line"
+ id="tspan3391"
+ x="38"
+ y="1150.3622">lorem </tspan></text>
+ <rect
+ style="color:#000000;fill:#0000aa;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427981;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect3393"
+ width="150"
+ height="40"
+ x="177"
+ y="1005.3622"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/highcontrast.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ y="1045.3622"
+ x="177"
+ height="40"
+ width="150"
+ id="rect3395"
+ style="color:#000000;fill:#00112b;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427981;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/highcontrast.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect3397"
+ width="150"
+ height="40"
+ x="177"
+ y="1085.3622"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/highcontrast.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ y="1125.3622"
+ x="177"
+ height="40"
+ width="150"
+ id="rect3399"
+ style="color:#000000;fill:#162d50;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427981;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/highcontrast.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text3401"
+ y="1070.3622"
+ x="191"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold"
+ xml:space="preserve"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/highcontrast.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"><tspan
+ y="1070.3622"
+ x="191"
+ id="tspan3403"
+ sodipodi:role="line">lorem </tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:0.94902169999999997;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold"
+ x="190"
+ y="1112.3622"
+ id="text3405"
+ sodipodi:linespacing="125%"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/highcontrast.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"><tspan
+ sodipodi:role="line"
+ id="tspan3407"
+ x="190"
+ y="1112.3622">lorem </tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text3409"
+ y="1150.3622"
+ x="191"
+ style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.9490217;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold"
+ xml:space="preserve"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/highcontrast.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"><tspan
+ y="1150.3622"
+ x="191"
+ id="tspan3411"
+ sodipodi:role="line">lorem </tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold"
+ x="189"
+ y="1034.3622"
+ id="text3413"
+ sodipodi:linespacing="125%"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/highcontrast.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"><tspan
+ sodipodi:role="line"
+ id="tspan3415"
+ x="189"
+ y="1034.3622">lorem </tspan></text>
+ <rect
+ style="color:#000000;fill:#000000;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect4185"
+ width="150"
+ height="40"
+ x="395.34814"
+ y="1206.1414" />
+ <rect
+ y="1246.1414"
+ x="395.34814"
+ height="40"
+ width="150"
+ id="rect4187"
+ style="color:#000000;fill:#000000;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <rect
+ style="color:#000000;fill:#808080;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect4189"
+ width="150"
+ height="40"
+ x="395.34814"
+ y="1286.1414" />
+ <rect
+ y="1326.1414"
+ x="395.34814"
+ height="40"
+ width="150"
+ id="rect4191"
+ style="color:#000000;fill:#000000;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="409.34814"
+ y="1231.1414"
+ id="text4193"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4195"
+ x="409.34814"
+ y="1231.1414">lorem </tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text4197"
+ y="1271.1414"
+ x="409.34814"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"><tspan
+ y="1271.1414"
+ x="409.34814"
+ id="tspan4199"
+ sodipodi:role="line">lorem </tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="409.34814"
+ y="1311.1414"
+ id="text4201"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4203"
+ x="409.34814"
+ y="1311.1414"><tspan
+ style="font-weight:bold;fill:#000000;-inkscape-font-specification:Ubuntu Bold"
+ id="tspan4205">lorem </tspan></tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text4207"
+ y="1351.1414"
+ x="409.34814"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"><tspan
+ y="1351.1414"
+ x="409.34814"
+ id="tspan4209"
+ sodipodi:role="line"
+ style="font-weight:bold;fill:#ffffff;-inkscape-font-specification:Ubuntu Bold">lorem </tspan></text>
+ <rect
+ y="1206.1414"
+ x="548.34814"
+ height="40"
+ width="150"
+ id="rect4211"
+ style="color:#000000;fill:#000000;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <rect
+ style="color:#000000;fill:#e6e6e6;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect4213"
+ width="150"
+ height="40"
+ x="548.34814"
+ y="1246.1414" />
+ <rect
+ y="1286.1414"
+ x="548.34814"
+ height="40"
+ width="150"
+ id="rect4215"
+ style="color:#000000;fill:#000000;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <rect
+ style="color:#000000;fill:#000000;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect4217"
+ width="150"
+ height="40"
+ x="548.34814"
+ y="1326.1414" />
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold"
+ x="562.34814"
+ y="1271.1414"
+ id="text4219"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4221"
+ x="562.34814"
+ y="1271.1414">lorem </tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text4223"
+ y="1313.1414"
+ x="561.34814"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"><tspan
+ y="1313.1414"
+ x="561.34814"
+ id="tspan4225"
+ sodipodi:role="line">lorem </tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="562.34814"
+ y="1351.1414"
+ id="text4227"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan4229"
+ x="562.34814"
+ y="1351.1414">lorem </tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text4231"
+ y="1235.1414"
+ x="560.34814"
+ style="font-size:28px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold"
+ xml:space="preserve"><tspan
+ y="1235.1414"
+ x="560.34814"
+ id="tspan4233"
+ sodipodi:role="line">lorem </tspan></text>
</g>
</svg>
Modified: trunk/src/main/java/cc/kune/chat/client/actions/NewRoomBtn.java
===================================================================
--- trunk/src/main/java/cc/kune/chat/client/actions/NewRoomBtn.java 2011-06-16 23:29:11 UTC (rev 1409)
+++ trunk/src/main/java/cc/kune/chat/client/actions/NewRoomBtn.java 2011-06-16 23:33:52 UTC (rev 1410)
@@ -80,6 +80,7 @@
NotifyUser.info(i18n.t("Chatroom created"));
}
});
+ diag.hide();
}
}
});
Modified: trunk/src/main/java/cc/kune/common/client/ui/IconLabel.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/ui/IconLabel.java 2011-06-16 23:29:11 UTC (rev 1409)
+++ trunk/src/main/java/cc/kune/common/client/ui/IconLabel.java 2011-06-16 23:33:52 UTC (rev 1410)
@@ -167,6 +167,10 @@
iconRight.setVisible(true);
}
+ public void setRightIconBackground(final String backgroundColor) {
+ DOM.setStyleAttribute(iconRight.getElement(), "backgroundColor", backgroundColor);
+ }
+
public void setRightIconResource(final ImageResource res) {
iconRight.setResource(res);
iconRight.addStyleName("k-iconlabel-right");
Modified: trunk/src/main/java/cc/kune/core/server/auth/AuthenticatedMethodInterceptor.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/auth/AuthenticatedMethodInterceptor.java 2011-06-16 23:29:11 UTC (rev 1409)
+++ trunk/src/main/java/cc/kune/core/server/auth/AuthenticatedMethodInterceptor.java 2011-06-16 23:33:52 UTC (rev 1410)
@@ -32,6 +32,7 @@
import com.google.inject.Inject;
import com.google.inject.Provider;
+import com.google.inject.persist.UnitOfWork;
public class AuthenticatedMethodInterceptor implements MethodInterceptor {
@@ -43,48 +44,59 @@
@Inject
Provider<SessionService> sessionServiceProvider;
+ // https://code.google.com/p/google-guice/wiki/Transactions
@Inject
+ private UnitOfWork unitOfWork;
+
+ @Inject
Provider<UserSession> userSessionProvider;
@Override
public Object invoke(final MethodInvocation invocation) throws Throwable {
- final Object[] arguments = invocation.getArguments();
- // Some browsers getCookie returns "null" as String instead of null
- final String userHash = arguments[0] == null || arguments[0].equals("null") ? null
- : (String) arguments[0];
+ // https://code.google.com/p/google-guice/wiki/Transactions
+ unitOfWork.end();
+ unitOfWork.begin();
+ try {
+ final Object[] arguments = invocation.getArguments();
+ // Some browsers getCookie returns "null" as String instead of null
+ final String userHash = arguments[0] == null || arguments[0].equals("null") ? null
+ : (String) arguments[0];
- LOG.info("Method: " + invocation.getMethod().getName());
- LOG.info("Userhash received: " + userHash);
- LOG.info("--------------------------------------------------------------------------------");
- final UserSession userSession = userSessionProvider.get();
- // final SessionService sessionService = sessionServiceProvider.get();
+ LOG.info("Method: " + invocation.getMethod().getName());
+ LOG.info("Userhash received: " + userHash);
+ LOG.info("--------------------------------------------------------------------------------");
+ final UserSession userSession = userSessionProvider.get();
+ // final SessionService sessionService = sessionServiceProvider.get();
- final Authenticated authAnnotation = invocation.getStaticPart().getAnnotation(Authenticated.class);
- final boolean mandatory = authAnnotation.mandatory();
+ final Authenticated authAnnotation = invocation.getStaticPart().getAnnotation(Authenticated.class);
+ final boolean mandatory = authAnnotation.mandatory();
- if (userHash == null && mandatory) {
- // sessionService.getNewSession();
- throw new UserMustBeLoggedException();
- } else if (userSession.isUserNotLoggedIn() && mandatory) {
- // sessionService.getNewSession();
- LOG.info("Session expired (not logged in server and mandatory)");
- throw new SessionExpiredException();
- } else if (userSession.isUserNotLoggedIn() && userHash == null) {
- // Ok, do nothing
- } else if (userSession.isUserNotLoggedIn() && userHash != null) {
- // sessionService.getNewSession();
- LOG.info("Session expired (not logged in server)");
- throw new SessionExpiredException();
- } else if (!userSession.getHash().equals(userHash)) {
- final String serverHash = userSession.getHash();
- userSession.logout();
- // sessionService.getNewSession();
- LOG.info("Session expired (userHash: " + userHash + " different from server hash: " + serverHash
- + ")");
- throw new SessionExpiredException();
+ if (userHash == null && mandatory) {
+ // sessionService.getNewSession();
+ throw new UserMustBeLoggedException();
+ } else if (userSession.isUserNotLoggedIn() && mandatory) {
+ // sessionService.getNewSession();
+ LOG.info("Session expired (not logged in server and mandatory)");
+ throw new SessionExpiredException();
+ } else if (userSession.isUserNotLoggedIn() && userHash == null) {
+ // Ok, do nothing
+ } else if (userSession.isUserNotLoggedIn() && userHash != null) {
+ // sessionService.getNewSession();
+ LOG.info("Session expired (not logged in server)");
+ throw new SessionExpiredException();
+ } else if (!userSession.getHash().equals(userHash)) {
+ final String serverHash = userSession.getHash();
+ userSession.logout();
+ // sessionService.getNewSession();
+ LOG.info("Session expired (userHash: " + userHash + " different from server hash: " + serverHash
+ + ")");
+ throw new SessionExpiredException();
+ }
+ final Object result = invocation.proceed();
+ return result;
+ } finally {
+ unitOfWork.end();
}
- final Object result = invocation.proceed();
- return result;
}
}
Modified: trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConfPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConfPanel.java 2011-06-16 23:29:11 UTC (rev 1409)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConfPanel.java 2011-06-16 23:33:52 UTC (rev 1410)
@@ -37,7 +37,6 @@
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.FlowPanel;
-import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.IsWidget;
import com.google.gwt.user.client.ui.Label;
@@ -60,11 +59,10 @@
super.setHeight(String.valueOf(EntityOptionsView.HEIGHT) + "px");
super.setWidth(String.valueOf(EntityOptionsView.WIDTH) + "px");
- final HorizontalPanel wsHP = new HorizontalPanel();
+ final FlowPanel wsHP = new FlowPanel();
final Label wsThemeInfo = new Label(i18n.t("Change this workspace theme:"));
wsThemeInfo.addStyleName("kune-Margin-20-tb");
- // final Widget toolbarWsChange = (Widget) wsSelector.getView();
- // toolbarWsChange.addStyleName("kune-Margin-Medium-l");
+ styleSelector.addStyleName("k-fl");
wsHP.add(wsThemeInfo);
wsHP.add(styleSelector);
add(wsHP);
@@ -80,10 +78,11 @@
backPanel.add(currentBackLabel);
backPanel.add(backImage);
backPanel.add(clearBtn);
- add(backPanel);
+ backPanel.addStyleName("oc-clean");
+ // add(backPanel);
final Label wsInfo = new Label(i18n.t("Select and configure the public space theme of this group:"));
wsInfo.addStyleName("kune-Margin-Medium-tb");
- add(wsInfo);
+ // add(wsInfo);
final VerticalPanel stylesPanel = new VerticalPanel();
final ClickHandler clickHandler = new ClickHandler() {
@@ -99,6 +98,7 @@
thumb.setTooltip(i18n.t("Click to select and configure this theme"));
// add(thumb);
}
+ stylesPanel.addStyleName("oc-clean");
add(stylesPanel);
setBackImageVisibleImpl(false);
super.addStyleName("k-overflow-y-auto");
Modified: trunk/src/main/java/cc/kune/gspace/client/resources/gSpaceArmorTheme.css
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/resources/gSpaceArmorTheme.css 2011-06-16 23:29:11 UTC (rev 1409)
+++ trunk/src/main/java/cc/kune/gspace/client/resources/gSpaceArmorTheme.css 2011-06-16 23:33:52 UTC (rev 1410)
@@ -21,7 +21,11 @@
background-color: bc1;
}
-.entityToolsNorth span {
+.k-sn-maintitle {
+ color: bc3;
+}
+
+.entityToolsNorth span ,.k-sn-deck div {
color: c1;
}
@@ -49,6 +53,13 @@
background-color: bc1;
}
+.k-tool-item {
+}
+
+.k-tool-item span {
+ color: c1;
+}
+
.k-tool-item-focus {
background-color: bc4;
}
@@ -58,7 +69,10 @@
}
.k-tool-item-nofocus {
+}
+.k-tool-item-nofocus span {
+ color: c1;
}
.k-tool-item-selected {
@@ -91,7 +105,7 @@
background-color: bc5;
}
-.entityHeader span {
+.entityHeader span, .entityHeader div {
color: c5;
}
@@ -128,6 +142,10 @@
background-color: bc7;
}
+.k-empty-msg span, .k-folder-viewer span {
+ color: c7;
+}
+
.docFooter {
background-color: #e3dbdb;
}
Modified: trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeSelectorPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeSelectorPresenter.java 2011-06-16 23:29:11 UTC (rev 1409)
+++ trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeSelectorPresenter.java 2011-06-16 23:33:52 UTC (rev 1410)
@@ -29,6 +29,7 @@
import cc.kune.common.client.actions.ui.descrip.MenuRadioItemDescriptor;
import cc.kune.core.client.init.AppStartEvent;
import cc.kune.core.client.init.AppStartEvent.AppStartHandler;
+import cc.kune.core.client.resources.CoreResources;
import cc.kune.core.client.state.Session;
import cc.kune.core.shared.dto.GSpaceTheme;
import cc.kune.core.shared.dto.InitDataDTO;
@@ -67,14 +68,18 @@
private final HashMap<String, MenuRadioItemDescriptor> itemMap;
private final GSpaceThemeManager manager;
private MenuDescriptor menu;
+ private final CoreResources res;
private final Session session;
+
private ActionExtensibleView view;
@Inject
public GSpaceThemeSelectorPresenter(final Session session, final I18nTranslationService i18n,
- final EventBus eventBus, final GSpaceThemeManager manager, final GSpaceThemeSelectorPanel view) {
+ final CoreResources res, final EventBus eventBus, final GSpaceThemeManager manager,
+ final GSpaceThemeSelectorPanel view) {
this.session = session;
this.i18n = i18n;
+ this.res = res;
this.eventBus = eventBus;
this.manager = manager;
this.view = view;
@@ -82,8 +87,9 @@
eventBus.addHandler(GSpaceThemeChangeEvent.getType(), new GSpaceThemeChangeHandler() {
@Override
public void onGsThemeChange(final GSpaceThemeChangeEvent event) {
- final String themeName = event.getNewTheme().getName();
- select(themeName);
+ final GSpaceTheme newTheme = event.getNewTheme();
+ final GSpaceTheme oldTheme = event.getOldTheme();
+ select(oldTheme, newTheme);
}
});
this.view = view;
@@ -107,7 +113,8 @@
private void createMenu() {
menu = new MenuDescriptor("");
- menu.putValue(Action.SMALL_ICON, "images/colors.gif");
+ menu.putValue(Action.STYLES, "k-button");
+ menu.putValue(Action.SMALL_ICON, res.themeChoose());
}
private void createTheme(final GSpaceTheme theme) {
@@ -117,9 +124,17 @@
view.add(item);
}
- public void select(final String themeName) {
- itemMap.get(themeName).setChecked(true);
- menu.setText(i18n.t(themeName));
+ public void select(final GSpaceTheme oldTheme, final GSpaceTheme newTheme) {
+ final String oldThemeName = oldTheme.getName();
+ final String newThemeName = newTheme.getName();
+ itemMap.get(newThemeName).setChecked(true);
+ itemMap.get(newThemeName).putValue(Action.SMALL_ICON, "#FFF");
+ itemMap.get(newThemeName).putValue(Action.SMALL_ICON, newTheme.getBackColors()[0]);
+ if (oldThemeName != null) {
+ itemMap.get(oldThemeName).putValue(Action.SMALL_ICON, "#FFF");
+ itemMap.get(oldThemeName).putValue(Action.SMALL_ICON, oldTheme.getBackColors()[0]);
+ }
+ menu.setText(i18n.t(newThemeName));
}
private void setThemes(final InitDataDTO initData) {
Deleted: trunk/src/main/java/org/ourproject/kune/chat/KuneChat.gwt.xml
===================================================================
--- trunk/src/main/java/org/ourproject/kune/chat/KuneChat.gwt.xml 2011-06-16 23:29:11 UTC (rev 1409)
+++ trunk/src/main/java/org/ourproject/kune/chat/KuneChat.gwt.xml 2011-06-16 23:33:52 UTC (rev 1410)
@@ -1,8 +0,0 @@
-<!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/ā¦">
-<module>
- <inherits name="cc.kune.core.Core" />
- <inherits name='org.ourproject.kune.platf.KunePlatform' />
- <inherits name='org.ourproject.kune.workspace.KuneWorkspace' />
-<!-- <inherits name="com.calclab.emiteuimodule.EmiteUIModule" />-->
- <source path="client" />
-</module>
Deleted: trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientActions.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientActions.java 2011-06-16 23:29:11 UTC (rev 1409)
+++ trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientActions.java 2011-06-16 23:33:52 UTC (rev 1410)
@@ -1,141 +0,0 @@
-/*
- *
- * 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 org.ourproject.kune.chat.client;
-
-import org.ourproject.kune.chat.client.ctx.room.AddRoom;
-import org.ourproject.kune.platf.client.actions.ActionEnableCondition;
-import org.ourproject.kune.platf.client.actions.ActionToolbarButtonDescriptor;
-import org.ourproject.kune.platf.client.actions.ActionToolbarButtonSeparator;
-import org.ourproject.kune.workspace.client.OldAbstractFoldableContentActions;
-import org.ourproject.kune.workspace.client.cxt.ContextActionRegistry;
-
-import cc.kune.common.client.utils.SchedulerManager;
-import cc.kune.core.client.cnt.ContentActionRegistry;
-import cc.kune.core.client.i18n.I18nUITranslationService;
-import cc.kune.core.client.state.Session;
-import cc.kune.core.shared.domain.ContentStatus;
-import cc.kune.core.shared.domain.utils.StateToken;
-import cc.kune.core.shared.dto.AccessRolDTO;
-
-import com.calclab.suco.client.events.Listener;
-import com.calclab.suco.client.ioc.Provider;
-import com.google.gwt.core.client.Scheduler.ScheduledCommand;
-
-public class ChatClientActions {
-
- private final Provider<AddRoom> addRoomProvider;
- private final Provider<ChatEngine> chatEngineProvider;
- private final ContentActionRegistry contentActionRegistry;
- private final ContextActionRegistry contextActionRegistry;
- private final Provider<SchedulerManager> deferredWrapper;
- private final I18nUITranslationService i18n;
- private final Session session;
-
- public ChatClientActions(final I18nUITranslationService i18n, final Session session,
- final ContentActionRegistry contentActionRegistry, final ContextActionRegistry contextActionRegistry,
- final Provider<ChatEngine> chatEngine, final Provider<AddRoom> addRoomProvider,
- final Provider<SchedulerManager> deferredWrapper) {
- this.i18n = i18n;
- this.session = session;
- this.contentActionRegistry = contentActionRegistry;
- this.contextActionRegistry = contextActionRegistry;
- this.chatEngineProvider = chatEngine;
- this.addRoomProvider = addRoomProvider;
- this.deferredWrapper = deferredWrapper;
- createActions();
- }
-
- private void createActions() {
- final ActionToolbarButtonDescriptor<StateToken> chatAbout = new ActionToolbarButtonDescriptor<StateToken>(
- AccessRolDTO.Viewer, OldAbstractFoldableContentActions.CONTENT_TOPBAR, new Listener<StateToken>() {
- @Override
- public void onEvent(final StateToken token) {
- deferredWrapper.get().addCommand(new ScheduledCommand() {
- @Override
- public void execute() {
- final String subject = i18n.t("Chat about: [%s]", session.getContentState().getTitle());
- chatEngineProvider.get().joinRoom(token.toString().replaceAll("\\.", "-"), subject,
- session.getCurrentUserInfo().getShortName());
- chatEngineProvider.get().show();
- }
- });
- }
- });
- // chatAbout.setTextDescription(i18n.t("Chat about"));
- chatAbout.setIconUrl("images/emite-room.png");
- chatAbout.setToolTip("Chat and comment this");
- chatAbout.setLeftSeparator(ActionToolbarButtonSeparator.fill);
- chatAbout.setEnableCondition(notDeleted());
-
- final ActionToolbarButtonDescriptor<StateToken> joinRoom = new ActionToolbarButtonDescriptor<StateToken>(
- AccessRolDTO.Viewer, OldAbstractFoldableContentActions.CONTENT_TOPBAR, new Listener<StateToken>() {
- @Override
- public void onEvent(final StateToken token) {
- final ChatEngine chatEngine = chatEngineProvider.get();
- chatEngine.joinRoom(session.getContainerState().getContainer().getName(),
- session.getCurrentUserInfo().getShortName());
- chatEngine.show();
- }
- });
- joinRoom.setTextDescription(i18n.t("Enter room"));
- joinRoom.setToolTip(i18n.t("Enter in this chat room"));
- joinRoom.setMustBeAuthenticated(true);
-
- final ActionToolbarButtonDescriptor<StateToken> addRoom = new ActionToolbarButtonDescriptor<StateToken>(
- AccessRolDTO.Administrator, OldAbstractFoldableContentActions.CONTEXT_TOPBAR, new Listener<StateToken>() {
- @Override
- public void onEvent(final StateToken token) {
- addRoomProvider.get().show();
- }
- });
- addRoom.setTextDescription(i18n.t("New room"));
- addRoom.setToolTip(i18n.t("Create a new chat room"));
- addRoom.setMustBeAuthenticated(true);
-
- // contentActionRegistry.addAction(chatAbout,
- // DocumentClientTool.TYPE_DOCUMENT);
- // contentActionRegistry.addAction(chatAbout,
- // DocumentClientTool.TYPE_UPLOADEDFILE);
- // contentActionRegistry.addAction(chatAbout,
- // WikiClientTool.TYPE_WIKIPAGE);
- // contentActionRegistry.addAction(chatAbout, BlogClientTool.TYPE_POST);
- // contentActionRegistry.addAction(chatAbout,
- // WikiClientTool.TYPE_UPLOADEDFILE);
- // contentActionRegistry.addAction(chatAbout,
- // GalleryClientTool.TYPE_UPLOADEDFILE);
- // contentActionRegistry.addAction(chatAbout,
- // BlogClientTool.TYPE_UPLOADEDFILE);
- //
- // contextActionRegistry.addAction(addRoom, ChatClientTool.TYPE_ROOT,
- // ChatClientTool.TYPE_ROOM);
- // contentActionRegistry.addAction(joinRoom, ChatClientTool.TYPE_ROOM);
- }
-
- private ActionEnableCondition<StateToken> notDeleted() {
- return new ActionEnableCondition<StateToken>() {
- @Override
- public boolean mustBeEnabled(final StateToken token) {
- final boolean isNotDeleted = !(session.isCurrentStateAContent() && session.getContentState().getStatus().equals(
- ContentStatus.inTheDustbin));
- return isNotDeleted;
- }
- };
- }
-}
Deleted: trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientTool.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientTool.java 2011-06-16 23:29:11 UTC (rev 1409)
+++ trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientTool.java 2011-06-16 23:33:52 UTC (rev 1410)
@@ -1,47 +0,0 @@
-/*
- *
- * 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 org.ourproject.kune.chat.client;
-
-import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton;
-import org.ourproject.kune.workspace.client.tool.OldFoldableAbstractClientTool;
-
-import cc.kune.core.client.registry.ContentCapabilitiesRegistry;
-import cc.kune.core.shared.i18n.I18nTranslationService;
-import cc.kune.gspace.client.themes.GSpaceThemeManager;
-import cc.kune.gspace.client.tool.selector.ToolSelector;
-
-public class ChatClientTool extends OldFoldableAbstractClientTool {
- public static final String NAME = "chats";
- public static final String TYPE_CHAT = "chat.chat";
- public static final String TYPE_ROOM = "chat.room";
- public static final String TYPE_ROOT = "chat.root";
-
- public ChatClientTool(final I18nTranslationService i18n, final WorkspaceSkeleton ws,
- final ToolSelector toolSelector, final GSpaceThemeManager wsThemePresenter,
- final ContentCapabilitiesRegistry contentCapabilitiesRegistry) {
- super(NAME, i18n.t("chat rooms"), toolSelector, wsThemePresenter, ws, contentCapabilitiesRegistry);
- registerContentTypeIcon(TYPE_ROOM, "images/emite-room.png");
- }
-
- @Override
- public String getName() {
- return NAME;
- }
-}
Deleted: trunk/src/main/java/org/ourproject/kune/chat/client/ChatConnectionOptions.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/chat/client/ChatConnectionOptions.java 2011-06-16 23:29:11 UTC (rev 1409)
+++ trunk/src/main/java/org/ourproject/kune/chat/client/ChatConnectionOptions.java 2011-06-16 23:33:52 UTC (rev 1410)
@@ -1,35 +0,0 @@
-/*
- *
- * 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 org.ourproject.kune.chat.client;
-
-
-public class ChatConnectionOptions {
- public final String domain;
- // public UserChatOptions userOptions;
- public final String httpBase;
- public final String roomHost;
-
- public ChatConnectionOptions(final String httpBase, final String domain, final String roomHost) {
- this.httpBase = httpBase;
- this.domain = domain;
- this.roomHost = roomHost;
- // userOptions = null;
- }
-}
Deleted: trunk/src/main/java/org/ourproject/kune/chat/client/ChatEngine.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/chat/client/ChatEngine.java 2011-06-16 23:29:11 UTC (rev 1409)
+++ trunk/src/main/java/org/ourproject/kune/chat/client/ChatEngine.java 2011-06-16 23:33:52 UTC (rev 1410)
@@ -1,55 +0,0 @@
-/*
- *
- * 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 org.ourproject.kune.chat.client;
-
-import com.calclab.emite.core.client.xmpp.stanzas.XmppURI;
-import com.calclab.suco.client.events.Listener0;
-
-public interface ChatEngine {
-
- void addNewBuddie(String shortName);
-
- void addOnRosterChanged(Listener0 slot);
-
- void chat(XmppURI jid);
-
- ChatConnectionOptions getChatOptions();
-
- boolean isBuddie(String localUserName);
-
- boolean isBuddie(XmppURI jid);
-
- boolean isLoggedIn();
-
- void joinRoom(String roomName, String userAlias);
-
- void joinRoom(String roomName, String subject, String userAlias);
-
- void login(String jid, String passwd);
-
- void logout();
-
- void setAvatar(String photoBinary);
-
- void show();
-
- void stop();
-
-}
Deleted: trunk/src/main/java/org/ourproject/kune/chat/client/ChatEngineDefault.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/chat/client/ChatEngineDefault.java 2011-06-16 23:29:11 UTC (rev 1409)
+++ trunk/src/main/java/org/ourproject/kune/chat/client/ChatEngineDefault.java 2011-06-16 23:33:52 UTC (rev 1410)
@@ -1,300 +0,0 @@
-/*
- *
- * 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 org.ourproject.kune.chat.client;
-
-class ChatEngineDefault { // implements ChatEngine {
- //
- // private ChatConnectionOptions chatOptions;
- // private final Provider<FileDownloadUtils> downloadUtils;
- // private final Provider<EmiteUIDialog> emiteUIProvider;
- // private final I18nTranslationService i18n;
- // private final Event0 onRosterChanged;
- // private Collection<RosterItem> roster;
- // private final KeyStroke shortcut;
- // private ToolbarButton traybarButton;
- // private final WorkspaceSkeleton wskel;
- //
- // public ChatEngineDefault(final I18nTranslationService i18n, final
- // WorkspaceSkeleton wskel,
- // final AppStarter application, final Session session, final
- // Provider<EmiteUIDialog> emiteUIProvider,
- // final Provider<FileDownloadUtils> downloadUtils, final
- // GlobalShortcutRegister shortcutRegister) {
- // this.i18n = i18n;
- // this.wskel = wskel;
- // this.emiteUIProvider = emiteUIProvider;
- // this.downloadUtils = downloadUtils;
- // this.onRosterChanged = new Event0("onRosterChanged");
- // shortcut = Shortcut.getShortcut(false, true, false, false,
- // Character.valueOf('C'));
- // shortcutRegister.put(shortcut, new AbstractExtendedAction() {
- // @Override
- // public void actionPerformed(final ActionEvent event) {
- // if (isDialogStarted()) {
- // toggleShow();
- // }
- //
- // }
- // });
- // session.onInitDataReceived(new Listener<InitDataDTO>() {
- // private void checkChatDomain(final String chatDomain) {
- // final String httpDomain = WindowUtils.getLocation().getHostName();
- // if (!chatDomain.equals(httpDomain)) {
- // Log.error("Your http domain (" + httpDomain +
- // ") is different from the chat domain (" + chatDomain
- // + "). This will cause problems with the chat functionality. "
- // + "Please check kune.properties on the server.");
- // }
- // }
- //
- // @Override
- // public void onEvent(final InitDataDTO initData) {
- // checkChatDomain(initData.getChatDomain());
- // chatOptions = new ChatConnectionOptions(initData.getChatHttpBase(),
- // initData.getChatDomain(),
- // initData.getChatRoomHost());
- // }
- // });
- // session.onUserSignOut(new Listener0() {
- // @Override
- // public void onEvent() {
- // logout();
- // }
- // });
- // session.onUserSignIn(new Listener<UserInfoDTO>() {
- // @Override
- // public void onEvent(final UserInfoDTO user) {
- // login(user.getChatName(), user.getChatPassword());
- // }
- // });
- // // application.onClosing(new Listener<ClosingEvent>() {
- // // public void onEvent(final ClosingEvent event) {
- // // stop();
- // // }
- // // });
- // }
- //
- // @Override
- // public void addNewBuddie(final String shortName) {
- // // emiteUIProvider.get().addBuddie(getLocalUserJid(shortName), shortName,
- // "");
- // }
- //
- // @Override
- // public void addOnRosterChanged(final Listener0 slot) {
- // // onRosterChanged.add(slot);
- // }
- //
- // @Override
- // public void chat(final XmppURI jid) {
- // // emiteUIProvider.get().chat(jid);
- // }
- //
- // @Override
- // public ChatConnectionOptions getChatOptions() {
- // return chatOptions;
- // }
- //
- // private XmppURI getLocalUserJid(final String shortName) {
- // return XmppURI.jid(shortName + "@" + chatOptions.domain);
- // }
- //
- // private UserChatOptions getUserChatOptions(final String jid, final String
- // passwd) {
- // final String resource = "emiteui-" + new Date().getTime() + "-kune"; // +
- // // getGwtMetaProperty(GWT_PROPERTY_RELEASE);
- // // FIXME, get this from user profile
- // return new UserChatOptions(jid + "@" + chatOptions.domain, passwd,
- // resource, "blue", SubscriptionMode.manual,
- // true);
- // }
- //
- // @Override
- // public boolean isBuddie(final String shortName) {
- // return isBuddie(getLocalUserJid(shortName));
- // }
- //
- // @Override
- // public boolean isBuddie(final XmppURI jid) {
- // if (roster != null) {
- // for (final RosterItem item : roster) {
- // if (item.getJID().equalsNoResource(jid)) {
- // return true;
- // }
- // }
- // }
- // return false;
- // }
- //
- // public boolean isDialogStarted() {
- // // return !emiteUIProvider.get().isDialogNotStarted();
- // }
- //
- // @Override
- // public boolean isLoggedIn() {
- // // return emiteUIProvider.get().isLoggedIn();
- // }
- //
- // @Override
- // public void joinRoom(final String roomName, final String userAlias) {
- // joinRoom(roomName, null, userAlias);
- // }
- //
- // @Override
- // public void joinRoom(final String roomName, final String subject, final
- // String userAlias) {
- // // if (emiteUIProvider.get().isLoggedIn()) {
- // // final XmppURI roomURI = XmppURI.uri(roomName + "@" +
- // chatOptions.roomHost + "/"
- // // + chatOptions.userOptions.getUserJid().getNode());
- // // final Room room = (Room) emiteUIProvider.get().joinRoom(roomURI);
- // // if (subject != null) {
- // // Scheduler.get().scheduleDeferred(new ScheduledCommand() {
- // // @Override
- // // public void execute() {
- // // final RoomUI roomUI = (RoomUI) room.getData(ChatUI.class);
- // // if (roomUI != null) {
- // // roomUI.setSubject(subject);
- // // }
- // // }
- // // });
- // // }
- // // } else {
- // // NotifyUser.showAlertMessage(i18n.t("Error"),
- // i18n.t("To join a chatroom you need to be 'online'"));
- // // }
- // }
- //
- // @Override
- // public void login(final String jid, final String passwd) {
- // final UserChatOptions userChatOptions = getUserChatOptions(jid, passwd);
- // // FIXME: Avatar provider
- // final AvatarProvider avatarProvider = new AvatarProvider() {
- // @Override
- // public String getAvatarURL(final XmppURI userURI) {
- // // if (userURI.getHost().equals(chatOptions.domain)) {
- // // FIXME
- // // return downloadUtils.get().getLogoImageUrl(new
- // // StateToken(userURI.getNode()));
- // // } else {
- // // return "";
- // // }
- // return "images/person-def.gif";
- // }
- // };
- // final String initialWindowTitle = Window.getTitle();
- // chatOptions.userOptions = userChatOptions;
- // if (emiteUIProvider.get().isDialogNotStarted()) {
- // emiteUIProvider.get().onRosterChanged(new
- // Listener<Collection<RosterItem>>() {
- // @Override
- // public void onEvent(final Collection<RosterItem> rosterChanged) {
- // roster = rosterChanged;
- // onRosterChanged.fire();
- // }
- // });
- // emiteUIProvider.get().start(userChatOptions, chatOptions.httpBase,
- // chatOptions.domain,
- // chatOptions.roomHost, avatarProvider, i18n.t("Chat"));
- // } else {
- // emiteUIProvider.get().setEnableStatusUI(true);
- // emiteUIProvider.get().refreshUserInfo(chatOptions.userOptions);
- // }
- // emiteUIProvider.get().show(OwnStatus.online);
- // if (traybarButton == null) {
- // traybarButton = new ToolbarButton();
- // traybarButton.setTooltip(i18n.t("Show/hide the chat window" +
- // shortcut.toString()));
- // traybarButton.setIcon("images/e-icon.gif");
- // traybarButton.addListener(new ButtonListenerAdapter() {
- // @Override
- // public void onClick(final Button button, final EventObject e) {
- // toggleShow();
- // }
- // });
- // wskel.getSiteTraybar().addButton(traybarButton);
- // emiteUIProvider.get().onChatAttended(new Listener<String>() {
- // @Override
- // public void onEvent(final String parameter) {
- // traybarButton.setIcon("images/e-icon.gif");
- // }
- // });
- // emiteUIProvider.get().onChatUnattendedWithActivity(new Listener<String>()
- // {
- // @Override
- // public void onEvent(final String parameter) {
- // traybarButton.setIcon("images/e-icon-a.gif");
- // }
- // });
- // }
- // emiteUIProvider.get().hide();
- // emiteUIProvider.get().onChatAttended(new Listener<String>() {
- // @Override
- // public void onEvent(final String parameter) {
- // Window.setTitle(initialWindowTitle);
- // }
- // });
- // emiteUIProvider.get().onChatUnattendedWithActivity(new Listener<String>()
- // {
- // @Override
- // public void onEvent(final String chatTitle) {
- // Window.setTitle("(* " + chatTitle + ") " + initialWindowTitle);
- // }
- // });
- // }
- //
- // @Override
- // public void logout() {
- // if (!emiteUIProvider.get().isDialogNotStarted()) {
- // emiteUIProvider.get().setOwnPresence(OwnStatus.offline);
- // chatOptions.userOptions = getUserChatOptions("reset(a)example.com", "");
- // emiteUIProvider.get().refreshUserInfo(chatOptions.userOptions);
- // emiteUIProvider.get().setEnableStatusUI(false);
- // }
- // }
- //
- // @Override
- // public void setAvatar(final String photoBinary) {
- // emiteUIProvider.get().setOwnVCardAvatar(photoBinary);
- // }
- //
- // @Override
- // public void show() {
- // emiteUIProvider.get().show();
- // }
- //
- // @Override
- // public void stop() {
- // if (!emiteUIProvider.get().isDialogNotStarted()) {
- // emiteUIProvider.get().destroy();
- // }
- // if (emiteUIProvider.get().getSession().isLoggedIn()) {
- // emiteUIProvider.get().getSession().logout();
- // }
- // }
- //
- // public void toggleShow() {
- // if (emiteUIProvider.get().isVisible()) {
- // emiteUIProvider.get().hide();
- // } else {
- // emiteUIProvider.get().show();
- // }
- // }
-}
Deleted: trunk/src/main/java/org/ourproject/kune/chat/client/ChatMessages.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/chat/client/ChatMessages.java 2011-06-16 23:29:11 UTC (rev 1409)
+++ trunk/src/main/java/org/ourproject/kune/chat/client/ChatMessages.java 2011-06-16 23:33:52 UTC (rev 1410)
@@ -1,23 +0,0 @@
-/*
- *
- * 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 org.ourproject.kune.chat.client;
-
-public interface ChatMessages {
-}
Deleted: trunk/src/main/java/org/ourproject/kune/chat/client/ctx/ChatContext.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/chat/client/ctx/ChatContext.java 2011-06-16 23:29:11 UTC (rev 1409)
+++ trunk/src/main/java/org/ourproject/kune/chat/client/ctx/ChatContext.java 2011-06-16 23:33:52 UTC (rev 1410)
@@ -1,24 +0,0 @@
-/*
- *
- * 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 org.ourproject.kune.chat.client.ctx;
-
-
-public interface ChatContext {
-}
Deleted: trunk/src/main/java/org/ourproject/kune/chat/client/ctx/ChatContextPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/chat/client/ctx/ChatContextPresenter.java 2011-06-16 23:29:11 UTC (rev 1409)
+++ trunk/src/main/java/org/ourproject/kune/chat/client/ctx/ChatContextPresenter.java 2011-06-16 23:33:52 UTC (rev 1410)
@@ -1,36 +0,0 @@
-/*
- *
- * 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 org.ourproject.kune.chat.client.ctx;
-
-import org.ourproject.kune.chat.client.ChatClientTool;
-import org.ourproject.kune.workspace.client.ctxnav.ContextNavigator;
-import org.ourproject.kune.workspace.client.cxt.FoldableContextPresenter;
-
-import cc.kune.core.client.state.StateManager;
-
-import com.calclab.suco.client.ioc.Provider;
-
-public class ChatContextPresenter extends FoldableContextPresenter implements ChatContext {
-
- public ChatContextPresenter(final StateManager stateManager,
- final Provider<ContextNavigator> contextNavigatorProvider) {
- super(ChatClientTool.NAME, stateManager, contextNavigatorProvider);
- }
-}
Modified: trunk/src/main/resources/kune.properties
===================================================================
--- trunk/src/main/resources/kune.properties 2011-06-16 23:29:11 UTC (rev 1409)
+++ trunk/src/main/resources/kune.properties 2011-06-16 23:33:52 UTC (rev 1410)
@@ -35,7 +35,7 @@
### Workspace enabled themes
# This names are also the name of the items in the theme menu and there are translated
-kune.wsthemes = default,green,purple,grey,red,sahara,blue,redblack,camp,pink
+kune.wsthemes = default,green,purple,grey,red,sahara,blue,redblack,camp,pink,highcontrast,whiteblack,blackwhite
kune.wsthemes.default = default
kune.wsthemes.default.backgrounds = #deaa87, #d99e76, #ce7f4b, #d99e76, #f6e7dd, #d99e76, #FFF, #f8eee7
kune.wsthemes.default.colors = #FFF,#FFF,#FFF,#FFF,#552200,#FFF,#a05a2c,#a05a2c
@@ -45,7 +45,7 @@
kune.wsthemes.purple.colors = #FFF, #FFF, #FFF, #FFF, #6d0c87, #FFF, #6d0c87, #6d0c87
kune.wsthemes.grey.backgrounds = #cfcfcf, #b7b7b7, #565656, #868686, #ededed, #6e6e6e, #FFF, #e7e7e7
kune.wsthemes.grey.colors = #4d4d4d, #4d4d4d, #FFF, #FFF, #000, #FFF, #4d4d4d, #4d4d4d
-kune.wsthemes.red.backgrounds = #ffc0c0, #de8888, #c04141, #ff8080, #ffe0e0, #b86262, #FFF, #f7e1e1
+kune.wsthemes.red.backgrounds = #de8787, #d35f5f, #c04141, #ff8080, #ffe0e0, #b86262, #FFF, #f7e1e1
kune.wsthemes.red.colors = #aa0000, #FFF, #FFF, #FFF, #a02c2c, #FFF, #a02c2c, #a02c2c
kune.wsthemes.sahara.backgrounds = #ffe7d7, #eac9b3, #d59367, #eac9b3, #f7ece4, #e0ae8d, #FFF, #f7ece4
kune.wsthemes.sahara.colors = #502d16, #502d16, #552200, #502d16, #502d16, #784421, #d45500, #d45500
@@ -53,11 +53,16 @@
kune.wsthemes.blue.colors = #FFF, #FFF, #FFF, #FFF, #0044aa, #FFF, #0044aa, #0044aa
kune.wsthemes.redblack.backgrounds = #a14242, #b96363, #424242, #a14242, #ffe0e0, #a14242, #FFF, #f7e1e1
kune.wsthemes.redblack.colors = #FFF, #FFF, #FFF, #FFF, #800000, #FFF, #800000, #800000
-kune.wsthemes.camp.backgrounds = #f6f1de, #a49e87, #3c3c3c, #f5cc22, #f6f1de, #4f472b, #FFF, #fff8dc
+kune.wsthemes.camp.backgrounds = #ffe680, #a49e87, #3c3c3c, #f5cc22, #f6f1de, #4f472b, #FFF, #fff8dc
kune.wsthemes.camp.colors = #151515, #151515, #fecc00, #151515, #000000, #f3c401, #151515, #151515
kune.wsthemes.pink.backgrounds = #e49db9, #edbdd0, #b15278, #ff74ab, #ffddf8, #d25b8b, #FFF, #f6dee8
kune.wsthemes.pink.colors = #FFF, #FFF, #FFF, #FFF, #2b0022, #FFF, #800066, #800066
-
+kune.wsthemes.highcontrast.backgrounds = #000055, #162d50, #00002b, #000055, #0000aa, #00112b, #b3b3b3, #162d50
+kune.wsthemes.highcontrast.colors = #FFF, #FFF, #FFF, #FFF, #FFF, #FFF, #000, #FFF
+kune.wsthemes.whiteblack.backgrounds = #FFF, #FFF, #e6e6e6, #FFF, #FFF, #e6e6e6, #FFF, #FFF
+kune.wsthemes.whiteblack.colors = #000, #000, #000, #000, #000, #000, #000, #000
+kune.wsthemes.blackwhite.backgrounds = #000, #000, #808080, #000, #000, #e6e6e6, #000, #000
+kune.wsthemes.blackwhite.colors = #FFF, #FFF, #000, #FFF, #FFF, #000, #FFF, #FFF
### Gallery options
kune.upload.gallerypermittedextensions = jpg,jpeg,png,gif,bmp,svg,avi,mpg,mpeg,ogg,mov,tif,tiff,mp3,wav
Deleted: trunk/src/test/java/org/ourproject/kune/chat/ChatToolTest.java
===================================================================
--- trunk/src/test/java/org/ourproject/kune/chat/ChatToolTest.java 2011-06-16 23:29:11 UTC (rev 1409)
+++ trunk/src/test/java/org/ourproject/kune/chat/ChatToolTest.java 2011-06-16 23:33:52 UTC (rev 1410)
@@ -1,38 +0,0 @@
-/*
- *
- * 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 org.ourproject.kune.chat;
-
-import static org.junit.Assert.assertEquals;
-
-import org.junit.Test;
-import org.ourproject.kune.chat.client.ChatClientTool;
-
-import cc.kune.chat.shared.ChatConstants;
-
-public class ChatToolTest {
-
- @Test
- public void clientAndServerAreSync() {
- assertEquals(ChatConstants.NAME, ChatClientTool.NAME);
- assertEquals(ChatConstants.TYPE_ROOT, ChatClientTool.TYPE_ROOT);
- assertEquals(ChatConstants.TYPE_ROOM, ChatClientTool.TYPE_ROOM);
- assertEquals(ChatConstants.TYPE_CHAT, ChatClientTool.TYPE_CHAT);
- }
-}
1
0
16 Jun '11
Author: vjrj_
Date: 2011-06-17 01:29:11 +0200 (Fri, 17 Jun 2011)
New Revision: 1409
Modified:
trunk/src/main/java/cc/kune/core/server/auth/AuthenticatedMethodInterceptor.java
Log:
unitofwork removed
Modified: trunk/src/main/java/cc/kune/core/server/auth/AuthenticatedMethodInterceptor.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/auth/AuthenticatedMethodInterceptor.java 2011-06-16 17:48:38 UTC (rev 1408)
+++ trunk/src/main/java/cc/kune/core/server/auth/AuthenticatedMethodInterceptor.java 2011-06-16 23:29:11 UTC (rev 1409)
@@ -32,7 +32,6 @@
import com.google.inject.Inject;
import com.google.inject.Provider;
-import com.google.inject.persist.UnitOfWork;
public class AuthenticatedMethodInterceptor implements MethodInterceptor {
@@ -45,15 +44,10 @@
Provider<SessionService> sessionServiceProvider;
@Inject
- private UnitOfWork unitOfWork;
-
- @Inject
Provider<UserSession> userSessionProvider;
@Override
public Object invoke(final MethodInvocation invocation) throws Throwable {
- unitOfWork.begin();
-
final Object[] arguments = invocation.getArguments();
// Some browsers getCookie returns "null" as String instead of null
final String userHash = arguments[0] == null || arguments[0].equals("null") ? null
@@ -70,19 +64,16 @@
if (userHash == null && mandatory) {
// sessionService.getNewSession();
- unitOfWork.end();
throw new UserMustBeLoggedException();
} else if (userSession.isUserNotLoggedIn() && mandatory) {
// sessionService.getNewSession();
LOG.info("Session expired (not logged in server and mandatory)");
- unitOfWork.end();
throw new SessionExpiredException();
} else if (userSession.isUserNotLoggedIn() && userHash == null) {
// Ok, do nothing
} else if (userSession.isUserNotLoggedIn() && userHash != null) {
// sessionService.getNewSession();
LOG.info("Session expired (not logged in server)");
- unitOfWork.end();
throw new SessionExpiredException();
} else if (!userSession.getHash().equals(userHash)) {
final String serverHash = userSession.getHash();
@@ -90,11 +81,9 @@
// sessionService.getNewSession();
LOG.info("Session expired (userHash: " + userHash + " different from server hash: " + serverHash
+ ")");
- unitOfWork.end();
throw new SessionExpiredException();
}
final Object result = invocation.proceed();
- unitOfWork.end();
return result;
}
1
0
r1408 - in trunk/src/main: java/cc/kune/core/server java/cc/kune/core/server/auth java/cc/kune/core/server/rack resources/META-INF
by Vicente J. Ruiz Jurado 16 Jun '11
by Vicente J. Ruiz Jurado 16 Jun '11
16 Jun '11
Author: vjrj_
Date: 2011-06-16 19:48:38 +0200 (Thu, 16 Jun 2011)
New Revision: 1408
Modified:
trunk/src/main/java/cc/kune/core/server/KunePersistenceService.java
trunk/src/main/java/cc/kune/core/server/auth/AuthenticatedMethodInterceptor.java
trunk/src/main/java/cc/kune/core/server/rack/RackServletFilter.java
trunk/src/main/resources/META-INF/persistence.xml
Log:
Some guice persist tunning
Modified: trunk/src/main/java/cc/kune/core/server/KunePersistenceService.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/KunePersistenceService.java 2011-06-16 16:47:28 UTC (rev 1407)
+++ trunk/src/main/java/cc/kune/core/server/KunePersistenceService.java 2011-06-16 17:48:38 UTC (rev 1408)
@@ -19,7 +19,6 @@
*/
package cc.kune.core.server;
-
import cc.kune.core.server.init.DatabaseInitializer;
import com.google.inject.Inject;
@@ -28,18 +27,18 @@
@Singleton
public class KunePersistenceService {
- @Inject
- DatabaseInitializer databaseInitializer;
- @Inject
- PersistService persistenceService;
+ @Inject
+ DatabaseInitializer databaseInitializer;
+ @Inject
+ PersistService persistenceService;
- public void start() {
- try {
- persistenceService.start();
- databaseInitializer.initConditional();
- } catch (final Exception e) {
- throw new ServerException("Error starting persistence service", e);
- }
+ public void start() {
+ try {
+ persistenceService.start();
+ databaseInitializer.initConditional();
+ } catch (final Exception e) {
+ throw new ServerException("Error starting persistence service", e);
}
+ }
}
Modified: trunk/src/main/java/cc/kune/core/server/auth/AuthenticatedMethodInterceptor.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/auth/AuthenticatedMethodInterceptor.java 2011-06-16 16:47:28 UTC (rev 1407)
+++ trunk/src/main/java/cc/kune/core/server/auth/AuthenticatedMethodInterceptor.java 2011-06-16 17:48:38 UTC (rev 1408)
@@ -32,57 +32,70 @@
import com.google.inject.Inject;
import com.google.inject.Provider;
+import com.google.inject.persist.UnitOfWork;
public class AuthenticatedMethodInterceptor implements MethodInterceptor {
- public static final Log LOG = LogFactory.getLog(AuthenticatedMethodInterceptor.class);
+ public static final Log LOG = LogFactory.getLog(AuthenticatedMethodInterceptor.class);
- @Inject
- Provider<HttpServletRequest> requestProvider;
+ @Inject
+ Provider<HttpServletRequest> requestProvider;
- @Inject
- Provider<SessionService> sessionServiceProvider;
+ @Inject
+ Provider<SessionService> sessionServiceProvider;
- @Inject
- Provider<UserSession> userSessionProvider;
+ @Inject
+ private UnitOfWork unitOfWork;
- @Override
- public Object invoke(final MethodInvocation invocation) throws Throwable {
- final Object[] arguments = invocation.getArguments();
- // Some browsers getCookie returns "null" as String instead of null
- final String userHash = arguments[0] == null || arguments[0].equals("null") ? null : (String) arguments[0];
+ @Inject
+ Provider<UserSession> userSessionProvider;
- LOG.info("Method: " + invocation.getMethod().getName());
- LOG.info("Userhash received: " + userHash);
- LOG.info("--------------------------------------------------------------------------------");
- final UserSession userSession = userSessionProvider.get();
- // final SessionService sessionService = sessionServiceProvider.get();
+ @Override
+ public Object invoke(final MethodInvocation invocation) throws Throwable {
+ unitOfWork.begin();
- final Authenticated authAnnotation = invocation.getStaticPart().getAnnotation(Authenticated.class);
- final boolean mandatory = authAnnotation.mandatory();
+ final Object[] arguments = invocation.getArguments();
+ // Some browsers getCookie returns "null" as String instead of null
+ final String userHash = arguments[0] == null || arguments[0].equals("null") ? null
+ : (String) arguments[0];
- if (userHash == null && mandatory) {
- // sessionService.getNewSession();
- throw new UserMustBeLoggedException();
- } else if (userSession.isUserNotLoggedIn() && mandatory) {
- // sessionService.getNewSession();
- LOG.info("Session expired (not logged in server and mandatory)");
- throw new SessionExpiredException();
- } else if (userSession.isUserNotLoggedIn() && userHash == null) {
- // Ok, do nothing
- } else if (userSession.isUserNotLoggedIn() && userHash != null) {
- // sessionService.getNewSession();
- LOG.info("Session expired (not logged in server)");
- throw new SessionExpiredException();
- } else if (!userSession.getHash().equals(userHash)) {
- final String serverHash = userSession.getHash();
- userSession.logout();
- // sessionService.getNewSession();
- LOG.info("Session expired (userHash: " + userHash + " different from server hash: " + serverHash + ")");
- throw new SessionExpiredException();
- }
- final Object result = invocation.proceed();
- return result;
+ LOG.info("Method: " + invocation.getMethod().getName());
+ LOG.info("Userhash received: " + userHash);
+ LOG.info("--------------------------------------------------------------------------------");
+ final UserSession userSession = userSessionProvider.get();
+ // final SessionService sessionService = sessionServiceProvider.get();
+
+ final Authenticated authAnnotation = invocation.getStaticPart().getAnnotation(Authenticated.class);
+ final boolean mandatory = authAnnotation.mandatory();
+
+ if (userHash == null && mandatory) {
+ // sessionService.getNewSession();
+ unitOfWork.end();
+ throw new UserMustBeLoggedException();
+ } else if (userSession.isUserNotLoggedIn() && mandatory) {
+ // sessionService.getNewSession();
+ LOG.info("Session expired (not logged in server and mandatory)");
+ unitOfWork.end();
+ throw new SessionExpiredException();
+ } else if (userSession.isUserNotLoggedIn() && userHash == null) {
+ // Ok, do nothing
+ } else if (userSession.isUserNotLoggedIn() && userHash != null) {
+ // sessionService.getNewSession();
+ LOG.info("Session expired (not logged in server)");
+ unitOfWork.end();
+ throw new SessionExpiredException();
+ } else if (!userSession.getHash().equals(userHash)) {
+ final String serverHash = userSession.getHash();
+ userSession.logout();
+ // sessionService.getNewSession();
+ LOG.info("Session expired (userHash: " + userHash + " different from server hash: " + serverHash
+ + ")");
+ unitOfWork.end();
+ throw new SessionExpiredException();
}
+ final Object result = invocation.proceed();
+ unitOfWork.end();
+ return result;
+ }
}
Modified: trunk/src/main/java/cc/kune/core/server/rack/RackServletFilter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/rack/RackServletFilter.java 2011-06-16 16:47:28 UTC (rev 1407)
+++ trunk/src/main/java/cc/kune/core/server/rack/RackServletFilter.java 2011-06-16 17:48:38 UTC (rev 1408)
@@ -41,144 +41,145 @@
import com.google.inject.Injector;
public class RackServletFilter implements Filter {
- public static class DockChain implements FilterChain {
- private final Iterator<Dock> iterator;
+ public static class DockChain implements FilterChain {
+ private final Iterator<Dock> iterator;
- public DockChain(final Iterator<Dock> iterator) {
- this.iterator = iterator;
- }
+ public DockChain(final Iterator<Dock> iterator) {
+ this.iterator = iterator;
+ }
- @Override
- public void doFilter(final ServletRequest request, final ServletResponse response) throws IOException,
- ServletException {
- Dock dock = null;
- boolean matched = false;
+ @Override
+ public void doFilter(final ServletRequest request, final ServletResponse response)
+ throws IOException, ServletException {
+ Dock dock = null;
+ boolean matched = false;
- final String relative = RackHelper.getRelativeURL(request);
- while (!matched && iterator.hasNext()) {
- dock = iterator.next();
- matched = dock.matches(relative);
- }
- if (matched) {
- execute(dock.getFilter(), request, response);
- }
- }
+ final String relative = RackHelper.getRelativeURL(request);
+ while (!matched && iterator.hasNext()) {
+ dock = iterator.next();
+ matched = dock.matches(relative);
+ }
+ if (matched) {
+ execute(dock.getFilter(), request, response);
+ }
+ }
- private void execute(final Filter filter, final ServletRequest request, final ServletResponse response)
- throws IOException, ServletException {
- // log.debug("RACK FILTER: " + filter.getClass().getSimpleName());
- filter.doFilter(request, response, this);
- }
+ private void execute(final Filter filter, final ServletRequest request,
+ final ServletResponse response) throws IOException, ServletException {
+ // log.debug("RACK FILTER: " + filter.getClass().getSimpleName());
+ filter.doFilter(request, response, this);
}
+ }
- public static final String INJECTOR_ATTRIBUTE = Injector.class.getName() + "Child";
- public static final String INJECTOR_PARENT_ATTRIBUTE = ServerRpcProvider.INJECTOR_ATTRIBUTE;
- private static final Log LOG = LogFactory.getLog(RackServletFilter.class);
- private static final String MODULE_PARAMETER = RackModule.class.getName();
- private List<Dock> docks;
+ public static final String INJECTOR_ATTRIBUTE = Injector.class.getName() + "Child";
+ public static final String INJECTOR_PARENT_ATTRIBUTE = ServerRpcProvider.INJECTOR_ATTRIBUTE;
+ private static final Log LOG = LogFactory.getLog(RackServletFilter.class);
+ private static final String MODULE_PARAMETER = RackModule.class.getName();
+ private List<Dock> docks;
- private List<RequestMatcher> excludes;
- private Injector injector;
- private Rack rack;
+ private List<RequestMatcher> excludes;
+ private Injector injector;
+ private Rack rack;
- @Override
- public void destroy() {
- for (final Dock dock : docks) {
- dock.getFilter().destroy();
- }
+ @Override
+ public void destroy() {
+ for (final Dock dock : docks) {
+ dock.getFilter().destroy();
}
+ }
- @Override
- public void doFilter(final ServletRequest request, final ServletResponse response, final FilterChain chain)
- throws IOException, ServletException {
+ @Override
+ public void doFilter(final ServletRequest request, final ServletResponse response,
+ final FilterChain chain) throws IOException, ServletException {
- final String relative = RackHelper.getRelativeURL(request);
- for (final RequestMatcher matcher : excludes) {
- if (matcher.matches(relative)) {
- LOG.info("Excluded (from Guice): " + relative);
- chain.doFilter(request, response);
- return;
- }
- }
- LOG.debug("REQUEST: " + relative);
- final FilterChain newChain = new DockChain(docks.iterator());
- newChain.doFilter(request, response);
+ final String relative = RackHelper.getRelativeURL(request);
+ for (final RequestMatcher matcher : excludes) {
+ if (matcher.matches(relative)) {
+ LOG.info("Excluded (from Guice): " + relative);
+ chain.doFilter(request, response);
+ return;
+ }
}
+ LOG.debug("REQUEST: " + relative);
+ final FilterChain newChain = new DockChain(docks.iterator());
+ newChain.doFilter(request, response);
+ }
- @Override
- protected void finalize() throws Throwable {
- super.finalize();
- stopContainerListeners(rack.getListeners(), injector);
- }
+ @Override
+ protected void finalize() throws Throwable {
+ super.finalize();
+ stopContainerListeners(rack.getListeners(), injector);
+ }
- private RackModule getModule(final FilterConfig filterConfig) {
- final String moduleName = getModuleName(filterConfig);
- try {
- final Class<?> clazz = Class.forName(moduleName);
- final RackModule module = (RackModule) clazz.newInstance();
- return module;
- } catch (final Exception e) {
- throw new ServerException("couldn't instantiate the rack module", e);
- }
+ private RackModule getModule(final FilterConfig filterConfig) {
+ final String moduleName = getModuleName(filterConfig);
+ try {
+ final Class<?> clazz = Class.forName(moduleName);
+ final RackModule module = (RackModule) clazz.newInstance();
+ return module;
+ } catch (final Exception e) {
+ throw new ServerException("couldn't instantiate the rack module", e);
}
+ }
- private String getModuleName(final FilterConfig filterConfig) {
- final String moduleName = filterConfig.getInitParameter(MODULE_PARAMETER);
- if (moduleName == null) {
- throw new ServerException("Rack module name can't be null!");
- }
- return moduleName;
+ private String getModuleName(final FilterConfig filterConfig) {
+ final String moduleName = filterConfig.getInitParameter(MODULE_PARAMETER);
+ if (moduleName == null) {
+ throw new ServerException("Rack module name can't be null!");
}
+ return moduleName;
+ }
- @Override
- public void init(final FilterConfig filterConfig) throws ServletException {
- LOG.debug("INITIALIZING RackServletFilter...");
- final RackModule module = getModule(filterConfig);
- final RackBuilder builder = new RackBuilder();
- module.configure(builder);
- rack = builder.getRack();
- // final WaveStarter waveStarter = new WaveStarter();
- // final Injector waveChildInjector = waveStarter.runMain();
- injector = (Injector) filterConfig.getServletContext().getAttribute(INJECTOR_PARENT_ATTRIBUTE);
- final Injector kuneChildInjector = installInjector(filterConfig, rack, injector);
- startContainerListeners(rack.getListeners(), kuneChildInjector);
- docks = rack.getDocks();
- excludes = rack.getExcludes();
- initFilters(filterConfig);
- LOG.debug("INITIALIZATION DONE!");
- }
+ @Override
+ public void init(final FilterConfig filterConfig) throws ServletException {
+ LOG.debug("INITIALIZING RackServletFilter...");
+ final RackModule module = getModule(filterConfig);
+ final RackBuilder builder = new RackBuilder();
+ module.configure(builder);
+ rack = builder.getRack();
+ // final WaveStarter waveStarter = new WaveStarter();
+ // final Injector waveChildInjector = waveStarter.runMain();
+ injector = (Injector) filterConfig.getServletContext().getAttribute(INJECTOR_PARENT_ATTRIBUTE);
+ final Injector kuneChildInjector = installInjector(filterConfig, rack, injector);
+ startContainerListeners(rack.getListeners(), kuneChildInjector);
+ docks = rack.getDocks();
+ excludes = rack.getExcludes();
+ initFilters(filterConfig);
+ LOG.debug("INITIALIZATION DONE!");
+ }
- private void initFilters(final FilterConfig filterConfig) throws ServletException {
- for (final Dock dock : docks) {
- dock.getFilter().init(filterConfig);
- }
+ private void initFilters(final FilterConfig filterConfig) throws ServletException {
+ for (final Dock dock : docks) {
+ dock.getFilter().init(filterConfig);
}
+ }
- private Injector installInjector(final FilterConfig filterConfig, final Rack rack, final Injector waveChildInjector) {
- // final Injector injector = Guice.createInjector();
- final Injector childInjector = waveChildInjector.createChildInjector(rack.getGuiceModules());
- filterConfig.getServletContext().setAttribute(INJECTOR_ATTRIBUTE, childInjector);
- return childInjector;
- }
+ private Injector installInjector(final FilterConfig filterConfig, final Rack rack,
+ final Injector waveChildInjector) {
+ // final Injector injector = Guice.createInjector();
+ final Injector childInjector = waveChildInjector.createChildInjector(rack.getGuiceModules());
+ filterConfig.getServletContext().setAttribute(INJECTOR_ATTRIBUTE, childInjector);
+ return childInjector;
+ }
- private void startContainerListeners(final List<Class<? extends ContainerListener>> listenerClasses,
- final Injector injector) {
- LOG.debug("STARTING CONTAINER LISTENERS...");
- for (final Class<? extends ContainerListener> listenerClass : listenerClasses) {
- final ContainerListener listener = injector.getInstance(listenerClass);
- listener.start();
- }
+ private void startContainerListeners(final List<Class<? extends ContainerListener>> listenerClasses,
+ final Injector injector) {
+ LOG.debug("STARTING CONTAINER LISTENERS...");
+ for (final Class<? extends ContainerListener> listenerClass : listenerClasses) {
+ final ContainerListener listener = injector.getInstance(listenerClass);
+ listener.start();
}
+ }
- // FIXME: Dani, never used this:
- @SuppressWarnings("unused")
- private void stopContainerListeners(final List<Class<? extends ContainerListener>> listenerClasses,
- final Injector injector) {
- LOG.debug("STOPING CONTAINER LISTENERS...");
- for (final Class<? extends ContainerListener> listenerClass : listenerClasses) {
- final ContainerListener listener = injector.getInstance(listenerClass);
- listener.stop();
- }
+ // FIXME: Dani, never used this:
+ @SuppressWarnings("unused")
+ private void stopContainerListeners(final List<Class<? extends ContainerListener>> listenerClasses,
+ final Injector injector) {
+ LOG.debug("STOPING CONTAINER LISTENERS...");
+ for (final Class<? extends ContainerListener> listenerClass : listenerClasses) {
+ final ContainerListener listener = injector.getInstance(listenerClass);
+ listener.stop();
}
+ }
}
Modified: trunk/src/main/resources/META-INF/persistence.xml
===================================================================
--- trunk/src/main/resources/META-INF/persistence.xml 2011-06-16 16:47:28 UTC (rev 1407)
+++ trunk/src/main/resources/META-INF/persistence.xml 2011-06-16 17:48:38 UTC (rev 1408)
@@ -8,7 +8,8 @@
transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<!-- JPA entities must be registered here -->
- <!-- src/main/java/cc/kune/domain$ ls -1 *.java | sed 's/.java/<\/class>/g' | sed 's/^/<class>cc.kune.domain./g' -->
+ <!-- src/main/java/cc/kune/domain$ ls -1 *.java | sed 's/.java/<\/class>/g'
+ | sed 's/^/<class>cc.kune.domain./g' -->
<class>cc.kune.domain.AccessLists</class>
<class>cc.kune.domain.BasicMimeType</class>
<class>cc.kune.domain.Container</class>
1
0
Author: vjrj_
Date: 2011-06-16 18:47:28 +0200 (Thu, 16 Jun 2011)
New Revision: 1407
Added:
trunk/img/webtemplate/theme-palettes.svg
trunk/img/webtemplate/theme-palettes.svg-rect7391-2-1-699.png
trunk/img/webtemplate/theme-palettes.svg-rect7391-2-4294966623.png
trunk/img/webtemplate/theme-palettes.svg-rect7391-2-73.png
trunk/src/main/java/cc/kune/common/client/utils/CSSUtils.java
trunk/src/main/java/cc/kune/core/shared/dto/GSpaceTheme.java
trunk/src/main/java/cc/kune/gspace/client/options/style/
trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConf.java
trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConfPanel.java
trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConfPresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConfView.java
trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsStyleConf.java
trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsStyleConfPanel.java
trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsStyleConfPresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsStyleConfView.java
trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsStyleConf.java
trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsStyleConfPanel.java
trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsStyleConfPresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsStyleConfView.java
trunk/src/main/java/cc/kune/gspace/client/resources/GSpaceArmorResources.java
trunk/src/main/java/cc/kune/gspace/client/resources/gSpaceArmor.css
trunk/src/main/java/cc/kune/gspace/client/resources/gSpaceArmorTheme.css
trunk/src/main/java/cc/kune/gspace/client/themes/
trunk/src/main/java/cc/kune/gspace/client/themes/CurrentEntityTheme.java
trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeChangeEvent.java
trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeManager.java
trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeSelectorPanel.java
trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeSelectorPresenter.java
trunk/src/main/java/cc/kune/gspace/public/css/
Removed:
trunk/src/main/java/cc/kune/gspace/client/options/pscape/
trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsPublicSpaceConf.java
trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsPublicSpaceConfPanel.java
trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsPublicSpaceConfPresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsPublicSpaceConfView.java
trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsPublicSpaceConf.java
trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsPublicSpaceConfPanel.java
trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsPublicSpaceConfPresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsPublicSpaceConfView.java
trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsPublicSpaceConf.java
trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsPublicSpaceConfPanel.java
trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsPublicSpaceConfPresenter.java
trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsPublicSpaceConfView.java
trunk/src/main/java/cc/kune/gspace/client/resources/WsArmorResources.java
trunk/src/main/java/cc/kune/gspace/client/resources/wsArmor.css
trunk/src/main/java/cc/kune/gspace/public/kune-gspace.css
trunk/src/main/java/org/ourproject/kune/workspace/client/licensewizard/
trunk/src/main/java/org/ourproject/kune/workspace/client/oldsn/
trunk/src/main/java/org/ourproject/kune/workspace/client/themes/
Modified:
trunk/img/webtemplate/web_template-2011.svg
trunk/src/main/java/cc/kune/client/OnAppStartFactory.java
trunk/src/main/java/cc/kune/common/client/actions/gwtui/AbstractGwtButtonGui.java
trunk/src/main/java/cc/kune/common/client/actions/gwtui/AbstractGwtMenuItemGui.java
trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtIconLabelGui.java
trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtMenuGui.java
trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtMenuSeparatorGui.java
trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtSubMenuGui.java
trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtToolbarGui.java
trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtToolbarSeparatorGui.java
trunk/src/main/java/cc/kune/common/client/actions/gxtui/AbstractGxtButtonGui.java
trunk/src/main/java/cc/kune/common/client/actions/gxtui/AbstractGxtMenuGui.java
trunk/src/main/java/cc/kune/common/client/actions/gxtui/AbstractGxtMenuItemGui.java
trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtMenuSeparatorGui.java
trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtMenuTitleItemGui.java
trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtToolbarGui.java
trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtToolbarSeparatorGui.java
trunk/src/main/java/cc/kune/common/client/actions/ui/AbstractGuiItem.java
trunk/src/main/java/cc/kune/common/client/ui/IconLabel.java
trunk/src/main/java/cc/kune/core/client/actions/XMLActionsParser.java
trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorViewImpl.java
trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorViewImpl.ui.xml
trunk/src/main/java/cc/kune/core/client/sn/AbstractSNPanel.ui.xml
trunk/src/main/java/cc/kune/core/client/ws/CoreViewImpl.java
trunk/src/main/java/cc/kune/core/public/ws.css
trunk/src/main/java/cc/kune/core/server/InitData.java
trunk/src/main/java/cc/kune/core/server/mapper/DozerMapper.java
trunk/src/main/java/cc/kune/core/server/rpc/SiteRPC.java
trunk/src/main/java/cc/kune/core/shared/dto/InitDataDTO.java
trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorEntryPoint.java
trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.ui.xml
trunk/src/main/java/cc/kune/gspace/client/GSpaceGinModule.java
trunk/src/main/java/cc/kune/gspace/client/GSpaceParts.java
trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorItemPanel.java
trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorItemPanel.ui.xml
trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientTool.java
trunk/src/main/java/org/ourproject/kune/gallery/client/GalleryClientTool.java
trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientTool.java
trunk/src/main/java/org/ourproject/kune/workspace/client/entityheader/EntityHeaderPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/entityheader/EntityHeaderPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/entityheader/EntityHeaderView.java
trunk/src/main/java/org/ourproject/kune/workspace/client/skel/Entity.java
trunk/src/main/java/org/ourproject/kune/workspace/client/skel/EntityWorkspace.java
trunk/src/main/java/org/ourproject/kune/workspace/client/skel/WorkspaceSkeleton.java
trunk/src/main/java/org/ourproject/kune/workspace/client/tool/OldAbstractClientTool.java
trunk/src/main/java/org/ourproject/kune/workspace/client/tool/OldFoldableAbstractClientTool.java
trunk/src/main/resources/dozerBeanMapping.xml
trunk/src/main/resources/kune.properties
trunk/src/test/java/cc/kune/core/server/mapper/MapperTest.java
trunk/src/test/java/org/ourproject/kune/workspace/client/entityheader/EntityLogoPresenterTest.java
Log:
More styles
Added: trunk/img/webtemplate/theme-palettes.svg
===================================================================
--- trunk/img/webtemplate/theme-palettes.svg (rev 0)
+++ trunk/img/webtemplate/theme-palettes.svg 2011-06-16 16:47:28 UTC (rev 1407)
@@ -0,0 +1,1985 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="210mm"
+ height="297mm"
+ id="svg7383"
+ version="1.1"
+ inkscape:version="0.48.1 r9760"
+ sodipodi:docname="theme-palettes.svg">
+ <defs
+ id="defs7385" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="1"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1"
+ inkscape:cx="459.51336"
+ inkscape:cy="233.97795"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="1078"
+ inkscape:window-height="807"
+ inkscape:window-x="3"
+ inkscape:window-y="1042"
+ inkscape:window-maximized="0" />
+ <metadata
+ id="metadata7388">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Capa 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <rect
+ y="826.14136"
+ x="768.34814"
+ height="40"
+ width="150"
+ id="rect7955-1"
+ style="color:#000000;fill:#ffffff;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <rect
+ style="color:#000000;fill:#ffffff;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect7957-6"
+ width="150"
+ height="40"
+ x="768.34814"
+ y="866.14136" />
+ <rect
+ y="906.14136"
+ x="768.34814"
+ height="40"
+ width="150"
+ id="rect7959-4"
+ style="color:#000000;fill:#e6e6e6;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <rect
+ style="color:#000000;fill:#ffffff;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect7961-9"
+ width="150"
+ height="40"
+ x="768.34814"
+ y="946.14136" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text7963-2"
+ y="851.14136"
+ x="782.34814"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"><tspan
+ y="851.14136"
+ x="782.34814"
+ id="tspan7965-7"
+ sodipodi:role="line">lorem </tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="782.34814"
+ y="891.14136"
+ id="text7967-6"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan7969-5"
+ x="782.34814"
+ y="891.14136">lorem </tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text7971-2"
+ y="931.14136"
+ x="782.34814"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"><tspan
+ y="931.14136"
+ x="782.34814"
+ id="tspan7973-1"
+ sodipodi:role="line"><tspan
+ id="tspan7975-5"
+ style="font-weight:bold;-inkscape-font-specification:Ubuntu Bold;fill:#000000">lorem </tspan></tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="782.34814"
+ y="971.14136"
+ id="text7977-4"
+ sodipodi:linespacing="125%"><tspan
+ style="font-weight:bold;-inkscape-font-specification:Ubuntu Bold;fill:#000000"
+ sodipodi:role="line"
+ id="tspan7979-0"
+ x="782.34814"
+ y="971.14136">lorem </tspan></text>
+ <rect
+ style="color:#000000;fill:#ffffff;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect7981-2"
+ width="150"
+ height="40"
+ x="921.34814"
+ y="826.14136" />
+ <rect
+ y="866.14136"
+ x="921.34814"
+ height="40"
+ width="150"
+ id="rect7983-4"
+ style="color:#000000;fill:#e6e6e6;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <rect
+ style="color:#000000;fill:#ffffff;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect7985-7"
+ width="150"
+ height="40"
+ x="921.34814"
+ y="906.14136" />
+ <rect
+ y="946.14136"
+ x="921.34814"
+ height="40"
+ width="150"
+ id="rect7987-4"
+ style="color:#000000;fill:#ffffff;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text7989-2"
+ y="891.14136"
+ x="935.34814"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold"
+ xml:space="preserve"><tspan
+ y="891.14136"
+ x="935.34814"
+ id="tspan7991-6"
+ sodipodi:role="line">lorem </tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="934.34814"
+ y="933.14136"
+ id="text7993-3"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan7995-9"
+ x="934.34814"
+ y="933.14136">lorem </tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text7997-0"
+ y="971.14136"
+ x="935.34814"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"><tspan
+ y="971.14136"
+ x="935.34814"
+ id="tspan7999-6"
+ sodipodi:role="line">lorem </tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:28px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold"
+ x="933.34814"
+ y="855.14136"
+ id="text8001-3"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan8003-9"
+ x="933.34814"
+ y="855.14136">lorem </tspan></text>
+ <rect
+ style="color:#000000;fill:#000000;fill-opacity:0;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect7391-2"
+ width="150"
+ height="40"
+ x="24"
+ y="25.362183" />
+ <image
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAAAoCAYAAAAcwQPnAAAABHNCSVQICAgIfAhkiAAAAIlJREFU
+eJzt0kENgDAAwMAx8/OCKESgYCbWkJA7BX30eu71Djhsfh3APxmLhLFIGIuEsUgYi4SxSBiLhLFI
+GIuEsUgYi4SxSBiLhLFIGIuEsUgYi4SxSBiLhLFIGIuEsUgYi4SxSBiLhLFIGIuEsUgYi4SxSBiL
+hLFIGIuEsUgYi4SxSBiLhLFIbCnoA1F5o8FjAAAAAElFTkSuQmCC
+"
+ width="150"
+ height="40"
+ transform="translate(24,25.362183)"
+ id="image5546"
+ style="fill:#deaa87;fill-opacity:1" />
+ <rect
+ y="65.362183"
+ x="24"
+ height="40"
+ width="150"
+ id="rect7462"
+ style="color:#000000;fill:#d99e76;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <rect
+ style="color:#000000;fill:#ce7f4b;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect7464"
+ width="150"
+ height="40"
+ x="24"
+ y="105.36218" />
+ <rect
+ y="145.36218"
+ x="24"
+ height="40"
+ width="150"
+ id="rect7466"
+ style="color:#000000;fill:#d99e76;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="38"
+ y="50.362183"
+ id="text7475"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan7477"
+ x="38"
+ y="50.362183">lorem </tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text7479"
+ y="90.362183"
+ x="38"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"><tspan
+ y="90.362183"
+ x="38"
+ id="tspan7481"
+ sodipodi:role="line">lorem </tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="38"
+ y="130.36218"
+ id="text7483"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan7485"
+ x="38"
+ y="130.36218"><tspan
+ style="font-weight:bold;-inkscape-font-specification:Ubuntu Bold"
+ id="tspan7534">lorem </tspan></tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text7487"
+ y="170.36218"
+ x="38"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"><tspan
+ y="170.36218"
+ x="38"
+ id="tspan7489"
+ sodipodi:role="line"
+ style="font-weight:bold;-inkscape-font-specification:Ubuntu Bold">lorem </tspan></text>
+ <rect
+ y="25.362183"
+ x="177"
+ height="40"
+ width="150"
+ id="rect7510"
+ style="color:#000000;fill:#f6e7dd;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <rect
+ style="color:#000000;fill:#d99e76;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect7512"
+ width="150"
+ height="40"
+ x="177"
+ y="65.362183" />
+ <rect
+ y="105.36218"
+ x="177"
+ height="40"
+ width="150"
+ id="rect7514"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <rect
+ style="color:#000000;fill:#f8eee7;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect7516"
+ width="150"
+ height="40"
+ x="177"
+ y="145.36218" />
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold"
+ x="191"
+ y="90.362183"
+ id="text7518"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan7520"
+ x="191"
+ y="90.362183">lorem </tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text7522"
+ y="132.36218"
+ x="190"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#a05a2c;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"><tspan
+ y="132.36218"
+ x="190"
+ id="tspan7524"
+ sodipodi:role="line">lorem </tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#a05a2c;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="191"
+ y="170.36218"
+ id="text7526"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan7528"
+ x="191"
+ y="170.36218">lorem </tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text7530"
+ y="54.362183"
+ x="189"
+ style="font-size:28px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#552200;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold"
+ xml:space="preserve"><tspan
+ y="54.362183"
+ x="189"
+ id="tspan7532"
+ sodipodi:role="line">lorem </tspan></text>
+ <rect
+ y="225.36218"
+ x="24"
+ height="40"
+ width="150"
+ id="rect7555"
+ style="color:#000000;fill:#ddaee9;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <rect
+ style="color:#000000;fill:#f4c6ff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect7557"
+ width="150"
+ height="40"
+ x="24"
+ y="265.36218" />
+ <rect
+ y="305.36218"
+ x="24"
+ height="40"
+ width="150"
+ id="rect7559"
+ style="color:#000000;fill:#9753aa;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <rect
+ style="color:#000000;fill:#e26fff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect7561"
+ width="150"
+ height="40"
+ x="24"
+ y="345.36218" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text7563"
+ y="250.36218"
+ x="38"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"><tspan
+ y="250.36218"
+ x="38"
+ id="tspan7565"
+ sodipodi:role="line">lorem </tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="38"
+ y="290.36218"
+ id="text7567"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan7569"
+ x="38"
+ y="290.36218">lorem </tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text7571"
+ y="330.36218"
+ x="38"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"><tspan
+ y="330.36218"
+ x="38"
+ id="tspan7573"
+ sodipodi:role="line"><tspan
+ id="tspan7575"
+ style="font-weight:bold;-inkscape-font-specification:Ubuntu Bold">lorem </tspan></tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="38"
+ y="370.36218"
+ id="text7577"
+ sodipodi:linespacing="125%"><tspan
+ style="font-weight:bold;-inkscape-font-specification:Ubuntu Bold"
+ sodipodi:role="line"
+ id="tspan7579"
+ x="38"
+ y="370.36218">lorem </tspan></text>
+ <rect
+ style="color:#000000;fill:#f4e4f8;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect7581"
+ width="150"
+ height="40"
+ x="177"
+ y="225.36218" />
+ <rect
+ y="265.36218"
+ x="177"
+ height="40"
+ width="150"
+ id="rect7583"
+ style="color:#000000;fill:#c653e2;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <rect
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect7585"
+ width="150"
+ height="40"
+ x="177"
+ y="305.36218" />
+ <rect
+ y="345.36218"
+ x="177"
+ height="40"
+ width="150"
+ id="rect7587"
+ style="color:#000000;fill:#f9e3ff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text7589"
+ y="290.36218"
+ x="191"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold"
+ xml:space="preserve"><tspan
+ y="290.36218"
+ x="191"
+ id="tspan7591"
+ sodipodi:role="line">lorem </tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#6d0c87;fill-opacity:0.99607843;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="190"
+ y="332.36218"
+ id="text7593"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan7595"
+ x="190"
+ y="332.36218">lorem </tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text7597"
+ y="370.36218"
+ x="191"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#6d0c87;fill-opacity:0.99607843;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"><tspan
+ y="370.36218"
+ x="191"
+ id="tspan7599"
+ sodipodi:role="line">lorem </tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:28px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa00d4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold"
+ x="189"
+ y="254.36218"
+ id="text7601"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan7603"
+ x="189"
+ y="254.36218">lorem </tspan></text>
+ <rect
+ style="color:#000000;fill:#ffc0c0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect7605"
+ width="150"
+ height="40"
+ x="24"
+ y="425.36218" />
+ <rect
+ y="465.36218"
+ x="24"
+ height="40"
+ width="150"
+ id="rect7607"
+ style="color:#000000;fill:#de8888;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <rect
+ style="color:#000000;fill:#c04141;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect7609"
+ width="150"
+ height="40"
+ x="24"
+ y="505.36218" />
+ <rect
+ y="545.36218"
+ x="24"
+ height="40"
+ width="150"
+ id="rect7611"
+ style="color:#000000;fill:#ff8080;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#aa0000;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="38"
+ y="450.36218"
+ id="text7613"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan7615"
+ x="38"
+ y="450.36218">lorem </tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text7617"
+ y="490.36218"
+ x="38"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"><tspan
+ y="490.36218"
+ x="38"
+ id="tspan7619"
+ sodipodi:role="line">lorem </tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="38"
+ y="530.36218"
+ id="text7621"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan7623"
+ x="38"
+ y="530.36218"><tspan
+ style="font-weight:bold;-inkscape-font-specification:Ubuntu Bold"
+ id="tspan7625">lorem </tspan></tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text7627"
+ y="570.36218"
+ x="38"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"><tspan
+ y="570.36218"
+ x="38"
+ id="tspan7629"
+ sodipodi:role="line"
+ style="font-weight:bold;-inkscape-font-specification:Ubuntu Bold">lorem </tspan></text>
+ <rect
+ y="425.36218"
+ x="177"
+ height="40"
+ width="150"
+ id="rect7631"
+ style="color:#000000;fill:#ffe0e0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <rect
+ style="color:#000000;fill:#b86262;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect7633"
+ width="150"
+ height="40"
+ x="177"
+ y="465.36218" />
+ <rect
+ y="505.36218"
+ x="177"
+ height="40"
+ width="150"
+ id="rect7635"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <rect
+ style="color:#000000;fill:#f7e1e1;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect7637"
+ width="150"
+ height="40"
+ x="177"
+ y="545.36218" />
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold"
+ x="191"
+ y="490.36218"
+ id="text7639"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan7641"
+ x="191"
+ y="490.36218">lorem </tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text7643"
+ y="532.36218"
+ x="190"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#a02c2c;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"><tspan
+ y="532.36218"
+ x="190"
+ id="tspan7645"
+ sodipodi:role="line">lorem </tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#a02c2c;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="191"
+ y="570.36218"
+ id="text7647"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan7649"
+ x="191"
+ y="570.36218">lorem </tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text7651"
+ y="454.36218"
+ x="189"
+ style="font-size:28px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#a02c2c;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold"
+ xml:space="preserve"><tspan
+ y="454.36218"
+ x="189"
+ id="tspan7653"
+ sodipodi:role="line">lorem </tspan></text>
+ <rect
+ y="625.36218"
+ x="24"
+ height="40"
+ width="150"
+ id="rect7655"
+ style="color:#000000;fill:#8cbaff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <rect
+ style="color:#000000;fill:#87aade;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect7657"
+ width="150"
+ height="40"
+ x="24"
+ y="665.36218" />
+ <rect
+ y="705.36218"
+ x="24"
+ height="40"
+ width="150"
+ id="rect7659"
+ style="color:#000000;fill:#5280c5;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <rect
+ style="color:#000000;fill:#528ce2;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect7661"
+ width="150"
+ height="40"
+ x="24"
+ y="745.36218" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text7663"
+ y="650.36218"
+ x="38"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"><tspan
+ y="650.36218"
+ x="38"
+ id="tspan7665"
+ sodipodi:role="line">lorem </tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="38"
+ y="690.36218"
+ id="text7667"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan7669"
+ x="38"
+ y="690.36218">lorem </tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text7671"
+ y="730.36218"
+ x="38"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"><tspan
+ y="730.36218"
+ x="38"
+ id="tspan7673"
+ sodipodi:role="line"><tspan
+ id="tspan7675"
+ style="font-weight:bold;-inkscape-font-specification:Ubuntu Bold">lorem </tspan></tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="38"
+ y="770.36218"
+ id="text7677"
+ sodipodi:linespacing="125%"><tspan
+ style="font-weight:bold;-inkscape-font-specification:Ubuntu Bold"
+ sodipodi:role="line"
+ id="tspan7679"
+ x="38"
+ y="770.36218">lorem </tspan></text>
+ <rect
+ style="color:#000000;fill:#c5dcff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect7681"
+ width="150"
+ height="40"
+ x="177"
+ y="625.36218" />
+ <rect
+ y="665.36218"
+ x="177"
+ height="40"
+ width="150"
+ id="rect7683"
+ style="color:#000000;fill:#528ce2;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <rect
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect7685"
+ width="150"
+ height="40"
+ x="177"
+ y="705.36218" />
+ <rect
+ y="745.36218"
+ x="177"
+ height="40"
+ width="150"
+ id="rect7687"
+ style="color:#000000;fill:#c9d8f0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text7689"
+ y="690.36218"
+ x="191"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold"
+ xml:space="preserve"><tspan
+ y="690.36218"
+ x="191"
+ id="tspan7691"
+ sodipodi:role="line">lorem </tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#0044aa;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="190"
+ y="732.36218"
+ id="text7693"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan7695"
+ x="190"
+ y="732.36218">lorem </tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text7697"
+ y="770.36218"
+ x="191"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#0044aa;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"><tspan
+ y="770.36218"
+ x="191"
+ id="tspan7699"
+ sodipodi:role="line">lorem </tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:28px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#0044aa;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold"
+ x="189"
+ y="654.36218"
+ id="text7701"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan7703"
+ x="189"
+ y="654.36218">lorem </tspan></text>
+ <rect
+ style="color:#000000;fill:#f6f1de;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect7705"
+ width="150"
+ height="40"
+ x="24"
+ y="825.36218" />
+ <rect
+ y="865.36218"
+ x="24"
+ height="40"
+ width="150"
+ id="rect7707"
+ style="color:#000000;fill:#a49e87;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <rect
+ style="color:#000000;fill:#3c3c3c;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect7709"
+ width="150"
+ height="40"
+ x="24"
+ y="905.36218" />
+ <rect
+ y="945.36218"
+ x="24"
+ height="40"
+ width="150"
+ id="rect7711"
+ style="color:#000000;fill:#f5cc22;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#151515;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="38"
+ y="850.36218"
+ id="text7713"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan7715"
+ x="38"
+ y="850.36218">lorem </tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text7717"
+ y="890.36218"
+ x="38"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#151515;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"><tspan
+ y="890.36218"
+ x="38"
+ id="tspan7719"
+ sodipodi:role="line">lorem </tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#FECC00;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="38"
+ y="930.36218"
+ id="text7721"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan7723"
+ x="38"
+ y="930.36218"><tspan
+ style="font-weight:bold;-inkscape-font-specification:Ubuntu Bold;fill:#FECC00"
+ id="tspan7725">lorem </tspan></tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text7727"
+ y="970.36218"
+ x="38"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#151515;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"><tspan
+ y="970.36218"
+ x="38"
+ id="tspan7729"
+ sodipodi:role="line"
+ style="font-weight:bold;-inkscape-font-specification:Ubuntu Bold;fill:#151515;fill-opacity:0.94901961">lorem </tspan></text>
+ <rect
+ y="825.36218"
+ x="177"
+ height="40"
+ width="150"
+ id="rect7731"
+ style="color:#000000;fill:#f6f1de;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <rect
+ style="color:#000000;fill:#4f472b;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect7733"
+ width="150"
+ height="40"
+ x="177"
+ y="865.36218" />
+ <rect
+ y="905.36218"
+ x="177"
+ height="40"
+ width="150"
+ id="rect7735"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <rect
+ style="color:#000000;fill:#fff8dc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect7737"
+ width="150"
+ height="40"
+ x="177"
+ y="945.36218" />
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#f3c401;fill-opacity:0.99607843;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold"
+ x="191"
+ y="890.36218"
+ id="text7739"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan7741"
+ x="191"
+ y="890.36218">lorem </tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text7743"
+ y="932.36218"
+ x="190"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#151515;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"><tspan
+ y="932.36218"
+ x="190"
+ id="tspan7745"
+ sodipodi:role="line">lorem </tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#151515;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="191"
+ y="970.36218"
+ id="text7747"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan7749"
+ x="191"
+ y="970.36218">lorem </tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text7751"
+ y="854.36218"
+ x="189"
+ style="font-size:28px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold"
+ xml:space="preserve"><tspan
+ y="854.36218"
+ x="189"
+ id="tspan7753"
+ sodipodi:role="line">lorem </tspan></text>
+ <rect
+ y="25.362183"
+ x="394"
+ height="40"
+ width="150"
+ id="rect7755"
+ style="color:#000000;fill:#abde88;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <rect
+ style="color:#000000;fill:#bfe7a6;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect7757"
+ width="150"
+ height="40"
+ x="394"
+ y="65.362183" />
+ <rect
+ y="105.36218"
+ x="394"
+ height="40"
+ width="150"
+ id="rect7759"
+ style="color:#000000;fill:#5a8141;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <rect
+ style="color:#000000;fill:#749b5a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect7761"
+ width="150"
+ height="40"
+ x="394"
+ y="145.36218" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text7763"
+ y="50.362183"
+ x="408"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#225500;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"><tspan
+ y="50.362183"
+ x="408"
+ id="tspan7765"
+ sodipodi:role="line">lorem </tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#225500;fill-opacity:0.9490217;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="408"
+ y="90.362183"
+ id="text7767"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan7769"
+ x="408"
+ y="90.362183">lorem </tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text7771"
+ y="130.36218"
+ x="408"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"><tspan
+ y="130.36218"
+ x="408"
+ id="tspan7773"
+ sodipodi:role="line"><tspan
+ id="tspan7775"
+ style="font-weight:bold;-inkscape-font-specification:Ubuntu Bold">lorem </tspan></tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="408"
+ y="170.36218"
+ id="text7777"
+ sodipodi:linespacing="125%"><tspan
+ style="font-weight:bold;-inkscape-font-specification:Ubuntu Bold"
+ sodipodi:role="line"
+ id="tspan7779"
+ x="408"
+ y="170.36218">lorem </tspan></text>
+ <rect
+ style="color:#000000;fill:#d5efc3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect7781"
+ width="150"
+ height="40"
+ x="547"
+ y="25.362183" />
+ <rect
+ y="65.362183"
+ x="547"
+ height="40"
+ width="150"
+ id="rect7783"
+ style="color:#000000;fill:#749b5a;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <rect
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect7785"
+ width="150"
+ height="40"
+ x="547"
+ y="105.36218" />
+ <rect
+ y="145.36218"
+ x="547"
+ height="40"
+ width="150"
+ id="rect7787"
+ style="color:#000000;fill:#eaf7e1;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text7789"
+ y="90.362183"
+ x="561"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold"
+ xml:space="preserve"><tspan
+ y="90.362183"
+ x="561"
+ id="tspan7791"
+ sodipodi:role="line">lorem </tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#225500;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="560"
+ y="132.36218"
+ id="text7793"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan7795"
+ x="560"
+ y="132.36218">lorem </tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text7797"
+ y="170.36218"
+ x="561"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#225500;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"><tspan
+ y="170.36218"
+ x="561"
+ id="tspan7799"
+ sodipodi:role="line">lorem </tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:28px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#17280b;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold"
+ x="559"
+ y="54.362183"
+ id="text7801"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan7803"
+ x="559"
+ y="54.362183">lorem </tspan></text>
+ <rect
+ style="color:#000000;fill:#cfcfcf;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect7805"
+ width="150"
+ height="40"
+ x="394"
+ y="225.36218" />
+ <rect
+ y="265.36218"
+ x="394"
+ height="40"
+ width="150"
+ id="rect7807"
+ style="color:#000000;fill:#b7b7b7;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <rect
+ style="color:#000000;fill:#565656;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect7809"
+ width="150"
+ height="40"
+ x="394"
+ y="305.36218" />
+ <rect
+ y="345.36218"
+ x="394"
+ height="40"
+ width="150"
+ id="rect7811"
+ style="color:#000000;fill:#868686;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#4d4d4d;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="408"
+ y="250.36218"
+ id="text7813"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan7815"
+ x="408"
+ y="250.36218">lorem </tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text7817"
+ y="290.36218"
+ x="408"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#4d4d4d;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"><tspan
+ y="290.36218"
+ x="408"
+ id="tspan7819"
+ sodipodi:role="line">lorem </tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="408"
+ y="330.36218"
+ id="text7821"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan7823"
+ x="408"
+ y="330.36218"><tspan
+ style="font-weight:bold;-inkscape-font-specification:Ubuntu Bold"
+ id="tspan7825">lorem </tspan></tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text7827"
+ y="370.36218"
+ x="408"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"><tspan
+ y="370.36218"
+ x="408"
+ id="tspan7829"
+ sodipodi:role="line"
+ style="font-weight:bold;-inkscape-font-specification:Ubuntu Bold">lorem </tspan></text>
+ <rect
+ y="225.36218"
+ x="547"
+ height="40"
+ width="150"
+ id="rect7831"
+ style="color:#000000;fill:#ededed;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <rect
+ style="color:#000000;fill:#6e6e6e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect7833"
+ width="150"
+ height="40"
+ x="547"
+ y="265.36218" />
+ <rect
+ y="305.36218"
+ x="547"
+ height="40"
+ width="150"
+ id="rect7835"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <rect
+ style="color:#000000;fill:#e7e7e7;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect7837"
+ width="150"
+ height="40"
+ x="547"
+ y="345.36218" />
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold"
+ x="561"
+ y="290.36218"
+ id="text7839"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan7841"
+ x="561"
+ y="290.36218">lorem </tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text7843"
+ y="332.36218"
+ x="560"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#4d4d4d;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"><tspan
+ y="332.36218"
+ x="560"
+ id="tspan7845"
+ sodipodi:role="line">lorem </tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#4d4d4d;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="561"
+ y="370.36218"
+ id="text7847"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan7849"
+ x="561"
+ y="370.36218">lorem </tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text7851"
+ y="254.36218"
+ x="559"
+ style="font-size:28px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#000000;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold"
+ xml:space="preserve"><tspan
+ y="254.36218"
+ x="559"
+ id="tspan7853"
+ sodipodi:role="line">lorem </tspan></text>
+ <rect
+ y="425.36218"
+ x="394"
+ height="40"
+ width="150"
+ id="rect7855"
+ style="color:#000000;fill:#ffe7d7;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <rect
+ style="color:#000000;fill:#eac9b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect7857"
+ width="150"
+ height="40"
+ x="394"
+ y="465.36218" />
+ <rect
+ y="505.36218"
+ x="394"
+ height="40"
+ width="150"
+ id="rect7859"
+ style="color:#000000;fill:#d59367;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <rect
+ style="color:#000000;fill:#eac9b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect7861"
+ width="150"
+ height="40"
+ x="394"
+ y="545.36218" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text7863"
+ y="450.36218"
+ x="408"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#502d16;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"><tspan
+ y="450.36218"
+ x="408"
+ id="tspan7865"
+ sodipodi:role="line">lorem </tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#502d16;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="408"
+ y="490.36218"
+ id="text7867"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan7869"
+ x="408"
+ y="490.36218">lorem </tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text7871"
+ y="530.36218"
+ x="408"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#552200;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"><tspan
+ y="530.36218"
+ x="408"
+ id="tspan7873"
+ sodipodi:role="line"><tspan
+ id="tspan7875"
+ style="font-weight:bold;-inkscape-font-specification:Ubuntu Bold;fill:#552200">lorem </tspan></tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#502d16;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="408"
+ y="570.36218"
+ id="text7877"
+ sodipodi:linespacing="125%"><tspan
+ style="font-weight:bold;-inkscape-font-specification:Ubuntu Bold;fill:#502d16"
+ sodipodi:role="line"
+ id="tspan7879"
+ x="408"
+ y="570.36218">lorem </tspan></text>
+ <rect
+ style="color:#000000;fill:#f7ece4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect7881"
+ width="150"
+ height="40"
+ x="547"
+ y="425.36218" />
+ <rect
+ y="465.36218"
+ x="547"
+ height="40"
+ width="150"
+ id="rect7883"
+ style="color:#000000;fill:#e0ae8d;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <rect
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect7885"
+ width="150"
+ height="40"
+ x="547"
+ y="505.36218" />
+ <rect
+ y="545.36218"
+ x="547"
+ height="40"
+ width="150"
+ id="rect7887"
+ style="color:#000000;fill:#f7ece4;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text7889"
+ y="490.36218"
+ x="561"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#784421;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold"
+ xml:space="preserve"><tspan
+ y="490.36218"
+ x="561"
+ id="tspan7891"
+ sodipodi:role="line">lorem </tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#d45500;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="560"
+ y="532.36218"
+ id="text7893"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan7895"
+ x="560"
+ y="532.36218">lorem </tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text7897"
+ y="570.36218"
+ x="561"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#d45500;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"><tspan
+ y="570.36218"
+ x="561"
+ id="tspan7899"
+ sodipodi:role="line">lorem </tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:28px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#502d16;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold"
+ x="559"
+ y="454.36218"
+ id="text7901"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan7903"
+ x="559"
+ y="454.36218">lorem </tspan></text>
+ <rect
+ style="color:#000000;fill:#a14242;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect7905"
+ width="150"
+ height="40"
+ x="394"
+ y="625.36218" />
+ <rect
+ y="665.36218"
+ x="394"
+ height="40"
+ width="150"
+ id="rect7907"
+ style="color:#000000;fill:#b96363;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <rect
+ style="color:#000000;fill:#424242;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect7909"
+ width="150"
+ height="40"
+ x="394"
+ y="705.36218" />
+ <rect
+ y="745.36218"
+ x="394"
+ height="40"
+ width="150"
+ id="rect7911"
+ style="color:#000000;fill:#a14242;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="408"
+ y="650.36218"
+ id="text7913"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan7915"
+ x="408"
+ y="650.36218">lorem </tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text7917"
+ y="690.36218"
+ x="408"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"><tspan
+ y="690.36218"
+ x="408"
+ id="tspan7919"
+ sodipodi:role="line">lorem </tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="408"
+ y="730.36218"
+ id="text7921"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan7923"
+ x="408"
+ y="730.36218"><tspan
+ style="font-weight:bold;-inkscape-font-specification:Ubuntu Bold"
+ id="tspan7925">lorem </tspan></tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text7927"
+ y="770.36218"
+ x="408"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"><tspan
+ y="770.36218"
+ x="408"
+ id="tspan7929"
+ sodipodi:role="line"
+ style="font-weight:bold;-inkscape-font-specification:Ubuntu Bold">lorem </tspan></text>
+ <rect
+ y="625.36218"
+ x="547"
+ height="40"
+ width="150"
+ id="rect7931"
+ style="color:#000000;fill:#ffe0e0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <rect
+ style="color:#000000;fill:#a14242;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect7933"
+ width="150"
+ height="40"
+ x="547"
+ y="665.36218" />
+ <rect
+ y="705.36218"
+ x="547"
+ height="40"
+ width="150"
+ id="rect7935"
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <rect
+ style="color:#000000;fill:#f7e1e1;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect7937"
+ width="150"
+ height="40"
+ x="547"
+ y="745.36218" />
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold"
+ x="561"
+ y="690.36218"
+ id="text7939"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan7941"
+ x="561"
+ y="690.36218">lorem </tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text7943"
+ y="732.36218"
+ x="560"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#800000;fill-opacity:0.9490217;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"><tspan
+ y="732.36218"
+ x="560"
+ id="tspan7945"
+ sodipodi:role="line">lorem </tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#800000;fill-opacity:0.9490217;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="561"
+ y="770.36218"
+ id="text7947"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan7949"
+ x="561"
+ y="770.36218">lorem </tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text7951"
+ y="654.36218"
+ x="559"
+ style="font-size:28px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#800000;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold"
+ xml:space="preserve"><tspan
+ y="654.36218"
+ x="559"
+ id="tspan7953"
+ sodipodi:role="line">lorem </tspan></text>
+ <rect
+ y="825.36218"
+ x="394"
+ height="40"
+ width="150"
+ id="rect7955"
+ style="color:#000000;fill:#e49db9;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <rect
+ style="color:#000000;fill:#edbdd0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect7957"
+ width="150"
+ height="40"
+ x="394"
+ y="865.36218" />
+ <rect
+ y="905.36218"
+ x="394"
+ height="40"
+ width="150"
+ id="rect7959"
+ style="color:#000000;fill:#b15278;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <rect
+ style="color:#000000;fill:#ff74ab;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect7961"
+ width="150"
+ height="40"
+ x="394"
+ y="945.36218" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text7963"
+ y="850.36218"
+ x="408"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"><tspan
+ y="850.36218"
+ x="408"
+ id="tspan7965"
+ sodipodi:role="line">lorem </tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="408"
+ y="890.36218"
+ id="text7967"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan7969"
+ x="408"
+ y="890.36218">lorem </tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text7971"
+ y="930.36218"
+ x="408"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"><tspan
+ y="930.36218"
+ x="408"
+ id="tspan7973"
+ sodipodi:role="line"><tspan
+ id="tspan7975"
+ style="font-weight:bold;-inkscape-font-specification:Ubuntu Bold">lorem </tspan></tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="408"
+ y="970.36218"
+ id="text7977"
+ sodipodi:linespacing="125%"><tspan
+ style="font-weight:bold;-inkscape-font-specification:Ubuntu Bold"
+ sodipodi:role="line"
+ id="tspan7979"
+ x="408"
+ y="970.36218">lorem </tspan></text>
+ <rect
+ style="color:#000000;fill:#ffddf8;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect7981"
+ width="150"
+ height="40"
+ x="547"
+ y="825.36218" />
+ <rect
+ y="865.36218"
+ x="547"
+ height="40"
+ width="150"
+ id="rect7983"
+ style="color:#000000;fill:#d25b8b;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <rect
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect7985"
+ width="150"
+ height="40"
+ x="547"
+ y="905.36218" />
+ <rect
+ y="945.36218"
+ x="547"
+ height="40"
+ width="150"
+ id="rect7987"
+ style="color:#000000;fill:#f6dee8;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <text
+ sodipodi:linespacing="125%"
+ id="text7989"
+ y="890.36218"
+ x="561"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold"
+ xml:space="preserve"><tspan
+ y="890.36218"
+ x="561"
+ id="tspan7991"
+ sodipodi:role="line">lorem </tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#800066;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="560"
+ y="932.36218"
+ id="text7993"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan7995"
+ x="560"
+ y="932.36218">lorem </tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text7997"
+ y="970.36218"
+ x="561"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#800066;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"><tspan
+ y="970.36218"
+ x="561"
+ id="tspan7999"
+ sodipodi:role="line">lorem </tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:28px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#2b0022;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold"
+ x="559"
+ y="854.36218"
+ id="text8001"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan8003"
+ x="559"
+ y="854.36218">lorem </tspan></text>
+ <rect
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect5556"
+ width="722.66315"
+ height="1025.3048"
+ x="5.6568537"
+ y="-1029.3601" />
+ <rect
+ style="color:#000000;fill:#ffff00;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;opacity:0.6"
+ id="rect3272"
+ width="150"
+ height="40"
+ x="754"
+ y="425.36218" />
+ <rect
+ y="465.36218"
+ x="754"
+ height="40"
+ width="150"
+ id="rect3274"
+ style="color:#000000;fill:#ffa500;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;opacity:0.6" />
+ <rect
+ style="color:#000000;fill:#ff0000;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;opacity:0.6"
+ id="rect3276"
+ width="150"
+ height="40"
+ x="754"
+ y="505.36218" />
+ <rect
+ y="545.36218"
+ x="754"
+ height="40"
+ width="150"
+ id="rect3278"
+ style="color:#000000;fill:#008000;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;opacity:0.6" />
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#800080;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;opacity:1"
+ x="768"
+ y="450.36218"
+ id="text3280"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3282"
+ x="768"
+ y="450.36218">lorem </tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text3284"
+ y="490.36218"
+ x="768"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#0000ff;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;opacity:1"
+ xml:space="preserve"><tspan
+ y="490.36218"
+ x="768"
+ id="tspan3286"
+ sodipodi:role="line">lorem </tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;opacity:1"
+ x="768"
+ y="530.36218"
+ id="text3288"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3290"
+ x="768"
+ y="530.36218"><tspan
+ style="font-weight:bold;-inkscape-font-specification:Ubuntu Bold"
+ id="tspan3292">lorem </tspan></tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text3294"
+ y="570.36218"
+ x="768"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;opacity:1"
+ xml:space="preserve"><tspan
+ y="570.36218"
+ x="768"
+ id="tspan3296"
+ sodipodi:role="line"
+ style="font-weight:bold;-inkscape-font-specification:Ubuntu Bold">lorem </tspan></text>
+ <rect
+ y="425.36218"
+ x="907"
+ height="40"
+ width="150"
+ id="rect3298"
+ style="color:#000000;fill:#800080;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;opacity:0.6" />
+ <rect
+ style="color:#000000;fill:#0000ff;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;opacity:0.6"
+ id="rect3300"
+ width="150"
+ height="40"
+ x="907"
+ y="465.36218" />
+ <rect
+ y="505.36218"
+ x="907"
+ height="40"
+ width="150"
+ id="rect3302"
+ style="color:#000000;fill:#ffffff;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;opacity:0.8" />
+ <rect
+ style="color:#000000;fill:#f7ebe3;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:0.73427980999999998;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;opacity:0.8"
+ id="rect3304"
+ width="150"
+ height="40"
+ x="907"
+ y="545.36218" />
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold;opacity:1"
+ x="921"
+ y="490.36218"
+ id="text3306"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3308"
+ x="921"
+ y="490.36218">lorem </tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text3310"
+ y="532.36218"
+ x="920"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#008000;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;opacity:1"
+ xml:space="preserve"><tspan
+ y="532.36218"
+ x="920"
+ id="tspan3312"
+ sodipodi:role="line">lorem </tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#008000;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu;opacity:1"
+ x="921"
+ y="570.36218"
+ id="text3314"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3316"
+ x="921"
+ y="570.36218">lorem </tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text3318"
+ y="454.36218"
+ x="919"
+ style="font-size:28px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961000000001;fill-rule:nonzero;stroke:none;stroke-width:1.40678155000000005;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold;opacity:1"
+ xml:space="preserve"><tspan
+ y="454.36218"
+ x="919"
+ id="tspan3320"
+ sodipodi:role="line">lorem </tspan></text>
+ <rect
+ style="color:#000000;fill:#ffff00;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:0.73427981;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect3322"
+ width="150"
+ height="40"
+ x="754"
+ y="248.36218" />
+ <rect
+ y="288.36218"
+ x="754"
+ height="40"
+ width="150"
+ id="rect3324"
+ style="color:#000000;fill:#ffa500;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:0.73427981;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <rect
+ style="color:#000000;fill:#ff0000;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:0.73427981;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect3326"
+ width="150"
+ height="40"
+ x="754"
+ y="328.36218" />
+ <rect
+ y="368.36218"
+ x="754"
+ height="40"
+ width="150"
+ id="rect3328"
+ style="color:#000000;fill:#008000;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:0.73427981;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#800080;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="768"
+ y="273.36218"
+ id="text3330"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3332"
+ x="768"
+ y="273.36218">lorem </tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text3334"
+ y="313.36218"
+ x="768"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#0000ff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"><tspan
+ y="313.36218"
+ x="768"
+ id="tspan3336"
+ sodipodi:role="line">lorem </tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="768"
+ y="353.36218"
+ id="text3338"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3340"
+ x="768"
+ y="353.36218"><tspan
+ style="font-weight:bold;-inkscape-font-specification:Ubuntu Bold"
+ id="tspan3342">lorem </tspan></tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text3344"
+ y="393.36218"
+ x="768"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"><tspan
+ y="393.36218"
+ x="768"
+ id="tspan3346"
+ sodipodi:role="line"
+ style="font-weight:bold;-inkscape-font-specification:Ubuntu Bold">lorem </tspan></text>
+ <rect
+ y="248.36218"
+ x="907"
+ height="40"
+ width="150"
+ id="rect3348"
+ style="color:#000000;fill:#800080;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:0.73427981;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <rect
+ style="color:#000000;fill:#0000ff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:0.73427981;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect3350"
+ width="150"
+ height="40"
+ x="907"
+ y="288.36218" />
+ <rect
+ y="328.36218"
+ x="907"
+ height="40"
+ width="150"
+ id="rect3352"
+ style="color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:0.73427981;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <rect
+ style="color:#000000;fill:#f7ebe3;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:0.73427981;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect3354"
+ width="150"
+ height="40"
+ x="907"
+ y="368.36218" />
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold"
+ x="921"
+ y="313.36218"
+ id="text3356"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3358"
+ x="921"
+ y="313.36218">lorem </tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text3360"
+ y="355.36218"
+ x="920"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#008000;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ xml:space="preserve"><tspan
+ y="355.36218"
+ x="920"
+ id="tspan3362"
+ sodipodi:role="line">lorem </tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#008000;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="921"
+ y="393.36218"
+ id="text3364"
+ sodipodi:linespacing="125%"><tspan
+ sodipodi:role="line"
+ id="tspan3366"
+ x="921"
+ y="393.36218">lorem </tspan></text>
+ <text
+ sodipodi:linespacing="125%"
+ id="text3368"
+ y="277.36218"
+ x="919"
+ style="font-size:28px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#ffffff;fill-opacity:0.94901961;fill-rule:nonzero;stroke:none;stroke-width:1.40678155;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold"
+ xml:space="preserve"><tspan
+ y="277.36218"
+ x="919"
+ id="tspan3370"
+ sodipodi:role="line">lorem </tspan></text>
+ </g>
+</svg>
Added: trunk/img/webtemplate/theme-palettes.svg-rect7391-2-1-699.png
===================================================================
(Binary files differ)
Property changes on: trunk/img/webtemplate/theme-palettes.svg-rect7391-2-1-699.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/img/webtemplate/theme-palettes.svg-rect7391-2-4294966623.png
===================================================================
(Binary files differ)
Property changes on: trunk/img/webtemplate/theme-palettes.svg-rect7391-2-4294966623.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/img/webtemplate/theme-palettes.svg-rect7391-2-73.png
===================================================================
(Binary files differ)
Property changes on: trunk/img/webtemplate/theme-palettes.svg-rect7391-2-73.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified: trunk/img/webtemplate/web_template-2011.svg
===================================================================
--- trunk/img/webtemplate/web_template-2011.svg 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/img/webtemplate/web_template-2011.svg 2011-06-16 16:47:28 UTC (rev 1407)
@@ -52,14 +52,14 @@
borderopacity="1.0"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
- inkscape:zoom="1"
- inkscape:cx="512"
- inkscape:cy="384"
+ inkscape:zoom="0.35355339"
+ inkscape:cx="598.70994"
+ inkscape:cy="950.73513"
inkscape:current-layer="layer1"
inkscape:document-units="px"
showgrid="false"
- inkscape:window-width="1280"
- inkscape:window-height="975"
+ inkscape:window-width="1080"
+ inkscape:window-height="1824"
inkscape:window-x="0"
inkscape:window-y="21"
inkscape:window-maximized="1"
@@ -97,7 +97,7 @@
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
+ <dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
@@ -232,7 +232,7 @@
id="g5365">
<path
transform="matrix(0.102065,0,0,0.102065,387.7515,-17.05636)"
- d="m 277.35793,332.62314 c 0,14.81376 -12.00893,26.82268 -26.82268,26.82268 -14.81376,0 -26.82268,-12.00892 -26.82268,-26.82268 0,-14.81376 12.00892,-26.82268 26.82268,-26.82268 14.81375,0 26.82268,12.00892 26.82268,26.82268 z"
+ d="m 277.35793,332.62314 a 26.82268,26.82268 0 1 1 -53.64536,0 26.82268,26.82268 0 1 1 53.64536,0 z"
sodipodi:ry="26.82268"
sodipodi:rx="26.82268"
sodipodi:cy="332.62314"
@@ -242,7 +242,7 @@
sodipodi:type="arc" />
<path
transform="matrix(0.05245387,0,0,0.05245387,400.1808,-0.554549)"
- d="m 277.35793,332.62314 c 0,14.81376 -12.00893,26.82268 -26.82268,26.82268 -14.81376,0 -26.82268,-12.00892 -26.82268,-26.82268 0,-14.81376 12.00892,-26.82268 26.82268,-26.82268 14.81375,0 26.82268,12.00892 26.82268,26.82268 z"
+ d="m 277.35793,332.62314 a 26.82268,26.82268 0 1 1 -53.64536,0 26.82268,26.82268 0 1 1 53.64536,0 z"
sodipodi:ry="26.82268"
sodipodi:rx="26.82268"
sodipodi:cy="332.62314"
@@ -283,27 +283,6 @@
</text>
</g>
<rect
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
- y="132.04793"
- x="402.09167"
- height="1"
- width="122"
- id="rect5387"
- style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <rect
- transform="scale(1,-1)"
- style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="rect5389"
- width="112.5"
- height="1"
- x="541.09167"
- y="-133.04793"
- inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90" />
- <rect
style="color:#000000;fill:#f4e3d7;stroke:none;stroke-width:0.99999982;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect3017"
width="810"
@@ -522,26 +501,6 @@
id="tspan3930">English</tspan><tspan
style="fill:#6c5353"
id="tspan4972"> French EspaƱol</tspan></tspan></text>
- <path
- sodipodi:type="star"
- style="color:#000000;fill:#999999;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="path5276"
- sodipodi:sides="5"
- sodipodi:cx="96.7854"
- sodipodi:cy="715.97784"
- sodipodi:r1="52.022156"
- sodipodi:r2="28.004345"
- sodipodi:arg1="1.5707963"
- sodipodi:arg2="2.1567634"
- inkscape:flatsided="false"
- inkscape:rounded="0.12"
- inkscape:randomized="0"
- d="m 96.785402,768 c -3.908791,0.16573 -12.321463,-26.38993 -15.486555,-28.68956 -3.374107,-2.45149 -32.533783,-3.34849 -33.989456,-7.25686 -1.3655,-3.66627 21.290773,-19.87335 22.499785,-23.59416 1.288851,-3.96651 -6.868894,-31.9762 -3.601633,-34.56838 3.064866,-2.43161 25.479885,14.10752 29.392187,14.10757 4.170661,5e-5 28.28857,-16.4139 31.76353,-14.10757 3.25969,2.16345 -5.54334,28.59227 -4.33442,32.31311 1.28876,3.96655 24.35219,21.83185 23.23257,25.84942 -1.05026,3.7687 -28.90585,3.56347 -32.071,5.86303 -3.37417,2.45141 -13.23809,29.90673 -17.405008,30.0834 z"
- inkscape:transform-center-y="-1.1905596"
- transform="matrix(0.27471997,0,0,-0.27471997,753.81907,485.14106)"
- inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90" />
<rect
style="color:#000000;fill:#f7ebe3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect5074"
@@ -567,7 +526,7 @@
transform="translate(-751,-12)">
<path
transform="translate(0,-3)"
- d="m 333,232 c 0,6.07513 -4.92487,11 -11,11 -6.07513,0 -11,-4.92487 -11,-11 0,-6.07513 4.92487,-11 11,-11 6.07513,0 11,4.92487 11,11 z"
+ d="m 333,232 a 11,11 0 1 1 -22,0 11,11 0 1 1 22,0 z"
sodipodi:ry="11"
sodipodi:rx="11"
sodipodi:cy="232"
@@ -627,18 +586,6 @@
inkscape:export-xdpi="90"
inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
width="16"
- height="74"
- id="image12517"
- x="774.83704"
- y="344.51096"
- style="display:inline"
- xlink:href="/home/vjrj/proyectos/ourproject.org/kune/svn/trunk/img/various/scroll1.png"
- sodipodi:absref="/home/vjrj/proyectos/ourproject.org/kune/svn/trunk/img/various/scroll1.png" />
- <image
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
- width="16"
height="32"
id="image12519"
x="774.83704"
@@ -770,16 +717,6 @@
inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
- <image
- y="318.59827"
- x="473"
- id="image15604"
- xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAaCAIAAADuRDFPAAAAA3NCSVQICAjb4U/gAAAARklEQVQo kWPccewmA17A8unJRfwqGP///49fBRN+abqpYCHoUpZ///5RrOLv3790sGXouGPIuJSIFHT27FkC Kk7cLcSvAgArDTxriRhPvAAAAABJRU5ErkJggg== "
- height="26"
- width="317.83704"
- inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90" />
<rect
style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
id="rect24756"
@@ -919,7 +856,7 @@
height="72.793892"
width="193"
id="rect3822"
- style="opacity:1;color:#000000;fill:#d38d5f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ style="color:#000000;fill:#d38d5f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
<image
width="30"
height="30"
@@ -1022,47 +959,7 @@
x="832.42969"
id="tspan15698"
sodipodi:role="line">admins (12)</tspan></text>
- <rect
- style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="rect15808"
- width="50"
- height="50"
- x="504.21899"
- y="264.79102"
- inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90" />
<text
- sodipodi:linespacing="100%"
- id="text15702"
- y="287.14264"
- x="495.33279"
- style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:end;text-decoration:none;line-height:100%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:end;baseline-shift:baseline;color:#000000;fill:#784421;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold"
- xml:space="preserve"
- inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"><tspan
- style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:end;text-decoration:none;line-height:100%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:end;baseline-shift:baseline;color:#000000;fill:#784421;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold"
- y="287.14264"
- x="495.33279"
- sodipodi:role="line"
- id="tspan15704">Just</tspan><tspan
- style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:end;text-decoration:none;line-height:100%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:end;baseline-shift:baseline;color:#000000;fill:#784421;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold"
- y="307.14264"
- x="495.33279"
- sodipodi:role="line"
- id="tspan15706">Readers:</tspan></text>
- <image
- y="266.4093"
- x="505.01001"
- id="image15805"
- xlink:href="data:image/png;base64,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 RK5CYII= "
- height="45.208992"
- width="45.208992"
- inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90" />
- <text
sodipodi:linespacing="125%"
id="text15823"
y="687.00311"
@@ -1076,16 +973,6 @@
x="832.96289"
id="tspan15825"
sodipodi:role="line">Group Tags</tspan></text>
- <image
- width="50"
- height="50"
- xlink:href="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCABkAGQDASIA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iii gAooooAKY7rGpZ2Cj1JxWZqmqfZAYoQDLjknoo9ff6Vzsksksu+RmdiTgk5IH9KuMG9SHNJ2OxS7 t5DtSeJm9A4JqeuAkQFeeTn86bZ67d6VMAXMttnDRk5x9Cen8v5hunbYFPueg0VXtbmK8to7iFw0 bjKkVYrMsKKKKACiiigAooooASmSyLFE8jfdVST9AKkqjqr+Xpk59QB+ZA/rQtxM5WSVppXlc5Zi SeeB7e1M5ySSDx+VAIx1PToKDyTxj6iuowGuODxkkevSsm+HBHBPt2rWkPB4zwayb08Ec/lQxo3v A98xe50+RjgASxg9hnDfqR+tdrXmXhCUp4ngUDiRXQ8+ik/j0Fem1zzWprHYKKKKkoKKKKACiiig AqnqieZps6+ilvy5/pVymSIJI2RujAgj60LRiZw579h/OgnoScDHAFDApIyMCHUkN7GkJGB06+vT /GuowGSnCEDIH0rFvXySMkjPY9K0rqXg9ck81hXMm44BwPek2M2fBsYl8SRt/wA80duvTIx/WvSx XDeAbbMt5dEYAVY1Prnk/wAh+ddzWE3qax2CiiipKCiiigAooooAKKKKAOL8QQGx1IygHy58sMDo 3cf1/Gsh7sADnt0B6V3er2UF9p8sNwwRfvCQn7hHQ15XK7xyFCc4OMjoa3hLQyktSzc3OSew+tZ5 JcjHJz6fp70E5JyMn3NdH4MsbS81NpZ5EMkADRxHALH+97gfzIP1G7K4Ja2Ox8OaadL0aGCQYmb9 5J/vHt+AwPwrXNFJWD1NRaKKKACiiigAoo7VSvr9LKIMRuduFUd6EribLbMEUsxAA6knisu71y3g ysX71/Y4X8+/4ZrBub2e7YtMxIB4UHAH4f1qD19cdMVtGn3Ic+xLfXlxfZEj/KOQo+6P8awbu0yT gcVs4Bzkkk+9RtGrk9CMHv1rSySsiLtnLNAwONpwT370+CGVZQ6MyuDlShIII7gjp9a3mtFJJwMC nR2ip2ANKwGxpPiK4WNYr8GUY/1q8MPqOn+e9dJb3cF2m6CVXHcA4I+o6iuLVAFHtTGDKwdGZWBy GU4I+hFQ6aexam+p6BRXH6X4meKZbfUG3RkgLMeCp/2vUe/866+smmty077C0UUUhiZwMnpXHX10 by6eTtnCj2H8v/r10uqS+Tp0zDqV2/mcVyJOBwCTjsela0l1M5voB4AGMnPbvQAc4GRkY5/zxSYx xwCBSnggDk/yrYzADgdScdh0oPAPTpQc4POKOAcZJP8AKgAI5PA6dqTqAegzwAOv+NL256+nrRwA ACSfYUABxk8frTWAK46nH+fpTiMEdc5/KkY/KcZJx2PSgDKvkwDwM57d66zwhqZvNOa1kJMtsQuT 3U9PywR+ArlrwYUjjIHNS+ErkweJI4x92ZGRvbjI/UD86zmrouL1PSaKKKwNTK14/wCgKPWQA/ka 5odvpRRW9LYxnuIOh/GjFFFaEinv9f6U0nCgiiigBcdKF+YjNFFAAOWx7Udh9KKKAM27+4341U0p jHr9gV4JuIx+bYooqHsyo7nrFFFFc5sf/9k= "
- id="image15827"
- x="561"
- y="263.61829"
- inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90" />
<flowRoot
style="display:inline"
xml:space="preserve"
@@ -1187,17 +1074,6 @@
inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
- <image
- style="display:inline"
- width="24"
- height="18"
- xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAASCAYAAABB7B6eAAAABHNCSVQICAgIfAhkiAAAAzBJREFU OI2NlE1LK2cUx3+ZMXHGydxE5U5yE2MNuFBKoJRARdpIi34C674LF0q5m/sVur+0uPIbFFHopl2q FequoTXFFruQJjM2hpjoHccMmbcu7s1wzYv0wGGel3P+/zPnOedE6JNKpfLBw8PDt5ZlfXJ3d5d2 HCfSb9OTaDQaJBKJuqqqP0mS9E2hUPhnb2+PjY2N0OaR8+np6VGj0ViRJCmSy+XIZDIoikI0Gh0A dxwH0zSp1+vUajVs2w5SqdQvtVrtMyAkCQkODw+vPM97USgU0DQNgCAIQh0lkchbiEajwdnZGc+e PWvpuj7dIxEATk5OfnVd98Xy8jKapuG6Lo7j4Lounufh+/5I9TwPz/OYnp5maWmJdrs9lc/nm70A hHK5/Gmr1fq4WCwiSRLdbncoqGVZXFxcYFnWSLLx8XGKxSK6rk+vrq5+DyCYpvldKpUimUyOBPd9 H13X2dnZwTCMJ/8oHo+TTCapVqtfAnNjlmUt5nI5XNfFdd2RufZ9HwBRFB/th4mmaVxfX/vAyzHL suSpqSlc1x1w6nQ6XF1dAYRfXdfpdrv4vk8mk0GW5QGCZDLJ+fl5FPhoDECWZWzbHiAwDIPd3d1H Z/v7++F6e3ubfD4/UGXvlfXKGBDmvt8wnU6ztbVFLBbDMAwODg5YX18nm80CMDMzMzRdtm2H67GJ iYnO7e2trCjKgGEsFmN2dhZBEEKnbDZLLpd7VAz9gbVaLRRFsYGoIEnSn7VaDUEQRta54zh4nge8 bb5en/TO+32azSaqqr4BfhdkWX5Zr9fDNxilmqaxublJNpt90s40TUzTZGFh4Qr4LQJwdHT0h23b Hy4uLg6dOz2JRCKIojj0vQBc16VSqaCq6l+lUuk58EU4i46Pj+8ty1Lm5uZQVTWcMf9HgiDANE0u Ly8B7LW1tWosFvsRePUIpVwuN6rV6nNRFEkkEkxOTqIoSthc/aCdToebmxva7Ta2baNp2t+lUqkD eMDnwN1AmPf3968Nw/i60WiIzWZTdBznyehVVX2TTqf/nZ+fj8bj8VlgB3jVux+ahyAIEsBXwMo7 TT7JAj8DP7zT6vsX/wEtdTE7+osNZwAAAABJRU5ErkJggg== "
- id="image15426-9"
- x="618"
- y="297.61829"
- inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90" />
<text
xml:space="preserve"
style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:100%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold"
@@ -1245,63 +1121,8 @@
inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90" />
- <path
- transform="matrix(0.25452831,0,0,-0.25452831,755.77313,470.58643)"
- inkscape:transform-center-y="-1.103054"
- d="m 96.785402,768 c -3.908791,0.16573 -12.321463,-26.38993 -15.486555,-28.68956 -3.374107,-2.45149 -32.533783,-3.34849 -33.989456,-7.25686 -1.3655,-3.66627 21.290773,-19.87335 22.499785,-23.59416 1.288851,-3.96651 -6.868894,-31.9762 -3.601633,-34.56838 3.064866,-2.43161 25.479885,14.10752 29.392187,14.10757 4.170661,5e-5 28.28857,-16.4139 31.76353,-14.10757 3.25969,2.16345 -5.54334,28.59227 -4.33442,32.31311 1.28876,3.96655 24.35219,21.83185 23.23257,25.84942 -1.05026,3.7687 -28.90585,3.56347 -32.071,5.86303 -3.37417,2.45141 -13.23809,29.90673 -17.405008,30.0834 z"
- inkscape:randomized="0"
- inkscape:rounded="0.12"
- inkscape:flatsided="false"
- sodipodi:arg2="2.1567634"
- sodipodi:arg1="1.5707963"
- sodipodi:r2="28.004345"
- sodipodi:r1="52.022156"
- sodipodi:cy="715.97784"
- sodipodi:cx="96.7854"
- sodipodi:sides="5"
- id="path23154"
- style="color:#000000;fill:#fed654;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- sodipodi:type="star"
- inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90" />
<text
xml:space="preserve"
- style="font-size:13px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:100%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#999999;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
- x="399"
- y="129"
- id="text23159"
- sodipodi:linespacing="100%"
- inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"><tspan
- sodipodi:role="line"
- id="tspan23161"
- x="399"
- y="129">Sign in to collaborate | Create New Group | Options</tspan></text>
- <rect
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
- y="-133.04793"
- x="666.09167"
- height="1"
- width="48.90947"
- id="rect23163"
- style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- transform="scale(1,-1)" />
- <image
- y="117.04793"
- x="715.00116"
- id="image24737"
- xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAJ1JREFU OI3dkjEKxCAQRX9EmWIOYJEu9opFyB28cU5hmVukFwW32rC7MWHZFIH93f/MPPjDdLXWigsSV5b/ BCA/g5QS5nlGKQWv9xVCIIQAIjoHEBH6vkeM8S333u+WgYMKzjkw8+aZGdbaZoUmQEqJaZo2P44j lFJNwK7CU8MwYFkWlFJgjDkaQ3f2ieu6IucMrfVvgG90/yPdD3gAkHQqk0hfw2IAAAAASUVORK5C YII= "
- height="16"
- width="16"
- inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90" />
- <text
- xml:space="preserve"
style="font-size:16px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:125%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold"
x="832.42969"
y="269.2316"
@@ -1314,44 +1135,6 @@
id="tspan24746"
x="832.42969"
y="269.2316">collabs (5)</tspan></text>
- <g
- id="g5065"
- transform="translate(-4.75,11.746521)"
- inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90">
- <rect
- ry="6"
- rx="6"
- y="146.75348"
- x="685"
- height="38.329861"
- width="119.5"
- id="rect25507"
- style="color:#000000;fill:url(#linearGradient5072);fill-opacity:1;fill-rule:nonzero;stroke:#cccccc;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <image
- width="16"
- height="16"
- xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAu5JREFU OI2lk11oW2UYgJ/vnO+cY5M0aZvmp83arKFFWXDrZJGJV1Nwg6F4o0zpLjrGBuKNMBT0VgqieL8L seIoiDi9kcnwZhamdqtlo92K6zrX3yzJ8tMkJzknyfm8kE3sLn2u3/e5eHkfwS5OvD99FjijS7lP gaU8r64Uc5quXZiZmvhy97x4vPjBV+Omrv00NhKPHd6fZCQRxmdZlGoNVtbzzC+tc2ctd00IcXpm auLmfwRvvvdFxh/s+v31IwfEgbEopVqD/NYaMhCFrl6w8yRiYeaWNrk0u/QQIV56JJEA4XDg51de TItnU30UC1n6h9OE+gewmy2y66tIz0XrNHg5k6LjqfDlq7fPAy8AaKc++vrjeLQ3eCQziqF5tGUA NIEhJaYh8VmSWLibgWiESI+fTHoPycG+w29/eGESQAuGfKcPpYcplwo8cHxEB/eiFHgKEBrCc9ku 1vnhyiKXZ+cJWYp9o4MAbwDIqt2KJOO9zN3JkRqL4ql/L1srF3l+PI0QAqUUm9sPaDYaDERCAIcA tKbb1izLRAtEKdea5KsuttOharu4tTxC/KMTQhCLhLm5fBfLkAB9AFLXNa9Sb2r+5hYBaZGr91Mw TNodj2axzXirheO4dAf82LbN3kSEXMMFKAJIQ9Oy9zYKgwdH46SGBri/vsnsyg4uJg3Xz2ff3cAS Hd55bT/VapWFW3ehOwlwHUBTnc7FheUNXE8CkBxKcPxghO1ckYeVOhVHcL/kkc/nqVQqPNWbYHk1 C/AtgL7wy8VLo5lXzwldN0N+gy5T59f5RRazimrdYafusGM7ZIZ0cjsuGyWPWytbv81MTbz7+JHK ucLJK9e87z0Pnns6xo83KpRcE7fdwXHbWIZgraz4K9fi6h8rJSHE2SdaOD75yVvDqaHpYKjHfCYV J94fxLIM7GaL7XyZP+9l2dgq3Ba6PPFEC4/o6Rsxj548N61bvmPosgeEUMprq3ZrVQnt828+nTy/ u8b/zd9wbDf3DUubqwAAAABJRU5ErkJggg== "
- id="image25494"
- x="693.75"
- y="157.5835" />
- <text
- xml:space="preserve"
- style="font-size:13px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:end;text-decoration:none;line-height:100%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:end;baseline-shift:baseline;color:#000000;fill:#666666;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
- x="795"
- y="163"
- id="text25501"
- sodipodi:linespacing="100%"><tspan
- sodipodi:role="line"
- id="tspan25503"
- x="798.04688"
- y="163">See this in the </tspan><tspan
- id="tspan25505"
- sodipodi:role="line"
- x="795"
- y="176">public space</tspan></text>
- </g>
<image
y="730"
x="88.800148"
@@ -1539,20 +1322,6 @@
id="tspan3888"
x="24.369394"
y="245.97888">Some doc title</tspan></text>
- <text
- sodipodi:linespacing="100%"
- id="text3900"
- y="243.22296"
- x="802.5"
- style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:end;text-decoration:none;line-height:100%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:end;color:#000000;fill:#ffb380;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold"
- xml:space="preserve"
- inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90"><tspan
- y="243.22296"
- x="802.5"
- sodipodi:role="line"
- id="tspan3908">Publised on: Nov 14, 2011</tspan></text>
<image
y="245"
x="786"
@@ -1961,98 +1730,6 @@
id="path5112"
style="color:#000000;fill:#f7ebe3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
</g>
- <g
- id="g3824"
- style="fill:#f7ebe3;fill-opacity:1">
- <path
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
- inkscape:connector-curvature="0"
- d="m 786.68281,317.15913 c 0.76666,0.21818 1.55403,0.47817 2.20263,0.95234 0.22295,0.16411 0.33547,0.40641 0.49427,0.62038 0.0473,0.0637 -0.0669,-0.1453 -0.11453,-0.20878 0.41354,0.0609 0.69861,0.30843 0.98649,0.59383 0.0395,0.0378 0.0748,0.0805 0.11848,0.11334 0.0199,0.0149 0.0496,0.0123 0.0692,0.0275 0.0816,0.0633 0.1608,0.12986 0.23822,0.19826 0.31695,0.28003 0.0402,0.0773 0.22502,0.20852 0.11925,0.10981 0.2912,0.12106 0.43168,0.19181 0.11832,0.0596 0.22491,0.1403 0.34094,0.20421 0.0684,0.06 0.13653,0.12025 0.20504,0.18009 0.12395,0.10827 0.17603,0.13796 0.27415,0.30733 8.1e-4,0.001 0.13667,0.39896 0.2217,0.45817 0.0188,-0.13694 -0.11563,-0.2061 0.10356,-0.1028 0.10276,0.0778 -0.99765,1.53099 -1.1004,1.45318 l 0,0 c -0.26916,-0.14595 -0.50201,-0.32699 -0.65135,-0.60252 -0.0323,-0.0705 -0.0657,-0.14041 -0.0969,-0.2114 -0.0166,-0.0378 -0.0794,-0.0905 -0.0461,-0.1148 0.0324,-0.0237 0.0404,0.0695 0.0604,0.10433 0.006,0.0109 0.0296,0.0386 0.0184,0.033 -0.0368,-0.0182 -0.0637,-0.0522 -0.0991,-0.0731 -0.007,-0.004 -0.0153,7.6e-4 -0.0229,10e-4 -0.33675,-0.18074 -0.69312,-0.33227 -0.97277,-0.60304 -0.24519,-0.21386 -0.51446,-0.40238 -0.72983,-0.64893 -0.0259,-0.0244 -0.0488,-0.0522 -0.0776,-0.0731 -0.0207,-0.015 0.0353,0.0369 0.053,0.0553 -0.0236,-0.01 -0.0473,-0.0197 -0.0709,-0.0295 0.009,0.0106 0.0415,0.0325 0.0276,0.0317 -0.0877,-0.005 -0.16793,-0.058 -0.25683,-0.0601 -0.34382,-0.16825 -0.31809,-0.11884 -0.58169,-0.38699 -0.0626,-0.0636 -0.101,-0.1503 -0.17003,-0.20689 -0.0426,-0.0349 -0.0374,-0.0295 -0.079,-0.0279 -0.70329,-0.21966 -1.39963,-0.46472 -2.03838,-0.83977 -0.10923,-0.0734 0.92828,-1.61811 1.03751,-1.54474 z"
- id="path5118"
- style="color:#000000;fill:#f7ebe3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
- inkscape:connector-curvature="0"
- d="m 785.96226,317.19647 c 0.72845,0.0695 1.38978,0.38259 2.07852,0.59906 0.33787,0.10972 0.5144,0.40087 0.7726,0.61237 0.002,-0.0167 -0.0102,-0.0581 0.005,-0.0501 0.059,0.0323 0.0966,0.094 0.15008,0.13473 0.17799,0.13561 0.34188,0.27106 0.49458,0.43887 0.0268,0.0212 0.15617,0.12414 0.17186,0.13228 0.0172,0.009 0.0413,-0.004 0.0579,0.006 0.07,0.0419 0.18349,0.19582 0.28619,0.15273 0.29336,0.0921 0.49042,0.41158 0.76743,0.51203 0.12666,-0.0276 0.0226,-0.018 0.23256,0.0915 0.24729,0.12895 0.42512,0.28467 0.61055,0.4923 0.15725,0.2097 0.32683,0.39511 0.47962,0.59368 0.14537,0.16132 0.35443,0.31324 0.48782,0.44302 -0.43051,0.0198 -0.86101,0.0397 -1.29152,0.0595 -0.0673,0.0946 -0.0861,0.27555 -0.20186,0.28366 -0.0929,0.007 -0.0628,-0.17528 -0.0942,-0.26292 -0.0124,-0.1377 1.93489,-0.31319 1.9473,-0.1755 l 0,0 c -0.004,0.24713 0.0351,1.078 -0.23511,1.2189 -0.41035,0.21395 -0.92003,0.10087 -1.38005,0.15131 -0.27903,-0.21967 -0.55172,-0.45351 -0.75292,-0.74996 -0.14843,-0.16785 -0.25874,-0.35544 -0.40953,-0.49064 0.0434,0.0734 0.0147,0.0148 -0.0886,-0.0401 -0.17115,-0.0909 -0.38441,-0.14081 -0.53658,-0.27682 -0.22981,-0.18267 -0.30316,-0.26952 -0.53968,-0.33645 -0.34652,-0.19471 -0.67914,-0.41222 -0.95533,-0.70193 -0.23877,-0.1832 -0.46484,-0.3884 -0.67021,-0.60805 -0.15287,-0.21622 0.006,-0.0993 0.12279,0.092 0.046,0.0752 -0.28846,-0.15183 -0.28397,-0.0489 -0.65109,-0.15398 -1.28911,-0.36125 -1.92277,-0.57447 -0.12006,-0.0494 0.57798,-1.74727 0.69804,-1.69792 z"
- id="path5120"
- style="color:#000000;fill:#f7ebe3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
- inkscape:connector-curvature="0"
- d="m 785.35227,316.5983 c 0.86096,-0.13151 1.71588,-0.0502 2.56271,0.12429 0.46491,0.0784 0.76667,0.2416 1.05915,0.63092 0.0767,0.10206 0.11514,0.22791 0.17608,0.34007 0.0518,-0.0692 -0.003,-0.0128 0.11025,0.0933 0.009,0.008 0.0276,-0.006 0.0371,0.002 0.14062,0.11665 0.21467,0.28774 0.32722,0.42781 0.31272,0.23511 0.4978,0.58703 0.66826,0.93094 0.0107,0.0108 0.0214,0.0216 0.0321,0.0324 0.0247,0.0407 0.0424,0.0868 0.0743,0.1222 0.011,0.0123 -5e-4,-0.0342 -0.008,-0.0488 -0.0758,-0.1429 -0.17478,-0.22296 -0.16082,-0.23295 0.0439,-0.0314 0.10578,0.0219 0.15866,0.0328 0.44733,0.0142 0.77342,0.2561 1.08414,0.55843 0.11339,-0.01 0.15368,0.21006 0.25687,0.19604 0.0139,-0.002 -0.008,-0.0467 0.005,-0.0418 0.1714,0.11296 0.0931,0.0793 0.22378,0.12387 0.38451,0.24078 0.59972,0.60622 0.76586,1.01755 0.0663,0.0194 -2.7e-4,-0.005 0.0874,0.12194 0.2321,0.33699 0.2687,0.44635 0.3325,0.86848 -0.25588,0.85202 -0.1009,0.96099 -1.53005,0.90358 -0.28031,-0.0113 -1.06028,-1.09178 -1.21944,-1.30165 -0.0687,-0.12793 1.74056,-1.09963 1.80927,-0.9717 l 0,0 c 0.0864,0.15367 0.17284,0.30731 0.2592,0.461 0.0491,0.0875 0.12986,0.16364 0.1473,0.26243 0.006,0.0354 -0.0708,-0.0343 -0.10518,-0.0239 -0.37255,0.11338 -0.78296,0.16607 -1.10092,0.39092 -0.12019,0.085 -0.0458,0.29082 -0.0687,0.43624 0.009,0.0268 0.0278,0.0523 0.0258,0.0803 -0.002,0.0241 -0.0159,-0.0458 -0.0267,-0.0674 -0.10002,-0.19978 -0.24221,-0.37742 -0.32621,-0.58598 -0.0245,-0.0602 -0.0721,-0.1118 -0.0847,-0.17554 -0.007,-0.0379 0.0961,0.11755 0.0632,0.0973 -0.039,-0.024 -0.0738,-0.0543 -0.1107,-0.0815 -10e-4,0.004 -0.002,0.008 -0.004,0.0116 -0.28041,-0.1642 -0.54938,-0.33902 -0.78656,-0.56387 -0.0205,-0.0165 -0.0628,-0.0759 -0.0616,-0.0495 10e-4,0.0286 0.0686,0.0313 0.0621,0.0592 -2.5e-4,0.001 -0.30913,-0.0358 -0.38352,-0.0524 -0.50731,-0.0507 -0.8338,-0.44335 -1.08136,-0.84894 -0.16122,-0.25896 -0.34295,-0.49319 -0.54491,-0.72239 -0.19648,-0.26741 -0.46348,-0.48016 -0.602,-0.79103 -0.0154,-0.0359 -0.0327,-0.0711 -0.0461,-0.10785 -0.005,-0.0149 0.0114,0.0305 0.0222,0.0421 0.0635,0.0687 0.13554,0.12923 0.19935,0.19769 0.0152,0.0163 0.0587,0.0506 0.037,0.0559 -0.15351,0.0372 -0.32039,-0.0829 -0.47268,-0.0339 -0.77414,-0.0588 -1.5505,-0.0507 -2.32276,-0.12776 -0.12675,-0.0325 0.33351,-1.82517 0.46027,-1.79262 z"
- id="path5122"
- style="color:#000000;fill:#f7ebe3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
- inkscape:connector-curvature="0"
- d="m 785.14673,317.12716 c 0.54895,-0.075 1.25026,-0.0628 1.77039,0.15111 0.10878,0.0447 0.20646,0.11276 0.30969,0.16914 0.26596,0.18069 0.38917,0.35679 0.54862,0.63563 0.0162,0.0284 0.053,0.11959 0.0416,0.0889 -0.0613,-0.16536 -0.11343,-0.20138 0.0126,-0.0688 -0.003,-0.0178 -0.0282,-0.0524 -0.0101,-0.0534 0.0973,-0.005 0.67537,0.41992 0.77263,0.48562 0.23821,0.0127 0.46399,0.15045 0.69888,0.24335 0.28895,0.21949 0.59048,0.3797 0.84863,0.63648 0.0893,0.0546 0.25528,0.29907 0.27555,0.28627 0.018,-0.0114 -0.035,-0.0683 -0.0145,-0.0624 0.13966,0.10525 0.074,0.0864 0.17708,0.1032 0.0764,-0.13162 0.76791,0.50572 0.85691,0.58248 0.10839,-0.0328 0.1525,0.16265 0.2541,0.14829 0.0125,-0.002 -0.003,-0.0408 0.009,-0.0369 0.0874,0.0289 0.16024,0.0925 0.24675,0.12396 0.0712,0.0563 0.14174,0.11352 0.2136,0.169 0.21984,0.16973 0.31088,0.34179 0.43882,0.58985 0.0539,0.1045 0.0709,0.14487 0.0309,0.055 -1.825,0.21192 -1.61238,0.54335 -1.71629,-0.5918 10e-4,-0.1425 2.01638,-0.1281 2.01536,0.0144 l 0,0 c -0.13499,1.42814 0.14655,0.94972 -1.83425,1.48264 -0.0249,-0.0379 -0.16978,-0.2391 -0.18253,-0.31332 -0.008,-0.0445 0.11735,0.13193 0.077,0.11162 -0.0705,-0.0355 -0.12809,-0.11187 -0.0622,-0.0313 -0.30274,-0.14905 -0.60659,-0.29725 -0.86302,-0.52484 -0.18915,-0.16672 -0.38528,-0.28032 -0.61922,-0.37592 -0.25308,-0.17254 -0.48034,-0.36974 -0.68931,-0.57583 -0.13393,-0.0818 -0.35454,-0.21795 -0.474,-0.28525 -0.31197,-0.1437 -0.6709,-0.17607 -0.94644,-0.40484 -0.32366,-0.22127 -0.66447,-0.42476 -0.93594,-0.712 -0.115,-0.12082 -0.0514,-0.0487 -0.2239,-0.31053 -0.0121,-0.0184 -0.0455,-0.0753 -0.0327,-0.0574 0.32146,0.44849 0.0763,0.0493 0.0717,0.18411 -0.11679,0.0559 -0.021,0.0194 -0.27953,-0.002 -0.41357,-0.0337 -0.83043,-0.0148 -1.24168,-0.0781 -0.12564,-0.0323 0.33057,-1.80908 0.45621,-1.77682 z"
- id="path5124"
- style="color:#000000;fill:#f7ebe3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
- inkscape:connector-curvature="0"
- d="m 789.67696,318.01792 c 0.23877,0.39281 0.44786,0.80149 0.67653,1.19972 0.13753,0.23952 0.0595,0.15496 0.16239,0.25617 0.11816,0.13039 -0.065,-0.0648 -0.0949,-0.0995 -0.0221,-0.0257 -0.10969,-0.0773 -0.0782,-0.0648 0.0192,0.008 0.28887,0.1413 0.37739,0.18511 0.27034,0.2048 0.44434,0.48207 0.61902,0.76472 0.15911,0.25744 0.0435,0.12432 0.16293,0.25207 0.13823,0.16194 0.18906,0.37808 0.31232,0.54853 0.008,0.0114 -0.0138,-0.0509 -0.003,-0.0422 0.034,0.0267 0.053,0.0684 0.0795,0.10254 -0.008,-0.0842 -0.0168,-0.0304 0.0674,-0.018 0.0189,0.003 0.0391,-0.0169 0.0565,-0.009 0.17593,0.0795 0.35451,0.21779 0.50118,0.33829 0.0114,0.008 0.0229,0.0166 0.0343,0.0249 0.0948,0.084 -1.09304,1.425 -1.18786,1.34101 l 0,0 c -0.0452,-0.0275 -0.0904,-0.055 -0.13558,-0.0826 -0.32874,-0.12012 -0.618,-0.3701 -0.84748,-0.6258 -0.17329,-0.20264 -0.28916,-0.44264 -0.45397,-0.651 -0.007,-0.0105 -0.56999,-0.84585 -0.26289,-0.51262 -0.14716,-0.0722 0.13237,0.0645 0.12714,0.067 -0.13711,0.0642 -0.68597,-0.36535 -0.76751,-0.44475 -0.47458,-0.52776 -0.85158,-1.144 -1.05316,-1.82874 -0.0496,-0.12076 1.6582,-0.82167 1.70777,-0.70092 z"
- id="path5126"
- style="color:#000000;fill:#f7ebe3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
- inkscape:connector-curvature="0"
- d="m 785.45225,317.77724 c 0.39649,0.0982 0.72726,0.33243 1.01295,0.61574 0.13109,0.14401 0.16571,0.30762 0.20691,0.48948 0.004,0.0185 -0.0103,-0.0378 -0.007,-0.0564 10e-4,-0.007 0.009,0.0118 0.0138,0.0178 -0.007,-0.0203 -0.0364,-0.0473 -0.0199,-0.0608 0.0156,-0.0126 0.0287,0.028 0.0434,0.0416 0.0583,0.0541 0.0791,0.0747 0.15076,0.0438 0.26447,0.0837 0.34464,0.0806 0.53474,0.33977 0.0573,0.0337 -0.0375,-0.075 -0.0232,-0.0782 0.0274,-0.006 0.0522,0.0211 0.0791,0.0295 0.0496,0.0154 0.0542,0.0124 0.10248,0.0132 0.0791,-0.0212 0.26113,0.0108 -0.0494,-0.0168 -0.0265,-0.002 0.0533,-4.6e-4 0.0799,-0.001 0.0541,-0.002 0.12643,-0.007 0.18016,-0.01 0.25845,-0.007 0.55262,-0.0617 0.79153,0.0603 0.0539,0.0275 0.10137,0.0661 0.15205,0.0991 0.22522,0.17028 0.3284,0.41025 0.36038,0.68301 0.0135,0.0548 0.0136,0.11455 0.0301,0.1685 0.002,0.007 -0.004,-0.0233 0.003,-0.0217 0.0182,0.004 0.0327,0.0926 0.006,-0.0216 0.0161,0.004 0.0222,-0.0309 0.0368,-0.0268 0.0315,0.009 0.0571,0.0324 0.0868,0.0461 0.0271,0.0398 0.0698,0.0117 0.10273,0.0241 0.035,0.0132 0.0665,0.0343 0.0998,0.0515 0.23283,0.10497 0.31734,0.27496 0.40913,0.50032 0.006,0.004 0.0122,0.0175 0.0186,0.0134 0.0197,-0.0125 -0.0229,-0.065 -9e-5,-0.07 0.0184,-0.004 0.0695,0.0436 0.13345,0.0256 0.2405,0.0802 0.37374,0.28917 0.47327,0.50737 0.0249,0.0838 0.0867,0.27686 0.16125,0.3296 0.10754,0.16224 0.027,0.0298 0.0458,0.0206 0.0485,-0.0238 0.0429,0.0549 0.0866,0.005 0.0591,-0.0348 0.0185,-0.0195 0.13689,0.0124 0.18423,0.0496 0.2992,0.16301 0.41489,0.30649 0.0517,0.0829 0.12062,0.16041 0.16454,0.24807 0.0821,0.16396 0.0198,0.0753 0.0675,0.14055 -0.0283,-0.10241 -0.02,-0.0328 0.0201,-0.0242 0.006,10e-4 -0.003,-0.0223 0.003,-0.0195 0.0246,0.0115 0.0804,0.0902 0.11267,0.0489 0.24134,0.11759 0.43533,0.2901 0.3911,0.60093 -0.0129,0.0905 -0.0714,0.16834 -0.10712,0.2525 -0.0557,0.0495 -0.10297,0.11065 -0.16715,0.14856 -0.21865,0.12915 -0.43576,0.10525 -0.6833,0.0275 -0.0801,-0.0251 -0.13375,-0.10139 -0.20063,-0.15209 -0.0453,-0.0472 0.62236,-0.68743 0.66763,-0.64022 l 0,0 c -0.2058,-0.13833 -0.31627,-0.0593 -0.36635,0.11872 -0.0334,0.16667 -0.0583,0.17124 0.0101,0.34041 0.0156,0.0384 0.047,0.0682 0.0701,0.10264 0.003,0.004 0.0115,0.014 0.007,0.0124 -0.20055,-0.0692 0.003,-0.0155 -0.0953,-0.0404 -0.1916,-0.10335 -0.37136,-0.2176 -0.48731,-0.40895 -0.0478,-0.0961 -0.0973,-0.1913 -0.16858,-0.27307 0.009,0.0107 0.0226,0.0189 0.027,0.0322 0.002,0.007 -0.0239,-0.0137 -0.0192,-0.009 0.0113,0.0121 0.0433,0.0142 0.0394,0.0303 -0.0111,0.0448 -0.22151,-0.10386 -0.19488,-0.0233 -0.23112,-0.0784 -0.43663,-0.19009 -0.56822,-0.40666 -0.0891,-0.1449 -0.16835,-0.29873 -0.21107,-0.4627 -0.0116,-0.025 -0.033,-0.0454 -0.0405,-0.0719 -0.005,-0.0163 0.0215,0.0266 0.0291,0.0418 10e-4,0.003 -0.0112,-0.004 -0.009,-0.002 0.0138,0.0141 0.0432,0.0191 0.0448,0.0388 0.001,0.0141 -0.0281,-0.003 -0.0421,-0.005 -0.27092,-0.0949 -0.51882,-0.23243 -0.62304,-0.51991 -0.009,-0.023 -0.0276,-0.0444 -0.0257,-0.0689 10e-4,-0.018 0.0176,0.0316 0.0274,0.0468 0.006,0.01 0.0313,0.0246 0.0203,0.0276 -0.0133,0.004 -0.02,-0.0225 -0.0337,-0.0239 -0.01,-10e-4 0.0125,0.0149 0.0188,0.0224 -0.0208,-0.008 -0.0415,-0.0166 -0.0623,-0.0249 -0.20321,-0.036 -0.40105,-0.17726 -0.54609,-0.31402 -0.13843,-0.19896 -0.19941,-0.36553 -0.22214,-0.60576 0.0288,0.009 -0.0264,-0.057 -0.0413,-0.041 0.004,0.005 0.0188,0.0144 0.0123,0.0161 -0.0157,0.004 -0.0645,-0.007 -0.0482,-0.007 0.0702,-10e-4 0.14047,0.002 0.21066,0.004 0.27155,0.009 -0.50237,-0.0209 -0.25255,0.007 -0.28658,0.0197 -0.58028,0.0534 -0.86199,-0.0202 -0.21056,-0.063 -0.41817,-0.12806 -0.549,-0.32217 0.0243,0.0227 0.0513,0.0428 0.0728,0.0682 0.013,0.0153 -0.20424,-0.0493 -0.20886,-0.0507 -0.0247,-0.007 -0.0496,-0.0139 -0.0744,-0.0208 -0.23307,-0.10595 -0.41958,-0.25407 -0.55355,-0.47424 -0.0475,-0.10151 -0.033,-0.0627 -0.075,-0.20561 -0.002,-0.006 -0.005,-0.0251 -0.003,-0.0192 0.009,0.021 0.0218,0.042 0.022,0.0648 1.4e-4,0.0158 -0.0338,-0.041 -0.0409,-0.0237 -0.27665,-0.18557 -0.57642,-0.3294 -0.86168,-0.50044 -0.0523,-0.039 0.49948,-0.77892 0.5518,-0.7399 z"
- id="path5134"
- style="color:#000000;fill:#f7ebe3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
- inkscape:connector-curvature="0"
- d="m 791.00916,321.16348 c 0.33943,0.0997 0.65996,0.28539 0.89812,0.54807 0.0697,0.0885 0.26868,0.43824 0.11655,0.53327 -0.21556,0.13466 -0.49365,0.12132 -0.74047,0.18198 -0.048,-0.0408 0.52839,-0.72003 0.57642,-0.67927 l 0,0 c -0.22314,0.0748 -0.4785,0.0868 -0.66943,0.22442 -0.17036,0.12278 0.022,0.2437 0.0406,0.34477 0.002,0.0109 -0.0196,-0.0103 -0.0294,-0.0154 -0.0749,-0.024 -0.0151,-0.003 -0.1434,-0.0699 -0.20204,-0.106 -0.40894,-0.20366 -0.60079,-0.32802 -0.0523,-0.039 0.49948,-0.77892 0.5518,-0.7399 z"
- id="path5138"
- style="color:#000000;fill:#f7ebe3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
- inkscape:connector-curvature="0"
- d="m 790.4882,317.69041 c 0.47708,0.15395 0.90561,0.42015 1.33789,0.66799 0.20449,0.15361 0.46304,0.33535 0.54361,0.59601 0.0203,0.0658 0.0235,0.13563 0.0352,0.20344 -0.0238,0.3439 -0.12337,0.53285 -0.36251,0.78109 -0.0451,0.0479 -0.72208,-0.59068 -0.67693,-0.63855 l 0,0 c 0.16024,0.003 0.10329,-0.20718 0.14058,-0.0941 0.009,0.029 0.0171,0.0584 0.0277,0.087 0.005,0.014 0.0313,0.0308 0.0197,0.0402 -0.005,0.004 -0.30482,-0.20952 -0.32904,-0.18808 -0.44386,-0.209 -0.87703,-0.44732 -1.288,-0.71509 -0.0523,-0.039 0.49948,-0.77892 0.5518,-0.7399 z"
- id="path5140"
- style="color:#000000;fill:#f7ebe3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
- inkscape:connector-curvature="0"
- d="m 789.39955,317.12569 c 0.35747,0.11395 0.69098,0.28888 1.03529,0.43487 0.0965,0.0409 0.43579,0.16526 0.53779,0.20301 0.31447,0.12015 0.66188,0.23198 0.89204,0.49305 0.0388,0.0441 0.0697,0.0946 0.1045,0.14186 0.0982,0.13192 0.12017,0.29483 0.17018,0.44608 0.002,0.005 -0.003,-0.0181 10e-4,-0.0152 0.009,0.007 0.0119,0.0192 0.0179,0.0289 0.0466,0.11149 0.12346,0.20908 0.14703,0.33082 0.0125,0.0644 0.0133,0.13052 0.02,0.19578 0.002,0.0648 -0.9148,0.0903 -0.9166,0.0255 l 0,0 c 0.0517,0.0649 -0.0457,-0.13118 -0.0618,-0.16682 -0.0649,-0.11462 -0.10399,-0.23995 -0.15829,-0.3578 -0.22616,-0.12975 -0.5152,-0.12767 -0.74869,-0.23862 -0.52546,-0.18547 -1.03016,-0.42045 -1.49899,-0.72384 -0.0564,-0.0324 0.40194,-0.82997 0.45834,-0.79756 z"
- id="path5142"
- style="color:#000000;fill:#f7ebe3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
- inkscape:connector-curvature="0"
- d="m 789.91887,318.16875 c 0.48617,0.24129 0.96821,0.49022 1.45725,0.7263 0.20857,0.11486 0.43448,0.20179 0.64105,0.32021 0.16813,0.0964 0.0482,0.047 0.16292,0.09 0.2537,0.14413 0.33579,0.40392 0.43028,0.65918 0.0445,0.11959 0.0638,0.24475 0.0818,0.37027 0.008,0.0648 -0.90855,0.17914 -0.91663,0.11432 l 0,0 c -0.0129,-0.0811 -0.0294,-0.16121 -0.0562,-0.23913 -0.0147,-0.049 -0.0266,-0.0988 -0.0415,-0.14773 -0.004,-0.0128 -0.0271,-0.0335 -0.0143,-0.0374 0.0118,-0.004 0.0501,0.0611 0.007,0.0393 -0.28539,-0.13083 -0.60454,-0.18536 -0.8854,-0.33142 -0.53001,-0.23464 -1.05467,-0.499 -1.49467,-0.88255 -0.0482,-0.0445 0.58055,-0.72581 0.62872,-0.68135 z"
- id="path5144"
- style="color:#000000;fill:#f7ebe3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- <path
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
- inkscape:connector-curvature="0"
- d="m 790.35964,320.79959 c 0.32328,0.22805 0.56142,0.53529 0.71867,0.89551 0.0181,0.0588 0.091,0.39719 0.0368,0.45324 -0.0304,0.0315 0.004,-0.0875 0.004,-0.13133 0.007,0.0182 0.006,0.0424 0.0209,0.0546 0.0101,0.008 -0.0134,-0.0432 -10e-4,-0.0388 0.0272,0.01 0.15959,0.28929 0.1777,0.3285 0.0724,0.10928 0.0112,-0.0191 0.0169,-0.0316 0.006,-0.0127 0.0267,0.009 0.0406,0.009 0.0115,-1.5e-4 0.0352,-0.0206 0.0425,-0.0261 0.12158,0.0716 0.6171,0.0685 0.10712,0.0526 -0.0621,0.0198 -0.0363,0.0242 0.0257,-0.10372 0.0326,-0.0609 0.89374,0.39939 0.8612,0.46029 l 0,0 c -0.15351,0.2041 -0.29745,0.41534 -0.55475,0.49486 -0.41329,0.0175 -0.34365,0.0243 -0.65079,-0.0388 -0.0434,-0.009 -0.0347,-0.008 -0.0696,-8.3e-4 -0.29898,-0.0639 -0.55296,-0.20073 -0.6823,-0.49617 -0.0602,-0.14038 -0.13903,-0.2735 -0.1869,-0.41791 -0.0354,-0.14997 -0.0223,-0.0647 -0.0279,-0.2549 -7.2e-4,-0.0242 0.0192,0.0547 0.003,0.0725 -0.005,0.005 -0.0145,-0.0414 -0.0143,-0.0145 -0.16994,-0.22116 -0.34977,-0.43263 -0.53932,-0.63729 -0.0445,-0.0475 0.62734,-0.67678 0.67184,-0.62927 z"
- id="path5146"
- style="color:#000000;fill:#f7ebe3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
- </g>
<image
style="display:inline"
width="16"
@@ -2457,58 +2134,6 @@
inkscape:connector-curvature="0" />
</g>
</g>
- <rect
- style="opacity:0.95999995;color:#000000;fill:#f9f9f9;stroke:#000000;stroke-width:1.00000024;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="rect3851"
- width="495.24832"
- height="486.32101"
- x="299"
- y="112.99998"
- rx="10.000001"
- ry="10.000001" />
- <image
- y="146.821"
- x="326.74829"
- id="image3846"
- xlink:href="data:image/png;base64,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 RK5CYII= "
- height="449"
- width="459"
- style="opacity:0.95999995" />
- <rect
- style="opacity:0.95999995;color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
- id="rect3881"
- width="496"
- height="9"
- x="298"
- y="111" />
- <image
- style="display:inline"
- y="115.821"
- x="305.74829"
- id="image25048"
- xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAdpJREFU OI2lkk1I03EYxz97aYyx9J9lCWlYNjZaIE16uYTUZVDdgsJjt6B7lBEMIlAvmRV5VAovXTuFCRUD KRy71ETLpcPR2EsrRi/7b/9vh3+0lkqFz+nh+3s+Dw/f39chic2Uc1M04Aa4ccRx2OMzxr9VypF/ gbx+I1H9Ur54/aVeIYmhfmMuPjmiulmVUtNSblHKvpYWnkkLz+0+tyilplU3q4pPjmio35iTBJKI 9WHDdVOKhaXSinTntJR6Ks3P2H1pxX6rm6qbVcX6kKSGB073FsgkoSMEvjYoLEHoJARPQCFtax0h yCTt2XVNLKRhWxeUlsHobOjGbltr2wP5pSakeUF7DxTfw4698DHT0MursL0bisv2zJ+/AGDVTJyd vZB/B59zsCsIb56A0wU7A1ApQP4tdPVi1czmC7x+IzE7NYplWTBwF2TB2WHwbgWPz+6tOpwfw7LE 7NQoXr+RAHBI+pUDyYqcGRznYHSASvEDM/eukXw8gSxrwxw4fo/yw0vRB4HjpwJHwz1OJi4EcXtu 8zV7kzF9Xy9QTR48OudwZfOt0WOVFzDfnUbeAwxnVjcC1ywof2q52u6pte4PH7rF5fiVv4FrFhgu M7Kvhfv/A8NPEzdTPwCqtvHRDwWVwwAAAABJRU5ErkJggg== "
- height="16"
- width="16"
- inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
- inkscape:export-xdpi="90"
- inkscape:export-ydpi="90" />
- <text
- inkscape:export-ydpi="90"
- inkscape:export-xdpi="90"
- inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
- sodipodi:linespacing="100%"
- id="text3863"
- y="138.14264"
- x="325.98318"
- style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:100%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#784421;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold"
- xml:space="preserve"><tspan
- style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:100%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#784421;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold"
- y="138.14264"
- x="325.98318"
- sodipodi:role="line"
- id="tspan3865">Chat:<tspan
- style="font-size:13px;fill:#6c5353"
- id="tspan3867"> with other users & your gmail contacts</tspan></tspan></text>
<path
sodipodi:type="star"
style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
@@ -2556,7 +2181,7 @@
inkscape:export-xdpi="90"
inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/icons/from-private-to-public.png"
transform="matrix(0.475,0,0,0.95,-21.570622,377.21335)"
- d="m 110,32.362183 c 0,5.522847 -8.95431,10 -20,10 -11.045695,0 -20,-4.477153 -20,-10 0,-5.522848 8.954305,-10 20,-10 11.04569,0 20,4.477152 20,10 z"
+ d="m 110,32.362183 a 20,10 0 1 1 -40,0 20,10 0 1 1 40,0 z"
sodipodi:ry="10"
sodipodi:rx="20"
sodipodi:cy="32.362183"
@@ -2569,7 +2194,7 @@
inkscape:export-xdpi="90"
inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/icons/from-private-to-public.png"
transform="matrix(1.8840121,0.6711918,-0.6711918,1.8840121,8.0842525,364.37023)"
- d="m 16,16.362183 c 0,0.552284 -0.447715,1 -1,1 -0.552285,0 -1,-0.447716 -1,-1 0,-0.552285 0.447715,-1 1,-1 0.552285,0 1,0.447715 1,1 z"
+ d="m 16,16.362183 a 1,1 0 1 1 -2,0 1,1 0 1 1 2,0 z"
sodipodi:ry="1"
sodipodi:rx="1"
sodipodi:cy="16.362183"
@@ -2588,14 +2213,14 @@
sodipodi:cy="16.362183"
sodipodi:rx="1"
sodipodi:ry="1"
- d="m 16,16.362183 c 0,0.552284 -0.447715,1 -1,1 -0.552285,0 -1,-0.447716 -1,-1 0,-0.552285 0.447715,-1 1,-1 0.552285,0 1,0.447715 1,1 z"
+ d="m 16,16.362183 a 1,1 0 1 1 -2,0 1,1 0 1 1 2,0 z"
transform="matrix(1.8840121,0.6711918,-0.6711918,1.8840121,2.7154875,362.20909)" />
<path
inkscape:export-ydpi="90"
inkscape:export-xdpi="90"
inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/icons/from-private-to-public.png"
transform="matrix(1.8840121,0.6711918,-0.6711918,1.8840121,7.7663825,370.24449)"
- d="m 16,16.362183 c 0,0.552284 -0.447715,1 -1,1 -0.552285,0 -1,-0.447716 -1,-1 0,-0.552285 0.447715,-1 1,-1 0.552285,0 1,0.447715 1,1 z"
+ d="m 16,16.362183 a 1,1 0 1 1 -2,0 1,1 0 1 1 2,0 z"
sodipodi:ry="1"
sodipodi:rx="1"
sodipodi:cy="16.362183"
@@ -2614,14 +2239,14 @@
sodipodi:cy="16.362183"
sodipodi:rx="1"
sodipodi:ry="1"
- d="m 16,16.362183 c 0,0.552284 -0.447715,1 -1,1 -0.552285,0 -1,-0.447716 -1,-1 0,-0.552285 0.447715,-1 1,-1 0.552285,0 1,0.447715 1,1 z"
+ d="m 16,16.362183 a 1,1 0 1 1 -2,0 1,1 0 1 1 2,0 z"
transform="matrix(1.8840121,0.6711918,-0.6711918,1.8840121,2.2467045,371.75097)" />
<path
inkscape:export-ydpi="90"
inkscape:export-xdpi="90"
inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/icons/from-private-to-public.png"
transform="matrix(1.8840121,0.6711918,-0.6711918,1.8840121,-0.8112855,366.96948)"
- d="m 16,16.362183 c 0,0.552284 -0.447715,1 -1,1 -0.552285,0 -1,-0.447716 -1,-1 0,-0.552285 0.447715,-1 1,-1 0.552285,0 1,0.447715 1,1 z"
+ d="m 16,16.362183 a 1,1 0 1 1 -2,0 1,1 0 1 1 2,0 z"
sodipodi:ry="1"
sodipodi:rx="1"
sodipodi:cy="16.362183"
@@ -2852,7 +2477,389 @@
<g
inkscape:groupmode="layer"
id="layer7"
- inkscape:label="chat" />
+ inkscape:label="chat"
+ style="display:none">
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
+ y="132.04793"
+ x="402.09167"
+ height="1"
+ width="122"
+ id="rect5387"
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <rect
+ transform="scale(1,-1)"
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect5389"
+ width="112.5"
+ height="1"
+ x="541.09167"
+ y="-133.04793"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ sodipodi:type="star"
+ style="color:#000000;fill:#999999;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="path5276"
+ sodipodi:sides="5"
+ sodipodi:cx="96.7854"
+ sodipodi:cy="715.97784"
+ sodipodi:r1="52.022156"
+ sodipodi:r2="28.004345"
+ sodipodi:arg1="1.5707963"
+ sodipodi:arg2="2.1567634"
+ inkscape:flatsided="false"
+ inkscape:rounded="0.12"
+ inkscape:randomized="0"
+ d="m 96.785402,768 c -3.908791,0.16573 -12.321463,-26.38993 -15.486555,-28.68956 -3.374107,-2.45149 -32.533783,-3.34849 -33.989456,-7.25686 -1.3655,-3.66627 21.290773,-19.87335 22.499785,-23.59416 1.288851,-3.96651 -6.868894,-31.9762 -3.601633,-34.56838 3.064866,-2.43161 25.479885,14.10752 29.392187,14.10757 4.170661,5e-5 28.28857,-16.4139 31.76353,-14.10757 3.25969,2.16345 -5.54334,28.59227 -4.33442,32.31311 1.28876,3.96655 24.35219,21.83185 23.23257,25.84942 -1.05026,3.7687 -28.90585,3.56347 -32.071,5.86303 -3.37417,2.45141 -13.23809,29.90673 -17.405008,30.0834 z"
+ inkscape:transform-center-y="-1.1905596"
+ transform="matrix(0.27471997,0,0,-0.27471997,753.81907,485.14106)"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <image
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
+ width="16"
+ height="74"
+ id="image12517"
+ x="774.83704"
+ y="344.51096"
+ style="display:inline"
+ xlink:href="/home/vjrj/proyectos/ourproject.org/kune/svn/trunk/img/various/scroll1.png"
+ sodipodi:absref="/home/vjrj/proyectos/ourproject.org/kune/svn/trunk/img/various/scroll1.png" />
+ <image
+ style="display:inline"
+ y="318.59827"
+ x="473"
+ id="image15604"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAsAAAAaCAIAAADuRDFPAAAAA3NCSVQICAjb4U/gAAAARklEQVQo kWPccewmA17A8unJRfwqGP///49fBRN+abqpYCHoUpZ///5RrOLv3790sGXouGPIuJSIFHT27FkC Kk7cLcSvAgArDTxriRhPvAAAAABJRU5ErkJggg== "
+ height="26"
+ width="317.83704"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <rect
+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect15808"
+ width="50"
+ height="50"
+ x="504.21899"
+ y="264.79102"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <text
+ sodipodi:linespacing="100%"
+ id="text15702"
+ y="287.14264"
+ x="495.33279"
+ style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:end;text-decoration:none;line-height:100%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:end;baseline-shift:baseline;color:#000000;fill:#784421;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold"
+ xml:space="preserve"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"><tspan
+ style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:end;text-decoration:none;line-height:100%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:end;baseline-shift:baseline;color:#000000;fill:#784421;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold"
+ y="287.14264"
+ x="495.33279"
+ sodipodi:role="line"
+ id="tspan15704">Just</tspan><tspan
+ style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:end;text-decoration:none;line-height:100%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:end;baseline-shift:baseline;color:#000000;fill:#784421;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold"
+ y="307.14264"
+ x="495.33279"
+ sodipodi:role="line"
+ id="tspan15706">Readers:</tspan></text>
+ <image
+ style="display:inline"
+ y="266.4093"
+ x="505.01001"
+ id="image15805"
+ xlink:href="data:image/png;base64,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 RK5CYII= "
+ height="45.208992"
+ width="45.208992"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <image
+ style="display:inline"
+ width="50"
+ height="50"
+ xlink:href="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCABkAGQDASIA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iii gAooooAKY7rGpZ2Cj1JxWZqmqfZAYoQDLjknoo9ff6Vzsksksu+RmdiTgk5IH9KuMG9SHNJ2OxS7 t5DtSeJm9A4JqeuAkQFeeTn86bZ67d6VMAXMttnDRk5x9Cen8v5hunbYFPueg0VXtbmK8to7iFw0 bjKkVYrMsKKKKACiiigAooooASmSyLFE8jfdVST9AKkqjqr+Xpk59QB+ZA/rQtxM5WSVppXlc5Zi SeeB7e1M5ySSDx+VAIx1PToKDyTxj6iuowGuODxkkevSsm+HBHBPt2rWkPB4zwayb08Ec/lQxo3v A98xe50+RjgASxg9hnDfqR+tdrXmXhCUp4ngUDiRXQ8+ik/j0Fem1zzWprHYKKKKkoKKKKACiiig AqnqieZps6+ilvy5/pVymSIJI2RujAgj60LRiZw579h/OgnoScDHAFDApIyMCHUkN7GkJGB06+vT /GuowGSnCEDIH0rFvXySMkjPY9K0rqXg9ck81hXMm44BwPek2M2fBsYl8SRt/wA80duvTIx/WvSx XDeAbbMt5dEYAVY1Prnk/wAh+ddzWE3qax2CiiipKCiiigAooooAKKKKAOL8QQGx1IygHy58sMDo 3cf1/Gsh7sADnt0B6V3er2UF9p8sNwwRfvCQn7hHQ15XK7xyFCc4OMjoa3hLQyktSzc3OSew+tZ5 JcjHJz6fp70E5JyMn3NdH4MsbS81NpZ5EMkADRxHALH+97gfzIP1G7K4Ja2Ox8OaadL0aGCQYmb9 5J/vHt+AwPwrXNFJWD1NRaKKKACiiigAoo7VSvr9LKIMRuduFUd6EribLbMEUsxAA6knisu71y3g ysX71/Y4X8+/4ZrBub2e7YtMxIB4UHAH4f1qD19cdMVtGn3Ic+xLfXlxfZEj/KOQo+6P8awbu0yT gcVs4Bzkkk+9RtGrk9CMHv1rSySsiLtnLNAwONpwT370+CGVZQ6MyuDlShIII7gjp9a3mtFJJwMC nR2ip2ANKwGxpPiK4WNYr8GUY/1q8MPqOn+e9dJb3cF2m6CVXHcA4I+o6iuLVAFHtTGDKwdGZWBy GU4I+hFQ6aexam+p6BRXH6X4meKZbfUG3RkgLMeCp/2vUe/866+smmty077C0UUUhiZwMnpXHX10 by6eTtnCj2H8v/r10uqS+Tp0zDqV2/mcVyJOBwCTjsela0l1M5voB4AGMnPbvQAc4GRkY5/zxSYx xwCBSnggDk/yrYzADgdScdh0oPAPTpQc4POKOAcZJP8AKgAI5PA6dqTqAegzwAOv+NL256+nrRwA ACSfYUABxk8frTWAK46nH+fpTiMEdc5/KkY/KcZJx2PSgDKvkwDwM57d66zwhqZvNOa1kJMtsQuT 3U9PywR+ArlrwYUjjIHNS+ErkweJI4x92ZGRvbjI/UD86zmrouL1PSaKKKwNTK14/wCgKPWQA/ka 5odvpRRW9LYxnuIOh/GjFFFaEinv9f6U0nCgiiigBcdKF+YjNFFAAOWx7Udh9KKKAM27+4341U0p jHr9gV4JuIx+bYooqHsyo7nrFFFFc5sf/9k= "
+ id="image15827"
+ x="561"
+ y="263.61829"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <image
+ style="display:inline"
+ width="24"
+ height="18"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAASCAYAAABB7B6eAAAABHNCSVQICAgIfAhkiAAAAzBJREFU OI2NlE1LK2cUx3+ZMXHGydxE5U5yE2MNuFBKoJRARdpIi34C674LF0q5m/sVur+0uPIbFFHopl2q FequoTXFFruQJjM2hpjoHccMmbcu7s1wzYv0wGGel3P+/zPnOedE6JNKpfLBw8PDt5ZlfXJ3d5d2 HCfSb9OTaDQaJBKJuqqqP0mS9E2hUPhnb2+PjY2N0OaR8+np6VGj0ViRJCmSy+XIZDIoikI0Gh0A dxwH0zSp1+vUajVs2w5SqdQvtVrtMyAkCQkODw+vPM97USgU0DQNgCAIQh0lkchbiEajwdnZGc+e PWvpuj7dIxEATk5OfnVd98Xy8jKapuG6Lo7j4Lounufh+/5I9TwPz/OYnp5maWmJdrs9lc/nm70A hHK5/Gmr1fq4WCwiSRLdbncoqGVZXFxcYFnWSLLx8XGKxSK6rk+vrq5+DyCYpvldKpUimUyOBPd9 H13X2dnZwTCMJ/8oHo+TTCapVqtfAnNjlmUt5nI5XNfFdd2RufZ9HwBRFB/th4mmaVxfX/vAyzHL suSpqSlc1x1w6nQ6XF1dAYRfXdfpdrv4vk8mk0GW5QGCZDLJ+fl5FPhoDECWZWzbHiAwDIPd3d1H Z/v7++F6e3ubfD4/UGXvlfXKGBDmvt8wnU6ztbVFLBbDMAwODg5YX18nm80CMDMzMzRdtm2H67GJ iYnO7e2trCjKgGEsFmN2dhZBEEKnbDZLLpd7VAz9gbVaLRRFsYGoIEnSn7VaDUEQRta54zh4nge8 bb5en/TO+32azSaqqr4BfhdkWX5Zr9fDNxilmqaxublJNpt90s40TUzTZGFh4Qr4LQJwdHT0h23b Hy4uLg6dOz2JRCKIojj0vQBc16VSqaCq6l+lUuk58EU4i46Pj+8ty1Lm5uZQVTWcMf9HgiDANE0u Ly8B7LW1tWosFvsRePUIpVwuN6rV6nNRFEkkEkxOTqIoSthc/aCdToebmxva7Ta2baNp2t+lUqkD eMDnwN1AmPf3968Nw/i60WiIzWZTdBznyehVVX2TTqf/nZ+fj8bj8VlgB3jVux+ahyAIEsBXwMo7 TT7JAj8DP7zT6vsX/wEtdTE7+osNZwAAAABJRU5ErkJggg== "
+ id="image15426-9"
+ x="618"
+ y="297.61829"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <path
+ transform="matrix(0.25452831,0,0,-0.25452831,755.77313,470.58643)"
+ inkscape:transform-center-y="-1.103054"
+ d="m 96.785402,768 c -3.908791,0.16573 -12.321463,-26.38993 -15.486555,-28.68956 -3.374107,-2.45149 -32.533783,-3.34849 -33.989456,-7.25686 -1.3655,-3.66627 21.290773,-19.87335 22.499785,-23.59416 1.288851,-3.96651 -6.868894,-31.9762 -3.601633,-34.56838 3.064866,-2.43161 25.479885,14.10752 29.392187,14.10757 4.170661,5e-5 28.28857,-16.4139 31.76353,-14.10757 3.25969,2.16345 -5.54334,28.59227 -4.33442,32.31311 1.28876,3.96655 24.35219,21.83185 23.23257,25.84942 -1.05026,3.7687 -28.90585,3.56347 -32.071,5.86303 -3.37417,2.45141 -13.23809,29.90673 -17.405008,30.0834 z"
+ inkscape:randomized="0"
+ inkscape:rounded="0.12"
+ inkscape:flatsided="false"
+ sodipodi:arg2="2.1567634"
+ sodipodi:arg1="1.5707963"
+ sodipodi:r2="28.004345"
+ sodipodi:r1="52.022156"
+ sodipodi:cy="715.97784"
+ sodipodi:cx="96.7854"
+ sodipodi:sides="5"
+ id="path23154"
+ style="color:#000000;fill:#fed654;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ sodipodi:type="star"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <text
+ xml:space="preserve"
+ style="font-size:13px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:100%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#999999;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="399"
+ y="129"
+ id="text23159"
+ sodipodi:linespacing="100%"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"><tspan
+ sodipodi:role="line"
+ id="tspan23161"
+ x="399"
+ y="129">Sign in to collaborate | Create New Group | Options</tspan></text>
+ <rect
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
+ y="-133.04793"
+ x="666.09167"
+ height="1"
+ width="48.90947"
+ id="rect23163"
+ style="color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ transform="scale(1,-1)" />
+ <image
+ style="display:inline"
+ y="117.04793"
+ x="715.00116"
+ id="image24737"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAJ1JREFU OI3dkjEKxCAQRX9EmWIOYJEu9opFyB28cU5hmVukFwW32rC7MWHZFIH93f/MPPjDdLXWigsSV5b/ BCA/g5QS5nlGKQWv9xVCIIQAIjoHEBH6vkeM8S333u+WgYMKzjkw8+aZGdbaZoUmQEqJaZo2P44j lFJNwK7CU8MwYFkWlFJgjDkaQ3f2ieu6IucMrfVvgG90/yPdD3gAkHQqk0hfw2IAAAAASUVORK5C YII= "
+ height="16"
+ width="16"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <g
+ style="display:inline"
+ id="g5065"
+ transform="translate(-4.75,11.746521)"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <rect
+ ry="6"
+ rx="6"
+ y="146.75348"
+ x="685"
+ height="38.329861"
+ width="119.5"
+ id="rect25507"
+ style="color:#000000;fill:url(#linearGradient5072);fill-opacity:1;fill-rule:nonzero;stroke:#cccccc;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <image
+ width="16"
+ height="16"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAu5JREFU OI2lk11oW2UYgJ/vnO+cY5M0aZvmp83arKFFWXDrZJGJV1Nwg6F4o0zpLjrGBuKNMBT0VgqieL8L seIoiDi9kcnwZhamdqtlo92K6zrX3yzJ8tMkJzknyfm8kE3sLn2u3/e5eHkfwS5OvD99FjijS7lP gaU8r64Uc5quXZiZmvhy97x4vPjBV+Omrv00NhKPHd6fZCQRxmdZlGoNVtbzzC+tc2ctd00IcXpm auLmfwRvvvdFxh/s+v31IwfEgbEopVqD/NYaMhCFrl6w8yRiYeaWNrk0u/QQIV56JJEA4XDg51de TItnU30UC1n6h9OE+gewmy2y66tIz0XrNHg5k6LjqfDlq7fPAy8AaKc++vrjeLQ3eCQziqF5tGUA NIEhJaYh8VmSWLibgWiESI+fTHoPycG+w29/eGESQAuGfKcPpYcplwo8cHxEB/eiFHgKEBrCc9ku 1vnhyiKXZ+cJWYp9o4MAbwDIqt2KJOO9zN3JkRqL4ql/L1srF3l+PI0QAqUUm9sPaDYaDERCAIcA tKbb1izLRAtEKdea5KsuttOharu4tTxC/KMTQhCLhLm5fBfLkAB9AFLXNa9Sb2r+5hYBaZGr91Mw TNodj2axzXirheO4dAf82LbN3kSEXMMFKAJIQ9Oy9zYKgwdH46SGBri/vsnsyg4uJg3Xz2ff3cAS Hd55bT/VapWFW3ehOwlwHUBTnc7FheUNXE8CkBxKcPxghO1ckYeVOhVHcL/kkc/nqVQqPNWbYHk1 C/AtgL7wy8VLo5lXzwldN0N+gy5T59f5RRazimrdYafusGM7ZIZ0cjsuGyWPWytbv81MTbz7+JHK ucLJK9e87z0Pnns6xo83KpRcE7fdwXHbWIZgraz4K9fi6h8rJSHE2SdaOD75yVvDqaHpYKjHfCYV J94fxLIM7GaL7XyZP+9l2dgq3Ba6PPFEC4/o6Rsxj548N61bvmPosgeEUMprq3ZrVQnt828+nTy/ u8b/zd9wbDf3DUubqwAAAABJRU5ErkJggg== "
+ id="image25494"
+ x="693.75"
+ y="157.5835" />
+ <text
+ xml:space="preserve"
+ style="font-size:13px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:end;text-decoration:none;line-height:100%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:end;baseline-shift:baseline;color:#000000;fill:#666666;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
+ x="795"
+ y="163"
+ id="text25501"
+ sodipodi:linespacing="100%"><tspan
+ sodipodi:role="line"
+ id="tspan25503"
+ x="797.99609"
+ y="163">See this in the </tspan><tspan
+ id="tspan25505"
+ sodipodi:role="line"
+ x="795"
+ y="176">public space</tspan></text>
+ </g>
+ <text
+ sodipodi:linespacing="100%"
+ id="text3900"
+ y="243.22296"
+ x="802.5"
+ style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:end;text-decoration:none;line-height:100%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:end;color:#000000;fill:#ffb380;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold"
+ xml:space="preserve"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90"><tspan
+ y="243.22296"
+ x="802.5"
+ sodipodi:role="line"
+ id="tspan3908">Publised on: Nov 14, 2011</tspan></text>
+ <g
+ id="g3824"
+ style="fill:#f7ebe3;fill-opacity:1;display:inline">
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
+ inkscape:connector-curvature="0"
+ d="m 786.68281,317.15913 c 0.76666,0.21818 1.55403,0.47817 2.20263,0.95234 0.22295,0.16411 0.33547,0.40641 0.49427,0.62038 0.0473,0.0637 -0.0669,-0.1453 -0.11453,-0.20878 0.41354,0.0609 0.69861,0.30843 0.98649,0.59383 0.0395,0.0378 0.0748,0.0805 0.11848,0.11334 0.0199,0.0149 0.0496,0.0123 0.0692,0.0275 0.0816,0.0633 0.1608,0.12986 0.23822,0.19826 0.31695,0.28003 0.0402,0.0773 0.22502,0.20852 0.11925,0.10981 0.2912,0.12106 0.43168,0.19181 0.11832,0.0596 0.22491,0.1403 0.34094,0.20421 0.0684,0.06 0.13653,0.12025 0.20504,0.18009 0.12395,0.10827 0.17603,0.13796 0.27415,0.30733 8.1e-4,0.001 0.13667,0.39896 0.2217,0.45817 0.0188,-0.13694 -0.11563,-0.2061 0.10356,-0.1028 0.10276,0.0778 -0.99765,1.53099 -1.1004,1.45318 l 0,0 c -0.26916,-0.14595 -0.50201,-0.32699 -0.65135,-0.60252 -0.0323,-0.0705 -0.0657,-0.14041 -0.0969,-0.2114 -0.0166,-0.0378 -0.0794,-0.0905 -0.0461,-0.1148 0.0324,-0.0237 0.0404,0.0695 0.0604,0.10433 0.006,0.0109 0.0296,0.0386 0.0184,0.033 -0.0368,-0.0182 -0.0637,-0.0522 -0.0991,-0.0731 -0.007,-0.004 -0.0153,7.6e-4 -0.0229,10e-4 -0.33675,-0.18074 -0.69312,-0.33227 -0.97277,-0.60304 -0.24519,-0.21386 -0.51446,-0.40238 -0.72983,-0.64893 -0.0259,-0.0244 -0.0488,-0.0522 -0.0776,-0.0731 -0.0207,-0.015 0.0353,0.0369 0.053,0.0553 -0.0236,-0.01 -0.0473,-0.0197 -0.0709,-0.0295 0.009,0.0106 0.0415,0.0325 0.0276,0.0317 -0.0877,-0.005 -0.16793,-0.058 -0.25683,-0.0601 -0.34382,-0.16825 -0.31809,-0.11884 -0.58169,-0.38699 -0.0626,-0.0636 -0.101,-0.1503 -0.17003,-0.20689 -0.0426,-0.0349 -0.0374,-0.0295 -0.079,-0.0279 -0.70329,-0.21966 -1.39963,-0.46472 -2.03838,-0.83977 -0.10923,-0.0734 0.92828,-1.61811 1.03751,-1.54474 z"
+ id="path5118"
+ style="color:#000000;fill:#f7ebe3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
+ inkscape:connector-curvature="0"
+ d="m 785.96226,317.19647 c 0.72845,0.0695 1.38978,0.38259 2.07852,0.59906 0.33787,0.10972 0.5144,0.40087 0.7726,0.61237 0.002,-0.0167 -0.0102,-0.0581 0.005,-0.0501 0.059,0.0323 0.0966,0.094 0.15008,0.13473 0.17799,0.13561 0.34188,0.27106 0.49458,0.43887 0.0268,0.0212 0.15617,0.12414 0.17186,0.13228 0.0172,0.009 0.0413,-0.004 0.0579,0.006 0.07,0.0419 0.18349,0.19582 0.28619,0.15273 0.29336,0.0921 0.49042,0.41158 0.76743,0.51203 0.12666,-0.0276 0.0226,-0.018 0.23256,0.0915 0.24729,0.12895 0.42512,0.28467 0.61055,0.4923 0.15725,0.2097 0.32683,0.39511 0.47962,0.59368 0.14537,0.16132 0.35443,0.31324 0.48782,0.44302 -0.43051,0.0198 -0.86101,0.0397 -1.29152,0.0595 -0.0673,0.0946 -0.0861,0.27555 -0.20186,0.28366 -0.0929,0.007 -0.0628,-0.17528 -0.0942,-0.26292 -0.0124,-0.1377 1.93489,-0.31319 1.9473,-0.1755 l 0,0 c -0.004,0.24713 0.0351,1.078 -0.23511,1.2189 -0.41035,0.21395 -0.92003,0.10087 -1.38005,0.15131 -0.27903,-0.21967 -0.55172,-0.45351 -0.75292,-0.74996 -0.14843,-0.16785 -0.25874,-0.35544 -0.40953,-0.49064 0.0434,0.0734 0.0147,0.0148 -0.0886,-0.0401 -0.17115,-0.0909 -0.38441,-0.14081 -0.53658,-0.27682 -0.22981,-0.18267 -0.30316,-0.26952 -0.53968,-0.33645 -0.34652,-0.19471 -0.67914,-0.41222 -0.95533,-0.70193 -0.23877,-0.1832 -0.46484,-0.3884 -0.67021,-0.60805 -0.15287,-0.21622 0.006,-0.0993 0.12279,0.092 0.046,0.0752 -0.28846,-0.15183 -0.28397,-0.0489 -0.65109,-0.15398 -1.28911,-0.36125 -1.92277,-0.57447 -0.12006,-0.0494 0.57798,-1.74727 0.69804,-1.69792 z"
+ id="path5120"
+ style="color:#000000;fill:#f7ebe3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
+ inkscape:connector-curvature="0"
+ d="m 785.35227,316.5983 c 0.86096,-0.13151 1.71588,-0.0502 2.56271,0.12429 0.46491,0.0784 0.76667,0.2416 1.05915,0.63092 0.0767,0.10206 0.11514,0.22791 0.17608,0.34007 0.0518,-0.0692 -0.003,-0.0128 0.11025,0.0933 0.009,0.008 0.0276,-0.006 0.0371,0.002 0.14062,0.11665 0.21467,0.28774 0.32722,0.42781 0.31272,0.23511 0.4978,0.58703 0.66826,0.93094 0.0107,0.0108 0.0214,0.0216 0.0321,0.0324 0.0247,0.0407 0.0424,0.0868 0.0743,0.1222 0.011,0.0123 -5e-4,-0.0342 -0.008,-0.0488 -0.0758,-0.1429 -0.17478,-0.22296 -0.16082,-0.23295 0.0439,-0.0314 0.10578,0.0219 0.15866,0.0328 0.44733,0.0142 0.77342,0.2561 1.08414,0.55843 0.11339,-0.01 0.15368,0.21006 0.25687,0.19604 0.0139,-0.002 -0.008,-0.0467 0.005,-0.0418 0.1714,0.11296 0.0931,0.0793 0.22378,0.12387 0.38451,0.24078 0.59972,0.60622 0.76586,1.01755 0.0663,0.0194 -2.7e-4,-0.005 0.0874,0.12194 0.2321,0.33699 0.2687,0.44635 0.3325,0.86848 -0.25588,0.85202 -0.1009,0.96099 -1.53005,0.90358 -0.28031,-0.0113 -1.06028,-1.09178 -1.21944,-1.30165 -0.0687,-0.12793 1.74056,-1.09963 1.80927,-0.9717 l 0,0 c 0.0864,0.15367 0.17284,0.30731 0.2592,0.461 0.0491,0.0875 0.12986,0.16364 0.1473,0.26243 0.006,0.0354 -0.0708,-0.0343 -0.10518,-0.0239 -0.37255,0.11338 -0.78296,0.16607 -1.10092,0.39092 -0.12019,0.085 -0.0458,0.29082 -0.0687,0.43624 0.009,0.0268 0.0278,0.0523 0.0258,0.0803 -0.002,0.0241 -0.0159,-0.0458 -0.0267,-0.0674 -0.10002,-0.19978 -0.24221,-0.37742 -0.32621,-0.58598 -0.0245,-0.0602 -0.0721,-0.1118 -0.0847,-0.17554 -0.007,-0.0379 0.0961,0.11755 0.0632,0.0973 -0.039,-0.024 -0.0738,-0.0543 -0.1107,-0.0815 -10e-4,0.004 -0.002,0.008 -0.004,0.0116 -0.28041,-0.1642 -0.54938,-0.33902 -0.78656,-0.56387 -0.0205,-0.0165 -0.0628,-0.0759 -0.0616,-0.0495 10e-4,0.0286 0.0686,0.0313 0.0621,0.0592 -2.5e-4,0.001 -0.30913,-0.0358 -0.38352,-0.0524 -0.50731,-0.0507 -0.8338,-0.44335 -1.08136,-0.84894 -0.16122,-0.25896 -0.34295,-0.49319 -0.54491,-0.72239 -0.19648,-0.26741 -0.46348,-0.48016 -0.602,-0.79103 -0.0154,-0.0359 -0.0327,-0.0711 -0.0461,-0.10785 -0.005,-0.0149 0.0114,0.0305 0.0222,0.0421 0.0635,0.0687 0.13554,0.12923 0.19935,0.19769 0.0152,0.0163 0.0587,0.0506 0.037,0.0559 -0.15351,0.0372 -0.32039,-0.0829 -0.47268,-0.0339 -0.77414,-0.0588 -1.5505,-0.0507 -2.32276,-0.12776 -0.12675,-0.0325 0.33351,-1.82517 0.46027,-1.79262 z"
+ id="path5122"
+ style="color:#000000;fill:#f7ebe3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
+ inkscape:connector-curvature="0"
+ d="m 785.14673,317.12716 c 0.54895,-0.075 1.25026,-0.0628 1.77039,0.15111 0.10878,0.0447 0.20646,0.11276 0.30969,0.16914 0.26596,0.18069 0.38917,0.35679 0.54862,0.63563 0.0162,0.0284 0.053,0.11959 0.0416,0.0889 -0.0613,-0.16536 -0.11343,-0.20138 0.0126,-0.0688 -0.003,-0.0178 -0.0282,-0.0524 -0.0101,-0.0534 0.0973,-0.005 0.67537,0.41992 0.77263,0.48562 0.23821,0.0127 0.46399,0.15045 0.69888,0.24335 0.28895,0.21949 0.59048,0.3797 0.84863,0.63648 0.0893,0.0546 0.25528,0.29907 0.27555,0.28627 0.018,-0.0114 -0.035,-0.0683 -0.0145,-0.0624 0.13966,0.10525 0.074,0.0864 0.17708,0.1032 0.0764,-0.13162 0.76791,0.50572 0.85691,0.58248 0.10839,-0.0328 0.1525,0.16265 0.2541,0.14829 0.0125,-0.002 -0.003,-0.0408 0.009,-0.0369 0.0874,0.0289 0.16024,0.0925 0.24675,0.12396 0.0712,0.0563 0.14174,0.11352 0.2136,0.169 0.21984,0.16973 0.31088,0.34179 0.43882,0.58985 0.0539,0.1045 0.0709,0.14487 0.0309,0.055 -1.825,0.21192 -1.61238,0.54335 -1.71629,-0.5918 10e-4,-0.1425 2.01638,-0.1281 2.01536,0.0144 l 0,0 c -0.13499,1.42814 0.14655,0.94972 -1.83425,1.48264 -0.0249,-0.0379 -0.16978,-0.2391 -0.18253,-0.31332 -0.008,-0.0445 0.11735,0.13193 0.077,0.11162 -0.0705,-0.0355 -0.12809,-0.11187 -0.0622,-0.0313 -0.30274,-0.14905 -0.60659,-0.29725 -0.86302,-0.52484 -0.18915,-0.16672 -0.38528,-0.28032 -0.61922,-0.37592 -0.25308,-0.17254 -0.48034,-0.36974 -0.68931,-0.57583 -0.13393,-0.0818 -0.35454,-0.21795 -0.474,-0.28525 -0.31197,-0.1437 -0.6709,-0.17607 -0.94644,-0.40484 -0.32366,-0.22127 -0.66447,-0.42476 -0.93594,-0.712 -0.115,-0.12082 -0.0514,-0.0487 -0.2239,-0.31053 -0.0121,-0.0184 -0.0455,-0.0753 -0.0327,-0.0574 0.32146,0.44849 0.0763,0.0493 0.0717,0.18411 -0.11679,0.0559 -0.021,0.0194 -0.27953,-0.002 -0.41357,-0.0337 -0.83043,-0.0148 -1.24168,-0.0781 -0.12564,-0.0323 0.33057,-1.80908 0.45621,-1.77682 z"
+ id="path5124"
+ style="color:#000000;fill:#f7ebe3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
+ inkscape:connector-curvature="0"
+ d="m 789.67696,318.01792 c 0.23877,0.39281 0.44786,0.80149 0.67653,1.19972 0.13753,0.23952 0.0595,0.15496 0.16239,0.25617 0.11816,0.13039 -0.065,-0.0648 -0.0949,-0.0995 -0.0221,-0.0257 -0.10969,-0.0773 -0.0782,-0.0648 0.0192,0.008 0.28887,0.1413 0.37739,0.18511 0.27034,0.2048 0.44434,0.48207 0.61902,0.76472 0.15911,0.25744 0.0435,0.12432 0.16293,0.25207 0.13823,0.16194 0.18906,0.37808 0.31232,0.54853 0.008,0.0114 -0.0138,-0.0509 -0.003,-0.0422 0.034,0.0267 0.053,0.0684 0.0795,0.10254 -0.008,-0.0842 -0.0168,-0.0304 0.0674,-0.018 0.0189,0.003 0.0391,-0.0169 0.0565,-0.009 0.17593,0.0795 0.35451,0.21779 0.50118,0.33829 0.0114,0.008 0.0229,0.0166 0.0343,0.0249 0.0948,0.084 -1.09304,1.425 -1.18786,1.34101 l 0,0 c -0.0452,-0.0275 -0.0904,-0.055 -0.13558,-0.0826 -0.32874,-0.12012 -0.618,-0.3701 -0.84748,-0.6258 -0.17329,-0.20264 -0.28916,-0.44264 -0.45397,-0.651 -0.007,-0.0105 -0.56999,-0.84585 -0.26289,-0.51262 -0.14716,-0.0722 0.13237,0.0645 0.12714,0.067 -0.13711,0.0642 -0.68597,-0.36535 -0.76751,-0.44475 -0.47458,-0.52776 -0.85158,-1.144 -1.05316,-1.82874 -0.0496,-0.12076 1.6582,-0.82167 1.70777,-0.70092 z"
+ id="path5126"
+ style="color:#000000;fill:#f7ebe3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
+ inkscape:connector-curvature="0"
+ d="m 785.45225,317.77724 c 0.39649,0.0982 0.72726,0.33243 1.01295,0.61574 0.13109,0.14401 0.16571,0.30762 0.20691,0.48948 0.004,0.0185 -0.0103,-0.0378 -0.007,-0.0564 10e-4,-0.007 0.009,0.0118 0.0138,0.0178 -0.007,-0.0203 -0.0364,-0.0473 -0.0199,-0.0608 0.0156,-0.0126 0.0287,0.028 0.0434,0.0416 0.0583,0.0541 0.0791,0.0747 0.15076,0.0438 0.26447,0.0837 0.34464,0.0806 0.53474,0.33977 0.0573,0.0337 -0.0375,-0.075 -0.0232,-0.0782 0.0274,-0.006 0.0522,0.0211 0.0791,0.0295 0.0496,0.0154 0.0542,0.0124 0.10248,0.0132 0.0791,-0.0212 0.26113,0.0108 -0.0494,-0.0168 -0.0265,-0.002 0.0533,-4.6e-4 0.0799,-0.001 0.0541,-0.002 0.12643,-0.007 0.18016,-0.01 0.25845,-0.007 0.55262,-0.0617 0.79153,0.0603 0.0539,0.0275 0.10137,0.0661 0.15205,0.0991 0.22522,0.17028 0.3284,0.41025 0.36038,0.68301 0.0135,0.0548 0.0136,0.11455 0.0301,0.1685 0.002,0.007 -0.004,-0.0233 0.003,-0.0217 0.0182,0.004 0.0327,0.0926 0.006,-0.0216 0.0161,0.004 0.0222,-0.0309 0.0368,-0.0268 0.0315,0.009 0.0571,0.0324 0.0868,0.0461 0.0271,0.0398 0.0698,0.0117 0.10273,0.0241 0.035,0.0132 0.0665,0.0343 0.0998,0.0515 0.23283,0.10497 0.31734,0.27496 0.40913,0.50032 0.006,0.004 0.0122,0.0175 0.0186,0.0134 0.0197,-0.0125 -0.0229,-0.065 -9e-5,-0.07 0.0184,-0.004 0.0695,0.0436 0.13345,0.0256 0.2405,0.0802 0.37374,0.28917 0.47327,0.50737 0.0249,0.0838 0.0867,0.27686 0.16125,0.3296 0.10754,0.16224 0.027,0.0298 0.0458,0.0206 0.0485,-0.0238 0.0429,0.0549 0.0866,0.005 0.0591,-0.0348 0.0185,-0.0195 0.13689,0.0124 0.18423,0.0496 0.2992,0.16301 0.41489,0.30649 0.0517,0.0829 0.12062,0.16041 0.16454,0.24807 0.0821,0.16396 0.0198,0.0753 0.0675,0.14055 -0.0283,-0.10241 -0.02,-0.0328 0.0201,-0.0242 0.006,10e-4 -0.003,-0.0223 0.003,-0.0195 0.0246,0.0115 0.0804,0.0902 0.11267,0.0489 0.24134,0.11759 0.43533,0.2901 0.3911,0.60093 -0.0129,0.0905 -0.0714,0.16834 -0.10712,0.2525 -0.0557,0.0495 -0.10297,0.11065 -0.16715,0.14856 -0.21865,0.12915 -0.43576,0.10525 -0.6833,0.0275 -0.0801,-0.0251 -0.13375,-0.10139 -0.20063,-0.15209 -0.0453,-0.0472 0.62236,-0.68743 0.66763,-0.64022 l 0,0 c -0.2058,-0.13833 -0.31627,-0.0593 -0.36635,0.11872 -0.0334,0.16667 -0.0583,0.17124 0.0101,0.34041 0.0156,0.0384 0.047,0.0682 0.0701,0.10264 0.003,0.004 0.0115,0.014 0.007,0.0124 -0.20055,-0.0692 0.003,-0.0155 -0.0953,-0.0404 -0.1916,-0.10335 -0.37136,-0.2176 -0.48731,-0.40895 -0.0478,-0.0961 -0.0973,-0.1913 -0.16858,-0.27307 0.009,0.0107 0.0226,0.0189 0.027,0.0322 0.002,0.007 -0.0239,-0.0137 -0.0192,-0.009 0.0113,0.0121 0.0433,0.0142 0.0394,0.0303 -0.0111,0.0448 -0.22151,-0.10386 -0.19488,-0.0233 -0.23112,-0.0784 -0.43663,-0.19009 -0.56822,-0.40666 -0.0891,-0.1449 -0.16835,-0.29873 -0.21107,-0.4627 -0.0116,-0.025 -0.033,-0.0454 -0.0405,-0.0719 -0.005,-0.0163 0.0215,0.0266 0.0291,0.0418 10e-4,0.003 -0.0112,-0.004 -0.009,-0.002 0.0138,0.0141 0.0432,0.0191 0.0448,0.0388 0.001,0.0141 -0.0281,-0.003 -0.0421,-0.005 -0.27092,-0.0949 -0.51882,-0.23243 -0.62304,-0.51991 -0.009,-0.023 -0.0276,-0.0444 -0.0257,-0.0689 10e-4,-0.018 0.0176,0.0316 0.0274,0.0468 0.006,0.01 0.0313,0.0246 0.0203,0.0276 -0.0133,0.004 -0.02,-0.0225 -0.0337,-0.0239 -0.01,-10e-4 0.0125,0.0149 0.0188,0.0224 -0.0208,-0.008 -0.0415,-0.0166 -0.0623,-0.0249 -0.20321,-0.036 -0.40105,-0.17726 -0.54609,-0.31402 -0.13843,-0.19896 -0.19941,-0.36553 -0.22214,-0.60576 0.0288,0.009 -0.0264,-0.057 -0.0413,-0.041 0.004,0.005 0.0188,0.0144 0.0123,0.0161 -0.0157,0.004 -0.0645,-0.007 -0.0482,-0.007 0.0702,-10e-4 0.14047,0.002 0.21066,0.004 0.27155,0.009 -0.50237,-0.0209 -0.25255,0.007 -0.28658,0.0197 -0.58028,0.0534 -0.86199,-0.0202 -0.21056,-0.063 -0.41817,-0.12806 -0.549,-0.32217 0.0243,0.0227 0.0513,0.0428 0.0728,0.0682 0.013,0.0153 -0.20424,-0.0493 -0.20886,-0.0507 -0.0247,-0.007 -0.0496,-0.0139 -0.0744,-0.0208 -0.23307,-0.10595 -0.41958,-0.25407 -0.55355,-0.47424 -0.0475,-0.10151 -0.033,-0.0627 -0.075,-0.20561 -0.002,-0.006 -0.005,-0.0251 -0.003,-0.0192 0.009,0.021 0.0218,0.042 0.022,0.0648 1.4e-4,0.0158 -0.0338,-0.041 -0.0409,-0.0237 -0.27665,-0.18557 -0.57642,-0.3294 -0.86168,-0.50044 -0.0523,-0.039 0.49948,-0.77892 0.5518,-0.7399 z"
+ id="path5134"
+ style="color:#000000;fill:#f7ebe3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
+ inkscape:connector-curvature="0"
+ d="m 791.00916,321.16348 c 0.33943,0.0997 0.65996,0.28539 0.89812,0.54807 0.0697,0.0885 0.26868,0.43824 0.11655,0.53327 -0.21556,0.13466 -0.49365,0.12132 -0.74047,0.18198 -0.048,-0.0408 0.52839,-0.72003 0.57642,-0.67927 l 0,0 c -0.22314,0.0748 -0.4785,0.0868 -0.66943,0.22442 -0.17036,0.12278 0.022,0.2437 0.0406,0.34477 0.002,0.0109 -0.0196,-0.0103 -0.0294,-0.0154 -0.0749,-0.024 -0.0151,-0.003 -0.1434,-0.0699 -0.20204,-0.106 -0.40894,-0.20366 -0.60079,-0.32802 -0.0523,-0.039 0.49948,-0.77892 0.5518,-0.7399 z"
+ id="path5138"
+ style="color:#000000;fill:#f7ebe3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
+ inkscape:connector-curvature="0"
+ d="m 790.4882,317.69041 c 0.47708,0.15395 0.90561,0.42015 1.33789,0.66799 0.20449,0.15361 0.46304,0.33535 0.54361,0.59601 0.0203,0.0658 0.0235,0.13563 0.0352,0.20344 -0.0238,0.3439 -0.12337,0.53285 -0.36251,0.78109 -0.0451,0.0479 -0.72208,-0.59068 -0.67693,-0.63855 l 0,0 c 0.16024,0.003 0.10329,-0.20718 0.14058,-0.0941 0.009,0.029 0.0171,0.0584 0.0277,0.087 0.005,0.014 0.0313,0.0308 0.0197,0.0402 -0.005,0.004 -0.30482,-0.20952 -0.32904,-0.18808 -0.44386,-0.209 -0.87703,-0.44732 -1.288,-0.71509 -0.0523,-0.039 0.49948,-0.77892 0.5518,-0.7399 z"
+ id="path5140"
+ style="color:#000000;fill:#f7ebe3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
+ inkscape:connector-curvature="0"
+ d="m 789.39955,317.12569 c 0.35747,0.11395 0.69098,0.28888 1.03529,0.43487 0.0965,0.0409 0.43579,0.16526 0.53779,0.20301 0.31447,0.12015 0.66188,0.23198 0.89204,0.49305 0.0388,0.0441 0.0697,0.0946 0.1045,0.14186 0.0982,0.13192 0.12017,0.29483 0.17018,0.44608 0.002,0.005 -0.003,-0.0181 10e-4,-0.0152 0.009,0.007 0.0119,0.0192 0.0179,0.0289 0.0466,0.11149 0.12346,0.20908 0.14703,0.33082 0.0125,0.0644 0.0133,0.13052 0.02,0.19578 0.002,0.0648 -0.9148,0.0903 -0.9166,0.0255 l 0,0 c 0.0517,0.0649 -0.0457,-0.13118 -0.0618,-0.16682 -0.0649,-0.11462 -0.10399,-0.23995 -0.15829,-0.3578 -0.22616,-0.12975 -0.5152,-0.12767 -0.74869,-0.23862 -0.52546,-0.18547 -1.03016,-0.42045 -1.49899,-0.72384 -0.0564,-0.0324 0.40194,-0.82997 0.45834,-0.79756 z"
+ id="path5142"
+ style="color:#000000;fill:#f7ebe3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
+ inkscape:connector-curvature="0"
+ d="m 789.91887,318.16875 c 0.48617,0.24129 0.96821,0.49022 1.45725,0.7263 0.20857,0.11486 0.43448,0.20179 0.64105,0.32021 0.16813,0.0964 0.0482,0.047 0.16292,0.09 0.2537,0.14413 0.33579,0.40392 0.43028,0.65918 0.0445,0.11959 0.0638,0.24475 0.0818,0.37027 0.008,0.0648 -0.90855,0.17914 -0.91663,0.11432 l 0,0 c -0.0129,-0.0811 -0.0294,-0.16121 -0.0562,-0.23913 -0.0147,-0.049 -0.0266,-0.0988 -0.0415,-0.14773 -0.004,-0.0128 -0.0271,-0.0335 -0.0143,-0.0374 0.0118,-0.004 0.0501,0.0611 0.007,0.0393 -0.28539,-0.13083 -0.60454,-0.18536 -0.8854,-0.33142 -0.53001,-0.23464 -1.05467,-0.499 -1.49467,-0.88255 -0.0482,-0.0445 0.58055,-0.72581 0.62872,-0.68135 z"
+ id="path5144"
+ style="color:#000000;fill:#f7ebe3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
+ inkscape:connector-curvature="0"
+ d="m 790.35964,320.79959 c 0.32328,0.22805 0.56142,0.53529 0.71867,0.89551 0.0181,0.0588 0.091,0.39719 0.0368,0.45324 -0.0304,0.0315 0.004,-0.0875 0.004,-0.13133 0.007,0.0182 0.006,0.0424 0.0209,0.0546 0.0101,0.008 -0.0134,-0.0432 -10e-4,-0.0388 0.0272,0.01 0.15959,0.28929 0.1777,0.3285 0.0724,0.10928 0.0112,-0.0191 0.0169,-0.0316 0.006,-0.0127 0.0267,0.009 0.0406,0.009 0.0115,-1.5e-4 0.0352,-0.0206 0.0425,-0.0261 0.12158,0.0716 0.6171,0.0685 0.10712,0.0526 -0.0621,0.0198 -0.0363,0.0242 0.0257,-0.10372 0.0326,-0.0609 0.89374,0.39939 0.8612,0.46029 l 0,0 c -0.15351,0.2041 -0.29745,0.41534 -0.55475,0.49486 -0.41329,0.0175 -0.34365,0.0243 -0.65079,-0.0388 -0.0434,-0.009 -0.0347,-0.008 -0.0696,-8.3e-4 -0.29898,-0.0639 -0.55296,-0.20073 -0.6823,-0.49617 -0.0602,-0.14038 -0.13903,-0.2735 -0.1869,-0.41791 -0.0354,-0.14997 -0.0223,-0.0647 -0.0279,-0.2549 -7.2e-4,-0.0242 0.0192,0.0547 0.003,0.0725 -0.005,0.005 -0.0145,-0.0414 -0.0143,-0.0145 -0.16994,-0.22116 -0.34977,-0.43263 -0.53932,-0.63729 -0.0445,-0.0475 0.62734,-0.67678 0.67184,-0.62927 z"
+ id="path5146"
+ style="color:#000000;fill:#f7ebe3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ </g>
+ <rect
+ style="opacity:0.95999995;color:#000000;fill:#f9f9f9;stroke:#000000;stroke-width:1.00000024;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect3851"
+ width="495.24832"
+ height="486.32101"
+ x="299"
+ y="112.99998"
+ rx="10.000001"
+ ry="10.000001" />
+ <image
+ y="146.821"
+ x="326.74829"
+ id="image3846"
+ xlink:href="data:image/png;base64,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 RK5CYII= "
+ height="449"
+ width="459"
+ style="opacity:0.95999995;display:inline" />
+ <rect
+ style="opacity:0.95999995;color:#000000;fill:#b3b3b3;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="rect3881"
+ width="496"
+ height="9"
+ x="298"
+ y="111" />
+ <image
+ style="display:inline"
+ y="115.821"
+ x="305.74829"
+ id="image25048"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAdpJREFU OI2lkk1I03EYxz97aYyx9J9lCWlYNjZaIE16uYTUZVDdgsJjt6B7lBEMIlAvmRV5VAovXTuFCRUD KRy71ETLpcPR2EsrRi/7b/9vh3+0lkqFz+nh+3s+Dw/f39chic2Uc1M04Aa4ccRx2OMzxr9VypF/ gbx+I1H9Ur54/aVeIYmhfmMuPjmiulmVUtNSblHKvpYWnkkLz+0+tyilplU3q4pPjmio35iTBJKI 9WHDdVOKhaXSinTntJR6Ks3P2H1pxX6rm6qbVcX6kKSGB073FsgkoSMEvjYoLEHoJARPQCFtax0h yCTt2XVNLKRhWxeUlsHobOjGbltr2wP5pSakeUF7DxTfw4698DHT0MursL0bisv2zJ+/AGDVTJyd vZB/B59zsCsIb56A0wU7A1ApQP4tdPVi1czmC7x+IzE7NYplWTBwF2TB2WHwbgWPz+6tOpwfw7LE 7NQoXr+RAHBI+pUDyYqcGRznYHSASvEDM/eukXw8gSxrwxw4fo/yw0vRB4HjpwJHwz1OJi4EcXtu 8zV7kzF9Xy9QTR48OudwZfOt0WOVFzDfnUbeAwxnVjcC1ywof2q52u6pte4PH7rF5fiVv4FrFhgu M7Kvhfv/A8NPEzdTPwCqtvHRDwWVwwAAAABJRU5ErkJggg== "
+ height="16"
+ width="16"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90" />
+ <text
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/webtemplate/web_template-2011.png"
+ sodipodi:linespacing="100%"
+ id="text3863"
+ y="138.14264"
+ x="325.98318"
+ style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:100%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#784421;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold"
+ xml:space="preserve"><tspan
+ style="font-size:20px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:100%;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#784421;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Ubuntu;-inkscape-font-specification:Ubuntu Bold"
+ y="138.14264"
+ x="325.98318"
+ sodipodi:role="line"
+ id="tspan3865">Chat:<tspan
+ style="font-size:13px;fill:#6c5353"
+ id="tspan3867"> with other users & your gmail contacts</tspan></tspan></text>
+ </g>
<g
inkscape:groupmode="layer"
id="layer3"
@@ -2871,7 +2878,7 @@
inkscape:groupmode="layer"
id="layer4"
inkscape:label="dialogs"
- style="display:none"
+ style="display:inline"
sodipodi:insensitive="true">
<rect
style="color:#000000;fill:#552200;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
@@ -3141,7 +3148,7 @@
inkscape:groupmode="layer"
id="layer5"
inkscape:label="notify"
- style="display:none"
+ style="display:inline"
sodipodi:insensitive="true">
<g
style="display:inline"
Modified: trunk/src/main/java/cc/kune/client/OnAppStartFactory.java
===================================================================
--- trunk/src/main/java/cc/kune/client/OnAppStartFactory.java 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/main/java/cc/kune/client/OnAppStartFactory.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -30,14 +30,7 @@
public class OnAppStartFactory {
@Inject
- public OnAppStartFactory(final Session session,
- // final Provider<DocsClientTool> docsClientTool,
- // final Provider<BlogsClientTool> blogsClientTool,
- // final Provider<BartersClientTool> bartersClientTool,
- // final Provider<MeetingsClientTool> meetsClientTool,
- // final Provider<ChatClientTool> chatsClientTool, final
- // Provider<WikiClientTool> wikiClientTool,
- final Provider<XMLActionsParser> actionsParser) {
+ public OnAppStartFactory(final Session session, final Provider<XMLActionsParser> actionsParser) {
session.onAppStart(true, new AppStartHandler() {
@Override
public void onAppStart(final AppStartEvent event) {
Modified: trunk/src/main/java/cc/kune/common/client/actions/gwtui/AbstractGwtButtonGui.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/gwtui/AbstractGwtButtonGui.java 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/main/java/cc/kune/common/client/actions/gwtui/AbstractGwtButtonGui.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -116,6 +116,12 @@
}
@Override
+ public void setIconBackground(final String backgroundColor) {
+ iconLabel.setLeftIconBackground(backgroundColor);
+ layout();
+ }
+
+ @Override
public void setIconResource(final ImageResource icon) {
iconLabel.setLeftIconResource(icon);
layout();
Modified: trunk/src/main/java/cc/kune/common/client/actions/gwtui/AbstractGwtMenuItemGui.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/gwtui/AbstractGwtMenuItemGui.java 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/main/java/cc/kune/common/client/actions/gwtui/AbstractGwtMenuItemGui.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -180,6 +180,12 @@
}
@Override
+ public void setIconBackground(final String backgroundColor) {
+ iconLabel.setLeftIconBackground(backgroundColor);
+ layout();
+ }
+
+ @Override
public void setIconResource(final ImageResource icon) {
iconLabel.setRightIconResource(icon);
iconLabel.addRightIconStyle("k-fl");
Modified: trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtIconLabelGui.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtIconLabelGui.java 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtIconLabelGui.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -76,6 +76,11 @@
}
@Override
+ public void setIconBackground(final String color) {
+ iconLabel.setLeftIconBackground(color);
+ }
+
+ @Override
protected void setIconStyle(final String style) {
iconLabel.setRightIcon(style);
iconLabel.addRightIconStyle("k-fl");
Modified: trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtMenuGui.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtMenuGui.java 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtMenuGui.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -98,6 +98,14 @@
}
@Override
+ public void setIconBackground(final String backgroundColor) {
+ if (notStandAlone) {
+ iconLabel.setLeftIconBackground(backgroundColor);
+ layout();
+ }
+ }
+
+ @Override
public void setIconResource(final ImageResource resource) {
if (notStandAlone) {
iconLabel.setLeftIconResource(resource);
Modified: trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtMenuSeparatorGui.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtMenuSeparatorGui.java 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtMenuSeparatorGui.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -43,6 +43,10 @@
}
@Override
+ protected void setIconBackground(final String backgroundColor) {
+ }
+
+ @Override
protected void setIconStyle(final String style) {
}
Modified: trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtSubMenuGui.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtSubMenuGui.java 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtSubMenuGui.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -60,6 +60,12 @@
}
@Override
+ public void setIconBackground(final String backgroundColor) {
+ iconLabel.setLeftIconBackground(backgroundColor);
+ layout();
+ }
+
+ @Override
public void setIconStyle(final String style) {
iconLabel.setRightIcon(style);
layout();
Modified: trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtToolbarGui.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtToolbarGui.java 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtToolbarGui.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -67,6 +67,10 @@
}
@Override
+ protected void setIconBackground(final String backgroundColor) {
+ }
+
+ @Override
protected void setIconStyle(final String style) {
}
Modified: trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtToolbarSeparatorGui.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtToolbarSeparatorGui.java 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtToolbarSeparatorGui.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -64,6 +64,10 @@
}
@Override
+ public void setIconBackground(final String backgroundColor) {
+ }
+
+ @Override
protected void setIconStyle(final String style) {
}
Modified: trunk/src/main/java/cc/kune/common/client/actions/gxtui/AbstractGxtButtonGui.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/gxtui/AbstractGxtButtonGui.java 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/main/java/cc/kune/common/client/actions/gxtui/AbstractGxtButtonGui.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -98,6 +98,11 @@
}
@Override
+ public void setIconBackground(final String backgroundColor) {
+ throw new NotImplementedException();
+ }
+
+ @Override
public void setIconResource(final ImageResource icon) {
button.setIcon(AbstractImagePrototype.create(icon));
button.setScale(ButtonScale.SMALL);
@@ -148,7 +153,6 @@
// ??
}
button.setVisible(visible);
-
}
@Override
Modified: trunk/src/main/java/cc/kune/common/client/actions/gxtui/AbstractGxtMenuGui.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/gxtui/AbstractGxtMenuGui.java 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/main/java/cc/kune/common/client/actions/gxtui/AbstractGxtMenuGui.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -116,6 +116,11 @@
}
@Override
+ public void setIconBackground(final String back) {
+ throw new NotImplementedException();
+ }
+
+ @Override
public void setIconUrl(final String url) {
throw new NotImplementedException();
}
Modified: trunk/src/main/java/cc/kune/common/client/actions/gxtui/AbstractGxtMenuItemGui.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/gxtui/AbstractGxtMenuItemGui.java 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/main/java/cc/kune/common/client/actions/gxtui/AbstractGxtMenuItemGui.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -128,6 +128,11 @@
}
@Override
+ public void setIconBackground(final String back) {
+ throw new NotImplementedException();
+ }
+
+ @Override
public void setIconResource(final ImageResource icon) {
item.setIcon(AbstractImagePrototype.create(icon));
}
Modified: trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtMenuSeparatorGui.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtMenuSeparatorGui.java 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtMenuSeparatorGui.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -49,6 +49,10 @@
}
@Override
+ public void setIconBackground(final String back) {
+ }
+
+ @Override
protected void setIconStyle(final String style) {
}
Modified: trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtMenuTitleItemGui.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtMenuTitleItemGui.java 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtMenuTitleItemGui.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -66,6 +66,10 @@
}
@Override
+ public void setIconBackground(final String back) {
+ }
+
+ @Override
protected void setIconStyle(final String style) {
item.addStyleName(style);
}
Modified: trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtToolbarGui.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtToolbarGui.java 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtToolbarGui.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -82,6 +82,10 @@
}
@Override
+ public void setIconBackground(final String back) {
+ }
+
+ @Override
protected void setIconStyle(final String style) {
}
Modified: trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtToolbarSeparatorGui.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtToolbarSeparatorGui.java 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/main/java/cc/kune/common/client/actions/gxtui/GxtToolbarSeparatorGui.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -59,6 +59,10 @@
}
@Override
+ public void setIconBackground(final String back) {
+ }
+
+ @Override
protected void setIconStyle(final String style) {
// do nothing
}
Modified: trunk/src/main/java/cc/kune/common/client/actions/ui/AbstractGuiItem.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/ui/AbstractGuiItem.java 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/main/java/cc/kune/common/client/actions/ui/AbstractGuiItem.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -128,13 +128,19 @@
if (iconS.startsWith("http")) {
setIconUrl(iconS);
} else {
- setIconStyle(iconS);
+ if (iconS.startsWith("#")) {
+ setIconBackground(iconS);
+ } else {
+ setIconStyle(iconS);
+ }
}
} else if (icon != null) {
throw new NotImplementedException();
}
}
+ protected abstract void setIconBackground(String backgroundColor);
+
public void setIconResource(final ImageResource icon) {
setIconStyle((IconConstants.CSS_SUFFIX + icon.getName()));
}
Modified: trunk/src/main/java/cc/kune/common/client/ui/IconLabel.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/ui/IconLabel.java 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/main/java/cc/kune/common/client/ui/IconLabel.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -29,6 +29,7 @@
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
+import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.FocusPanel;
@@ -137,6 +138,10 @@
iconLeft.setVisible(true);
}
+ public void setLeftIconBackground(final String backgroundColor) {
+ DOM.setStyleAttribute(iconLeft.getElement(), "backgroundColor", backgroundColor);
+ }
+
public void setLeftIconResource(final ImageResource res) {
setLeftIconResourceImpl(res);
}
Added: trunk/src/main/java/cc/kune/common/client/utils/CSSUtils.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/utils/CSSUtils.java (rev 0)
+++ trunk/src/main/java/cc/kune/common/client/utils/CSSUtils.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -0,0 +1,32 @@
+package cc.kune.common.client.utils;
+
+import com.google.gwt.dom.client.Document;
+import com.google.gwt.dom.client.Element;
+import com.google.gwt.dom.client.LinkElement;
+import com.google.gwt.dom.client.StyleElement;
+import com.google.gwt.dom.client.StyleInjector;
+
+public class CSSUtils {
+
+ public static StyleElement addCss(final String cssContents) {
+ // final StyleElement style = Document.get().createStyleElement();
+ // style.setPropertyString("language", "text/css");
+ // style.setInnerText(cssContents);
+
+ return StyleInjector.injectStylesheetAtEnd(cssContents);
+ }
+
+ public static LinkElement setCss(final String cssUrl) {
+ final Element head = Document.get().getElementsByTagName("head").getItem(0);
+ final LinkElement link = Document.get().createLinkElement();
+ link.setType("text/css");
+ link.setRel("stylesheet");
+ link.setHref(cssUrl);
+ link.setMedia("screen");
+ link.setTitle("dynamicLoadedSheet");
+ head.appendChild(link);
+ // you can use removeFromParent
+ return link;
+ }
+
+}
Property changes on: trunk/src/main/java/cc/kune/common/client/utils/CSSUtils.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified: trunk/src/main/java/cc/kune/core/client/actions/XMLActionsParser.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/actions/XMLActionsParser.java 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/main/java/cc/kune/core/client/actions/XMLActionsParser.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -3,8 +3,13 @@
import java.util.HashMap;
import java.util.Map;
+import cc.kune.common.client.actions.AbstractExtendedAction;
+import cc.kune.common.client.actions.ActionEvent;
+import cc.kune.common.client.actions.ui.descrip.GuiActionDescrip;
+import cc.kune.common.client.actions.ui.descrip.MenuItemDescriptor;
import cc.kune.core.client.actions.WaveExtension.Builder;
import cc.kune.core.client.errors.ErrorHandler;
+import cc.kune.core.client.rpcservices.ContentServiceAsync;
import com.google.gwt.http.client.Request;
import com.google.gwt.http.client.RequestBuilder;
@@ -17,9 +22,25 @@
import com.google.gwt.xml.client.NodeList;
import com.google.gwt.xml.client.XMLParser;
import com.google.inject.Inject;
+import com.google.inject.Provider;
public class XMLActionsParser {
+ public static class GadgetAction extends AbstractExtendedAction {
+
+ private final Provider<ContentServiceAsync> contentService;
+
+ @Inject
+ public GadgetAction(final Provider<ContentServiceAsync> contentService) {
+ this.contentService = contentService;
+ }
+
+ @Override
+ public void actionPerformed(final ActionEvent event) {
+ }
+
+ }
+
private final ErrorHandler errHandler;
private final Map<String, WaveExtension> extensionsMap;
@@ -72,6 +93,17 @@
builder.installerUrl(get(extension, "installerUrl"));
extensionsMap.put(name, builder.build());
}
-
+ final NodeList guiDescriptors = parse.getElementsByTagName("guiActionDescriptors");
+ for (int i = 0; i < guiDescriptors.getLength(); i++) {
+ final Element extension = (Element) extensions.item(i);
+ final Provider<GuiActionDescrip> provider = new Provider<GuiActionDescrip>() {
+ @Override
+ public GuiActionDescrip get() {
+ // TODO Auto-generated method stub
+ new MenuItemDescriptor(null);
+ return null;
+ }
+ };
+ }
}
}
Modified: trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorViewImpl.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorViewImpl.java 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorViewImpl.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -23,7 +23,7 @@
import cc.kune.core.client.sitebar.spaces.SpaceSelectorPresenter.SpaceSelectorView;
import cc.kune.core.shared.i18n.I18nTranslationService;
import cc.kune.gspace.client.GSpaceArmor;
-import cc.kune.gspace.client.resources.WsArmorResources;
+import cc.kune.gspace.client.resources.GSpaceArmorResources;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.HasClickHandlers;
@@ -52,7 +52,7 @@
@Inject
public SpaceSelectorViewImpl(final GSpaceArmor armor, final I18nTranslationService i18n,
- final WsArmorResources res) {
+ final GSpaceArmorResources res) {
armor.getSitebar().insert(uiBinder.createAndBindUi(this), 0);
// homeButton.setVisible(false);
Tooltip.to(homeButton, i18n.t("Your home page in this site"));
Modified: trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorViewImpl.ui.xml
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorViewImpl.ui.xml 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/spaces/SpaceSelectorViewImpl.ui.xml 2011-06-16 16:47:28 UTC (rev 1407)
@@ -2,7 +2,7 @@
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
xmlns:g="urn:import:com.google.gwt.user.client.ui">
<ui:with field='img'
- type='cc.kune.gspace.client.resources.WsArmorResources' />
+ type='cc.kune.gspace.client.resources.GSpaceArmorResources' />
<g:HorizontalPanel ui:field="panel" addStyleNames="k-space-sel k-10corners k-floatleft k-pointer" >
<g:ToggleButton ui:field="homeButton" styleName="k-space-sel-btn">
<g:upFace image='{img.homeSpaceDisabled}' />
Modified: trunk/src/main/java/cc/kune/core/client/sn/AbstractSNPanel.ui.xml
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/AbstractSNPanel.ui.xml 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/main/java/cc/kune/core/client/sn/AbstractSNPanel.ui.xml 2011-06-16 16:47:28 UTC (rev 1407)
@@ -15,7 +15,7 @@
<g:Label ui:field="sndDeckLabel" addStyleNames="k-sn-orphan-label" />
<g:FlowPanel width="100%" ui:field="categoriesFlow">
<g:DockLayoutPanel unit="EM" width="100%" ui:field="firstCategoryPanel"
- addStyleNames="k-sn-adminspanel" height="80px">
+ addStyleNames="k-sn-1st-panel" height="80px">
<g:north size="1.2">
<g:FlowPanel>
<g:Label text="Admins" ui:field="firstCategoryLabel"
@@ -31,7 +31,7 @@
</g:center>
</g:DockLayoutPanel>
<g:DockLayoutPanel unit="EM" width="100%"
- ui:field="sndCategoryPanel" addStyleNames="k-sn-collabspanel"
+ ui:field="sndCategoryPanel" addStyleNames="k-sn-2nd-panel"
height="80px">
<g:north size="1.2">
<g:FlowPanel>
@@ -49,7 +49,7 @@
</g:center>
</g:DockLayoutPanel>
<g:DockLayoutPanel unit="EM" width="100%"
- ui:field="trdCategoryPanel" addStyleNames="k-sn-pendingspanel"
+ ui:field="trdCategoryPanel" addStyleNames="k-sn-3rd-panel"
height="80px">
<g:north size="1.2">
<g:FlowPanel>
Modified: trunk/src/main/java/cc/kune/core/client/ws/CoreViewImpl.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/ws/CoreViewImpl.java 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/main/java/cc/kune/core/client/ws/CoreViewImpl.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -22,7 +22,7 @@
import cc.kune.core.client.resources.CoreResources;
import cc.kune.core.client.state.StateManagerDefault;
import cc.kune.gspace.client.GSpaceArmorImpl;
-import cc.kune.gspace.client.resources.WsArmorResources;
+import cc.kune.gspace.client.resources.GSpaceArmorResources;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.History;
@@ -47,7 +47,7 @@
public CoreViewImpl(final GSpaceArmorImpl armor, final StateManagerDefault stateManager) {
this.armor = armor;
GWT.<CoreResources> create(CoreResources.class).css().ensureInjected();
- GWT.<WsArmorResources> create(WsArmorResources.class).style().ensureInjected();
+ GWT.<GSpaceArmorResources> create(GSpaceArmorResources.class).style().ensureInjected();
History.addValueChangeHandler(stateManager);
}
Modified: trunk/src/main/java/cc/kune/core/public/ws.css
===================================================================
--- trunk/src/main/java/cc/kune/core/public/ws.css 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/main/java/cc/kune/core/public/ws.css 2011-06-16 16:47:28 UTC (rev 1407)
@@ -942,17 +942,15 @@
padding: 10px;
}
-.k-sn-adminspanel { /* background-color: #a05a2c; */
+.k-sn-1st-panel { /* background-color: #a05a2c; */
border-bottom: 2px solid #F7EBE3;
border-top: 2px solid #F7EBE3;
}
-.k-sn-collabspanel {
- background-color: #d38d5f;
+.k-sn-2nd-spanel {
}
-.k-sn-pendingspanel { /* background-color: #a05a2c; */
-
+.k-sn-3rd-panel {
}
.k-sn-adminsscroll,.k-sn-collabsscroll,.k-sn-pendingsscroll {
@@ -1128,7 +1126,6 @@
}
.k-tool-panel {
- background-color: #DEAA87;
}
.k-tool-item {
@@ -1138,7 +1135,6 @@
}
.k-tool-item-focus {
- background-color: #d38d5f;
}
.k-tool-item-nofocus {
@@ -1146,11 +1142,9 @@
}
.k-tool-item-selected {
- background-color: #C87137;
}
.k-tool-item-notselected {
- background-color: inherits;
}
.k-def-docbtn span {
Modified: trunk/src/main/java/cc/kune/core/server/InitData.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/InitData.java 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/main/java/cc/kune/core/server/InitData.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -20,11 +20,12 @@
package cc.kune.core.server;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
-
import cc.kune.core.server.tool.ToolSimple;
import cc.kune.core.server.users.UserInfo;
+import cc.kune.core.shared.dto.GSpaceTheme;
import cc.kune.domain.ExtMediaDescrip;
import cc.kune.domain.I18nCountry;
import cc.kune.domain.I18nLanguage;
@@ -32,263 +33,259 @@
public class InitData {
- private String siteUrl;
- private List<License> licenses;
- private List<I18nLanguage> languages;
- private List<I18nCountry> countries;
- private String[] timezones;
- private UserInfo userInfo;
- private String chatHttpBase;
- private String siteDomain;
- private String chatDomain;
- private String chatRoomHost;
- private License defaultLicense;
- private String currentCCversion;
- private String defaultWsTheme;
- private String[] wsThemes;
- private String siteLogoUrl;
- private String galleryPermittedExtensions;
- private String maxFileSizeInMb;
- private int imgResizewidth;
- private int imgThumbsize;
- private int imgCropsize;
- private int imgIconsize;
- private ArrayList<ToolSimple> userTools;
- private ArrayList<ToolSimple> groupTools;
- private List<ExtMediaDescrip> extMediaDescrips;
+ private String aviEmbedObject;
+ private String chatDomain;
+ private String chatHttpBase;
+ private String chatRoomHost;
+ private List<I18nCountry> countries;
+ private String currentCCversion;
+ private License defaultLicense;
+ private String defaultWsTheme;
+ private List<ExtMediaDescrip> extMediaDescrips;
+ private String flvEmbedObject;
+ private String galleryPermittedExtensions;
+ private ArrayList<ToolSimple> groupTools;
+ private HashMap<String, GSpaceTheme> gSpaceThemes;
+ private int imgCropsize;
+ private int imgIconsize;
+ private int imgResizewidth;
+ private int imgThumbsize;
+ private List<I18nLanguage> languages;
+ private List<License> licenses;
+ private String maxFileSizeInMb;
+ private String mp3EmbedObject;
+ private String oggEmbedObject;
+ private String siteDomain;
+ private String siteLogoUrl;
+ private String siteUrl;
+ private String[] timezones;
+ private UserInfo userInfo;
+ private ArrayList<ToolSimple> userTools;
- private String flvEmbedObject;
+ public String getAviEmbedObject() {
+ return aviEmbedObject;
+ }
- private String oggEmbedObject;
+ public String getChatDomain() {
+ return chatDomain;
+ }
- private String mp3EmbedObject;
+ public String getChatHttpBase() {
+ return chatHttpBase;
+ }
- private String aviEmbedObject;
+ public String getChatRoomHost() {
+ return chatRoomHost;
+ }
- public String getAviEmbedObject() {
- return aviEmbedObject;
- }
+ public List<I18nCountry> getCountries() {
+ return countries;
+ }
- public String getChatDomain() {
- return chatDomain;
- }
+ public String getCurrentCCversion() {
+ return currentCCversion;
+ }
- public String getChatHttpBase() {
- return chatHttpBase;
- }
+ public License getDefaultLicense() {
+ return defaultLicense;
+ }
- public String getChatRoomHost() {
- return chatRoomHost;
- }
+ public String getDefaultWsTheme() {
+ return defaultWsTheme;
+ }
- public List<I18nCountry> getCountries() {
- return countries;
- }
+ public List<ExtMediaDescrip> getExtMediaDescrips() {
+ return extMediaDescrips;
+ }
- public String getCurrentCCversion() {
- return currentCCversion;
- }
+ public String getFlvEmbedObject() {
+ return flvEmbedObject;
+ }
- public License getDefaultLicense() {
- return defaultLicense;
- }
+ public String getGalleryPermittedExtensions() {
+ return galleryPermittedExtensions;
+ }
- public String getDefaultWsTheme() {
- return defaultWsTheme;
- }
+ public ArrayList<ToolSimple> getGroupTools() {
+ return groupTools;
+ }
- public List<ExtMediaDescrip> getExtMediaDescrips() {
- return extMediaDescrips;
- }
+ public HashMap<String, GSpaceTheme> getgSpaceThemes() {
+ return gSpaceThemes;
+ }
- public String getFlvEmbedObject() {
- return flvEmbedObject;
- }
+ public int getImgCropsize() {
+ return imgCropsize;
+ }
- public String getGalleryPermittedExtensions() {
- return galleryPermittedExtensions;
- }
+ public int getImgIconsize() {
+ return imgIconsize;
+ }
- public ArrayList<ToolSimple> getGroupTools() {
- return groupTools;
- }
+ public int getImgResizewidth() {
+ return imgResizewidth;
+ }
- public int getImgCropsize() {
- return imgCropsize;
- }
+ public int getImgThumbsize() {
+ return imgThumbsize;
+ }
- public int getImgIconsize() {
- return imgIconsize;
- }
+ public List<I18nLanguage> getLanguages() {
+ return languages;
+ }
- public int getImgResizewidth() {
- return imgResizewidth;
- }
+ public List<License> getLicenses() {
+ return licenses;
+ }
- public int getImgThumbsize() {
- return imgThumbsize;
- }
+ public String getMaxFileSizeInMb() {
+ return maxFileSizeInMb;
+ }
- public List<I18nLanguage> getLanguages() {
- return languages;
- }
+ public String getMp3EmbedObject() {
+ return mp3EmbedObject;
+ }
- public List<License> getLicenses() {
- return licenses;
- }
+ public String getOggEmbedObject() {
+ return oggEmbedObject;
+ }
- public String getMaxFileSizeInMb() {
- return maxFileSizeInMb;
- }
+ @Deprecated
+ public String getSiteDomain() {
+ return siteDomain;
+ }
- public String getMp3EmbedObject() {
- return mp3EmbedObject;
- }
+ public String getSiteLogoUrl() {
+ return siteLogoUrl;
+ }
- public String getOggEmbedObject() {
- return oggEmbedObject;
- }
+ public String getSiteUrl() {
+ return siteUrl;
+ }
- @Deprecated
- public String getSiteDomain() {
- return siteDomain;
- }
+ public String[] getTimezones() {
+ return timezones;
+ }
- public String getSiteLogoUrl() {
- return siteLogoUrl;
- }
+ public UserInfo getUserInfo() {
+ return userInfo;
+ }
- public String getSiteUrl() {
- return siteUrl;
- }
+ public ArrayList<ToolSimple> getUserTools() {
+ return userTools;
+ }
- public String[] getTimezones() {
- return timezones;
- }
+ public void setAviEmbedObject(final String aviEmbedObject) {
+ this.aviEmbedObject = aviEmbedObject;
+ }
- public UserInfo getUserInfo() {
- return userInfo;
- }
+ public void setChatDomain(final String chatDomain) {
+ this.chatDomain = chatDomain;
+ }
- public ArrayList<ToolSimple> getUserTools() {
- return userTools;
- }
+ public void setChatHttpBase(final String chatHttpBase) {
+ this.chatHttpBase = chatHttpBase;
+ }
- public String[] getWsThemes() {
- return wsThemes;
- }
+ public void setChatRoomHost(final String chatRoomHost) {
+ this.chatRoomHost = chatRoomHost;
+ }
- public void setAviEmbedObject(final String aviEmbedObject) {
- this.aviEmbedObject = aviEmbedObject;
- }
+ public void setCountries(final List<I18nCountry> countries) {
+ this.countries = countries;
+ }
- public void setChatDomain(final String chatDomain) {
- this.chatDomain = chatDomain;
- }
+ public void setCurrentCCversion(final String currentCCversion) {
+ this.currentCCversion = currentCCversion;
+ }
- public void setChatHttpBase(final String chatHttpBase) {
- this.chatHttpBase = chatHttpBase;
- }
+ public void setDefaultLicense(final License defaultLicense) {
+ this.defaultLicense = defaultLicense;
+ }
- public void setChatRoomHost(final String chatRoomHost) {
- this.chatRoomHost = chatRoomHost;
- }
+ public void setDefaultWsTheme(final String defaultWsTheme) {
+ this.defaultWsTheme = defaultWsTheme;
+ }
- public void setCountries(final List<I18nCountry> countries) {
- this.countries = countries;
- }
+ public void setExtMediaDescrips(final List<ExtMediaDescrip> extMediaDescrips) {
+ this.extMediaDescrips = extMediaDescrips;
+ }
- public void setCurrentCCversion(final String currentCCversion) {
- this.currentCCversion = currentCCversion;
- }
+ public void setFlvEmbedObject(final String flvEmbedObject) {
+ this.flvEmbedObject = flvEmbedObject;
+ }
- public void setDefaultLicense(final License defaultLicense) {
- this.defaultLicense = defaultLicense;
- }
+ public void setGalleryPermittedExtensions(final String galleryPermittedExtensions) {
+ this.galleryPermittedExtensions = galleryPermittedExtensions;
+ }
- public void setDefaultWsTheme(final String defaultWsTheme) {
- this.defaultWsTheme = defaultWsTheme;
- }
+ public void setGroupTools(final ArrayList<ToolSimple> groupTools) {
+ this.groupTools = groupTools;
+ }
- public void setExtMediaDescrips(final List<ExtMediaDescrip> extMediaDescrips) {
- this.extMediaDescrips = extMediaDescrips;
- }
+ public void setgSpaceThemes(final HashMap<String, GSpaceTheme> gSpaceThemes) {
+ this.gSpaceThemes = gSpaceThemes;
+ }
- public void setFlvEmbedObject(final String flvEmbedObject) {
- this.flvEmbedObject = flvEmbedObject;
- }
+ public void setImgCropsize(final int imgCropsize) {
+ this.imgCropsize = imgCropsize;
+ }
- public void setGalleryPermittedExtensions(final String galleryPermittedExtensions) {
- this.galleryPermittedExtensions = galleryPermittedExtensions;
- }
+ public void setImgIconsize(final int imgIconsize) {
+ this.imgIconsize = imgIconsize;
+ }
- public void setGroupTools(final ArrayList<ToolSimple> groupTools) {
- this.groupTools = groupTools;
- }
+ public void setImgResizewidth(final int imgResizewidth) {
+ this.imgResizewidth = imgResizewidth;
+ }
- public void setImgCropsize(final int imgCropsize) {
- this.imgCropsize = imgCropsize;
- }
+ public void setImgThumbsize(final int imgThumbsize) {
+ this.imgThumbsize = imgThumbsize;
+ }
- public void setImgIconsize(final int imgIconsize) {
- this.imgIconsize = imgIconsize;
- }
+ public void setLanguages(final List<I18nLanguage> languages) {
+ this.languages = languages;
+ }
- public void setImgResizewidth(final int imgResizewidth) {
- this.imgResizewidth = imgResizewidth;
- }
+ public void setLicenses(final List<License> licenses) {
+ this.licenses = licenses;
+ }
- public void setImgThumbsize(final int imgThumbsize) {
- this.imgThumbsize = imgThumbsize;
- }
+ public void setMaxFileSizeInMb(final String maxFileSizeInMb) {
+ this.maxFileSizeInMb = maxFileSizeInMb;
+ }
- public void setLanguages(final List<I18nLanguage> languages) {
- this.languages = languages;
- }
+ public void setMp3EmbedObject(final String mp3EmbedObject) {
+ this.mp3EmbedObject = mp3EmbedObject;
+ }
- public void setLicenses(final List<License> licenses) {
- this.licenses = licenses;
- }
+ public void setOggEmbedObject(final String oggEmbedObject) {
+ this.oggEmbedObject = oggEmbedObject;
+ }
- public void setMaxFileSizeInMb(final String maxFileSizeInMb) {
- this.maxFileSizeInMb = maxFileSizeInMb;
- }
+ @Deprecated
+ public void setSiteDomain(final String siteDomain) {
+ this.siteDomain = siteDomain;
+ }
- public void setMp3EmbedObject(final String mp3EmbedObject) {
- this.mp3EmbedObject = mp3EmbedObject;
- }
+ public void setSiteLogoUrl(final String siteLogoUrl) {
+ this.siteLogoUrl = siteLogoUrl;
+ }
- public void setOggEmbedObject(final String oggEmbedObject) {
- this.oggEmbedObject = oggEmbedObject;
- }
+ public void setSiteUrl(final String siteUrl) {
+ this.siteUrl = siteUrl;
+ }
- @Deprecated
- public void setSiteDomain(final String siteDomain) {
- this.siteDomain = siteDomain;
- }
+ public void setTimezones(final String[] timezones) {
+ this.timezones = timezones;
+ }
- public void setSiteLogoUrl(final String siteLogoUrl) {
- this.siteLogoUrl = siteLogoUrl;
- }
+ public void setUserInfo(final UserInfo currentUserInfo) {
+ this.userInfo = currentUserInfo;
+ }
- public void setSiteUrl(final String siteUrl) {
- this.siteUrl = siteUrl;
- }
+ public void setUserTools(final ArrayList<ToolSimple> userTools) {
+ this.userTools = userTools;
+ }
- public void setTimezones(final String[] timezones) {
- this.timezones = timezones;
- }
-
- public void setUserInfo(final UserInfo currentUserInfo) {
- this.userInfo = currentUserInfo;
- }
-
- public void setUserTools(final ArrayList<ToolSimple> userTools) {
- this.userTools = userTools;
- }
-
- public void setWsThemes(final String[] wsThemes) {
- this.wsThemes = wsThemes;
- }
-
}
Modified: trunk/src/main/java/cc/kune/core/server/mapper/DozerMapper.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/mapper/DozerMapper.java 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/main/java/cc/kune/core/server/mapper/DozerMapper.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -24,8 +24,6 @@
import net.sf.dozer.util.mapping.DozerBeanMapperSingletonWrapper;
import net.sf.dozer.util.mapping.MapperIF;
-
-
import cc.kune.core.server.manager.impl.SearchResult;
import cc.kune.core.shared.dto.SearchResultDTO;
@@ -33,37 +31,40 @@
@Singleton
public class DozerMapper implements Mapper {
- private final MapperIF mapper;
+ private final MapperIF mapper;
- public DozerMapper() {
- mapper = DozerBeanMapperSingletonWrapper.getInstance();
- }
+ public DozerMapper() {
+ mapper = DozerBeanMapperSingletonWrapper.getInstance();
+ }
- @SuppressWarnings("unchecked")
- public <T> T map(final Object source, final Class<T> type) {
- return (T) mapper.map(source, type);
- }
+ @Override
+ @SuppressWarnings("unchecked")
+ public <T> T map(final Object source, final Class<T> type) {
+ return (T) mapper.map(source, type);
+ }
- @SuppressWarnings("unchecked")
- public <T> List<T> mapList(final List<?> list, final Class<T> type) {
- final ArrayList<T> dest = new ArrayList<T>(list.size());
- for (final Object o : list) {
- dest.add((T) mapper.map(o, type));
- }
- return dest;
+ @Override
+ @SuppressWarnings("unchecked")
+ public <T> List<T> mapList(final List<?> list, final Class<T> type) {
+ final ArrayList<T> dest = new ArrayList<T>(list.size());
+ for (final Object o : list) {
+ dest.add((T) mapper.map(o, type));
}
+ return dest;
+ }
- @SuppressWarnings("unchecked")
- public <K, T> SearchResultDTO<T> mapSearchResult(final SearchResult<K> result, final Class<T> type) {
- final SearchResultDTO<T> resultDTO = new SearchResultDTO<T>();
- final List<K> list = result.getList();
- final ArrayList<T> dest = new ArrayList<T>(list.size());
- for (final Object o : list) {
- dest.add((T) mapper.map(o, type));
- }
- resultDTO.setList(dest);
- resultDTO.setSize(result.getSize());
- return resultDTO;
+ @Override
+ @SuppressWarnings("unchecked")
+ public <K, T> SearchResultDTO<T> mapSearchResult(final SearchResult<K> result, final Class<T> type) {
+ final SearchResultDTO<T> resultDTO = new SearchResultDTO<T>();
+ final List<K> list = result.getList();
+ final ArrayList<T> dest = new ArrayList<T>(list.size());
+ for (final Object o : list) {
+ dest.add((T) mapper.map(o, type));
}
+ resultDTO.setList(dest);
+ resultDTO.setSize(result.getSize());
+ return resultDTO;
+ }
}
Modified: trunk/src/main/java/cc/kune/core/server/rpc/SiteRPC.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/rpc/SiteRPC.java 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/main/java/cc/kune/core/server/rpc/SiteRPC.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -19,9 +19,9 @@
*/
package cc.kune.core.server.rpc;
+import java.util.HashMap;
import java.util.TimeZone;
-
import cc.kune.core.client.errors.DefaultException;
import cc.kune.core.client.rpcservices.SiteService;
import cc.kune.core.server.InitData;
@@ -36,6 +36,7 @@
import cc.kune.core.server.properties.KuneProperties;
import cc.kune.core.server.tool.ServerToolRegistry;
import cc.kune.core.server.users.UserInfoService;
+import cc.kune.core.shared.dto.GSpaceTheme;
import cc.kune.core.shared.dto.InitDataDTO;
import com.google.inject.Inject;
@@ -45,76 +46,96 @@
@Singleton
public class SiteRPC implements RPC, SiteService {
- private final ChatProperties chatProperties;
- private final I18nCountryManager countryManager;
- private final ExtMediaDescripManager extMediaDescManager;
- private final KuneProperties kuneProperties;
- private final I18nLanguageManager languageManager;
- private final LicenseManager licenseManager;
- private final Mapper mapper;
- private final ServerToolRegistry serverToolRegistry;
- private final UserInfoService userInfoService;
- private final UserManager userManager;
- private final Provider<UserSession> userSessionProvider;
+ private final ChatProperties chatProperties;
+ private final I18nCountryManager countryManager;
+ private final ExtMediaDescripManager extMediaDescManager;
+ private final KuneProperties kuneProperties;
+ private final I18nLanguageManager languageManager;
+ private final LicenseManager licenseManager;
+ private final Mapper mapper;
+ private final ServerToolRegistry serverToolRegistry;
+ private final UserInfoService userInfoService;
+ private final UserManager userManager;
+ private final Provider<UserSession> userSessionProvider;
- // TODO: refactor: too many parameters! refactor to Facade Pattern
- @Inject
- public SiteRPC(final Provider<UserSession> userSessionProvider, final UserManager userManager,
- final UserInfoService userInfoService, final LicenseManager licenseManager, final Mapper mapper,
- final KuneProperties kuneProperties, final ChatProperties chatProperties,
- final I18nLanguageManager languageManager, final I18nCountryManager countryManager,
- final ServerToolRegistry serverToolRegistry, final ExtMediaDescripManager extMediaDescManager) {
- this.userSessionProvider = userSessionProvider;
- this.userManager = userManager;
- this.userInfoService = userInfoService;
- this.licenseManager = licenseManager;
- this.mapper = mapper;
- this.kuneProperties = kuneProperties;
- this.chatProperties = chatProperties;
- this.languageManager = languageManager;
- this.countryManager = countryManager;
- this.serverToolRegistry = serverToolRegistry;
- this.extMediaDescManager = extMediaDescManager;
- }
+ // TODO: refactor: too many parameters! refactor to Facade Pattern
+ @Inject
+ public SiteRPC(final Provider<UserSession> userSessionProvider, final UserManager userManager,
+ final UserInfoService userInfoService, final LicenseManager licenseManager, final Mapper mapper,
+ final KuneProperties kuneProperties, final ChatProperties chatProperties,
+ final I18nLanguageManager languageManager, final I18nCountryManager countryManager,
+ final ServerToolRegistry serverToolRegistry, final ExtMediaDescripManager extMediaDescManager) {
+ this.userSessionProvider = userSessionProvider;
+ this.userManager = userManager;
+ this.userInfoService = userInfoService;
+ this.licenseManager = licenseManager;
+ this.mapper = mapper;
+ this.kuneProperties = kuneProperties;
+ this.chatProperties = chatProperties;
+ this.languageManager = languageManager;
+ this.countryManager = countryManager;
+ this.serverToolRegistry = serverToolRegistry;
+ this.extMediaDescManager = extMediaDescManager;
+ }
- @Override
- @Transactional
- public InitDataDTO getInitData(final String userHash) throws DefaultException {
- final InitData data = new InitData();
- final UserSession userSession = getUserSession();
+ private String[] getColors(final String key) {
+ return this.kuneProperties.get(key).split(",");
+ }
- data.setSiteUrl(kuneProperties.get(KuneProperties.SITE_URL));
- data.setLicenses(licenseManager.getAll());
- data.setLanguages(languageManager.getAll());
- data.setCountries(countryManager.getAll());
- data.setTimezones(TimeZone.getAvailableIDs());
- data.setUserInfo(userInfoService.buildInfo(userSession.getUser(), userSession.getHash()));
- data.setChatHttpBase(chatProperties.getHttpBase());
- data.setChatDomain(chatProperties.getDomain());
- data.setSiteDomain(kuneProperties.get(KuneProperties.SITE_DOMAIN));
- data.setChatRoomHost(chatProperties.getRoomHost());
- data.setWsThemes(this.kuneProperties.get(KuneProperties.WS_THEMES).split(","));
- data.setDefaultLicense(licenseManager.getDefLicense());
- data.setCurrentCCversion(this.kuneProperties.get(KuneProperties.CURRENT_CC_VERSION));
- data.setDefaultWsTheme(this.kuneProperties.get(KuneProperties.WS_THEMES_DEF));
- data.setSiteLogoUrl(kuneProperties.get(KuneProperties.SITE_LOGO_URL));
- data.setGalleryPermittedExtensions(kuneProperties.get(KuneProperties.UPLOAD_GALLERY_PERMITTED_EXTS));
- data.setMaxFileSizeInMb(kuneProperties.get(KuneProperties.UPLOAD_MAX_FILE_SIZE));
- data.setUserTools(serverToolRegistry.getToolsForUsers());
- data.setGroupTools(serverToolRegistry.getToolsForGroups());
- data.setImgResizewidth(Integer.valueOf(kuneProperties.get(KuneProperties.IMAGES_RESIZEWIDTH)));
- data.setImgThumbsize(Integer.valueOf(kuneProperties.get(KuneProperties.IMAGES_THUMBSIZE)));
- data.setImgCropsize(Integer.valueOf(kuneProperties.get(KuneProperties.IMAGES_CROPSIZE)));
- data.setImgIconsize(Integer.valueOf(kuneProperties.get(KuneProperties.IMAGES_ICONSIZE)));
- data.setFlvEmbedObject(kuneProperties.get(KuneProperties.FLV_EMBEDED_OBJECT));
- data.setMp3EmbedObject(kuneProperties.get(KuneProperties.MP3_EMBEDED_OBJECT));
- data.setOggEmbedObject(kuneProperties.get(KuneProperties.OGG_EMBEDED_OBJECT));
- data.setAviEmbedObject(kuneProperties.get(KuneProperties.AVI_EMBEDED_OBJECT));
- data.setExtMediaDescrips(extMediaDescManager.getAll());
- return mapper.map(data, InitDataDTO.class);
+ @Override
+ @Transactional
+ public InitDataDTO getInitData(final String userHash) throws DefaultException {
+ final InitData data = new InitData();
+ final UserSession userSession = getUserSession();
+
+ data.setSiteUrl(kuneProperties.get(KuneProperties.SITE_URL));
+ data.setLicenses(licenseManager.getAll());
+ data.setLanguages(languageManager.getAll());
+ data.setCountries(countryManager.getAll());
+ data.setTimezones(TimeZone.getAvailableIDs());
+ data.setUserInfo(userInfoService.buildInfo(userSession.getUser(), userSession.getHash()));
+ data.setChatHttpBase(chatProperties.getHttpBase());
+ data.setChatDomain(chatProperties.getDomain());
+ data.setSiteDomain(kuneProperties.get(KuneProperties.SITE_DOMAIN));
+ data.setChatRoomHost(chatProperties.getRoomHost());
+ data.setDefaultLicense(licenseManager.getDefLicense());
+ data.setCurrentCCversion(this.kuneProperties.get(KuneProperties.CURRENT_CC_VERSION));
+ data.setDefaultWsTheme(this.kuneProperties.get(KuneProperties.WS_THEMES_DEF));
+ data.setSiteLogoUrl(kuneProperties.get(KuneProperties.SITE_LOGO_URL));
+ data.setGalleryPermittedExtensions(kuneProperties.get(KuneProperties.UPLOAD_GALLERY_PERMITTED_EXTS));
+ data.setMaxFileSizeInMb(kuneProperties.get(KuneProperties.UPLOAD_MAX_FILE_SIZE));
+ data.setUserTools(serverToolRegistry.getToolsForUsers());
+ data.setGroupTools(serverToolRegistry.getToolsForGroups());
+ data.setImgResizewidth(Integer.valueOf(kuneProperties.get(KuneProperties.IMAGES_RESIZEWIDTH)));
+ data.setImgThumbsize(Integer.valueOf(kuneProperties.get(KuneProperties.IMAGES_THUMBSIZE)));
+ data.setImgCropsize(Integer.valueOf(kuneProperties.get(KuneProperties.IMAGES_CROPSIZE)));
+ data.setImgIconsize(Integer.valueOf(kuneProperties.get(KuneProperties.IMAGES_ICONSIZE)));
+ data.setFlvEmbedObject(kuneProperties.get(KuneProperties.FLV_EMBEDED_OBJECT));
+ data.setMp3EmbedObject(kuneProperties.get(KuneProperties.MP3_EMBEDED_OBJECT));
+ data.setOggEmbedObject(kuneProperties.get(KuneProperties.OGG_EMBEDED_OBJECT));
+ data.setAviEmbedObject(kuneProperties.get(KuneProperties.AVI_EMBEDED_OBJECT));
+ data.setExtMediaDescrips(extMediaDescManager.getAll());
+ final InitDataDTO map = mapper.map(data, InitDataDTO.class);
+ map.setgSpaceThemes(getSiteThemes(this.kuneProperties.get(KuneProperties.WS_THEMES).split(",")));
+ return map;
+ }
+
+ private HashMap<String, GSpaceTheme> getSiteThemes(final String[] themes) {
+ final HashMap<String, GSpaceTheme> map = new HashMap<String, GSpaceTheme>();
+ for (final String theme : themes) {
+ map.put(theme, getThemeFromProperties(theme));
}
+ return map;
+ }
- private UserSession getUserSession() {
- return userSessionProvider.get();
- }
+ private GSpaceTheme getThemeFromProperties(final String themeName) {
+ final GSpaceTheme theme = new GSpaceTheme(themeName);
+ theme.setBackColors(getColors(KuneProperties.WS_THEMES + "." + theme.getName() + ".backgrounds"));
+ theme.setColors(getColors(KuneProperties.WS_THEMES + "." + theme.getName() + ".colors"));
+ return theme;
+ }
+
+ private UserSession getUserSession() {
+ return userSessionProvider.get();
+ }
}
Copied: trunk/src/main/java/cc/kune/core/shared/dto/GSpaceTheme.java (from rev 1399, trunk/src/main/java/org/ourproject/kune/workspace/client/themes/WsTheme.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/shared/dto/GSpaceTheme.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/shared/dto/GSpaceTheme.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -0,0 +1,98 @@
+/*
+ *
+ * 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.core.shared.dto;
+
+import java.util.Arrays;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+
+public class GSpaceTheme implements IsSerializable {
+ private String[] backColors;
+ private String[] colors;
+ private String name;
+
+ public GSpaceTheme() {
+ }
+
+ public GSpaceTheme(final String name) {
+ this.name = name;
+ }
+
+ @Override
+ public boolean equals(final Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ final GSpaceTheme other = (GSpaceTheme) obj;
+ if (name == null) {
+ if (other.name != null) {
+ return false;
+ }
+ } else if (!name.equals(other.name)) {
+ return false;
+ }
+ return true;
+ }
+
+ public String[] getBackColors() {
+ return backColors;
+ }
+
+ public String[] getColors() {
+ return colors;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((name == null) ? 0 : name.hashCode());
+ return result;
+ }
+
+ public void setBackColors(final String[] backColors) {
+ this.backColors = backColors;
+ }
+
+ public void setColors(final String[] colors) {
+ this.colors = colors;
+ }
+
+ public void setName(final String name) {
+ this.name = name;
+ }
+
+ @Override
+ public String toString() {
+ return "GSpaceTheme [backColors=" + Arrays.toString(backColors) + ", colors="
+ + Arrays.toString(colors) + ", name=" + name + "]";
+ }
+
+}
Modified: trunk/src/main/java/cc/kune/core/shared/dto/InitDataDTO.java
===================================================================
--- trunk/src/main/java/cc/kune/core/shared/dto/InitDataDTO.java 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/main/java/cc/kune/core/shared/dto/InitDataDTO.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -20,269 +20,274 @@
package cc.kune.core.shared.dto;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+
import com.google.gwt.user.client.rpc.IsSerializable;
public class InitDataDTO implements IsSerializable {
- private String siteUrl;
- private UserInfoDTO userInfo;
- private ArrayList<LicenseDTO> licenses;
- private ArrayList<I18nLanguageSimpleDTO> languages;
- private ArrayList<I18nCountryDTO> countries;
- private String[] timezones;
- private String chatHttpBase;
- private String siteDomain;
- private String chatDomain;
- private String chatRoomHost;
- private String defaultWsTheme;
- private LicenseDTO defaultLicense;
- private String currentCCversion;
- private String[] wsThemes;
- private String siteLogoUrl;
- private String galleryPermittedExtensions;
- private String maxFileSizeInMb;
- private int imgResizewidth;
- private int imgThumbsize;
- private int imgCropsize;
- private int imgIconsize;
- private ArrayList<ToolSimpleDTO> userTools;
- private ArrayList<ToolSimpleDTO> groupTools;
- private String flvEmbedObject;
- private String oggEmbedObject;
- private String mp3EmbedObject;
- private String aviEmbedObject;
- private List<ExtMediaDescripDTO> extMediaDescrips;
+ private String aviEmbedObject;
+ private String chatDomain;
+ private String chatHttpBase;
+ private String chatRoomHost;
+ private ArrayList<I18nCountryDTO> countries;
+ private String currentCCversion;
+ private LicenseDTO defaultLicense;
+ private String defaultWsTheme;
+ private List<ExtMediaDescripDTO> extMediaDescrips;
+ private String flvEmbedObject;
+ private String galleryPermittedExtensions;
+ private ArrayList<ToolSimpleDTO> groupTools;
+ private HashMap<String, GSpaceTheme> gSpaceThemes = new HashMap<String, GSpaceTheme>();
+ private int imgCropsize;
+ private int imgIconsize;
+ private int imgResizewidth;
+ private int imgThumbsize;
+ private ArrayList<I18nLanguageSimpleDTO> languages;
+ private ArrayList<LicenseDTO> licenses;
+ private String maxFileSizeInMb;
+ private String mp3EmbedObject;
+ private String oggEmbedObject;
+ private String siteDomain;
+ private String siteLogoUrl;
+ private String siteUrl;
+ private String[] timezones;
+ private UserInfoDTO userInfo;
+ private ArrayList<ToolSimpleDTO> userTools;
- public String getAviEmbedObject() {
- return aviEmbedObject;
- }
+ public InitDataDTO() {
+ }
- public String getChatDomain() {
- return chatDomain;
- }
+ public String getAviEmbedObject() {
+ return aviEmbedObject;
+ }
- public String getChatHttpBase() {
- return chatHttpBase;
- }
+ public String getChatDomain() {
+ return chatDomain;
+ }
- public String getChatRoomHost() {
- return chatRoomHost;
- }
+ public String getChatHttpBase() {
+ return chatHttpBase;
+ }
- public ArrayList<I18nCountryDTO> getCountries() {
- return countries;
- }
+ public String getChatRoomHost() {
+ return chatRoomHost;
+ }
- public String getCurrentCCversion() {
- return currentCCversion;
- }
+ public ArrayList<I18nCountryDTO> getCountries() {
+ return countries;
+ }
- public LicenseDTO getDefaultLicense() {
- return defaultLicense;
- }
+ public String getCurrentCCversion() {
+ return currentCCversion;
+ }
- public String getDefaultWsTheme() {
- return defaultWsTheme;
- }
+ public LicenseDTO getDefaultLicense() {
+ return defaultLicense;
+ }
- public List<ExtMediaDescripDTO> getExtMediaDescrips() {
- return extMediaDescrips;
- }
+ public String getDefaultWsTheme() {
+ return defaultWsTheme;
+ }
- public String getFlvEmbedObject() {
- return flvEmbedObject;
- }
+ public List<ExtMediaDescripDTO> getExtMediaDescrips() {
+ return extMediaDescrips;
+ }
- public String getGalleryPermittedExtensions() {
- return galleryPermittedExtensions;
- }
+ public String getFlvEmbedObject() {
+ return flvEmbedObject;
+ }
- public ArrayList<ToolSimpleDTO> getGroupTools() {
- return groupTools;
- }
+ public String getGalleryPermittedExtensions() {
+ return galleryPermittedExtensions;
+ }
- public int getImgCropsize() {
- return imgCropsize;
- }
+ public ArrayList<ToolSimpleDTO> getGroupTools() {
+ return groupTools;
+ }
- public int getImgIconsize() {
- return imgIconsize;
- }
+ public HashMap<String, GSpaceTheme> getgSpaceThemes() {
+ return gSpaceThemes;
+ }
- public int getImgResizewidth() {
- return imgResizewidth;
- }
+ public int getImgCropsize() {
+ return imgCropsize;
+ }
- public int getImgThumbsize() {
- return imgThumbsize;
- }
+ public int getImgIconsize() {
+ return imgIconsize;
+ }
- public ArrayList<I18nLanguageSimpleDTO> getLanguages() {
- return languages;
- }
+ public int getImgResizewidth() {
+ return imgResizewidth;
+ }
- public ArrayList<LicenseDTO> getLicenses() {
- return licenses;
- }
+ public int getImgThumbsize() {
+ return imgThumbsize;
+ }
- public String getMaxFileSizeInMb() {
- return maxFileSizeInMb;
- }
+ public ArrayList<I18nLanguageSimpleDTO> getLanguages() {
+ return languages;
+ }
- public String getMp3EmbedObject() {
- return mp3EmbedObject;
- }
+ public ArrayList<LicenseDTO> getLicenses() {
+ return licenses;
+ }
- public String getOggEmbedObject() {
- return oggEmbedObject;
- }
+ public String getMaxFileSizeInMb() {
+ return maxFileSizeInMb;
+ }
- @Deprecated
- public String getSiteDomain() {
- return siteDomain;
- }
+ public String getMp3EmbedObject() {
+ return mp3EmbedObject;
+ }
- public String getSiteLogoUrl() {
- return siteLogoUrl;
- }
+ public String getOggEmbedObject() {
+ return oggEmbedObject;
+ }
- public String getSiteUrl() {
- return siteUrl;
- }
+ @Deprecated
+ public String getSiteDomain() {
+ return siteDomain;
+ }
- public String[] getTimezones() {
- return timezones;
- }
+ public String getSiteLogoUrl() {
+ return siteLogoUrl;
+ }
- public UserInfoDTO getUserInfo() {
- return userInfo;
- }
+ public String getSiteUrl() {
+ return siteUrl;
+ }
- public ArrayList<ToolSimpleDTO> getUserTools() {
- return userTools;
- }
+ public String[] getTimezones() {
+ return timezones;
+ }
- public String[] getWsThemes() {
- return wsThemes;
- }
+ public UserInfoDTO getUserInfo() {
+ return userInfo;
+ }
- public boolean hasUser() {
- return getUserInfo() != null;
- }
+ public ArrayList<ToolSimpleDTO> getUserTools() {
+ return userTools;
+ }
- public void setAviEmbedObject(final String aviEmbedObject) {
- this.aviEmbedObject = aviEmbedObject;
- }
+ public boolean hasUser() {
+ return getUserInfo() != null;
+ }
- public void setChatDomain(final String chatDomain) {
- this.chatDomain = chatDomain;
- }
+ public void setAviEmbedObject(final String aviEmbedObject) {
+ this.aviEmbedObject = aviEmbedObject;
+ }
- public void setChatHttpBase(final String chatHttpBase) {
- this.chatHttpBase = chatHttpBase;
- }
+ public void setChatDomain(final String chatDomain) {
+ this.chatDomain = chatDomain;
+ }
- public void setChatRoomHost(final String chatRoomHost) {
- this.chatRoomHost = chatRoomHost;
- }
+ public void setChatHttpBase(final String chatHttpBase) {
+ this.chatHttpBase = chatHttpBase;
+ }
- public void setCountries(final ArrayList<I18nCountryDTO> countries) {
- this.countries = countries;
- }
+ public void setChatRoomHost(final String chatRoomHost) {
+ this.chatRoomHost = chatRoomHost;
+ }
- public void setCurrentCCversion(final String currentCCversion) {
- this.currentCCversion = currentCCversion;
- }
+ public void setCountries(final ArrayList<I18nCountryDTO> countries) {
+ this.countries = countries;
+ }
- public void setDefaultLicense(final LicenseDTO defaultLicense) {
- this.defaultLicense = defaultLicense;
- }
+ public void setCurrentCCversion(final String currentCCversion) {
+ this.currentCCversion = currentCCversion;
+ }
- public void setDefaultWsTheme(final String defaultWsTheme) {
- this.defaultWsTheme = defaultWsTheme;
- }
+ public void setDefaultLicense(final LicenseDTO defaultLicense) {
+ this.defaultLicense = defaultLicense;
+ }
- public void setExtMediaDescrips(final List<ExtMediaDescripDTO> extMediaDescrips) {
- this.extMediaDescrips = extMediaDescrips;
- }
+ public void setDefaultWsTheme(final String defaultWsTheme) {
+ this.defaultWsTheme = defaultWsTheme;
+ }
- public void setFlvEmbedObject(final String flvEmbedObject) {
- this.flvEmbedObject = flvEmbedObject;
- }
+ public void setExtMediaDescrips(final List<ExtMediaDescripDTO> extMediaDescrips) {
+ this.extMediaDescrips = extMediaDescrips;
+ }
- public void setGalleryPermittedExtensions(final String galleryPermittedExtensions) {
- this.galleryPermittedExtensions = galleryPermittedExtensions;
- }
+ public void setFlvEmbedObject(final String flvEmbedObject) {
+ this.flvEmbedObject = flvEmbedObject;
+ }
- public void setGroupTools(final ArrayList<ToolSimpleDTO> groupTools) {
- this.groupTools = groupTools;
- }
+ public void setGalleryPermittedExtensions(final String galleryPermittedExtensions) {
+ this.galleryPermittedExtensions = galleryPermittedExtensions;
+ }
- public void setImgCropsize(final int imgCropsize) {
- this.imgCropsize = imgCropsize;
- }
+ public void setGroupTools(final ArrayList<ToolSimpleDTO> groupTools) {
+ this.groupTools = groupTools;
+ }
- public void setImgIconsize(final int imgIconsize) {
- this.imgIconsize = imgIconsize;
- }
+ public void setgSpaceThemes(final HashMap<String, GSpaceTheme> gSpaceThemes) {
+ this.gSpaceThemes = gSpaceThemes;
+ }
- public void setImgResizewidth(final int imgResizewidth) {
- this.imgResizewidth = imgResizewidth;
- }
+ public void setImgCropsize(final int imgCropsize) {
+ this.imgCropsize = imgCropsize;
+ }
- public void setImgThumbsize(final int imgThumbsize) {
- this.imgThumbsize = imgThumbsize;
- }
+ public void setImgIconsize(final int imgIconsize) {
+ this.imgIconsize = imgIconsize;
+ }
- public void setLanguages(final ArrayList<I18nLanguageSimpleDTO> languages) {
- this.languages = languages;
- }
+ public void setImgResizewidth(final int imgResizewidth) {
+ this.imgResizewidth = imgResizewidth;
+ }
- public void setLicenses(final ArrayList<LicenseDTO> licenses) {
- this.licenses = licenses;
- }
+ public void setImgThumbsize(final int imgThumbsize) {
+ this.imgThumbsize = imgThumbsize;
+ }
- public void setMaxFileSizeInMb(final String maxFileSizeInMb) {
- this.maxFileSizeInMb = maxFileSizeInMb;
- }
+ public void setLanguages(final ArrayList<I18nLanguageSimpleDTO> languages) {
+ this.languages = languages;
+ }
- public void setMp3EmbedObject(final String mp3EmbedObject) {
- this.mp3EmbedObject = mp3EmbedObject;
- }
+ public void setLicenses(final ArrayList<LicenseDTO> licenses) {
+ this.licenses = licenses;
+ }
- public void setOggEmbedObject(final String oggEmbedObject) {
- this.oggEmbedObject = oggEmbedObject;
- }
+ public void setMaxFileSizeInMb(final String maxFileSizeInMb) {
+ this.maxFileSizeInMb = maxFileSizeInMb;
+ }
- @Deprecated
- public void setSiteDomain(final String siteDomain) {
- this.siteDomain = siteDomain;
- }
+ public void setMp3EmbedObject(final String mp3EmbedObject) {
+ this.mp3EmbedObject = mp3EmbedObject;
+ }
- public void setSiteLogoUrl(final String siteLogoUrl) {
- this.siteLogoUrl = siteLogoUrl;
- }
+ public void setOggEmbedObject(final String oggEmbedObject) {
+ this.oggEmbedObject = oggEmbedObject;
+ }
- public void setSiteUrl(final String siteUrl) {
- this.siteUrl = siteUrl;
- }
+ @Deprecated
+ public void setSiteDomain(final String siteDomain) {
+ this.siteDomain = siteDomain;
+ }
- public void setTimezones(final String[] timezones) {
- this.timezones = timezones;
- }
+ public void setSiteLogoUrl(final String siteLogoUrl) {
+ this.siteLogoUrl = siteLogoUrl;
+ }
- public void setUserInfo(final UserInfoDTO currentUser) {
- this.userInfo = currentUser;
- }
+ public void setSiteUrl(final String siteUrl) {
+ this.siteUrl = siteUrl;
+ }
- public void setUserTools(final ArrayList<ToolSimpleDTO> userTools) {
- this.userTools = userTools;
- }
+ public void setTimezones(final String[] timezones) {
+ this.timezones = timezones;
+ }
- public void setWsThemes(final String[] wsThemes) {
- this.wsThemes = wsThemes;
- }
+ public void setUserInfo(final UserInfoDTO currentUser) {
+ this.userInfo = currentUser;
+ }
+ public void setUserTools(final ArrayList<ToolSimpleDTO> userTools) {
+ this.userTools = userTools;
+ }
+
}
Modified: trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorEntryPoint.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorEntryPoint.java 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorEntryPoint.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -19,7 +19,7 @@
*/
package cc.kune.gspace.client;
-import cc.kune.gspace.client.resources.WsArmorResources;
+import cc.kune.gspace.client.resources.GSpaceArmorResources;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
@@ -30,7 +30,7 @@
public class GSpaceArmorEntryPoint implements EntryPoint {
@Override
public void onModuleLoad() {
- final WsArmorResources resources = GWT.create(WsArmorResources.class);
+ final GSpaceArmorResources resources = GWT.create(GSpaceArmorResources.class);
resources.style().ensureInjected();
final RootLayoutPanel rootPanel = RootLayoutPanel.get();
Modified: trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.ui.xml
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.ui.xml 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.ui.xml 2011-06-16 16:47:28 UTC (rev 1407)
@@ -3,7 +3,7 @@
xmlns:co="urn:import:cc.kune.core.client" xmlns:kp="urn:import:cc.kune.pspace.client"
xmlns:g="urn:import:com.google.gwt.user.client.ui">
<ui:with field='res'
- type='cc.kune.gspace.client.resources.WsArmorResources' />
+ type='cc.kune.gspace.client.resources.GSpaceArmorResources' />
<ui:style>
.frame {
border: 0px;
Modified: trunk/src/main/java/cc/kune/gspace/client/GSpaceGinModule.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/GSpaceGinModule.java 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/main/java/cc/kune/gspace/client/GSpaceGinModule.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -63,14 +63,14 @@
import cc.kune.gspace.client.options.logo.UserOptionsLogoPanel;
import cc.kune.gspace.client.options.logo.UserOptionsLogoPresenter;
import cc.kune.gspace.client.options.logo.UserOptionsLogoView;
-import cc.kune.gspace.client.options.pscape.GroupOptionsPublicSpaceConf;
-import cc.kune.gspace.client.options.pscape.GroupOptionsPublicSpaceConfPanel;
-import cc.kune.gspace.client.options.pscape.GroupOptionsPublicSpaceConfPresenter;
-import cc.kune.gspace.client.options.pscape.GroupOptionsPublicSpaceConfView;
-import cc.kune.gspace.client.options.pscape.UserOptionsPublicSpaceConf;
-import cc.kune.gspace.client.options.pscape.UserOptionsPublicSpaceConfPanel;
-import cc.kune.gspace.client.options.pscape.UserOptionsPublicSpaceConfPresenter;
-import cc.kune.gspace.client.options.pscape.UserOptionsPublicSpaceConfView;
+import cc.kune.gspace.client.options.style.GroupOptionsStyleConf;
+import cc.kune.gspace.client.options.style.GroupOptionsStyleConfPanel;
+import cc.kune.gspace.client.options.style.GroupOptionsStyleConfPresenter;
+import cc.kune.gspace.client.options.style.GroupOptionsStyleConfView;
+import cc.kune.gspace.client.options.style.UserOptionsStyleConf;
+import cc.kune.gspace.client.options.style.UserOptionsStyleConfPanel;
+import cc.kune.gspace.client.options.style.UserOptionsStyleConfPresenter;
+import cc.kune.gspace.client.options.style.UserOptionsStyleConfView;
import cc.kune.gspace.client.options.tools.GroupOptionsToolsConf;
import cc.kune.gspace.client.options.tools.GroupOptionsToolsConfPanel;
import cc.kune.gspace.client.options.tools.GroupOptionsToolsConfPresenter;
@@ -83,6 +83,8 @@
import cc.kune.gspace.client.style.GSpaceBackManagerImpl;
import cc.kune.gspace.client.tags.TagsSummaryPanel;
import cc.kune.gspace.client.tags.TagsSummaryPresenter;
+import cc.kune.gspace.client.themes.GSpaceThemeSelectorPanel;
+import cc.kune.gspace.client.themes.GSpaceThemeSelectorPresenter;
import cc.kune.gspace.client.tool.selector.ToolSelector;
import cc.kune.gspace.client.tool.selector.ToolSelectorPanel;
import cc.kune.gspace.client.tool.selector.ToolSelectorPresenter;
@@ -134,8 +136,8 @@
s(GroupOptionsDefLicense.class, GroupOptionsDefLicensePresenter.class);
s(GroupOptionsDefLicenseView.class, GroupOptionsDefLicensePanel.class);
- s(GroupOptionsPublicSpaceConf.class, GroupOptionsPublicSpaceConfPresenter.class);
- s(GroupOptionsPublicSpaceConfView.class, GroupOptionsPublicSpaceConfPanel.class);
+ s(GroupOptionsStyleConf.class, GroupOptionsStyleConfPresenter.class);
+ s(GroupOptionsStyleConfView.class, GroupOptionsStyleConfPanel.class);
s(GroupOptionsLogo.class, GroupOptionsLogoPresenter.class);
s(GroupOptionsLogoView.class, GroupOptionsLogoPanel.class);
s(GroupOptionsToolsConf.class, GroupOptionsToolsConfPresenter.class);
@@ -143,14 +145,16 @@
s(UserOptionsDefLicense.class, UserOptionsDefLicensePresenter.class);
s(UserOptionsDefLicenseView.class, UserOptionsDefLicensePanel.class);
- s(UserOptionsPublicSpaceConf.class, UserOptionsPublicSpaceConfPresenter.class);
- s(UserOptionsPublicSpaceConfView.class, UserOptionsPublicSpaceConfPanel.class);
+ s(UserOptionsStyleConf.class, UserOptionsStyleConfPresenter.class);
+ s(UserOptionsStyleConfView.class, UserOptionsStyleConfPanel.class);
s(UserOptionsLogo.class, UserOptionsLogoPresenter.class);
s(UserOptionsLogoView.class, UserOptionsLogoPanel.class);
s(UserOptionsToolsConf.class, UserOptionsToolsConfPresenter.class);
s(UserOptionsToolsConfView.class, UserOptionsToolsConfPanel.class);
s(GSpaceBackManager.class, GSpaceBackManagerImpl.class);
+ s(GSpaceThemeSelectorPresenter.class);
+ s(GSpaceThemeSelectorPanel.class);
// Actions
s(ContentViewerOptionsMenu.class);
Modified: trunk/src/main/java/cc/kune/gspace/client/GSpaceParts.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/GSpaceParts.java 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/main/java/cc/kune/gspace/client/GSpaceParts.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -31,11 +31,12 @@
import cc.kune.gspace.client.options.license.UserOptionsDefLicense;
import cc.kune.gspace.client.options.logo.GroupOptionsLogo;
import cc.kune.gspace.client.options.logo.UserOptionsLogo;
-import cc.kune.gspace.client.options.pscape.GroupOptionsPublicSpaceConf;
-import cc.kune.gspace.client.options.pscape.UserOptionsPublicSpaceConf;
+import cc.kune.gspace.client.options.style.GroupOptionsStyleConf;
+import cc.kune.gspace.client.options.style.UserOptionsStyleConf;
import cc.kune.gspace.client.options.tools.GroupOptionsToolsConf;
import cc.kune.gspace.client.options.tools.UserOptionsToolsConf;
import cc.kune.gspace.client.tags.TagsSummaryPresenter;
+import cc.kune.gspace.client.themes.GSpaceThemeManager;
import cc.kune.gspace.client.tool.selector.ToolSelector;
import cc.kune.gspace.client.ui.footer.license.EntityLicensePresenter;
import cc.kune.gspace.client.viewers.ContentViewerPresenter;
@@ -48,15 +49,16 @@
public class GSpaceParts {
@Inject
- public GSpaceParts(final Session session, final Provider<EntityLicensePresenter> licenseFooter,
+ public GSpaceParts(final Session session, final GSpaceThemeManager themeManager,
+ final Provider<EntityLicensePresenter> licenseFooter,
final Provider<TagsSummaryPresenter> tagsPresenter, final Provider<ToolSelector> toolSelector,
final Provider<NoHomePageViewer> noHome, final Provider<ContentViewerPresenter> docsViewer,
final Provider<FolderViewerPresenter> folderViewer, final Provider<GroupOptions> go,
final Provider<UserOptions> uo, final Provider<GroupOptionsCollection> goc,
final Provider<UserOptionsCollection> uoc, final Provider<GroupOptionsDefLicense> gdl,
- final Provider<GroupOptionsPublicSpaceConf> gps, final Provider<GroupOptionsLogo> gl,
+ final Provider<GroupOptionsStyleConf> gps, final Provider<GroupOptionsLogo> gl,
final Provider<GroupOptionsToolsConf> gtc, final Provider<UserOptionsDefLicense> udl,
- final Provider<UserOptionsPublicSpaceConf> ups, final Provider<UserOptionsLogo> ul,
+ final Provider<UserOptionsStyleConf> ups, final Provider<UserOptionsLogo> ul,
final Provider<UserOptionsToolsConf> utc, final Provider<SitebarSearchPresenter> siteSearch) {
session.onAppStart(true, new AppStartHandler() {
Copied: trunk/src/main/java/cc/kune/gspace/client/options/style (from rev 1399, trunk/src/main/java/cc/kune/gspace/client/options/pscape)
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsPublicSpaceConf.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/pscape/EntityOptionsPublicSpaceConf.java 2011-06-09 12:25:38 UTC (rev 1399)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsPublicSpaceConf.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -1,24 +0,0 @@
-/*
- *
- * 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.gspace.client.options.pscape;
-
-
-public interface EntityOptionsPublicSpaceConf {
-}
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsPublicSpaceConfPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/pscape/EntityOptionsPublicSpaceConfPanel.java 2011-06-09 12:25:38 UTC (rev 1399)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsPublicSpaceConfPanel.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -1,134 +0,0 @@
-/*
- *
- * 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.gspace.client.options.pscape;
-
-import cc.kune.common.client.notify.NotifyUser;
-import cc.kune.common.client.tooltip.Tooltip;
-import cc.kune.common.client.ui.BasicThumb;
-import cc.kune.common.client.ui.IconLabel;
-import cc.kune.common.client.utils.TextUtils;
-import cc.kune.core.client.resources.CoreResources;
-import cc.kune.core.client.services.FileDownloadUtils;
-import cc.kune.core.client.services.ImageSize;
-import cc.kune.core.shared.domain.utils.StateToken;
-import cc.kune.core.shared.i18n.I18nTranslationService;
-import cc.kune.gspace.client.options.EntityOptionsView;
-
-import com.google.gwt.event.dom.client.ClickEvent;
-import com.google.gwt.event.dom.client.ClickHandler;
-import com.google.gwt.event.dom.client.HasClickHandlers;
-import com.google.gwt.user.client.ui.Button;
-import com.google.gwt.user.client.ui.FlowPanel;
-import com.google.gwt.user.client.ui.HorizontalPanel;
-import com.google.gwt.user.client.ui.Image;
-import com.google.gwt.user.client.ui.IsWidget;
-import com.google.gwt.user.client.ui.Label;
-import com.google.gwt.user.client.ui.VerticalPanel;
-
-public class EntityOptionsPublicSpaceConfPanel extends FlowPanel implements
- EntityOptionsPublicSpaceConfView {
-
- private final Image backImage;
- private final Button clearBtn;
- private final Label currentBackLabel;
- private final FileDownloadUtils downUtils;
- private final Label noBackLabel;
- private final IconLabel tabTitle;
-
- public EntityOptionsPublicSpaceConfPanel(final I18nTranslationService i18n,
- final FileDownloadUtils downUtils, final CoreResources res) {
- this.downUtils = downUtils;
- tabTitle = new IconLabel(res.themeChoose(), i18n.t("Style"));
- super.setHeight(String.valueOf(EntityOptionsView.HEIGHT) + "px");
- super.setWidth(String.valueOf(EntityOptionsView.WIDTH) + "px");
-
- final HorizontalPanel wsHP = new HorizontalPanel();
- final Label wsThemeInfo = new Label(i18n.t("Change this workspace theme:"));
- wsThemeInfo.addStyleName("kune-Margin-20-tb");
- // final Widget toolbarWsChange = (Widget) wsSelector.getView();
- // toolbarWsChange.addStyleName("kune-Margin-Medium-l");
- wsHP.add(wsThemeInfo);
- // wsHP.add(toolbarWsChange);
- add(wsHP);
- final VerticalPanel backPanel = new VerticalPanel();
- currentBackLabel = new Label(i18n.t("Current background image: "));
- noBackLabel = new Label(i18n.t("Also you can upload any image and select it later as background."));
- backImage = new Image();
- backImage.addStyleName("kune-Margin-Medium-trbl");
- noBackLabel.addStyleName("kune-Margin-Medium-tb");
- clearBtn = new Button(i18n.t("Clear"));
- Tooltip.to(clearBtn, i18n.t("Remove current background image"));
- backPanel.add(noBackLabel);
- backPanel.add(currentBackLabel);
- backPanel.add(backImage);
- backPanel.add(clearBtn);
- add(backPanel);
- final Label wsInfo = new Label(i18n.t("Select and configure the public space theme of this group:"));
- wsInfo.addStyleName("kune-Margin-Medium-tb");
- add(wsInfo);
-
- final VerticalPanel stylesPanel = new VerticalPanel();
- final ClickHandler clickHandler = new ClickHandler() {
-
- @Override
- public void onClick(final ClickEvent event) {
- NotifyUser.info(TextUtils.IN_DEVELOPMENT);
- }
- };
- for (int i = 1; i <= 6; i++) {
- final BasicThumb thumb = new BasicThumb("images/styles/styl" + i + ".png", "Style " + i,
- clickHandler);
- thumb.setTooltip(i18n.t("Click to select and configure this theme"));
- add(thumb);
- }
- add(stylesPanel);
- setBackImageVisibleImpl(false);
- super.addStyleName("k-overflow-y-auto");
- super.addStyleName("k-tab-panel");
- }
-
- @Override
- public void clearBackImage() {
- setBackImageVisibleImpl(false);
- }
-
- @Override
- public HasClickHandlers getClearBtn() {
- return clearBtn;
- }
-
- @Override
- public IsWidget getTabTitle() {
- return tabTitle;
- }
-
- @Override
- public void setBackImage(final StateToken token) {
- backImage.setUrl(downUtils.getImageResizedUrl(token, ImageSize.thumb));
- setBackImageVisibleImpl(true);
- }
-
- private void setBackImageVisibleImpl(final boolean visible) {
- backImage.setVisible(visible);
- currentBackLabel.setVisible(visible);
- clearBtn.setVisible(visible);
- noBackLabel.setVisible(!visible);
- }
-}
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsPublicSpaceConfPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/pscape/EntityOptionsPublicSpaceConfPresenter.java 2011-06-09 12:25:38 UTC (rev 1399)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsPublicSpaceConfPresenter.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -1,116 +0,0 @@
-/*
- *
- * 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.gspace.client.options.pscape;
-
-import cc.kune.core.client.rpcservices.AsyncCallbackSimple;
-import cc.kune.core.client.rpcservices.GroupServiceAsync;
-import cc.kune.core.client.state.Session;
-import cc.kune.core.client.state.StateChangedEvent;
-import cc.kune.core.client.state.StateChangedEvent.StateChangedHandler;
-import cc.kune.core.client.state.StateManager;
-import cc.kune.core.shared.dto.ContentSimpleDTO;
-import cc.kune.core.shared.dto.GroupDTO;
-import cc.kune.core.shared.dto.StateAbstractDTO;
-import cc.kune.gspace.client.options.EntityOptions;
-import cc.kune.gspace.client.style.ClearBackImageEvent;
-import cc.kune.gspace.client.style.GSpaceBackManager;
-import cc.kune.gspace.client.style.SetBackImageEvent;
-
-import com.google.gwt.event.dom.client.ClickEvent;
-import com.google.gwt.event.dom.client.ClickHandler;
-import com.google.gwt.event.shared.EventBus;
-import com.google.gwt.user.client.ui.IsWidget;
-import com.google.inject.Provider;
-
-public abstract class EntityOptionsPublicSpaceConfPresenter implements EntityOptionsPublicSpaceConf {
- private final GSpaceBackManager backManager;
- private final EntityOptions entityOptions;
- private final EventBus eventBus;
- private final Provider<GroupServiceAsync> groupService;
- private final Session session;
- private final StateManager stateManager;
- private EntityOptionsPublicSpaceConfView view;
-
- protected EntityOptionsPublicSpaceConfPresenter(final EventBus eventBus, final Session session,
- final StateManager stateManager, final EntityOptions entityOptions,
- final Provider<GroupServiceAsync> groupService, final GSpaceBackManager backManager) {
- this.eventBus = eventBus;
- this.session = session;
- this.stateManager = stateManager;
- this.entityOptions = entityOptions;
- this.groupService = groupService;
- this.backManager = backManager;
- }
-
- public void clearBackImage() {
- groupService.get().clearGroupBackImage(session.getUserHash(), session.getCurrentStateToken(),
- new AsyncCallbackSimple<GroupDTO>() {
- @Override
- public void onSuccess(final GroupDTO result) {
- view.clearBackImage();
- backManager.clearBackImage();
- }
- });
- }
-
- public IsWidget getView() {
- return view;
- }
-
- public void init(final EntityOptionsPublicSpaceConfView view) {
- this.view = view;
- entityOptions.addTab(view, view.getTabTitle());
- setBackImage(session.getCurrentState().getGroup().getGroupBackImage());
- view.getClearBtn().addClickHandler(new ClickHandler() {
- @Override
- public void onClick(final ClickEvent event) {
- clearBackImage();
- }
- });
- stateManager.onStateChanged(true, new StateChangedHandler() {
- @Override
- public void onStateChanged(final StateChangedEvent event) {
- final StateAbstractDTO state = event.getState();
- final ContentSimpleDTO backImage = state.getGroup().getGroupBackImage();
- setBackImage(backImage);
- }
- });
- eventBus.addHandler(SetBackImageEvent.getType(), new SetBackImageEvent.SetBackImageHandler() {
- @Override
- public void onSetBackImage(final SetBackImageEvent event) {
- view.setBackImage(event.getToken());
- }
- });
- eventBus.addHandler(ClearBackImageEvent.getType(), new ClearBackImageEvent.ClearBackImageHandler() {
- @Override
- public void onClearBackImage(final ClearBackImageEvent event) {
- view.clearBackImage();
- }
- });
- }
-
- private void setBackImage(final ContentSimpleDTO backImage) {
- if (backImage == null) {
- view.clearBackImage();
- } else {
- view.setBackImage(backImage.getStateToken());
- }
- }
-}
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsPublicSpaceConfView.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/pscape/EntityOptionsPublicSpaceConfView.java 2011-06-09 12:25:38 UTC (rev 1399)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsPublicSpaceConfView.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -1,35 +0,0 @@
-/*
- *
- * 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.gspace.client.options.pscape;
-
-import cc.kune.core.shared.domain.utils.StateToken;
-import cc.kune.gspace.client.options.EntityOptionsTabView;
-
-import com.google.gwt.event.dom.client.HasClickHandlers;
-
-public interface EntityOptionsPublicSpaceConfView extends EntityOptionsTabView {
-
- public void clearBackImage();
-
- HasClickHandlers getClearBtn();
-
- public void setBackImage(final StateToken token);
-
-}
Added: trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConf.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConf.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConf.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -0,0 +1,24 @@
+/*
+ *
+ * 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.gspace.client.options.style;
+
+
+public interface EntityOptionsStyleConf {
+}
Added: trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConfPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConfPanel.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConfPanel.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -0,0 +1,135 @@
+/*
+ *
+ * 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.gspace.client.options.style;
+
+import cc.kune.common.client.notify.NotifyUser;
+import cc.kune.common.client.tooltip.Tooltip;
+import cc.kune.common.client.ui.BasicThumb;
+import cc.kune.common.client.ui.IconLabel;
+import cc.kune.common.client.utils.TextUtils;
+import cc.kune.core.client.resources.CoreResources;
+import cc.kune.core.client.services.FileDownloadUtils;
+import cc.kune.core.client.services.ImageSize;
+import cc.kune.core.shared.domain.utils.StateToken;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+import cc.kune.gspace.client.options.EntityOptionsView;
+import cc.kune.gspace.client.themes.GSpaceThemeSelectorPanel;
+
+import com.google.gwt.event.dom.client.ClickEvent;
+import com.google.gwt.event.dom.client.ClickHandler;
+import com.google.gwt.event.dom.client.HasClickHandlers;
+import com.google.gwt.user.client.ui.Button;
+import com.google.gwt.user.client.ui.FlowPanel;
+import com.google.gwt.user.client.ui.HorizontalPanel;
+import com.google.gwt.user.client.ui.Image;
+import com.google.gwt.user.client.ui.IsWidget;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.VerticalPanel;
+
+public class EntityOptionsStyleConfPanel extends FlowPanel implements EntityOptionsStyleConfView {
+
+ private final Image backImage;
+ private final Button clearBtn;
+ private final Label currentBackLabel;
+ private final FileDownloadUtils downUtils;
+ private final Label noBackLabel;
+ private final IconLabel tabTitle;
+
+ public EntityOptionsStyleConfPanel(final I18nTranslationService i18n,
+ final FileDownloadUtils downUtils, final CoreResources res,
+ final GSpaceThemeSelectorPanel styleSelector) {
+ this.downUtils = downUtils;
+ tabTitle = new IconLabel(res.themeChoose(), i18n.t("Style"));
+ super.setHeight(String.valueOf(EntityOptionsView.HEIGHT) + "px");
+ super.setWidth(String.valueOf(EntityOptionsView.WIDTH) + "px");
+
+ final HorizontalPanel wsHP = new HorizontalPanel();
+ final Label wsThemeInfo = new Label(i18n.t("Change this workspace theme:"));
+ wsThemeInfo.addStyleName("kune-Margin-20-tb");
+ // final Widget toolbarWsChange = (Widget) wsSelector.getView();
+ // toolbarWsChange.addStyleName("kune-Margin-Medium-l");
+ wsHP.add(wsThemeInfo);
+ wsHP.add(styleSelector);
+ add(wsHP);
+ final VerticalPanel backPanel = new VerticalPanel();
+ currentBackLabel = new Label(i18n.t("Current background image: "));
+ noBackLabel = new Label(i18n.t("Also you can upload any image and select it later as background."));
+ backImage = new Image();
+ backImage.addStyleName("kune-Margin-Medium-trbl");
+ noBackLabel.addStyleName("kune-Margin-Medium-tb");
+ clearBtn = new Button(i18n.t("Clear"));
+ Tooltip.to(clearBtn, i18n.t("Remove current background image"));
+ // backPanel.add(noBackLabel);
+ backPanel.add(currentBackLabel);
+ backPanel.add(backImage);
+ backPanel.add(clearBtn);
+ add(backPanel);
+ final Label wsInfo = new Label(i18n.t("Select and configure the public space theme of this group:"));
+ wsInfo.addStyleName("kune-Margin-Medium-tb");
+ add(wsInfo);
+
+ final VerticalPanel stylesPanel = new VerticalPanel();
+ final ClickHandler clickHandler = new ClickHandler() {
+
+ @Override
+ public void onClick(final ClickEvent event) {
+ NotifyUser.info(TextUtils.IN_DEVELOPMENT);
+ }
+ };
+ for (int i = 1; i <= 6; i++) {
+ final BasicThumb thumb = new BasicThumb("images/styles/styl" + i + ".png", "Style " + i,
+ clickHandler);
+ thumb.setTooltip(i18n.t("Click to select and configure this theme"));
+ // add(thumb);
+ }
+ add(stylesPanel);
+ setBackImageVisibleImpl(false);
+ super.addStyleName("k-overflow-y-auto");
+ super.addStyleName("k-tab-panel");
+ }
+
+ @Override
+ public void clearBackImage() {
+ setBackImageVisibleImpl(false);
+ }
+
+ @Override
+ public HasClickHandlers getClearBtn() {
+ return clearBtn;
+ }
+
+ @Override
+ public IsWidget getTabTitle() {
+ return tabTitle;
+ }
+
+ @Override
+ public void setBackImage(final StateToken token) {
+ backImage.setUrl(downUtils.getImageResizedUrl(token, ImageSize.thumb));
+ setBackImageVisibleImpl(true);
+ }
+
+ private void setBackImageVisibleImpl(final boolean visible) {
+ backImage.setVisible(visible);
+ currentBackLabel.setVisible(visible);
+ clearBtn.setVisible(visible);
+ noBackLabel.setVisible(!visible);
+ }
+}
Added: trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConfPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConfPresenter.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConfPresenter.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -0,0 +1,118 @@
+/*
+ *
+ * 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.gspace.client.options.style;
+
+import cc.kune.core.client.rpcservices.AsyncCallbackSimple;
+import cc.kune.core.client.rpcservices.GroupServiceAsync;
+import cc.kune.core.client.state.Session;
+import cc.kune.core.client.state.StateChangedEvent;
+import cc.kune.core.client.state.StateChangedEvent.StateChangedHandler;
+import cc.kune.core.client.state.StateManager;
+import cc.kune.core.shared.dto.ContentSimpleDTO;
+import cc.kune.core.shared.dto.GroupDTO;
+import cc.kune.core.shared.dto.StateAbstractDTO;
+import cc.kune.gspace.client.options.EntityOptions;
+import cc.kune.gspace.client.style.ClearBackImageEvent;
+import cc.kune.gspace.client.style.GSpaceBackManager;
+import cc.kune.gspace.client.style.SetBackImageEvent;
+import cc.kune.gspace.client.themes.GSpaceThemeSelectorPresenter;
+
+import com.google.gwt.event.dom.client.ClickEvent;
+import com.google.gwt.event.dom.client.ClickHandler;
+import com.google.gwt.event.shared.EventBus;
+import com.google.gwt.user.client.ui.IsWidget;
+import com.google.inject.Provider;
+
+public abstract class EntityOptionsStyleConfPresenter implements EntityOptionsStyleConf {
+ private final GSpaceBackManager backManager;
+ private final EntityOptions entityOptions;
+ private final EventBus eventBus;
+ private final Provider<GroupServiceAsync> groupService;
+ private final Session session;
+ private final StateManager stateManager;
+ private EntityOptionsStyleConfView view;
+
+ protected EntityOptionsStyleConfPresenter(final EventBus eventBus, final Session session,
+ final StateManager stateManager, final EntityOptions entityOptions,
+ final Provider<GroupServiceAsync> groupService, final GSpaceBackManager backManager,
+ final GSpaceThemeSelectorPresenter styleSelector) {
+ this.eventBus = eventBus;
+ this.session = session;
+ this.stateManager = stateManager;
+ this.entityOptions = entityOptions;
+ this.groupService = groupService;
+ this.backManager = backManager;
+ }
+
+ public void clearBackImage() {
+ groupService.get().clearGroupBackImage(session.getUserHash(), session.getCurrentStateToken(),
+ new AsyncCallbackSimple<GroupDTO>() {
+ @Override
+ public void onSuccess(final GroupDTO result) {
+ view.clearBackImage();
+ backManager.clearBackImage();
+ }
+ });
+ }
+
+ public IsWidget getView() {
+ return view;
+ }
+
+ public void init(final EntityOptionsStyleConfView view) {
+ this.view = view;
+ entityOptions.addTab(view, view.getTabTitle());
+ setBackImage(session.getCurrentState().getGroup().getGroupBackImage());
+ view.getClearBtn().addClickHandler(new ClickHandler() {
+ @Override
+ public void onClick(final ClickEvent event) {
+ clearBackImage();
+ }
+ });
+ stateManager.onStateChanged(true, new StateChangedHandler() {
+ @Override
+ public void onStateChanged(final StateChangedEvent event) {
+ final StateAbstractDTO state = event.getState();
+ final ContentSimpleDTO backImage = state.getGroup().getGroupBackImage();
+ setBackImage(backImage);
+ }
+ });
+ eventBus.addHandler(SetBackImageEvent.getType(), new SetBackImageEvent.SetBackImageHandler() {
+ @Override
+ public void onSetBackImage(final SetBackImageEvent event) {
+ view.setBackImage(event.getToken());
+ }
+ });
+ eventBus.addHandler(ClearBackImageEvent.getType(), new ClearBackImageEvent.ClearBackImageHandler() {
+ @Override
+ public void onClearBackImage(final ClearBackImageEvent event) {
+ view.clearBackImage();
+ }
+ });
+ }
+
+ private void setBackImage(final ContentSimpleDTO backImage) {
+ if (backImage == null) {
+ view.clearBackImage();
+ } else {
+ view.setBackImage(backImage.getStateToken());
+ }
+ }
+}
Added: trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConfView.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConfView.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/EntityOptionsStyleConfView.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -0,0 +1,35 @@
+/*
+ *
+ * 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.gspace.client.options.style;
+
+import cc.kune.core.shared.domain.utils.StateToken;
+import cc.kune.gspace.client.options.EntityOptionsTabView;
+
+import com.google.gwt.event.dom.client.HasClickHandlers;
+
+public interface EntityOptionsStyleConfView extends EntityOptionsTabView {
+
+ public void clearBackImage();
+
+ HasClickHandlers getClearBtn();
+
+ public void setBackImage(final StateToken token);
+
+}
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsPublicSpaceConf.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/pscape/GroupOptionsPublicSpaceConf.java 2011-06-09 12:25:38 UTC (rev 1399)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsPublicSpaceConf.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -1,24 +0,0 @@
-/*
- *
- * 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.gspace.client.options.pscape;
-
-public interface GroupOptionsPublicSpaceConf extends EntityOptionsPublicSpaceConf {
-
-}
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsPublicSpaceConfPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/pscape/GroupOptionsPublicSpaceConfPanel.java 2011-06-09 12:25:38 UTC (rev 1399)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsPublicSpaceConfPanel.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -1,37 +0,0 @@
-/*
- *
- * 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.gspace.client.options.pscape;
-
-import cc.kune.core.client.resources.CoreResources;
-import cc.kune.core.client.services.FileDownloadUtils;
-import cc.kune.core.shared.i18n.I18nTranslationService;
-
-import com.google.inject.Inject;
-
-public class GroupOptionsPublicSpaceConfPanel extends EntityOptionsPublicSpaceConfPanel implements
- GroupOptionsPublicSpaceConfView {
-
- @Inject
- public GroupOptionsPublicSpaceConfPanel(final I18nTranslationService i18n, final FileDownloadUtils downUtils,
- final CoreResources res) {
- super(i18n, downUtils, res);
- }
-
-}
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsPublicSpaceConfPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/pscape/GroupOptionsPublicSpaceConfPresenter.java 2011-06-09 12:25:38 UTC (rev 1399)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsPublicSpaceConfPresenter.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -1,59 +0,0 @@
-/*
- *
- * 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.gspace.client.options.pscape;
-
-import cc.kune.core.client.rpcservices.GroupServiceAsync;
-import cc.kune.core.client.state.Session;
-import cc.kune.core.client.state.StateChangedEvent;
-import cc.kune.core.client.state.StateChangedEvent.StateChangedHandler;
-import cc.kune.core.client.state.StateManager;
-import cc.kune.gspace.client.options.GroupOptions;
-import cc.kune.gspace.client.style.GSpaceBackManager;
-
-import com.google.gwt.event.shared.EventBus;
-import com.google.inject.Inject;
-import com.google.inject.Provider;
-
-public class GroupOptionsPublicSpaceConfPresenter extends EntityOptionsPublicSpaceConfPresenter implements
- GroupOptionsPublicSpaceConf {
-
- @Inject
- public GroupOptionsPublicSpaceConfPresenter(final EventBus eventBus, final Session session,
- final StateManager stateManager, final GroupOptions entityOptions,
- final Provider<GroupServiceAsync> groupService, final GSpaceBackManager backManager,
- final GroupOptionsPublicSpaceConfView view) {
- super(eventBus, session, stateManager, entityOptions, groupService, backManager);
- // themeSelector.addThemeSelected(new Listener<WsTheme>() {
- // public void onEvent(final WsTheme theme) {
- // themeManager.changeTheme(session.getCurrentStateToken(), theme);
- // }
- // });
- init(view);
- stateManager.onStateChanged(true, new StateChangedHandler() {
-
- @Override
- public void onStateChanged(final StateChangedEvent event) {
- // final String theme = state.getGroup().getWorkspaceTheme();
- // themeSelector.select(theme);
- }
- });
- }
-
-}
\ No newline at end of file
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsPublicSpaceConfView.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/pscape/GroupOptionsPublicSpaceConfView.java 2011-06-09 12:25:38 UTC (rev 1399)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsPublicSpaceConfView.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -1,24 +0,0 @@
-/*
- *
- * 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.gspace.client.options.pscape;
-
-public interface GroupOptionsPublicSpaceConfView extends EntityOptionsPublicSpaceConfView {
-
-}
Added: trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsStyleConf.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsStyleConf.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsStyleConf.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -0,0 +1,24 @@
+/*
+ *
+ * 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.gspace.client.options.style;
+
+public interface GroupOptionsStyleConf extends EntityOptionsStyleConf {
+
+}
Added: trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsStyleConfPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsStyleConfPanel.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsStyleConfPanel.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -0,0 +1,39 @@
+/*
+ *
+ * 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.gspace.client.options.style;
+
+import cc.kune.core.client.resources.CoreResources;
+import cc.kune.core.client.services.FileDownloadUtils;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+import cc.kune.gspace.client.themes.GSpaceThemeSelectorPanel;
+
+import com.google.inject.Inject;
+
+public class GroupOptionsStyleConfPanel extends EntityOptionsStyleConfPanel implements
+ GroupOptionsStyleConfView {
+
+ @Inject
+ public GroupOptionsStyleConfPanel(final I18nTranslationService i18n,
+ final FileDownloadUtils downUtils, final CoreResources res,
+ final GSpaceThemeSelectorPanel styleSelector) {
+ super(i18n, downUtils, res, styleSelector);
+ }
+
+}
Property changes on: trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsStyleConfPanel.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsStyleConfPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsStyleConfPresenter.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsStyleConfPresenter.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -0,0 +1,55 @@
+/*
+ *
+ * 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.gspace.client.options.style;
+
+import cc.kune.core.client.rpcservices.GroupServiceAsync;
+import cc.kune.core.client.state.Session;
+import cc.kune.core.client.state.StateChangedEvent;
+import cc.kune.core.client.state.StateChangedEvent.StateChangedHandler;
+import cc.kune.core.client.state.StateManager;
+import cc.kune.gspace.client.options.GroupOptions;
+import cc.kune.gspace.client.style.GSpaceBackManager;
+import cc.kune.gspace.client.themes.GSpaceThemeSelectorPresenter;
+
+import com.google.gwt.event.shared.EventBus;
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+
+public class GroupOptionsStyleConfPresenter extends EntityOptionsStyleConfPresenter implements
+ GroupOptionsStyleConf {
+
+ @Inject
+ public GroupOptionsStyleConfPresenter(final EventBus eventBus, final Session session,
+ final StateManager stateManager, final GroupOptions entityOptions,
+ final Provider<GroupServiceAsync> groupService, final GSpaceBackManager backManager,
+ final GroupOptionsStyleConfView view, final GSpaceThemeSelectorPresenter styleSelector) {
+ super(eventBus, session, stateManager, entityOptions, groupService, backManager, styleSelector);
+ init(view);
+ stateManager.onStateChanged(true, new StateChangedHandler() {
+
+ @Override
+ public void onStateChanged(final StateChangedEvent event) {
+ // final String theme = state.getGroup().getWorkspaceTheme();
+ // themeSelector.select(theme);
+ }
+ });
+ }
+
+}
\ No newline at end of file
Added: trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsStyleConfView.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsStyleConfView.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsStyleConfView.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -0,0 +1,24 @@
+/*
+ *
+ * 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.gspace.client.options.style;
+
+public interface GroupOptionsStyleConfView extends EntityOptionsStyleConfView {
+
+}
Property changes on: trunk/src/main/java/cc/kune/gspace/client/options/style/GroupOptionsStyleConfView.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsPublicSpaceConf.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/pscape/UserOptionsPublicSpaceConf.java 2011-06-09 12:25:38 UTC (rev 1399)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsPublicSpaceConf.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -1,24 +0,0 @@
-/*
- *
- * 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.gspace.client.options.pscape;
-
-public interface UserOptionsPublicSpaceConf extends EntityOptionsPublicSpaceConf {
-
-}
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsPublicSpaceConfPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/pscape/UserOptionsPublicSpaceConfPanel.java 2011-06-09 12:25:38 UTC (rev 1399)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsPublicSpaceConfPanel.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -1,37 +0,0 @@
-/*
- *
- * 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.gspace.client.options.pscape;
-
-import cc.kune.core.client.resources.CoreResources;
-import cc.kune.core.client.services.FileDownloadUtils;
-import cc.kune.core.shared.i18n.I18nTranslationService;
-
-import com.google.inject.Inject;
-
-public class UserOptionsPublicSpaceConfPanel extends EntityOptionsPublicSpaceConfPanel implements
- UserOptionsPublicSpaceConfView {
-
- @Inject
- public UserOptionsPublicSpaceConfPanel(final I18nTranslationService i18n, final FileDownloadUtils downUtils,
- final CoreResources res) {
- super(i18n, downUtils, res);
- }
-
-}
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsPublicSpaceConfPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/pscape/UserOptionsPublicSpaceConfPresenter.java 2011-06-09 12:25:38 UTC (rev 1399)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsPublicSpaceConfPresenter.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -1,70 +0,0 @@
-/*
- *
- * 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.gspace.client.options.pscape;
-
-import cc.kune.core.client.rpcservices.GroupServiceAsync;
-import cc.kune.core.client.state.Session;
-import cc.kune.core.client.state.StateManager;
-import cc.kune.core.client.state.UserSignInEvent;
-import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler;
-import cc.kune.core.shared.dto.UserInfoDTO;
-import cc.kune.gspace.client.options.UserOptions;
-import cc.kune.gspace.client.style.GSpaceBackManager;
-
-import com.google.gwt.event.shared.EventBus;
-import com.google.inject.Inject;
-import com.google.inject.Provider;
-
-public class UserOptionsPublicSpaceConfPresenter extends EntityOptionsPublicSpaceConfPresenter implements
- UserOptionsPublicSpaceConf {
-
- // private final WsThemeSelector themeSelector;
-
- @Inject
- public UserOptionsPublicSpaceConfPresenter(final EventBus eventBus, final Session session,
- final StateManager stateManager, final UserOptions entityOptions,
- final Provider<GroupServiceAsync> groupService, final GSpaceBackManager backManager,
- final UserOptionsPublicSpaceConfView view) {
- super(eventBus, session, stateManager, entityOptions, groupService, backManager);
- // this.themeSelector = themeSelector;
- // themeSelector.addThemeSelected(new Listener<WsTheme>() {
- // public void onEvent(final WsTheme theme) {
- // themeManager.changeTheme(session.getCurrentUser().getStateToken(),
- // theme);
- // }
- // });
- final UserInfoDTO userInfo = session.getCurrentUserInfo();
- if (userInfo != null) {
- setSelector(userInfo);
- }
- init(view);
- session.onUserSignIn(true, new UserSignInHandler() {
- @Override
- public void onUserSignIn(final UserSignInEvent event) {
- // setSelector(userInfo);
- }
- });
- }
-
- private void setSelector(final UserInfoDTO userInfo) {
- // themeSelector.select(userInfo.getUserGroup().getWorkspaceTheme());
- }
-
-}
Deleted: trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsPublicSpaceConfView.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/pscape/UserOptionsPublicSpaceConfView.java 2011-06-09 12:25:38 UTC (rev 1399)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsPublicSpaceConfView.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -1,24 +0,0 @@
-/*
- *
- * 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.gspace.client.options.pscape;
-
-public interface UserOptionsPublicSpaceConfView extends EntityOptionsPublicSpaceConfView {
-
-}
Added: trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsStyleConf.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsStyleConf.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsStyleConf.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -0,0 +1,24 @@
+/*
+ *
+ * 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.gspace.client.options.style;
+
+public interface UserOptionsStyleConf extends EntityOptionsStyleConf {
+
+}
Added: trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsStyleConfPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsStyleConfPanel.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsStyleConfPanel.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -0,0 +1,38 @@
+/*
+ *
+ * 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.gspace.client.options.style;
+
+import cc.kune.core.client.resources.CoreResources;
+import cc.kune.core.client.services.FileDownloadUtils;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+import cc.kune.gspace.client.themes.GSpaceThemeSelectorPanel;
+
+import com.google.inject.Inject;
+
+public class UserOptionsStyleConfPanel extends EntityOptionsStyleConfPanel implements
+ UserOptionsStyleConfView {
+
+ @Inject
+ public UserOptionsStyleConfPanel(final I18nTranslationService i18n, final FileDownloadUtils downUtils,
+ final CoreResources res, final GSpaceThemeSelectorPanel styleSelector) {
+ super(i18n, downUtils, res, styleSelector);
+ }
+
+}
Property changes on: trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsStyleConfPanel.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsStyleConfPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsStyleConfPresenter.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsStyleConfPresenter.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -0,0 +1,71 @@
+/*
+ *
+ * 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.gspace.client.options.style;
+
+import cc.kune.core.client.rpcservices.GroupServiceAsync;
+import cc.kune.core.client.state.Session;
+import cc.kune.core.client.state.StateManager;
+import cc.kune.core.client.state.UserSignInEvent;
+import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler;
+import cc.kune.core.shared.dto.UserInfoDTO;
+import cc.kune.gspace.client.options.UserOptions;
+import cc.kune.gspace.client.style.GSpaceBackManager;
+import cc.kune.gspace.client.themes.GSpaceThemeSelectorPresenter;
+
+import com.google.gwt.event.shared.EventBus;
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+
+public class UserOptionsStyleConfPresenter extends EntityOptionsStyleConfPresenter implements
+ UserOptionsStyleConf {
+
+ // private final WsThemeSelector themeSelector;
+
+ @Inject
+ public UserOptionsStyleConfPresenter(final EventBus eventBus, final Session session,
+ final StateManager stateManager, final UserOptions entityOptions,
+ final Provider<GroupServiceAsync> groupService, final GSpaceBackManager backManager,
+ final UserOptionsStyleConfView view, final GSpaceThemeSelectorPresenter styleSelector) {
+ super(eventBus, session, stateManager, entityOptions, groupService, backManager, styleSelector);
+ // this.themeSelector = themeSelector;
+ // themeSelector.addThemeSelected(new Listener<WsTheme>() {
+ // public void onEvent(final WsTheme theme) {
+ // themeManager.changeTheme(session.getCurrentUser().getStateToken(),
+ // theme);
+ // }
+ // });
+ final UserInfoDTO userInfo = session.getCurrentUserInfo();
+ if (userInfo != null) {
+ setSelector(userInfo);
+ }
+ init(view);
+ session.onUserSignIn(true, new UserSignInHandler() {
+ @Override
+ public void onUserSignIn(final UserSignInEvent event) {
+ // setSelector(userInfo);
+ }
+ });
+ }
+
+ private void setSelector(final UserInfoDTO userInfo) {
+ // themeSelector.select(userInfo.getUserGroup().getWorkspaceTheme());
+ }
+
+}
Added: trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsStyleConfView.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsStyleConfView.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsStyleConfView.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -0,0 +1,24 @@
+/*
+ *
+ * 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.gspace.client.options.style;
+
+public interface UserOptionsStyleConfView extends EntityOptionsStyleConfView {
+
+}
Property changes on: trunk/src/main/java/cc/kune/gspace/client/options/style/UserOptionsStyleConfView.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Copied: trunk/src/main/java/cc/kune/gspace/client/resources/GSpaceArmorResources.java (from rev 1399, trunk/src/main/java/cc/kune/gspace/client/resources/WsArmorResources.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/resources/GSpaceArmorResources.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/resources/GSpaceArmorResources.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -0,0 +1,90 @@
+/*
+ *
+ * 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.gspace.client.resources;
+
+import com.google.gwt.resources.client.ClientBundle;
+import com.google.gwt.resources.client.CssResource;
+import com.google.gwt.resources.client.ImageResource;
+
+public interface GSpaceArmorResources extends ClientBundle {
+ public interface Style extends CssResource {
+
+ String docEditor();
+
+ String docEditorMargin();
+
+ String docFooter();
+
+ String docHeader();
+
+ String docHeaderArrow();
+
+ String docSubheader();
+
+ String docSubheaderArrow();
+
+ String docSubheaderLeft();
+
+ String entityFooter();
+
+ String entityHeader();
+
+ String entityTools();
+
+ String entityToolsCenter();
+
+ String entityToolsNorth();
+
+ String entityToolsSouth();
+
+ String floatLeft();
+
+ String floatRight();
+
+ String mainPanel();
+
+ String siteBar();
+ }
+
+ @Source("def-theme-doc-arrow-down.png")
+ ImageResource defThemeDocArrowDown();
+
+ @Source("def-theme-tools-arrow-left.png")
+ ImageResource defThemeToolsArrowLeft();
+
+ ImageResource groupSpaceDisabled();
+
+ ImageResource groupSpaceEnabled();
+
+ ImageResource homeSpaceDisabled();
+
+ ImageResource homeSpaceEnabled();
+
+ ImageResource publicSpaceDisabled();
+
+ ImageResource publicSpaceEnabled();
+
+ @Source({ "gSpaceArmor.css", "gSpaceArmorTheme.css" })
+ Style style();
+
+ ImageResource userSpaceDisabled();
+
+ ImageResource userSpaceEnabled();
+}
\ No newline at end of file
Deleted: trunk/src/main/java/cc/kune/gspace/client/resources/WsArmorResources.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/resources/WsArmorResources.java 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/main/java/cc/kune/gspace/client/resources/WsArmorResources.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -1,90 +0,0 @@
-/*
- *
- * 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.gspace.client.resources;
-
-import com.google.gwt.resources.client.ClientBundle;
-import com.google.gwt.resources.client.CssResource;
-import com.google.gwt.resources.client.ImageResource;
-
-public interface WsArmorResources extends ClientBundle {
- public interface Style extends CssResource {
-
- String docEditor();
-
- String docEditorMargin();
-
- String docFooter();
-
- String docHeader();
-
- String docHeaderArrow();
-
- String docSubheader();
-
- String docSubheaderArrow();
-
- String docSubheaderLeft();
-
- String entityFooter();
-
- String entityHeader();
-
- String entityTools();
-
- String entityToolsCenter();
-
- String entityToolsNorth();
-
- String entityToolsSouth();
-
- String floatLeft();
-
- String floatRight();
-
- String mainPanel();
-
- String siteBar();
- }
-
- @Source("def-theme-doc-arrow-down.png")
- ImageResource defThemeDocArrowDown();
-
- @Source("def-theme-tools-arrow-left.png")
- ImageResource defThemeToolsArrowLeft();
-
- ImageResource groupSpaceDisabled();
-
- ImageResource groupSpaceEnabled();
-
- ImageResource homeSpaceDisabled();
-
- ImageResource homeSpaceEnabled();
-
- ImageResource publicSpaceDisabled();
-
- ImageResource publicSpaceEnabled();
-
- @Source("wsArmor.css")
- Style style();
-
- ImageResource userSpaceDisabled();
-
- ImageResource userSpaceEnabled();
-}
\ No newline at end of file
Copied: trunk/src/main/java/cc/kune/gspace/client/resources/gSpaceArmor.css (from rev 1399, trunk/src/main/java/cc/kune/gspace/client/resources/wsArmor.css)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/resources/gSpaceArmor.css (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/resources/gSpaceArmor.css 2011-06-16 16:47:28 UTC (rev 1407)
@@ -0,0 +1,218 @@
+@CHARSET "UTF-8";
+
+@external .*;
+.floatLeft {
+ float: left;
+}
+
+.mainPanel {
+ border-top: 2px solid white;
+ border-bottom: 7px solid white;
+ border-right: 7px solid white;
+ border-left: 7px solid white;
+}
+
+.floatRight {
+ float: right;
+}
+
+.siteBar {
+ overflow: hidden;
+}
+
+.entityHeader {
+ -webkit-border-top-right-radius: 7px;
+ -moz-border-radius-topright: 7px;
+ border-top-right-radius: 7px;
+ overflow: hidden;
+}
+
+.entityFooter {
+ -webkit-border-bottom-right-radius: 7px;
+ -moz-border-radius-bottomright: 7px;
+ border-bottom-right-radius: 7px;
+ /* padding: 7px 10px 0px 17px; */
+ overflow: hidden;
+}
+
+.entityFooter span {
+ font-size: 16px;
+ font-weight: bold;
+}
+
+.entityHeader span {
+ font-size: 56px;
+ /* margin-left: 15px; */
+ font-weight: bold;
+ font: 'UbuntuBold', Arial;
+}
+
+.docHeader {
+ overflow: hidden;
+}
+
+.docHeaderArrow {
+ position: relative;
+ z-index: 10;
+ top: -25px;
+ left: 10px;
+}
+
+.docHeader span,.docHeader input {
+ font-size: 26px;
+ font-weight: bold;
+ margin-left: 15px;
+ font: 'UbuntuBold', Arial;
+ line-height: 36px;
+}
+
+.docHeader input {
+ float: left;
+ width: 95% !important;
+}
+
+.docHeader img {
+ float: left;
+ margin: 10px -10px 0 10px;
+}
+
+.docSubheader {
+ overflow: hidden;
+ border-collapse: separate;
+ margin: -14px 0 0;
+ padding: 15px 0 0;
+}
+
+.docSubheader button.k-fr {
+ margin: 0 5px 0 0;
+}
+
+.docSubheader button.k-fl {
+ margin: 0 0 0 5px;
+}
+
+.docSubheader button {
+ margin: 0 0 0 5px;
+}
+
+.docSubheaderLeft {
+ position: relative;
+ top: 0;
+ left: -30px;
+}
+
+.docSubheader span {
+ font-size: 20px;
+ font-weight: bold;
+}
+
+.docEditorMargin {
+
+}
+
+.docEditor {
+ border-left: 1px solid #959595;
+ border-right: 1px solid #959595;
+ border-top: 1px solid #959595;
+ -webkit-border-top-left-radius: 7px;
+ -moz-border-radius-topleft: 7px;
+ border-top-left-radius: 7px;
+ -webkit-border-top-right-radius: 7px;
+ -moz-border-radius-topright: 7px;
+ border-top-right-radius: 7px;
+}
+
+.docEditor div {
+ overflow-y: visible;
+}
+
+.docFooter {
+ border-left: 1px solid #959595;
+ border-right: 1px solid #959595;
+ border-bottom: 1px solid #959595;
+ -webkit-border-bottom-left-radius: 7px;
+ -moz-border-radius-bottomleft: 7px;
+ border-bottom-left-radius: 7px;
+ -webkit-border-bottom-right-radius: 7px;
+ -moz-border-radius-bottomright: 7px;
+ border-bottom-right-radius: 7px;
+ padding: 7px 7px 0 7px;
+ overflow: hidden;
+ border-collapse: separate;
+}
+
+.docFooter span {
+ font-size: 16px;
+ font-weight: bold;
+}
+
+.entityTools {
+ -webkit-border-top-left-radius: 7px;
+ -moz-border-radius-topleft: 7px;
+ border-top-left-radius: 7px;
+ -webkit-border-bottom-left-radius: 7px;
+ -moz-border-radius-bottomleft: 7px;
+ border-bottom-left-radius: 7px;
+}
+
+.entityToolsNorth { /* margin: 10px; */
+
+}
+
+.entityToolsNorth span { /* font-size: 20px;
+ font-weight: bold; */
+
+}
+
+.entityToolsCenter { /* margin: 10px; */
+ overflow: visible !important;
+ margin-top: 10px;
+}
+
+.entityToolsCenter span {
+ font-size: 26px;
+ font-weight: bold;
+}
+
+.entityToolsSouth {
+ border-top: 2px solid #FFF;
+ padding: 10px;
+ border-collapse: separate;
+ -webkit-border-bottom-left-radius: 7px;
+ -moz-border-radius-bottomleft: 7px;
+ border-bottom-left-radius: 7px;
+}
+
+.entityToolsSouth span {
+ font-size: 20px;
+ font-weight: bold;
+}
+
+/* Derived from: from http://jonrohan.me/guide/css/creating-triangles-in-css/ */
+.docSubheaderArrow {
+ border-style: solid;
+ border-width: 7px;
+ height: 0;
+ width: 0;
+ position: relative;
+ bottom: 0px;
+ left: 36px;
+}
+
+.k-tool-item-selected-arrow {
+ border-style: solid;
+ border-width: 7px;
+ height: 0;
+ width: 0;
+ position: relative;
+ bottom: 0px;
+ left: 24px;
+}
+
+/* IE6 */
+.docSubheaderArrow {
+ _border-left-color: pink;
+ _border-bottom-color: pink;
+ _border-right-color: pink;
+ _filter: literal("chroma(color=pink)");
+}
\ No newline at end of file
Added: trunk/src/main/java/cc/kune/gspace/client/resources/gSpaceArmorTheme.css
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/resources/gSpaceArmorTheme.css (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/resources/gSpaceArmorTheme.css 2011-06-16 16:47:28 UTC (rev 1407)
@@ -0,0 +1,145 @@
+@CHARSET "UTF-8";
+
+@eval bc1 cc.kune.gspace.client.themes.CurrentEntityTheme.getBackColor(0);
+@eval bc2 cc.kune.gspace.client.themes.CurrentEntityTheme.getBackColor(1);
+@eval bc3 cc.kune.gspace.client.themes.CurrentEntityTheme.getBackColor(2);
+@eval bc4 cc.kune.gspace.client.themes.CurrentEntityTheme.getBackColor(3);
+@eval bc5 cc.kune.gspace.client.themes.CurrentEntityTheme.getBackColor(4);
+@eval bc6 cc.kune.gspace.client.themes.CurrentEntityTheme.getBackColor(5);
+@eval bc7 cc.kune.gspace.client.themes.CurrentEntityTheme.getBackColor(6);
+@eval bc8 cc.kune.gspace.client.themes.CurrentEntityTheme.getBackColor(7);
+@eval c1 cc.kune.gspace.client.themes.CurrentEntityTheme.getColor(0);
+@eval c2 cc.kune.gspace.client.themes.CurrentEntityTheme.getColor(1);
+@eval c3 cc.kune.gspace.client.themes.CurrentEntityTheme.getColor(2);
+@eval c4 cc.kune.gspace.client.themes.CurrentEntityTheme.getColor(3);
+@eval c5 cc.kune.gspace.client.themes.CurrentEntityTheme.getColor(4);
+@eval c6 cc.kune.gspace.client.themes.CurrentEntityTheme.getColor(5);
+@eval c7 cc.kune.gspace.client.themes.CurrentEntityTheme.getColor(6);
+@eval c8 cc.kune.gspace.client.themes.CurrentEntityTheme.getColor(7);
+@external .*;
+.entityTools {
+ background-color: bc1;
+}
+
+.entityToolsNorth span {
+ color: c1;
+}
+
+.k-sn-1st-panel {
+
+}
+
+.k-sn-2nd-spanel {
+ background-color: bc2;
+}
+
+.k-sn-2nd-spanel span {
+ color: c2;
+}
+
+.k-sn-3rd-panel { /* background-color: #a05a2c; */
+
+}
+
+.entityToolsCenter span {
+ color: #FFF;
+}
+
+.k-tool-panel {
+ background-color: bc1;
+}
+
+.k-tool-item-focus {
+ background-color: bc4;
+}
+
+.k-tool-item-focus span {
+ color: c4;
+}
+
+.k-tool-item-nofocus {
+
+}
+
+.k-tool-item-selected {
+ background-color: bc3;
+}
+
+.k-tool-item-selected span {
+ color: c3;
+}
+
+/* Derived from: from http://jonrohan.me/guide/css/creating-triangles-in-css/ */
+.k-tool-item-selected-arrow {
+ border-color: transparent transparent transparent bc3;
+}
+
+.k-tool-item-notselected {
+ background-color: inherits;
+}
+
+.entityToolsSouth {
+ border-top: 2px solid #FFF;
+ background-color: bc4;
+}
+
+.entityToolsSouth span {
+ color: c4;
+}
+
+.entityHeader {
+ background-color: bc5;
+}
+
+.entityHeader span {
+ color: c5;
+}
+
+.docHeader {
+ background-color: bc6;
+}
+
+.docHeader span,.docHeader input {
+ color: c6;
+}
+
+/* Derived from: from http://jonrohan.me/guide/css/creating-triangles-in-css/ */
+.docSubheaderArrow {
+ border-color: bc6 transparent transparent transparent;
+}
+
+.docHeader input {
+ color: black !important;
+}
+
+.docSubheader {
+ background-color: bc8;
+}
+
+.docSubheader span {
+ color: c8;
+}
+
+.docEditorMargin {
+ background-color: bc8;
+}
+
+.docEditor {
+ background-color: bc7;
+}
+
+.docFooter {
+ background-color: #e3dbdb;
+}
+
+.docFooter span {
+ color: #784421;
+}
+
+.entityFooter {
+ background-color: bc8;
+}
+
+.entityFooter span {
+ color: c8;
+}
\ No newline at end of file
Property changes on: trunk/src/main/java/cc/kune/gspace/client/resources/gSpaceArmorTheme.css
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Deleted: trunk/src/main/java/cc/kune/gspace/client/resources/wsArmor.css
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/resources/wsArmor.css 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/main/java/cc/kune/gspace/client/resources/wsArmor.css 2011-06-16 16:47:28 UTC (rev 1407)
@@ -1,223 +0,0 @@
-@CHARSET "UTF-8";
-
-@external .*;
-.floatLeft {
- float: left;
-}
-
-.mainPanel {
- border-top: 2px solid white;
- border-bottom: 7px solid white;
- border-right: 7px solid white;
- border-left: 7px solid white;
-}
-
-.floatRight {
- float: right;
-}
-
-.siteBar {
- overflow: hidden;
-}
-
-.entityHeader {
- -webkit-border-top-right-radius: 7px;
- -moz-border-radius-topright: 7px;
- border-top-right-radius: 7px;
- background-color: #f4e3d7;
- overflow: hidden;
-}
-
-.entityFooter {
- -webkit-border-bottom-right-radius: 7px;
- -moz-border-radius-bottomright: 7px;
- border-bottom-right-radius: 7px;
- background-color: #f7ebe3;
- /* padding: 7px 10px 0px 17px; */
- overflow: hidden;
-}
-
-.entityFooter span {
- color: #784421;
- font-size: 16px;
- font-weight: bold;
-}
-
-.entityHeader span {
- font-size: 56px;
- /* margin-left: 15px; */
- color: #550000;
- font-weight: bold;
- font: 'UbuntuBold', Arial;
-}
-
-.docHeader {
- background-color: #D38D5F;
- overflow: hidden;
-}
-
-.docHeaderArrow {
- position: relative;
- z-index: 10;
- top: -25px;
- left: 10px;
-}
-
-.docHeader span,.docHeader input {
- color: #FFF;
- font-size: 26px;
- font-weight: bold;
- margin-left: 15px;
- font: 'UbuntuBold', Arial;
- line-height: 36px;
-}
-
-.docHeader input {
- float: left;
- width: 95% !important;
- color: black !important;
-}
-
-.docHeader img {
- float: left;
- margin: 10px -10px 0 10px;
- background-color: white;
-}
-
-.docSubheader {
- background-color: #f7ebe3;
- overflow: hidden;
- border-collapse: separate;
- margin: -14px 0 0;
- padding: 15px 0 0;
-}
-
-.docSubheader button.k-fr {
- margin: 0 5px 0 0;
-}
-
-.docSubheader button.k-fl {
- margin: 0 0 0 5px;
-}
-
-.docSubheader button {
- margin: 0 0 0 5px;
-}
-
-.docSubheaderLeft {
- position: relative;
- top: 0;
- left: -30px;
-}
-
-.docSubheader span {
- color: #784421;
- font-size: 20px;
- font-weight: bold;
-}
-
-.docEditorMargin {
- background-color: #f7ebe3;
-}
-
-.docEditor {
- background-color: #FFF;
- border-left: 1px solid #959595;
- border-right: 1px solid #959595;
- border-top: 1px solid #959595;
- -webkit-border-top-left-radius: 7px;
- -moz-border-radius-topleft: 7px;
- border-top-left-radius: 7px;
- -webkit-border-top-right-radius: 7px;
- -moz-border-radius-topright: 7px;
- border-top-right-radius: 7px;
-}
-
-.docEditor div {
- overflow-y: visible;
-}
-
-.docFooter {
- border-left: 1px solid #959595;
- border-right: 1px solid #959595;
- border-bottom: 1px solid #959595;
- background-color: #e3dbdb;
- -webkit-border-bottom-left-radius: 7px;
- -moz-border-radius-bottomleft: 7px;
- border-bottom-left-radius: 7px;
- -webkit-border-bottom-right-radius: 7px;
- -moz-border-radius-bottomright: 7px;
- border-bottom-right-radius: 7px;
- padding: 7px 7px 0 7px;
- overflow: hidden;
- border-collapse: separate;
-}
-
-.docFooter span {
- color: #784421;
- font-size: 16px;
- font-weight: bold;
-}
-
-.entityTools {
- -webkit-border-top-left-radius: 7px;
- -moz-border-radius-topleft: 7px;
- border-top-left-radius: 7px;
- -webkit-border-bottom-left-radius: 7px;
- -moz-border-radius-bottomleft: 7px;
- border-bottom-left-radius: 7px;
- background-color: #DEAA87;
-}
-
-.entityToolsNorth { /* margin: 10px; */
-
-}
-
-.entityToolsNorth span {
- color: #a05a2c;
- /* font-size: 20px;
- font-weight: bold; */
-}
-
-.entityToolsCenter { /* margin: 10px; */
- overflow: visible !important;
- margin-top: 10px;
-}
-
-.entityToolsCenter span {
- color: #FFF;
- font-size: 26px;
- font-weight: bold;
-}
-
-.entityToolsSouth {
- border-top: 2px solid #FFF;
- padding: 10px;
- border-collapse: separate;
-}
-
-.entityToolsSouth span {
- color: #a05a2c;
- font-size: 20px;
- font-weight: bold;
-}
-
-/* Derived from: from http://jonrohan.me/guide/css/creating-triangles-in-css/ */
-.docSubheaderArrow {
- border-color: #D38D5F transparent transparent transparent;
- border-style: solid;
- border-width: 7px;
- height: 0;
- width: 0;
- position: relative;
- bottom: 0px;
- left: 36px;
-}
-
-/* IE6 */
-.docSubheaderArrow {
- _border-left-color: pink;
- _border-bottom-color: pink;
- _border-right-color: pink;
- _filter: literal("chroma(color=pink)");
-}
\ No newline at end of file
Added: trunk/src/main/java/cc/kune/gspace/client/themes/CurrentEntityTheme.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/themes/CurrentEntityTheme.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/themes/CurrentEntityTheme.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -0,0 +1,26 @@
+package cc.kune.gspace.client.themes;
+
+public class CurrentEntityTheme {
+ private static String[] backColors = new String[8];
+ private static String[] colors = new String[8];
+
+ private static String filter(final String color) {
+ return color == null ? "#FFF" : color;
+ }
+
+ public static String getBackColor(final int number) {
+ return filter(backColors[number]);
+ }
+
+ public static String getColor(final int number) {
+ return filter(colors[number]);
+ }
+
+ public static void setColors(final String[] colors, final String[] backColors) {
+ CurrentEntityTheme.colors = colors;
+ CurrentEntityTheme.backColors = backColors;
+ }
+
+ public CurrentEntityTheme() {
+ }
+}
Property changes on: trunk/src/main/java/cc/kune/gspace/client/themes/CurrentEntityTheme.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Added: trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeChangeEvent.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeChangeEvent.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeChangeEvent.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -0,0 +1,97 @@
+package cc.kune.gspace.client.themes;
+
+import com.google.gwt.event.shared.EventHandler;
+import com.google.gwt.event.shared.GwtEvent;
+import com.google.gwt.event.shared.HandlerRegistration;
+
+import com.google.gwt.event.shared.HasHandlers;
+
+public class GSpaceThemeChangeEvent extends GwtEvent<GSpaceThemeChangeEvent.GSpaceThemeChangeHandler> {
+
+ public interface HasGsThemeChangeHandlers extends HasHandlers {
+ HandlerRegistration addGsThemeChangeHandler(GSpaceThemeChangeHandler handler);
+ }
+
+ public interface GSpaceThemeChangeHandler extends EventHandler {
+ public void onGsThemeChange(GSpaceThemeChangeEvent event);
+ }
+
+ private static final Type<GSpaceThemeChangeHandler> TYPE = new Type<GSpaceThemeChangeHandler>();
+
+ public static void fire(HasHandlers source, cc.kune.core.shared.dto.GSpaceTheme oldTheme, cc.kune.core.shared.dto.GSpaceTheme newTheme) {
+ source.fireEvent(new GSpaceThemeChangeEvent(oldTheme, newTheme));
+ }
+
+ public static Type<GSpaceThemeChangeHandler> getType() {
+ return TYPE;
+ }
+
+ cc.kune.core.shared.dto.GSpaceTheme oldTheme;
+ cc.kune.core.shared.dto.GSpaceTheme newTheme;
+
+ public GSpaceThemeChangeEvent(cc.kune.core.shared.dto.GSpaceTheme oldTheme, cc.kune.core.shared.dto.GSpaceTheme newTheme) {
+ this.oldTheme = oldTheme;
+ this.newTheme = newTheme;
+ }
+
+ protected GSpaceThemeChangeEvent() {
+ // Possibly for serialization.
+ }
+
+ @Override
+ public Type<GSpaceThemeChangeHandler> getAssociatedType() {
+ return TYPE;
+ }
+
+ public cc.kune.core.shared.dto.GSpaceTheme getOldTheme() {
+ return oldTheme;
+ }
+
+ public cc.kune.core.shared.dto.GSpaceTheme getNewTheme() {
+ return newTheme;
+ }
+
+ @Override
+ protected void dispatch(GSpaceThemeChangeHandler handler) {
+ handler.onGsThemeChange(this);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ GSpaceThemeChangeEvent other = (GSpaceThemeChangeEvent) obj;
+ if (oldTheme == null) {
+ if (other.oldTheme != null)
+ return false;
+ } else if (!oldTheme.equals(other.oldTheme))
+ return false;
+ if (newTheme == null) {
+ if (other.newTheme != null)
+ return false;
+ } else if (!newTheme.equals(other.newTheme))
+ return false;
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ int hashCode = 23;
+ hashCode = (hashCode * 37) + (oldTheme == null ? 1 : oldTheme.hashCode());
+ hashCode = (hashCode * 37) + (newTheme == null ? 1 : newTheme.hashCode());
+ return hashCode;
+ }
+
+ @Override
+ public String toString() {
+ return "GsThemeChangeEvent["
+ + oldTheme
+ + ","
+ + newTheme
+ + "]";
+ }
+}
Property changes on: trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeChangeEvent.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Copied: trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeManager.java (from rev 1399, trunk/src/main/java/org/ourproject/kune/workspace/client/themes/WsThemeManager.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeManager.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeManager.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -0,0 +1,136 @@
+/*
+ *
+ * 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.gspace.client.themes;
+
+import java.util.HashMap;
+
+import cc.kune.common.client.notify.NotifyUser;
+import cc.kune.common.client.utils.CSSUtils;
+import cc.kune.core.client.init.AppStartEvent;
+import cc.kune.core.client.init.AppStartEvent.AppStartHandler;
+import cc.kune.core.client.rpcservices.AsyncCallbackSimple;
+import cc.kune.core.client.rpcservices.GroupServiceAsync;
+import cc.kune.core.client.state.Session;
+import cc.kune.core.client.state.StateChangedEvent;
+import cc.kune.core.client.state.StateChangedEvent.StateChangedHandler;
+import cc.kune.core.client.state.StateManager;
+import cc.kune.core.shared.domain.utils.StateToken;
+import cc.kune.core.shared.dto.ContentSimpleDTO;
+import cc.kune.core.shared.dto.GSpaceTheme;
+import cc.kune.core.shared.dto.InitDataDTO;
+import cc.kune.core.shared.dto.StateAbstractDTO;
+import cc.kune.gspace.client.resources.GSpaceArmorResources;
+import cc.kune.gspace.client.style.GSpaceBackManager;
+
+import com.google.gwt.dom.client.StyleElement;
+import com.google.gwt.event.shared.EventBus;
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+
+public class GSpaceThemeManager {
+
+ private StyleElement cssAdded;
+ private final EventBus eventBus;
+ private final Provider<GroupServiceAsync> groupServiceProvider;
+ private GSpaceTheme previousTheme;
+ private final GSpaceArmorResources res;
+ private final Session session;
+ protected HashMap<String, GSpaceTheme> themes;
+ private final GSpaceBackManager wsBackManager;
+
+ @Inject
+ public GSpaceThemeManager(final Session session,
+ final Provider<GroupServiceAsync> groupServiceProvider, final StateManager stateManager,
+ final GSpaceBackManager wsBackManager, final EventBus eventBus, final GSpaceArmorResources res) {
+ this.session = session;
+ this.groupServiceProvider = groupServiceProvider;
+ this.wsBackManager = wsBackManager;
+ this.eventBus = eventBus;
+ this.res = res;
+ session.onAppStart(true, new AppStartHandler() {
+ @Override
+ public void onAppStart(final AppStartEvent event) {
+ final InitDataDTO initdata = session.getInitData();
+ themes = initdata.getgSpaceThemes();
+ stateManager.onStateChanged(true, new StateChangedHandler() {
+ @Override
+ public void onStateChanged(final StateChangedEvent event) {
+ setState(event.getState());
+ }
+ });
+ }
+ });
+ }
+
+ private void changeCss(final GSpaceArmorResources res, final String themeName) {
+ final GSpaceTheme theme = themes.get(themeName);
+ CurrentEntityTheme.setColors(themes.get(themeName).getColors(), theme.getBackColors());
+ // StyleInjector.injectAtEnd(res.style().getText());
+ if (cssAdded != null) {
+ cssAdded.removeFromParent();
+ }
+ cssAdded = CSSUtils.addCss(res.style().getText());
+ }
+
+ public void changeTheme(final StateToken token, final GSpaceTheme newTheme) {
+ NotifyUser.showProgressProcessing();
+ groupServiceProvider.get().changeGroupWsTheme(session.getUserHash(), token, newTheme.getName(),
+ new AsyncCallbackSimple<Void>() {
+ @Override
+ public void onSuccess(final Void result) {
+ if (session.getCurrentState().getStateToken().getGroup().equals(token.getGroup())) {
+ setTheme(newTheme);
+ }
+ NotifyUser.hideProgress();
+ }
+ });
+ }
+
+ protected void onChangeGroupWsTheme(final GSpaceTheme newTheme) {
+ NotifyUser.showProgressProcessing();
+ groupServiceProvider.get().changeGroupWsTheme(session.getUserHash(),
+ session.getCurrentState().getStateToken(), newTheme.getName(), new AsyncCallbackSimple<Void>() {
+ @Override
+ public void onSuccess(final Void result) {
+ setTheme(newTheme);
+ NotifyUser.hideProgress();
+ }
+ });
+ }
+
+ private void setState(final StateAbstractDTO state) {
+ setTheme(themes.get(state.getGroup().getWorkspaceTheme()));
+ final ContentSimpleDTO groupBackImage = state.getGroup().getGroupBackImage();
+ if (groupBackImage == null) {
+ wsBackManager.clearBackImage();
+ } else {
+ wsBackManager.setBackImage(groupBackImage.getStateToken());
+ }
+ }
+
+ private void setTheme(final GSpaceTheme newTheme) {
+ if (previousTheme == null || !previousTheme.equals(newTheme)) {
+ GSpaceThemeChangeEvent.fire(eventBus, previousTheme, newTheme);
+ changeCss(res, newTheme.getName());
+ }
+ previousTheme = newTheme;
+ }
+
+}
Added: trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeSelectorPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeSelectorPanel.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeSelectorPanel.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -0,0 +1,16 @@
+package cc.kune.gspace.client.themes;
+
+import cc.kune.common.client.actions.ui.ActionExtensibleView;
+import cc.kune.common.client.actions.ui.ActionFlowPanel;
+import cc.kune.common.client.actions.ui.bind.GuiProvider;
+
+import com.google.inject.Inject;
+
+public class GSpaceThemeSelectorPanel extends ActionFlowPanel implements ActionExtensibleView {
+
+ @Inject
+ public GSpaceThemeSelectorPanel(final GuiProvider guiProvider) {
+ super(guiProvider);
+ }
+
+}
Property changes on: trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeSelectorPanel.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Copied: trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeSelectorPresenter.java (from rev 1399, trunk/src/main/java/org/ourproject/kune/workspace/client/themes/WsThemeSelectorPresenter.java)
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeSelectorPresenter.java (rev 0)
+++ trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeSelectorPresenter.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -0,0 +1,132 @@
+/*
+ *
+ * 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.gspace.client.themes;
+
+import java.util.HashMap;
+
+import cc.kune.common.client.actions.AbstractExtendedAction;
+import cc.kune.common.client.actions.Action;
+import cc.kune.common.client.actions.ActionEvent;
+import cc.kune.common.client.actions.ui.ActionExtensibleView;
+import cc.kune.common.client.actions.ui.descrip.MenuDescriptor;
+import cc.kune.common.client.actions.ui.descrip.MenuRadioItemDescriptor;
+import cc.kune.core.client.init.AppStartEvent;
+import cc.kune.core.client.init.AppStartEvent.AppStartHandler;
+import cc.kune.core.client.state.Session;
+import cc.kune.core.shared.dto.GSpaceTheme;
+import cc.kune.core.shared.dto.InitDataDTO;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+import cc.kune.gspace.client.themes.GSpaceThemeChangeEvent.GSpaceThemeChangeHandler;
+
+import com.google.gwt.event.shared.EventBus;
+import com.google.inject.Inject;
+
+public class GSpaceThemeSelectorPresenter {
+
+ class ThemeAction extends AbstractExtendedAction {
+
+ private final GSpaceThemeManager manager;
+ private final GSpaceTheme theme;
+
+ public ThemeAction(final GSpaceTheme theme, final EventBus eventBus, final GSpaceThemeManager manager) {
+ super();
+ this.theme = theme;
+ this.manager = manager;
+ putValue(NAME, i18n.t(theme.getName()));
+ putValue(SMALL_ICON, theme.getBackColors()[0]);
+ }
+
+ @Override
+ public void actionPerformed(final ActionEvent event) {
+ manager.changeTheme(session.getCurrentStateToken(), theme);
+ menu.setText(i18n.t(theme.getName()));
+ }
+ }
+
+ private static final String GROUP_THEME = "k-theme-group";
+
+ private final EventBus eventBus;
+ private final I18nTranslationService i18n;
+ private final HashMap<String, MenuRadioItemDescriptor> itemMap;
+ private final GSpaceThemeManager manager;
+ private MenuDescriptor menu;
+ private final Session session;
+ private ActionExtensibleView view;
+
+ @Inject
+ public GSpaceThemeSelectorPresenter(final Session session, final I18nTranslationService i18n,
+ final EventBus eventBus, final GSpaceThemeManager manager, final GSpaceThemeSelectorPanel view) {
+ this.session = session;
+ this.i18n = i18n;
+ this.eventBus = eventBus;
+ this.manager = manager;
+ this.view = view;
+ itemMap = new HashMap<String, MenuRadioItemDescriptor>();
+ eventBus.addHandler(GSpaceThemeChangeEvent.getType(), new GSpaceThemeChangeHandler() {
+ @Override
+ public void onGsThemeChange(final GSpaceThemeChangeEvent event) {
+ final String themeName = event.getNewTheme().getName();
+ select(themeName);
+ }
+ });
+ this.view = view;
+ createActions();
+ }
+
+ private void createActions() {
+ createMenu();
+ final InitDataDTO initData = session.getInitData();
+ if (initData == null) {
+ session.onAppStart(true, new AppStartHandler() {
+ @Override
+ public void onAppStart(final AppStartEvent event) {
+ setThemes(event.getInitData());
+ }
+ });
+ } else {
+ setThemes(initData);
+ }
+ }
+
+ private void createMenu() {
+ menu = new MenuDescriptor("");
+ menu.putValue(Action.SMALL_ICON, "images/colors.gif");
+ }
+
+ private void createTheme(final GSpaceTheme theme) {
+ final ThemeAction action = new ThemeAction(theme, eventBus, manager);
+ final MenuRadioItemDescriptor item = new MenuRadioItemDescriptor(menu, action, GROUP_THEME);
+ itemMap.put(theme.getName(), item);
+ view.add(item);
+ }
+
+ public void select(final String themeName) {
+ itemMap.get(themeName).setChecked(true);
+ menu.setText(i18n.t(themeName));
+ }
+
+ private void setThemes(final InitDataDTO initData) {
+ view.add(menu);
+ for (final GSpaceTheme theme : initData.getgSpaceThemes().values()) {
+ createTheme(theme);
+ }
+ }
+
+}
Modified: trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorItemPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorItemPanel.java 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorItemPanel.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -30,6 +30,7 @@
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FocusPanel;
+import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.gwt.user.client.ui.HasText;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.InlineLabel;
@@ -43,6 +44,8 @@
private static ToolSelectorItemPanelUiBinder uiBinder = GWT.create(ToolSelectorItemPanelUiBinder.class);
@UiField
+ HTMLPanel arrow;
+ @UiField
Image iconLeft;
@UiField
Image iconRight;
@@ -102,11 +105,13 @@
if (selected) {
self.addStyleDependentName("selected");
self.removeStyleDependentName("notselected");
- iconRight.setVisible(true);
+ arrow.setVisible(true);
+ // iconRight.setVisible(true);
} else {
self.addStyleDependentName("notselected");
self.removeStyleDependentName("selected");
iconRight.setVisible(false);
+ arrow.setVisible(false);
}
}
Modified: trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorItemPanel.ui.xml
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorItemPanel.ui.xml 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/main/java/cc/kune/gspace/client/tool/selector/ToolSelectorItemPanel.ui.xml 2011-06-16 16:47:28 UTC (rev 1407)
@@ -6,8 +6,8 @@
text-decoration: none;
font-size: 22px;
color: white; /*
- text-shadow: 1px 1px 6px grey;
- */
+ text-shadow: 1px 1px 6px grey;
+ */
}
.link a:link {
@@ -42,9 +42,9 @@
<g:FocusPanel ui:field="self" stylePrimaryName="k-tool-item">
<g:FlowPanel styleName="{style.flow}" ui:field="flow">
<g:Image ui:field="iconLeft" styleName="{style.iconLeft}" />
- <g:Image ui:field="iconRight" styleName="{style.iconRight}"
- resource='{res.arrowRightDef}' />
+ <g:Image ui:field="iconRight" styleName="{style.iconRight}" /> <!-- resource {res.arrowRightDef}' -->
<g:InlineLabel ui:field="label" styleName="{style.label}" />
+ <g:HTMLPanel ui:field="arrow" addStyleNames="k-tool-item-selected-arrow, k-fr" />
</g:FlowPanel>
</g:FocusPanel>
</ui:UiBinder>
\ No newline at end of file
Deleted: trunk/src/main/java/cc/kune/gspace/public/kune-gspace.css
===================================================================
--- trunk/src/main/java/cc/kune/gspace/public/kune-gspace.css 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/main/java/cc/kune/gspace/public/kune-gspace.css 2011-06-16 16:47:28 UTC (rev 1407)
@@ -1 +0,0 @@
-/* TODO: extract wsArmor.css here */
\ No newline at end of file
Modified: trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientTool.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientTool.java 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientTool.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -20,11 +20,11 @@
package org.ourproject.kune.chat.client;
import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton;
-import org.ourproject.kune.workspace.client.themes.WsThemeManager;
import org.ourproject.kune.workspace.client.tool.OldFoldableAbstractClientTool;
import cc.kune.core.client.registry.ContentCapabilitiesRegistry;
import cc.kune.core.shared.i18n.I18nTranslationService;
+import cc.kune.gspace.client.themes.GSpaceThemeManager;
import cc.kune.gspace.client.tool.selector.ToolSelector;
public class ChatClientTool extends OldFoldableAbstractClientTool {
@@ -34,7 +34,7 @@
public static final String TYPE_ROOT = "chat.root";
public ChatClientTool(final I18nTranslationService i18n, final WorkspaceSkeleton ws,
- final ToolSelector toolSelector, final WsThemeManager wsThemePresenter,
+ final ToolSelector toolSelector, final GSpaceThemeManager wsThemePresenter,
final ContentCapabilitiesRegistry contentCapabilitiesRegistry) {
super(NAME, i18n.t("chat rooms"), toolSelector, wsThemePresenter, ws, contentCapabilitiesRegistry);
registerContentTypeIcon(TYPE_ROOM, "images/emite-room.png");
Modified: trunk/src/main/java/org/ourproject/kune/gallery/client/GalleryClientTool.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/gallery/client/GalleryClientTool.java 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/main/java/org/ourproject/kune/gallery/client/GalleryClientTool.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -20,11 +20,11 @@
package org.ourproject.kune.gallery.client;
import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton;
-import org.ourproject.kune.workspace.client.themes.WsThemeManager;
import org.ourproject.kune.workspace.client.tool.OldFoldableAbstractClientTool;
import cc.kune.core.client.i18n.I18nUITranslationService;
import cc.kune.core.client.registry.ContentCapabilitiesRegistry;
+import cc.kune.gspace.client.themes.GSpaceThemeManager;
import cc.kune.gspace.client.tool.selector.ToolSelector;
public class GalleryClientTool extends OldFoldableAbstractClientTool {
@@ -34,7 +34,7 @@
public static final String TYPE_UPLOADEDFILE = NAME + "." + OldFoldableAbstractClientTool.UPLOADEDFILE_SUFFIX;
public GalleryClientTool(final I18nUITranslationService i18n, final ToolSelector toolSelector,
- final WsThemeManager wsThemePresenter, final WorkspaceSkeleton ws,
+ final GSpaceThemeManager wsThemePresenter, final WorkspaceSkeleton ws,
final ContentCapabilitiesRegistry cntCapabReg) {
super(NAME, i18n.t("gallery"), toolSelector, wsThemePresenter, ws, cntCapabReg);
Modified: trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientTool.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientTool.java 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientTool.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -20,11 +20,11 @@
package org.ourproject.kune.wiki.client;
import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton;
-import org.ourproject.kune.workspace.client.themes.WsThemeManager;
import org.ourproject.kune.workspace.client.tool.OldFoldableAbstractClientTool;
import cc.kune.core.client.i18n.I18nUITranslationService;
import cc.kune.core.client.registry.ContentCapabilitiesRegistry;
+import cc.kune.gspace.client.themes.GSpaceThemeManager;
import cc.kune.gspace.client.tool.selector.ToolSelector;
public class WikiClientTool extends OldFoldableAbstractClientTool {
@@ -36,7 +36,7 @@
public static final String TYPE_WIKIPAGE = NAME + "." + "wikipage";
public WikiClientTool(final I18nUITranslationService i18n, final ToolSelector toolSelector,
- final WsThemeManager wsThemePresenter, final WorkspaceSkeleton ws,
+ final GSpaceThemeManager wsThemePresenter, final WorkspaceSkeleton ws,
final ContentCapabilitiesRegistry cntCapabReg) {
super(NAME, i18n.t("wiki"), toolSelector, wsThemePresenter, ws, cntCapabReg);
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/entityheader/EntityHeaderPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/entityheader/EntityHeaderPanel.java 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/entityheader/EntityHeaderPanel.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -27,11 +27,11 @@
import org.ourproject.kune.platf.client.actions.ui.GuiBindingsRegister;
import org.ourproject.kune.platf.client.services.Images;
import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton;
-import org.ourproject.kune.workspace.client.themes.WsTheme;
import cc.kune.core.client.services.FileConstants;
import cc.kune.core.client.services.FileDownloadUtils;
import cc.kune.core.shared.domain.utils.StateToken;
+import cc.kune.core.shared.dto.GSpaceTheme;
import cc.kune.core.shared.dto.GroupDTO;
import com.calclab.suco.client.ioc.Provider;
@@ -119,7 +119,7 @@
entityTextLogo.setSmallFont();
}
- public void setTheme(final WsTheme oldTheme, final WsTheme newTheme) {
+ public void setTheme(final GSpaceTheme oldTheme, final GSpaceTheme newTheme) {
if (oldTheme != null) {
entityTextLogo.removeStyleDependentName(oldTheme.toString());
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/entityheader/EntityHeaderPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/entityheader/EntityHeaderPresenter.java 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/entityheader/EntityHeaderPresenter.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -21,82 +21,88 @@
import org.ourproject.kune.platf.client.View;
import org.ourproject.kune.platf.client.actions.ui.OldGuiActionDescrip;
-import org.ourproject.kune.workspace.client.themes.WsTheme;
-import org.ourproject.kune.workspace.client.themes.WsThemeManager;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.StateManager;
import cc.kune.core.shared.dto.GroupDTO;
+import cc.kune.gspace.client.themes.GSpaceThemeManager;
import com.calclab.suco.client.events.Listener2;
public class EntityHeaderPresenter implements EntityHeader {
- private static final int MEDIUM_NAME_LIMIT = 90;
- private static final int LARGE_NAME_LIMIT = 20;
+ private static final int LARGE_NAME_LIMIT = 20;
+ private static final int MEDIUM_NAME_LIMIT = 90;
- private EntityHeaderView view;
- private final Session session;
+ private final Session session;
+ private EntityHeaderView view;
- public EntityHeaderPresenter(final StateManager stateManager, final WsThemeManager theme, final Session session) {
- this.session = session;
+ public EntityHeaderPresenter(final StateManager stateManager, final GSpaceThemeManager theme,
+ final Session session) {
+ this.session = session;
- stateManager.onGroupChanged(new Listener2<String, String>() {
- public void onEvent(final String oldGroup, final String newGroup) {
- setGroupLogo(session.getCurrentState().getGroup());
- }
- });
- theme.addOnThemeChanged(new Listener2<WsTheme, WsTheme>() {
- public void onEvent(final WsTheme oldTheme, final WsTheme newTheme) {
- view.setTheme(oldTheme, newTheme);
- }
- });
- }
+ stateManager.onGroupChanged(new Listener2<String, String>() {
+ @Override
+ public void onEvent(final String oldGroup, final String newGroup) {
+ setGroupLogo(session.getCurrentState().getGroup());
+ }
+ });
+ // theme.addOnThemeChanged(new Listener2<GSpaceTheme, GSpaceTheme>() {
+ // public void onEvent(final GSpaceTheme oldTheme, final GSpaceTheme
+ // newTheme) {
+ // view.setTheme(oldTheme, newTheme);
+ // }
+ // });
+ }
- public void addAction(final OldGuiActionDescrip descriptor) {
- view.addAction(descriptor);
- }
+ @Override
+ public void addAction(final OldGuiActionDescrip descriptor) {
+ view.addAction(descriptor);
+ }
- public void addWidget(final View widget) {
- view.addWidget(widget);
- }
+ @Override
+ public void addWidget(final View widget) {
+ view.addWidget(widget);
+ }
- public void init(final EntityHeaderView view) {
- this.view = view;
- }
+ public void init(final EntityHeaderView view) {
+ this.view = view;
+ }
- public void refreshGroupLogo() {
- setGroupLogo(session.getCurrentState().getGroup());
- }
+ @Override
+ public void refreshGroupLogo() {
+ setGroupLogo(session.getCurrentState().getGroup());
+ }
- public void reloadGroupLogoImage() {
- view.reloadImage(session.getCurrentState().getGroup());
- }
+ @Override
+ public void reloadGroupLogoImage() {
+ view.reloadImage(session.getCurrentState().getGroup());
+ }
- void setGroupLogo(final GroupDTO group) {
- if (group.hasLogo()) {
- setLogoText(group.getLongName());
- view.setLogoImage(group.getStateToken());
- view.setLogoImageVisible(true);
- } else {
- setLogoText(group.getLongName());
- if (group.isPersonal()) {
- view.showDefUserLogo();
- view.setLogoImageVisible(true);
- } else {
- view.setLogoImageVisible(false);
- }
- }
+ void setGroupLogo(final GroupDTO group) {
+ if (group.hasLogo()) {
+ setLogoText(group.getLongName());
+ view.setLogoImage(group.getStateToken());
+ view.setLogoImageVisible(true);
+ } else {
+ setLogoText(group.getLongName());
+ if (group.isPersonal()) {
+ view.showDefUserLogo();
+ view.setLogoImageVisible(true);
+ } else {
+ view.setLogoImageVisible(false);
+ }
}
+ }
- void setLogoText(final String name) {
- final int length = name.length();
- if (length <= LARGE_NAME_LIMIT) {
- view.setLargeFont();
- } else if (length <= MEDIUM_NAME_LIMIT) {
- view.setMediumFont();
- } else {
- view.setSmallFont();
- }
- view.setLogoText(name);
+ void setLogoText(final String name) {
+ final int length = name.length();
+ if (length <= LARGE_NAME_LIMIT) {
+ view.setLargeFont();
+ } else if (length <= MEDIUM_NAME_LIMIT) {
+ view.setMediumFont();
+ } else {
+ view.setSmallFont();
}
+ view.setLogoText(name);
+ }
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/entityheader/EntityHeaderView.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/entityheader/EntityHeaderView.java 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/entityheader/EntityHeaderView.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -21,9 +21,9 @@
import org.ourproject.kune.platf.client.View;
import org.ourproject.kune.platf.client.actions.ui.OldGuiActionDescrip;
-import org.ourproject.kune.workspace.client.themes.WsTheme;
import cc.kune.core.shared.domain.utils.StateToken;
+import cc.kune.core.shared.dto.GSpaceTheme;
import cc.kune.core.shared.dto.GroupDTO;
public interface EntityHeaderView {
@@ -46,7 +46,7 @@
void setSmallFont();
- void setTheme(final WsTheme oldTheme, WsTheme newTheme);
+ void setTheme(final GSpaceTheme oldTheme, GSpaceTheme newTheme);
void showDefUserLogo();
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/skel/Entity.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/skel/Entity.java 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/skel/Entity.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -19,8 +19,9 @@
\*/
package org.ourproject.kune.workspace.client.skel;
-import org.ourproject.kune.workspace.client.themes.WsTheme;
+import cc.kune.core.shared.dto.GSpaceTheme;
+
import com.google.gwt.user.client.ui.Widget;
import com.gwtext.client.core.RegionPosition;
import com.gwtext.client.widgets.Panel;
@@ -116,7 +117,7 @@
entityWorkspace.setMaximized(maximized);
}
- public void setTheme(final WsTheme oldTheme, final WsTheme newTheme) {
+ public void setTheme(final GSpaceTheme oldTheme, final GSpaceTheme newTheme) {
if (oldTheme != null) {
entityFitPanel.removeClass("k-entity-" + oldTheme);
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/skel/EntityWorkspace.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/skel/EntityWorkspace.java 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/skel/EntityWorkspace.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -22,8 +22,9 @@
import org.ourproject.kune.platf.client.ui.AbstractToolbar;
import org.ourproject.kune.platf.client.ui.RoundedPanel;
import org.ourproject.kune.platf.client.ui.SimpleToolbar;
-import org.ourproject.kune.workspace.client.themes.WsTheme;
+import cc.kune.core.shared.dto.GSpaceTheme;
+
import com.google.gwt.user.client.ui.Widget;
import com.gwtext.client.core.RegionPosition;
import com.gwtext.client.widgets.Panel;
@@ -230,7 +231,7 @@
}
}
- public void setTheme(final WsTheme oldTheme, final WsTheme newTheme) {
+ public void setTheme(final GSpaceTheme oldTheme, final GSpaceTheme newTheme) {
final String themeS = newTheme.toString();
if (oldTheme != null) {
final String previousThemeS = oldTheme.toString();
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/skel/WorkspaceSkeleton.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/skel/WorkspaceSkeleton.java 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/skel/WorkspaceSkeleton.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -21,8 +21,9 @@
import org.ourproject.kune.platf.client.ui.AbstractToolbar;
import org.ourproject.kune.platf.client.ui.SimpleToolbar;
-import org.ourproject.kune.workspace.client.themes.WsTheme;
+import cc.kune.core.shared.dto.GSpaceTheme;
+
import com.calclab.suco.client.events.Listener0;
import com.google.gwt.core.client.Scheduler;
import com.google.gwt.core.client.Scheduler.ScheduledCommand;
@@ -141,7 +142,7 @@
entity.setMaximized(maximized);
}
- public void setTheme(final WsTheme oldTheme, final WsTheme newTheme) {
+ public void setTheme(final GSpaceTheme oldTheme, final GSpaceTheme newTheme) {
entity.setTheme(oldTheme, newTheme);
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/tool/OldAbstractClientTool.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/tool/OldAbstractClientTool.java 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/tool/OldAbstractClientTool.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -20,8 +20,8 @@
package org.ourproject.kune.workspace.client.tool;
import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton;
-import org.ourproject.kune.workspace.client.themes.WsThemeManager;
+import cc.kune.gspace.client.themes.GSpaceThemeManager;
import cc.kune.gspace.client.tool.selector.ToolSelector;
import cc.kune.gspace.client.tool.selector.ToolSelectorItemPanel;
import cc.kune.gspace.client.tool.selector.ToolSelectorItemPresenter;
@@ -29,7 +29,7 @@
public abstract class OldAbstractClientTool implements OldClientTool {
public OldAbstractClientTool(final String shortName, final String longName, final ToolSelector toolSelector,
- final WsThemeManager wsThemePresenter, final WorkspaceSkeleton ws) {
+ final GSpaceThemeManager wsThemePresenter, final WorkspaceSkeleton ws) {
final ToolSelectorItemPresenter presenter = new ToolSelectorItemPresenter(shortName, longName, toolSelector);
// wsThemePresenter);
final ToolSelectorItemPanel panel = new ToolSelectorItemPanel();
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/tool/OldFoldableAbstractClientTool.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/tool/OldFoldableAbstractClientTool.java 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/tool/OldFoldableAbstractClientTool.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -20,10 +20,10 @@
package org.ourproject.kune.workspace.client.tool;
import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton;
-import org.ourproject.kune.workspace.client.themes.WsThemeManager;
import cc.kune.core.client.registry.ContentCapabilitiesRegistry;
import cc.kune.core.shared.dto.BasicMimeTypeDTO;
+import cc.kune.gspace.client.themes.GSpaceThemeManager;
import cc.kune.gspace.client.tool.selector.ToolSelector;
public abstract class OldFoldableAbstractClientTool extends OldAbstractClientTool {
@@ -33,7 +33,7 @@
protected final ContentCapabilitiesRegistry contentCapabilitiesRegistry;
public OldFoldableAbstractClientTool(final String shortName, final String longName, final ToolSelector toolSelector,
- final WsThemeManager wsThemePresenter, final WorkspaceSkeleton ws,
+ final GSpaceThemeManager wsThemePresenter, final WorkspaceSkeleton ws,
final ContentCapabilitiesRegistry contentCapabilitiesRegistry) {
super(shortName, longName, toolSelector, wsThemePresenter, ws);
this.contentCapabilitiesRegistry = contentCapabilitiesRegistry;
Modified: trunk/src/main/resources/dozerBeanMapping.xml
===================================================================
--- trunk/src/main/resources/dozerBeanMapping.xml 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/main/resources/dozerBeanMapping.xml 2011-06-16 16:47:28 UTC (rev 1407)
@@ -27,7 +27,13 @@
<b>countries</b>
<a-hint> cc.kune.core.shared.dto.I18nCountryDTO </a-hint>
<b-hint> cc.kune.domain.I18nCountry </b-hint>
- </field>
+ </field>
+ <field>
+ <a>gSpaceThemes</a>
+ <b>gSpaceThemes</b>
+ <a-hint>java.util.HashMap</a-hint>
+ <b-hint>java.util.HashMap</b-hint>
+ </field>
</mapping>
<mapping>
<class-a>cc.kune.domain.Group</class-a>
@@ -46,8 +52,7 @@
<a-hint> cc.kune.core.shared.dto.GroupDTO </a-hint>
<b-hint> cc.kune.domain.Group </b-hint>
</field>
- <field
- custom-converter="cc.kune.core.server.mapper.GroupListModeConverter">
+ <field custom-converter="cc.kune.core.server.mapper.GroupListModeConverter">
<a>mode</a>
<b>mode</b>
</field>
@@ -92,14 +97,14 @@
<class-a>cc.kune.core.shared.dto.StateAbstractDTO</class-a>
<class-b>cc.kune.core.server.state.StateAbstract</class-b>
</mapping>
-<!-- <mapping>-->
-<!-- <class-a> cc.kune.core.shared.dto.StateToken </class-a>-->
-<!-- <class-b> cc.kune.core.shared.dto.StateToken </class-b>-->
-<!-- <field>-->
-<!-- <a>encoded</a>-->
-<!-- <b>encoded</b>-->
-<!-- </field>-->
-<!-- </mapping>-->
+ <!-- <mapping> -->
+ <!-- <class-a> cc.kune.core.shared.dto.StateToken </class-a> -->
+ <!-- <class-b> cc.kune.core.shared.dto.StateToken </class-b> -->
+ <!-- <field> -->
+ <!-- <a>encoded</a> -->
+ <!-- <b>encoded</b> -->
+ <!-- </field> -->
+ <!-- </mapping> -->
<mapping>
<class-a> cc.kune.core.shared.dto.BasicMimeTypeDTO </class-a>
<class-b> cc.kune.domain.BasicMimeType </class-b>
Modified: trunk/src/main/resources/kune.properties
===================================================================
--- trunk/src/main/resources/kune.properties 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/main/resources/kune.properties 2011-06-16 16:47:28 UTC (rev 1407)
@@ -35,8 +35,28 @@
### Workspace enabled themes
# This names are also the name of the items in the theme menu and there are translated
-kune.wsthemes = default,green,blue,grey,purple,red
+kune.wsthemes = default,green,purple,grey,red,sahara,blue,redblack,camp,pink
kune.wsthemes.default = default
+kune.wsthemes.default.backgrounds = #deaa87, #d99e76, #ce7f4b, #d99e76, #f6e7dd, #d99e76, #FFF, #f8eee7
+kune.wsthemes.default.colors = #FFF,#FFF,#FFF,#FFF,#552200,#FFF,#a05a2c,#a05a2c
+kune.wsthemes.green.backgrounds = #abde88, #bfe7a6, #5a8141, #749b5a, #d5efc3, #749b5a, #FFF, #eaf7e1
+kune.wsthemes.green.colors = #225500, #225500, #FFF, #FFF, #17280b, #FFF, #225500, #225500
+kune.wsthemes.purple.backgrounds = #ddaee9, #f4c6ff, #9753aa, #e26fff, #f4e4f8, #c653e2, #FFF, #f9e3ff
+kune.wsthemes.purple.colors = #FFF, #FFF, #FFF, #FFF, #6d0c87, #FFF, #6d0c87, #6d0c87
+kune.wsthemes.grey.backgrounds = #cfcfcf, #b7b7b7, #565656, #868686, #ededed, #6e6e6e, #FFF, #e7e7e7
+kune.wsthemes.grey.colors = #4d4d4d, #4d4d4d, #FFF, #FFF, #000, #FFF, #4d4d4d, #4d4d4d
+kune.wsthemes.red.backgrounds = #ffc0c0, #de8888, #c04141, #ff8080, #ffe0e0, #b86262, #FFF, #f7e1e1
+kune.wsthemes.red.colors = #aa0000, #FFF, #FFF, #FFF, #a02c2c, #FFF, #a02c2c, #a02c2c
+kune.wsthemes.sahara.backgrounds = #ffe7d7, #eac9b3, #d59367, #eac9b3, #f7ece4, #e0ae8d, #FFF, #f7ece4
+kune.wsthemes.sahara.colors = #502d16, #502d16, #552200, #502d16, #502d16, #784421, #d45500, #d45500
+kune.wsthemes.blue.backgrounds = #8cbaff, #87aade, #5280c5, #528ce2, #c5dcff, #528ce2, #FFF, #c9d8f0
+kune.wsthemes.blue.colors = #FFF, #FFF, #FFF, #FFF, #0044aa, #FFF, #0044aa, #0044aa
+kune.wsthemes.redblack.backgrounds = #a14242, #b96363, #424242, #a14242, #ffe0e0, #a14242, #FFF, #f7e1e1
+kune.wsthemes.redblack.colors = #FFF, #FFF, #FFF, #FFF, #800000, #FFF, #800000, #800000
+kune.wsthemes.camp.backgrounds = #f6f1de, #a49e87, #3c3c3c, #f5cc22, #f6f1de, #4f472b, #FFF, #fff8dc
+kune.wsthemes.camp.colors = #151515, #151515, #fecc00, #151515, #000000, #f3c401, #151515, #151515
+kune.wsthemes.pink.backgrounds = #e49db9, #edbdd0, #b15278, #ff74ab, #ffddf8, #d25b8b, #FFF, #f6dee8
+kune.wsthemes.pink.colors = #FFF, #FFF, #FFF, #FFF, #2b0022, #FFF, #800066, #800066
### Gallery options
Modified: trunk/src/test/java/cc/kune/core/server/mapper/MapperTest.java
===================================================================
--- trunk/src/test/java/cc/kune/core/server/mapper/MapperTest.java 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/test/java/cc/kune/core/server/mapper/MapperTest.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -25,11 +25,14 @@
import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
import org.junit.Before;
+import org.junit.Ignore;
import org.junit.Test;
+import cc.kune.core.server.InitData;
import cc.kune.core.server.TestDomainHelper;
import cc.kune.core.server.TestHelper;
import cc.kune.core.server.manager.GroupManager;
@@ -42,8 +45,10 @@
import cc.kune.core.shared.dto.ContainerDTO;
import cc.kune.core.shared.dto.ContainerSimpleDTO;
import cc.kune.core.shared.dto.ContentSimpleDTO;
+import cc.kune.core.shared.dto.GSpaceTheme;
import cc.kune.core.shared.dto.GroupDTO;
import cc.kune.core.shared.dto.GroupListDTO;
+import cc.kune.core.shared.dto.InitDataDTO;
import cc.kune.core.shared.dto.LicenseDTO;
import cc.kune.core.shared.dto.LinkDTO;
import cc.kune.core.shared.dto.SocialNetworkDataDTO;
@@ -138,6 +143,28 @@
assertTrue(groupDTO.hasLogo());
}
+ @Ignore
+ @Test
+ public void initDataMappging() {
+ final InitData initData = new InitData();
+ final HashMap<String, GSpaceTheme> themes = new HashMap<String, GSpaceTheme>();
+ final String themeName = "green";
+ final GSpaceTheme theme = new GSpaceTheme(themeName);
+ final String[] array = { "blue, darkgreen" };
+ theme.setBackColors(array);
+ theme.setColors(array);
+ themes.put(themeName, theme);
+ initData.setgSpaceThemes(themes);
+ final InitDataDTO dto = mapper.map(initData, InitDataDTO.class);
+ final HashMap<String, GSpaceTheme> themesDto = dto.getgSpaceThemes();
+ final GSpaceTheme themeDto = themesDto.get(themeName);
+ assertNotNull(themeDto);
+ assertNotNull(themeDto.getColors());
+ assertTrue(themeDto.getColors().length > 0);
+ assertNotNull(themeDto.getBackColors());
+ assertTrue(themeDto.getBackColors().length > 0);
+ }
+
@Before
public void inject() {
TestHelper.inject(this);
Modified: trunk/src/test/java/org/ourproject/kune/workspace/client/entityheader/EntityLogoPresenterTest.java
===================================================================
--- trunk/src/test/java/org/ourproject/kune/workspace/client/entityheader/EntityLogoPresenterTest.java 2011-06-14 18:52:02 UTC (rev 1406)
+++ trunk/src/test/java/org/ourproject/kune/workspace/client/entityheader/EntityLogoPresenterTest.java 2011-06-16 16:47:28 UTC (rev 1407)
@@ -22,13 +22,13 @@
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
-import org.ourproject.kune.workspace.client.themes.WsThemeManager;
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.GroupDTO;
import cc.kune.core.shared.dto.GroupType;
+import cc.kune.gspace.client.themes.GSpaceThemeManager;
public class EntityLogoPresenterTest {
@@ -41,7 +41,7 @@
public void before() {
stateManager = Mockito.mock(StateManager.class);
session = Mockito.mock(Session.class);
- WsThemeManager theme = Mockito.mock(WsThemeManager.class);
+ GSpaceThemeManager theme = Mockito.mock(GSpaceThemeManager.class);
entityLogoPresenter = new EntityHeaderPresenter(stateManager, theme, session);
view = Mockito.mock(EntityHeaderView.class);
entityLogoPresenter.init(view);
1
0
Author: ecarrerasg
Date: 2011-06-14 20:52:02 +0200 (Tue, 14 Jun 2011)
New Revision: 1406
Modified:
donate/war/Donate.css
donate/war/Donate.html
Log:
Changes to GWT
Modified: donate/war/Donate.css
===================================================================
--- donate/war/Donate.css 2011-06-14 18:51:42 UTC (rev 1405)
+++ donate/war/Donate.css 2011-06-14 18:52:02 UTC (rev 1406)
@@ -1,127 +1,156 @@
-html {overflow:auto;height:100%;margin-bottom : 0.1em;}
-* {padding:0;margin:0;}
-body {background:#fff;font:0.88em Arial,Helvetica,Geneva,sans-serif;line-height:1.5em;color:#444444;}
-a {color:#FE7047;text-decoration:none;outline:none;font-weight:bold;}
-a:hover {background:inherit;color:#029A00;text-decoration:none;outline:0;}
-a:visited {text-decoration:none;outline:0;}
-a:link h3 {color:#951400;border:none;outline:0;}
-a:link img {border:none;outline:none;}
-p {padding-top:5px;padding-bottom:5px;}
-ul {list-style:none;margin-left:0;padding-left:0;margin-top:0;}
-ol {margin-left:0;margin-left:30px;margin-top:0;}
-img {border:none;padding-top:3px;padding-bottom:3px;}
-.textoPost{float:none;clear: both;}
-.p0{float:left;}
-.p0 ul li{
- background: url(btn-blue.png) no-repeat top right;
+html {
+ overflow:auto;
+ height:100%;
+ margin-bottom : 0.1em;
}
-.p1{float:left;border-bottom: 1px solid #E7E7E7;background-color: #FFFFFF;list-style: none outside none;margin: 10px 0;padding: 5px;}
-.p1 input {margin: 5px 0;}
-.p1Label{float:left;background-color: #FFFFFF;list-style: none outside none;margin: 14px 0;padding: 5px;}
+* {
+ padding:0;
+ margin:0;
+}
-.divVacio{clear:both;}
+body {
+ background:#fff;
+ font:0.88em Arial,Helvetica,Geneva,sans-serif;
+ line-height:1.5em;
+ color:#444444;
+}
-.post-edit-link { margin-left: 10px; border: 1px solid #CCC; padding:3px; text-decoration:none; }
-.post h2 {text-align: inherits; }
+a {
+ color: #FE7047;
+ font-weight: bold;
+ outline: medium none;
+ text-decoration: none;
+}
-entries div {padding-right:15px; border-right: 0px solid #F2F2F2;}
-.entries {width : 590px;float : left;padding : 0 0 15px 0;line-height : 1.7em;}
-.post {text-align: justify; text-justify: newspaper; margin-bottom : 2em;}
-.post ul {list-style : disc;margin : 1px 5px 3px 15px; padding : 2px; }
-.post li ul li { list-style-type : circle; margin-bottom : 0px; }
-.post li ul li ul li { list-style-type : square; margin-bottom : 0px; }
-h1 {font-size : 2em;line-height : 1em;/** text-transform : uppercase; **/ display : inline;margin-bottom : 0.2em;margin-top : 2.5em;}
-entries div h2 {font-size : 2em;line-height : 1em;display : inline;margin-bottom : 0.2em;margin-top : 2.5em;}
-entries div h2 a {color:#444444;}
-entries div h2 a:hover {color:#029A00; background-color: inherit;}
-h3 {font-weight : bold;font-size : 1em;text-transform : uppercase;margin-bottom : 0.2em; /** margin-top : 2.5em; **/ letter-spacing : 0.2em;color : #34353e;
-/** border-bottom : 1px solid silver; **/ }
-entries h3 {clear: both;padding-top: 1em; /** margin-top: 1em; **/ }
-entries div h1.big {margin-bottom: 1.5em;}
-.post h3 {border-bottom : none;letter-spacing : normal;margin-bottom : -0.5em;}
-blockquote {background-color : #f3f3f3;padding : 10px;margin : 15px 0;}
-.big {display : inline;font-size : 3em;}
-.results_content {padding : 0 0 .5em 0;border-bottom : 1px solid silver;}
-span.archive-meta {font-size: .9em;}
-a.archive-permalink {color:#444444;display: block;font-size: 1.2em;}
-.except {margin-top : 1em;}
-div.results_date {margin-top: .5em;font-size: .9em;}
-.archlist {float : left;color : #333;width : 100%;}
-ul.archlist li {display : inline;list-style-type : none;margin-right : 10px;float : left;display : block;width : 215px;}
-ul.archlist li a {float : left;margin-right : 3px;}
-ul.archlist li a:hover {background : #f3f3f3 !important;color : #029A00;}
-div.post p img {max-width: 580px;}
-div.post-tags {margin: .25em 0;}
+a:hover {
+ background: inherit;
+ color: #029A00;
+ outline: 0 none;
+ text-decoration: none;
+}
-.post ul li {list-style-image: url("dot1.png");}
+a:visited {
+ outline: 0 none;
+ text-decoration: none;
+}
-.post li li {list-style-image: url("dot2.png");}
+.entries {
+ float: left;
+ line-height: 1.7em;
+ padding: 0 0 15px;
+ width: 590px;
+}
-.post li li li {list-style-image: url("dot3.png");}
+div#entries {
+ border-right: 0 solid #F2F2F2;
+ padding-right: 15px;
+}
-.post li li li li {list-style-image: url("dot4.png");}
+.post {
+ margin-bottom: 2em;
+ text-align: justify;
+}
-h3 {color:#555;font-size:17px;font-weight:bold;letter-spacing:0em;margin-bottom:0.1em;text-transform:none;}
+.title {
+ display: inline;
+ font-size: 2em;
+ line-height: 1em;
+ margin-bottom: 0.2em;
+ margin-top: 2.5em;
+ font-weight: bold;
+}
-.cm-btn ul {padding: 5px;margin: 10px 0;list-style: none;background-color: #FFF;float: left;clear: left;}
+.intro {
+ padding-bottom: 5px;
+ padding-top: 5px;
+}
-.cm-btn-line ul {border-bottom: 1px solid #E7E7E7;}
+.titleRegular {
+ clear: both;
+ padding-top: 1em;
+ border-bottom: medium none;
+ letter-spacing: normal;
+ margin-bottom: -0.5em;
+ color: #555555;
+ font-size: 17px;
+ font-weight: bold;
+ text-transform: none
+}
-.cm-btn ul li {float: left;display: inline; /*For ignore double margin in IE6*/margin: 0 10px;}
+.pnlOptions {
+ border-bottom: 1px solid #E7E7E7;
+ background-color: #FFFFFF;
+ clear: left;
+ float: left;
+ list-style: none outside none;
+ margin: 10px 10px;
+ margin-top: 15px;
+ padding: 5px;
+ display: inline;
+}
-.cm-btn ul li a {text-decoration: none;float:left;color: #999;cursor: pointer;font: 900 14px/22px "Arial", Helvetica, sans-serif;}
+.option {
+ background: url("btn-blue.png") no-repeat scroll right top transparent;
+ float: left;
+ margin-right: 10px;
+}
-.cm-btn ul li a span {
- margin: 0 10px 0 -10px;
+.option a {
+ background: url("btn-blue.png") no-repeat scroll left top transparent;
+ color: #13335B;
+ cursor: pointer;
+ float: left;
+ font: 900 14px/22px "Arial",Helvetica,sans-serif;
+ text-decoration: none;
padding: 1px 8px 5px 18px;
- position: relative; /*To fix IE6 problem (not displaying)*/
- float:left;
}
-/*BLUE*/
-.cm-btn ul.blue li a.current, .cm-btn ul.blue li a:hover {
- background: url(btn-blue.png) no-repeat top right;
+.option a:hover {
+ color: #951400;
}
-.cm-btn ul.blue li a.current {
- color: #13335b;
+.option a:active {
+ color: #029A00;
}
-.cm-btn ul.blue li a:hover {
- color: #951400;
+.optionOther {
+ float: left;
}
-.cm-btn ul.blue li a:active {
- color: #029A00;
+.optionOther input {
+ margin: 5px 10px;
}
-.cm-btn ul.blue li a.current span, .cm-btn ul.blue li a:hover span {
- background: url(btn-blue.png) no-repeat top left;
+.labelOther {
+ float: left;
}
-/*ORANGE*/
-.cm-btn ul.orange li a.current, .cm-btn ul.orange li a:hover {
- background: url(btn-orange.png) no-repeat top right;
+.gwt-TextBox {
+ float: left;
+}
+.divTextDonate {
+ clear: both;
+ float: none;
}
-.cm-btn ul.orange li a.current {
- color: #FFFFFF;
+.textDonate {
+ float: left;
+ margin-top: 20px;
}
-.cm-btn ul.orange li a:hover {
- color: #951400;
+.textDonateNewLine {
+ clear: both;
+ float: none;
}
-.cm-btn ul.orange li a:active {
- color: #029A00;
+.divTextOtherBank {
+ clear: both;
+ float: none;
+ margin-top: 20px;
}
-
-.cm-btn ul.orange li a.current span, .cm-btn ul.orange li a:hover span {background: url(btn-orange.png) no-repeat top left;}
-
-
.gwt-DialogBox {
border: 2px solid #AAAAAA;
background-color: white;
@@ -401,4 +430,4 @@
.gwt-DisclosurePanel .header {
background-color: #e8eef7;
cursor: hand;
-}
+}
\ No newline at end of file
Modified: donate/war/Donate.html
===================================================================
--- donate/war/Donate.html 2011-06-14 18:51:42 UTC (rev 1405)
+++ donate/war/Donate.html 2011-06-14 18:52:02 UTC (rev 1406)
@@ -11,7 +11,7 @@
<!-- -->
<!-- Any title is fine -->
<!-- -->
- <title>Wrapper HTML for Donate</title>
+ <title>Donate | Comunes</title>
<!-- -->
<!-- This script loads your compiled module. -->
@@ -33,4 +33,4 @@
<iframe id="__gwt_historyFrame" style="width:0;height:0;border:0"></iframe>
</body>
-</html>
+</html>
\ No newline at end of file
1
0