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
- 1587 discussions
Author: vjrj
Date: 2008-12-10 02:36:03 +0100 (Wed, 10 Dec 2008)
New Revision: 989
Added:
trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionToolbarMenuRadioDescriptor.java
trunk/src/main/java/org/ourproject/kune/platf/client/errors/NameInUseException.java
trunk/src/main/java/org/ourproject/kune/platf/client/errors/NameNotPermittedException.java
trunk/src/main/java/org/ourproject/kune/platf/server/manager/file/FileDownloadManagerUtils.java
trunk/src/main/java/org/ourproject/kune/platf/server/utils/FilenameUtils.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/RadioMustBeChecked.java
trunk/src/main/java/org/ourproject/kune/workspace/client/title/RenameAction.java
trunk/src/test/java/org/ourproject/kune/platf/server/manager/file/FileDownloadManagerTest.java
Removed:
trunk/src/main/java/org/ourproject/kune/platf/server/manager/file/FileDownloadManagerAbstract.java
Modified:
trunk/CREDITS
trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogFolderContentPresenter.java
trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogViewerPresenter.java
trunk/src/main/java/org/ourproject/kune/chat/client/cnt/ChatRoomPresenter.java
trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientModule.java
trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocFolderContentPanel.java
trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocFolderContentPresenter.java
trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentViewerPresenter.java
trunk/src/main/java/org/ourproject/kune/gallery/client/cnt/GalleryFolderContentPresenter.java
trunk/src/main/java/org/ourproject/kune/gallery/client/cnt/GalleryViewerPresenter.java
trunk/src/main/java/org/ourproject/kune/platf/client/PlatfMessages.java
trunk/src/main/java/org/ourproject/kune/platf/client/actions/toolbar/ActionToolbarPanel.java
trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneModule.java
trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneWorkspaceModule.java
trunk/src/main/java/org/ourproject/kune/platf/client/ui/AbstractLabel.java
trunk/src/main/java/org/ourproject/kune/platf/client/ui/EditableClickListener.java
trunk/src/main/java/org/ourproject/kune/platf/client/ui/EditableIconLabel.java
trunk/src/main/java/org/ourproject/kune/platf/server/access/FinderService.java
trunk/src/main/java/org/ourproject/kune/platf/server/access/FinderServiceDefault.java
trunk/src/main/java/org/ourproject/kune/platf/server/content/ContainerManagerDefault.java
trunk/src/main/java/org/ourproject/kune/platf/server/content/ContentManagerDefault.java
trunk/src/main/java/org/ourproject/kune/platf/server/domain/Container.java
trunk/src/main/java/org/ourproject/kune/platf/server/domain/Content.java
trunk/src/main/java/org/ourproject/kune/platf/server/manager/file/EntityLogoDownloadManager.java
trunk/src/main/java/org/ourproject/kune/platf/server/manager/file/FileDownloadManager.java
trunk/src/main/java/org/ourproject/kune/platf/server/manager/file/FileUtils.java
trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiFolderContentPresenter.java
trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiViewerPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/AbstractFoldableContentActions.java
trunk/src/main/java/org/ourproject/kune/workspace/client/WorkspaceMessages.java
trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/AbstractContentView.java
trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/FoldableContentPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/FoldableContentPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/ctxnav/ContextNavigator.java
trunk/src/main/java/org/ourproject/kune/workspace/client/ctxnav/ContextNavigatorPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/newgroup/NewGroupPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/nohomepage/NoHomePagePanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/signin/RegisterForm.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/title/EntityTitlePanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/title/EntityTitlePresenter.java
trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/SignInSeleniumTest.java
trunk/src/test/java/org/ourproject/kune/platf/server/content/ContentManagerDefaultTest.java
Log:
Incomplete - task Content name verifications
Complete - task ActionDescriptionRadio
Complete - task pdf to img for previews
Complete - task When empty doc show "Edit this doc" message
Modified: trunk/CREDITS
===================================================================
--- trunk/CREDITS 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/CREDITS 2008-12-10 01:36:03 UTC (rev 989)
@@ -10,7 +10,7 @@
Contributors
--------------------------------------------------------------------------------
-* Thanks to Samer Hassan for all the feedback and ideas.
+* Thanks to Samer Hassan for all the feedback, ideas and help with translations.
* Antonio Martins, Jéferson Assumção, Moacir Gadotti and the Instituto Paulo
Freire staff.
* Daniel Jiménez for the initial help
Modified: trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogFolderContentPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogFolderContentPresenter.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogFolderContentPresenter.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -40,7 +40,7 @@
public BlogFolderContentPresenter(StateManager stateManager, Session session, ActionContentToolbar toolbar,
final ActionRegistry<StateToken> actionRegistry, I18nTranslationService i18n,
Provider<FileDownloadUtils> downloadProvider) {
- super(BlogClientTool.NAME, stateManager, session, toolbar, actionRegistry, downloadProvider);
+ super(BlogClientTool.NAME, stateManager, session, toolbar, actionRegistry, downloadProvider, i18n);
this.i18n = i18n;
}
Modified: trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogViewerPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogViewerPresenter.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogViewerPresenter.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -36,7 +36,7 @@
public BlogViewerPresenter(StateManager stateManager, Session session, I18nUITranslationService i18n,
ActionContentToolbar toolbar, ContentActionRegistry actionRegistry,
Provider<FileDownloadUtils> downloadProvider) {
- super(BlogClientTool.NAME, stateManager, session, toolbar, actionRegistry, downloadProvider);
+ super(BlogClientTool.NAME, stateManager, session, toolbar, actionRegistry, downloadProvider, i18n);
}
public void init(BlogViewerView view) {
Modified: trunk/src/main/java/org/ourproject/kune/chat/client/cnt/ChatRoomPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/chat/client/cnt/ChatRoomPresenter.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/main/java/org/ourproject/kune/chat/client/cnt/ChatRoomPresenter.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -41,7 +41,7 @@
public ChatRoomPresenter(StateManager stateManager, Session session, I18nUITranslationService i18n,
ActionContentToolbar toolbar, final ActionRegistry<StateToken> actionRegistry,
Provider<FileDownloadUtils> downloadProvider) {
- super(ChatClientTool.NAME, stateManager, session, toolbar, actionRegistry, downloadProvider);
+ super(ChatClientTool.NAME, stateManager, session, toolbar, actionRegistry, downloadProvider, i18n);
this.i18n = i18n;
}
Modified: trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientModule.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientModule.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -108,7 +108,7 @@
public DocFolderContent create() {
final DocFolderContentPresenter presenter = new DocFolderContentPresenter($(StateManager.class),
$(Session.class), $(ActionContentToolbar.class), $(ContentActionRegistry.class),
- $$(FileDownloadUtils.class));
+ $$(FileDownloadUtils.class), $(I18nTranslationService.class));
final DocFolderContentView view = new DocFolderContentPanel($(WorkspaceSkeleton.class),
$(I18nTranslationService.class));
presenter.init(view);
Modified: trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocFolderContentPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocFolderContentPanel.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocFolderContentPanel.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -27,5 +27,6 @@
public DocFolderContentPanel(WorkspaceSkeleton ws, I18nTranslationService i18n) {
super(ws, i18n);
+ setInfo("");
}
}
Modified: trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocFolderContentPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocFolderContentPresenter.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocFolderContentPresenter.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -23,6 +23,7 @@
import org.ourproject.kune.platf.client.actions.ActionRegistry;
import org.ourproject.kune.platf.client.actions.toolbar.ActionContentToolbar;
import org.ourproject.kune.platf.client.dto.StateToken;
+import org.ourproject.kune.platf.client.services.I18nTranslationService;
import org.ourproject.kune.platf.client.state.Session;
import org.ourproject.kune.platf.client.state.StateManager;
import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
@@ -33,8 +34,9 @@
public class DocFolderContentPresenter extends FoldableContentPresenter implements DocFolderContent {
public DocFolderContentPresenter(StateManager stateManager, Session session, ActionContentToolbar toolbar,
- final ActionRegistry<StateToken> actionRegistry, Provider<FileDownloadUtils> downloadProvider) {
- super(DocumentClientTool.NAME, stateManager, session, toolbar, actionRegistry, downloadProvider);
+ final ActionRegistry<StateToken> actionRegistry, Provider<FileDownloadUtils> downloadProvider,
+ I18nTranslationService i18n) {
+ super(DocumentClientTool.NAME, stateManager, session, toolbar, actionRegistry, downloadProvider, i18n);
}
public void init(final DocFolderContentView view) {
Modified: trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentViewerPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentViewerPresenter.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentViewerPresenter.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -36,7 +36,7 @@
public DocumentViewerPresenter(StateManager stateManager, Session session, I18nUITranslationService i18n,
ActionContentToolbar toolbar, ContentActionRegistry actionRegistry,
Provider<FileDownloadUtils> downloadProvider) {
- super(DocumentClientTool.NAME, stateManager, session, toolbar, actionRegistry, downloadProvider);
+ super(DocumentClientTool.NAME, stateManager, session, toolbar, actionRegistry, downloadProvider, i18n);
}
public void init(DocumentViewerView view) {
Modified: trunk/src/main/java/org/ourproject/kune/gallery/client/cnt/GalleryFolderContentPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/gallery/client/cnt/GalleryFolderContentPresenter.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/main/java/org/ourproject/kune/gallery/client/cnt/GalleryFolderContentPresenter.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -44,7 +44,7 @@
public GalleryFolderContentPresenter(StateManager stateManager, Session session, ActionContentToolbar toolbar,
final ActionRegistry<StateToken> actionRegistry, I18nTranslationService i18n,
Provider<FileDownloadUtils> downloadUtils, Provider<FileDownloadUtils> downloadProvider) {
- super(GalleryClientTool.NAME, stateManager, session, toolbar, actionRegistry, downloadProvider);
+ super(GalleryClientTool.NAME, stateManager, session, toolbar, actionRegistry, downloadProvider, i18n);
this.i18n = i18n;
this.downloadUtils = downloadUtils;
}
Modified: trunk/src/main/java/org/ourproject/kune/gallery/client/cnt/GalleryViewerPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/gallery/client/cnt/GalleryViewerPresenter.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/main/java/org/ourproject/kune/gallery/client/cnt/GalleryViewerPresenter.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -36,7 +36,7 @@
public GalleryViewerPresenter(StateManager stateManager, Session session, I18nUITranslationService i18n,
ActionContentToolbar toolbar, ContentActionRegistry actionRegistry,
Provider<FileDownloadUtils> downloadProvider) {
- super(GalleryClientTool.NAME, stateManager, session, toolbar, actionRegistry, downloadProvider);
+ super(GalleryClientTool.NAME, stateManager, session, toolbar, actionRegistry, downloadProvider, i18n);
}
public void init(GalleryViewerView view) {
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/PlatfMessages.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/PlatfMessages.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/PlatfMessages.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -9,7 +9,7 @@
String NAME_IN_USE = "This name in already in use. Please try with a different name";
String INCORRECT_NICKNAME_EMAIL_OR_PASSWORD = "The nickname/email or password is incorrect";
String YOUR_HOMEPAGE = "Your homepage";
- String USER_DON_T_HAVE_A_HOMEPAGE = "This user does not have a homepage";
+ String USER_DOESN_T_HAVE_A_HOMEPAGE = "This user does not have a homepage";
String ENT_LOGO_SELECTOR_NORMAL_TITLE = "Logo";
String ENT_LOGO_SELECTOR_PERSON_TITLE = "Avatar";
String ENT_OPTIONS_GROUP_TITLE = "Group options";
Added: trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionToolbarMenuRadioDescriptor.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionToolbarMenuRadioDescriptor.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionToolbarMenuRadioDescriptor.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -0,0 +1,26 @@
+package org.ourproject.kune.platf.client.actions;
+
+import org.ourproject.kune.platf.client.dto.AccessRolDTO;
+import org.ourproject.kune.workspace.client.socialnet.RadioMustBeChecked;
+
+import com.calclab.suco.client.listener.Listener;
+
+public class ActionToolbarMenuRadioDescriptor<T> extends ActionToolbarMenuDescriptor<T> {
+ private final String group;
+ private final RadioMustBeChecked mustBeChecked;
+
+ public ActionToolbarMenuRadioDescriptor(AccessRolDTO accessRol, ActionToolbarPosition toolbarPosition,
+ Listener<T> onPerformCall, String group, RadioMustBeChecked mustBeChecked) {
+ super(accessRol, toolbarPosition, onPerformCall);
+ this.group = group;
+ this.mustBeChecked = mustBeChecked;
+ }
+
+ public String getGroup() {
+ return group;
+ }
+
+ public boolean mustBeChecked() {
+ return mustBeChecked.mustBeChecked();
+ }
+}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/actions/toolbar/ActionToolbarPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/actions/toolbar/ActionToolbarPanel.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/actions/toolbar/ActionToolbarPanel.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -9,6 +9,7 @@
import org.ourproject.kune.platf.client.actions.ActionToolbarButtonSeparator;
import org.ourproject.kune.platf.client.actions.ActionToolbarDescriptor;
import org.ourproject.kune.platf.client.actions.ActionToolbarMenuDescriptor;
+import org.ourproject.kune.platf.client.actions.ActionToolbarMenuRadioDescriptor;
import org.ourproject.kune.platf.client.actions.ActionToolbarPosition;
import org.ourproject.kune.workspace.client.skel.SimpleToolbar;
import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton;
@@ -21,6 +22,7 @@
import com.gwtext.client.widgets.ToolbarButton;
import com.gwtext.client.widgets.event.ButtonListenerAdapter;
import com.gwtext.client.widgets.menu.BaseItem;
+import com.gwtext.client.widgets.menu.CheckItem;
import com.gwtext.client.widgets.menu.Item;
import com.gwtext.client.widgets.menu.Menu;
import com.gwtext.client.widgets.menu.MenuItem;
@@ -169,12 +171,23 @@
private Item createToolbarMenu(final ActionToolbarPosition toolBarPos, final String menuTitle,
final String menuSubTitle, final ActionItem<T> actionItem, String id) {
final ActionToolbarMenuDescriptor<T> action = (ActionToolbarMenuDescriptor<T>) actionItem.getAction();
- final Item item = new Item(action.getText(), new BaseItemListenerAdapter() {
+ final Item item;
+ if (action instanceof ActionToolbarMenuRadioDescriptor) {
+ CheckItem checkItem = new CheckItem(action.getText());
+ ActionToolbarMenuRadioDescriptor<T> radioDescriptor = (ActionToolbarMenuRadioDescriptor<T>) action;
+ checkItem.setGroup(radioDescriptor.getGroup());
+ checkItem.setChecked(radioDescriptor.mustBeChecked());
+ item = checkItem;
+ } else {
+ item = new Item(action.getText());
+ }
+ BaseItemListenerAdapter clickListener = new BaseItemListenerAdapter() {
@Override
public void onClick(BaseItem item, EventObject e) {
actionManagerProvider.get().doAction(actionItem);
}
- });
+ };
+ item.addListener(clickListener);
item.setIcon(action.getIconUrl());
item.setTitle(action.getToolTip());
if (id != null) {
Added: trunk/src/main/java/org/ourproject/kune/platf/client/errors/NameInUseException.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/errors/NameInUseException.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/errors/NameInUseException.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -0,0 +1,24 @@
+/*
+ *
+ * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.ourproject.kune.platf.client.errors;
+
+public class NameInUseException extends DefaultException {
+ private static final long serialVersionUID = 1L;
+}
Added: trunk/src/main/java/org/ourproject/kune/platf/client/errors/NameNotPermittedException.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/errors/NameNotPermittedException.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/errors/NameNotPermittedException.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -0,0 +1,24 @@
+/*
+ *
+ * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.ourproject.kune.platf.client.errors;
+
+public class NameNotPermittedException extends DefaultException {
+ private static final long serialVersionUID = 1L;
+}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneModule.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneModule.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -121,7 +121,7 @@
import org.ourproject.kune.workspace.client.tags.TagsSummary;
import org.ourproject.kune.workspace.client.themes.WsThemePresenter;
import org.ourproject.kune.workspace.client.title.EntitySubTitle;
-import org.ourproject.kune.workspace.client.title.EntityTitle;
+import org.ourproject.kune.workspace.client.title.RenameAction;
import com.calclab.suco.client.ioc.decorator.NoDecoration;
import com.calclab.suco.client.ioc.decorator.Singleton;
@@ -486,10 +486,9 @@
@Override
public ContextNavigator create() {
final ContextNavigatorPresenter presenter = new ContextNavigatorPresenter($(StateManager.class),
- $(Session.class), $$(ContentServiceAsync.class), i18n, $(EntityTitle.class),
- $(ContentIconsRegistry.class), $(ContentCapabilitiesRegistry.class),
- $(ActionContextToolbar.class), $(ContextActionRegistry.class), $$(FileDownloadUtils.class),
- true);
+ $(Session.class), $$(ContentServiceAsync.class), i18n, $(ContentIconsRegistry.class),
+ $(ContentCapabilitiesRegistry.class), $(ActionContextToolbar.class),
+ $(ContextActionRegistry.class), $$(FileDownloadUtils.class), true, $(RenameAction.class));
final ContextNavigatorPanel panel = new ContextNavigatorPanel(presenter, i18n,
$(WorkspaceSkeleton.class), $(ActionManager.class));
presenter.init(panel);
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneWorkspaceModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneWorkspaceModule.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneWorkspaceModule.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -42,7 +42,6 @@
import org.ourproject.kune.platf.client.ui.rate.RateItPresenter;
import org.ourproject.kune.platf.client.ui.rate.RatePanel;
import org.ourproject.kune.platf.client.ui.rate.RatePresenter;
-import org.ourproject.kune.workspace.client.ctxnav.ContextNavigator;
import org.ourproject.kune.workspace.client.entityheader.EntityHeader;
import org.ourproject.kune.workspace.client.entityheader.EntityHeaderPanel;
import org.ourproject.kune.workspace.client.entityheader.EntityHeaderPresenter;
@@ -123,8 +122,10 @@
import org.ourproject.kune.workspace.client.title.EntityTitle;
import org.ourproject.kune.workspace.client.title.EntityTitlePanel;
import org.ourproject.kune.workspace.client.title.EntityTitlePresenter;
+import org.ourproject.kune.workspace.client.title.RenameAction;
import com.calclab.suco.client.ioc.decorator.NoDecoration;
+import com.calclab.suco.client.ioc.decorator.Singleton;
import com.calclab.suco.client.ioc.module.AbstractModule;
import com.calclab.suco.client.ioc.module.Factory;
@@ -282,9 +283,9 @@
register(ApplicationComponentGroup.class, new Factory<EntityTitle>(EntityTitle.class) {
@Override
public EntityTitle create() {
- final EntityTitlePresenter presenter = new EntityTitlePresenter($(KuneErrorHandler.class),
- $(StateManager.class), $(Session.class), $$(ContentServiceAsync.class),
- $$(ContextNavigator.class), $(ContentIconsRegistry.class), $(RenamableRegistry.class));
+ final EntityTitlePresenter presenter = new EntityTitlePresenter($(StateManager.class),
+ $(Session.class), $(ContentIconsRegistry.class), $(RenamableRegistry.class),
+ $(RenameAction.class));
final EntityTitlePanel panel = new EntityTitlePanel($(WorkspaceSkeleton.class), presenter);
presenter.init(panel);
return presenter;
@@ -458,5 +459,13 @@
}
});
+ register(Singleton.class, new Factory<RenameAction>(RenameAction.class) {
+ @Override
+ public RenameAction create() {
+ return new RenameAction($(I18nTranslationService.class), $(Session.class),
+ $$(ContentServiceAsync.class));
+ }
+ });
+
}
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/ui/AbstractLabel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/AbstractLabel.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/AbstractLabel.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -56,4 +56,6 @@
void setTitle(final String title);
+ void setVisible(boolean visible);
+
}
\ No newline at end of file
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/ui/EditableClickListener.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/EditableClickListener.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/EditableClickListener.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -21,6 +21,7 @@
public interface EditableClickListener {
+ @Deprecated
void onEdited(String text);
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/ui/EditableIconLabel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/EditableIconLabel.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/EditableIconLabel.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -19,13 +19,17 @@
*/
package org.ourproject.kune.platf.client.ui;
+import com.calclab.suco.client.listener.Event2;
+import com.calclab.suco.client.listener.Listener2;
import com.google.gwt.user.client.ui.AbstractImagePrototype;
+import com.google.gwt.user.client.ui.ChangeListener;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.FocusListener;
+import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.MouseListenerAdapter;
+import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.Widget;
-import com.gwtext.client.widgets.MessageBox;
-import com.gwtext.client.widgets.MessageBoxConfig;
public class EditableIconLabel extends Composite {
@@ -36,10 +40,15 @@
private EditableClickListener editableListener;
private MouseListenerAdapter mouseOverListener;
private final AbstractLabel label;
+ @SuppressWarnings("unused")
private String renameDialogTitle;
+ @SuppressWarnings("unused")
private String renameDialogLabel;
private String doubleClickToRenameLabel;
private String clickToRenameLabel;
+ private Event2<String, String> onEdit;
+ private TextBox editor;
+ private HorizontalPanel hp;
public EditableIconLabel(final AbstractImagePrototype icon, final String text, final boolean useDoubleClick,
final EditableClickListener editableListenerOrig) {
@@ -51,6 +60,7 @@
final boolean useDoubleClick, final EditableClickListener editableListenerOrig) {
label = new IconHyperlink(icon, text, targetHistoryToken);
init(text, useDoubleClick, editableListenerOrig);
+ this.onEdit = new Event2<String, String>("onEdit");
}
public EditableIconLabel(final EditableClickListener editableListener) {
@@ -61,6 +71,7 @@
final EditableClickListener editableListenerOrig) {
label = new LabelWrapper(text, wordWrap);
init(text, useDoubleClick, editableListenerOrig);
+ this.onEdit = new Event2<String, String>("onEdit");
}
public EditableIconLabel(final String text, final boolean useDoubleClick,
@@ -80,6 +91,10 @@
return label.getText();
}
+ public void onEdit(final Listener2<String, String> slot) {
+ onEdit.add(slot);
+ }
+
public void restoreOldText() {
label.setText(oldText);
this.currentText = this.oldText;
@@ -116,10 +131,12 @@
this.editableListener = editableListener;
}
+ @Deprecated
public void setRenameDialogLabel(final String renameDialogLabel) {
this.renameDialogLabel = renameDialogLabel;
}
+ @Deprecated
public void setRenameDialogTitle(final String renameDialogTitle) {
this.renameDialogTitle = renameDialogTitle;
}
@@ -130,21 +147,33 @@
label.setText(text);
}
+ private void afterEdit() {
+ String text = editor.getText();
+ onEdit.fire(currentText, text);
+ editor.setVisible(false);
+ label.setVisible(true);
+ label.removeStyleDependentName("high");
+ }
+
private void init(final String text, final boolean useDoubleClick, final EditableClickListener editableListenerOrig) {
doubleClickToRenameLabel = "Double click to rename";
clickToRenameLabel = "Click to rename";
renameDialogLabel = "Write a new name:";
renameDialogTitle = "Rename";
- initWidget((Widget) label);
+ hp = new HorizontalPanel();
+ hp.add((Widget) label);
+ initWidget(hp);
this.currentText = text;
this.oldText = text;
this.useDoubleClick = useDoubleClick;
this.editableListener = editableListenerOrig;
+ this.onEdit = new Event2<String, String>("onEdit");
this.listener = new ClickListener() {
public void onClick(final Widget sender) {
- showEditableDialog();
+ showEditor();
}
};
+
mouseOverListener = new MouseListenerAdapter() {
@Override
public void onMouseEnter(final Widget sender) {
@@ -169,30 +198,30 @@
label.removeMouseListener(mouseOverListener);
}
- private void showEditableDialog() {
- MessageBox.show(new MessageBoxConfig() {
- {
- // i18n
- setClosable(true);
- setModal(true);
- setWidth(300);
- setDefaultTextHeight(2);
- setButtons(MessageBox.OKCANCEL);
- setTitle(renameDialogTitle);
- setMsg(renameDialogLabel);
- setCallback(new MessageBox.PromptCallback() {
- public void execute(final String btnID, final String text) {
- if (btnID.equals("ok") && text != null) {
- editableListener.onEdited(text);
- } else {
- // Do nothing
- }
- }
- });
- setMultiline(true);
- setValue(currentText);
- }
- });
+ private void showEditor() {
+ int hpWidth = hp.getParent().getOffsetWidth();
+ label.setVisible(false);
+ if (editor == null) {
+ editor = new TextBox();
+ hp.add(editor);
+ editor.addFocusListener(new FocusListener() {
+ public void onFocus(Widget sender) {
+ }
+
+ public void onLostFocus(Widget sender) {
+ afterEdit();
+ }
+ });
+ editor.addChangeListener(new ChangeListener() {
+ public void onChange(Widget sender) {
+ afterEdit();
+ }
+ });
+ }
+ editor.setPixelSize(hpWidth, 22);
+ editor.setText(currentText);
+ editor.setVisible(true);
+ editor.setFocus(true);
}
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/server/access/FinderService.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/access/FinderService.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/access/FinderService.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -30,14 +30,14 @@
public interface FinderService {
+ Comment getComment(Long commentId) throws DefaultException;
+
Content getContent(Long contentId) throws DefaultException;
Content getContent(StateToken token, Group defaultGroup) throws DefaultException;
Container getFolder(Long folderId) throws DefaultException;
- Comment getComment(Long commentId) throws DefaultException;
-
Rate getRate(User user, Content content);
Double getRateAvg(Content content);
Modified: trunk/src/main/java/org/ourproject/kune/platf/server/access/FinderServiceDefault.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/access/FinderServiceDefault.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/access/FinderServiceDefault.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -131,11 +131,11 @@
private Content findByContentReference(final String groupName, final String toolName, final Long folderId,
final Long contentId) throws ContentNotFoundException {
- final Content descriptor = contentManager.find(contentId);
- if (descriptor == null) {
+ final Content content = contentManager.find(contentId);
+ if (content == null) {
throw new ContentNotFoundException();
}
- final Container container = descriptor.getContainer();
+ final Container container = content.getContainer();
if (!container.getId().equals(folderId)) {
throw new ContentNotFoundException();
@@ -146,7 +146,7 @@
if (!container.getOwner().getShortName().equals(groupName)) {
throw new ContentNotFoundException();
}
- return descriptor;
+ return content;
}
private Content findByFolderReference(final String groupName, final Long folderId) {
@@ -186,9 +186,9 @@
}
private Content generateFolderFakeContent(final Container container) {
- final Content descriptor = new Content();
- descriptor.setContainer(container);
- return descriptor;
+ final Content content = new Content();
+ content.setContainer(container);
+ return content;
}
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/server/content/ContainerManagerDefault.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/content/ContainerManagerDefault.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/content/ContainerManagerDefault.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -29,12 +29,16 @@
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.search.Query;
import org.ourproject.kune.platf.client.errors.DefaultException;
+import org.ourproject.kune.platf.client.errors.NameInUseException;
import org.ourproject.kune.platf.server.domain.AccessLists;
import org.ourproject.kune.platf.server.domain.Container;
+import org.ourproject.kune.platf.server.domain.Content;
import org.ourproject.kune.platf.server.domain.Group;
import org.ourproject.kune.platf.server.domain.I18nLanguage;
+import org.ourproject.kune.platf.server.manager.file.FileUtils;
import org.ourproject.kune.platf.server.manager.impl.DefaultManager;
import org.ourproject.kune.platf.server.manager.impl.SearchResult;
+import org.ourproject.kune.platf.server.utils.FilenameUtils;
import com.google.inject.Inject;
import com.google.inject.Provider;
@@ -43,13 +47,20 @@
@Singleton
public class ContainerManagerDefault extends DefaultManager<Container, Long> implements ContainerManager {
+ private final Container containerFinder;
+ private final Content contentFinder;
+
@Inject
- public ContainerManagerDefault(final Provider<EntityManager> provider) {
+ public ContainerManagerDefault(Content contentFinder, Container containerFinder,
+ final Provider<EntityManager> provider) {
super(provider, Container.class);
+ this.contentFinder = contentFinder;
+ this.containerFinder = containerFinder;
}
public Container createFolder(final Group group, final Container parent, final String name,
final I18nLanguage language, String typeId) {
+ findInexistentName(parent, name);
final List<Container> parentAbsolutePath = parent.getAbsolutePath();
final List<Container> childAbsolutePath = new ArrayList<Container>();
@@ -77,12 +88,17 @@
public String renameFolder(final Group group, final Container container, final String newName)
throws DefaultException {
+ FilenameUtils.checkBasicFilename(newName);
+ String newNameWithoutNT = FilenameUtils.chomp(newName);
if (container.isRoot()) {
throw new RuntimeException("Root folder cannot be renamed");
}
- container.setName(newName);
+ if (findIfExistsTitle(container.getParent(), newNameWithoutNT)) {
+ throw new NameInUseException();
+ }
+ container.setName(newNameWithoutNT);
persist(container);
- return newName;
+ return newNameWithoutNT;
}
public SearchResult<Container> search(final String search) {
@@ -105,4 +121,19 @@
persist(container);
}
+ /** Duplicate code in ContentMD **/
+ private boolean findIfExistsTitle(Container container, String title) {
+ return (contentFinder.findIfExistsTitle(container, title) > 0)
+ || (containerFinder.findIfExistsTitle(container, title) > 0);
+ }
+
+ /** Duplicate code in ContentMD **/
+ private String findInexistentName(Container container, String title) {
+ String initialTitle = new String(title);
+ while (findIfExistsTitle(container, initialTitle)) {
+ initialTitle = FileUtils.getNextSequentialFileName(initialTitle);
+ }
+ return initialTitle;
+ }
+
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/server/content/ContentManagerDefault.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/content/ContentManagerDefault.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/content/ContentManagerDefault.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -31,6 +31,7 @@
import org.apache.lucene.search.Query;
import org.ourproject.kune.platf.client.errors.DefaultException;
import org.ourproject.kune.platf.client.errors.I18nNotFoundException;
+import org.ourproject.kune.platf.client.errors.NameInUseException;
import org.ourproject.kune.platf.client.errors.UserNotFoundException;
import org.ourproject.kune.platf.client.ui.TextUtils;
import org.ourproject.kune.platf.server.access.FinderService;
@@ -44,8 +45,10 @@
import org.ourproject.kune.platf.server.domain.Tag;
import org.ourproject.kune.platf.server.domain.User;
import org.ourproject.kune.platf.server.manager.TagManager;
+import org.ourproject.kune.platf.server.manager.file.FileUtils;
import org.ourproject.kune.platf.server.manager.impl.DefaultManager;
import org.ourproject.kune.platf.server.manager.impl.SearchResult;
+import org.ourproject.kune.platf.server.utils.FilenameUtils;
import com.google.inject.Inject;
import com.google.inject.Provider;
@@ -58,11 +61,16 @@
private final User userFinder;
private final I18nLanguage languageFinder;
private final TagManager tagManager;
+ private final Content contentFinder;
+ private final Container containerFinder;
@Inject
- public ContentManagerDefault(final Provider<EntityManager> provider, final FinderService finder,
- final User userFinder, final I18nLanguage languageFinder, final TagManager tagManager) {
+ public ContentManagerDefault(final Content contentFinder, final Container containerFinder,
+ final Provider<EntityManager> provider, final FinderService finder, final User userFinder,
+ final I18nLanguage languageFinder, final TagManager tagManager) {
super(provider, Content.class);
+ this.contentFinder = contentFinder;
+ this.containerFinder = containerFinder;
this.finder = finder;
this.userFinder = userFinder;
this.languageFinder = languageFinder;
@@ -80,6 +88,8 @@
public Content createContent(final String title, final String body, final User author, final Container container,
String typeId) {
+ FilenameUtils.checkBasicFilename(title);
+ String newtitle = findInexistentTitle(container, title);
final Content newContent = new Content();
newContent.addAuthor(author);
newContent.setLanguage(author.getLanguage());
@@ -87,7 +97,7 @@
container.addContent(newContent);
newContent.setContainer(container);
final Revision revision = new Revision(newContent);
- revision.setTitle(title);
+ revision.setTitle(newtitle);
revision.setBody(body);
newContent.addRevision(revision);
return persist(newContent);
@@ -142,8 +152,13 @@
}
public String renameContent(final User user, final Long contentId, final String newTitle) throws DefaultException {
+ String newTitleWithoutNL = FilenameUtils.chomp(newTitle);
+ FilenameUtils.checkBasicFilename(newTitleWithoutNL);
final Content content = finder.getContent(contentId);
- content.getLastRevision().setTitle(newTitle);
+ if (findIfExistsTitle(content.getContainer(), newTitleWithoutNL)) {
+ throw new NameInUseException();
+ }
+ content.getLastRevision().setTitle(newTitleWithoutNL);
return newTitle;
}
@@ -219,4 +234,17 @@
}
content.setTags(tagList);
}
+
+ private boolean findIfExistsTitle(Container container, String title) {
+ return (contentFinder.findIfExistsTitle(container, title) > 0)
+ || (containerFinder.findIfExistsTitle(container, title) > 0);
+ }
+
+ private String findInexistentTitle(Container container, String title) {
+ String initialTitle = new String(title);
+ while (findIfExistsTitle(container, initialTitle)) {
+ initialTitle = FileUtils.getNextSequentialFileName(initialTitle);
+ }
+ return initialTitle;
+ }
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/server/domain/Container.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/domain/Container.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/domain/Container.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -46,6 +46,9 @@
import org.hibernate.search.annotations.Store;
import org.ourproject.kune.platf.client.dto.StateToken;
+import com.google.inject.name.Named;
+import com.wideplay.warp.persist.dao.Finder;
+
@Entity
@Indexed
@Table(name = "containers")
@@ -117,6 +120,11 @@
contents.add(descriptor);
}
+ @Finder(query = "SELECT COUNT(*) FROM Container c WHERE c.parent = :container AND c.name = :title")
+ public Long findIfExistsTitle(@Named("container") Container container, @Named("title") String title) {
+ return null;
+ }
+
public List<Container> getAbsolutePath() {
return absolutePath;
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/server/domain/Content.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/domain/Content.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/domain/Content.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -54,6 +54,9 @@
import org.hibernate.validator.NotNull;
import org.ourproject.kune.platf.client.dto.StateToken;
+import com.google.inject.name.Named;
+import com.wideplay.warp.persist.dao.Finder;
+
@Entity
@Table(name = "contents")
@Indexed
@@ -161,6 +164,11 @@
}
}
+ @Finder(query = "select count(*) from Container ctx, Content ctn where ctn.container.id = ctx.id and ctx = :container and ctn.lastRevision.title = :title")
+ public Long findIfExistsTitle(@Named("container") Container container, @Named("title") String title) {
+ return null;
+ }
+
@Transient
public AccessLists getAccessLists() {
return hasAccessList() ? accessLists : getContainer().getAccessLists();
Modified: trunk/src/main/java/org/ourproject/kune/platf/server/manager/file/EntityLogoDownloadManager.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/manager/file/EntityLogoDownloadManager.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/manager/file/EntityLogoDownloadManager.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -21,6 +21,7 @@
import java.io.IOException;
import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -31,7 +32,7 @@
import com.google.inject.Inject;
-public class EntityLogoDownloadManager extends FileDownloadManagerAbstract {
+public class EntityLogoDownloadManager extends HttpServlet {
private static final long serialVersionUID = 1L;
Modified: trunk/src/main/java/org/ourproject/kune/platf/server/manager/file/FileDownloadManager.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/manager/file/FileDownloadManager.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/manager/file/FileDownloadManager.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -24,6 +24,7 @@
import java.io.OutputStream;
import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -48,14 +49,22 @@
* http://www.onjava.com/pub/a/onjava/excerpt/jebp_3/index1.html?page=1
*
*/
-public class FileDownloadManager extends FileDownloadManagerAbstract {
+public class FileDownloadManager extends HttpServlet {
+ static final String RESP_HEADER_ATTACHMENT_FILENAME = "attachment; filename=\"";
+ static final String RESP_HEADER_CONTEND_DISP = "Content-Disposition";
+ static final String RESP_HEADER_END = "\"";
+
+ static final String APPLICATION_X_DOWNLOAD = "application/x-download";
+
private static final long serialVersionUID = 1L;
@Inject
ContentManager contentManager;
@Inject
KuneProperties kuneProperties;
+ @Inject
+ FileUtils fileUtils;
@Override
protected void doGet(final HttpServletRequest req, final HttpServletResponse resp) throws ServletException,
@@ -65,24 +74,31 @@
final StateToken stateToken = new StateToken(req.getParameter(FileParams.TOKEN));
final String downloadS = req.getParameter(FileParams.DOWNLOAD);
String imageSizeS = req.getParameter(FileParams.IMGSIZE);
- final ImageSize imgsize = imageSizeS == null ? null : ImageSize.valueOf(imageSizeS);
- final boolean download = downloadS != null && downloadS.equals("true") ? true : false;
final Content cnt = getContentForDownload(userHash, stateToken);
+ String absFilename = buildResponse(cnt, stateToken, downloadS, imageSizeS, resp, fileUtils);
+ final OutputStream out = resp.getOutputStream();
+ FileDownloadManagerUtils.returnFile(absFilename, out);
+ }
+
+ String buildResponse(final Content cnt, final StateToken stateToken, final String downloadS, String imageSizeS,
+ final HttpServletResponse resp, FileUtils fileUtils) throws FileNotFoundException, IOException {
+ final ImageSize imgsize = imageSizeS == null ? null : ImageSize.valueOf(imageSizeS);
+ final boolean download = downloadS != null && downloadS.equals("true") ? true : false;
final String absDir = kuneProperties.get(KuneProperties.UPLOAD_LOCATION) + FileUtils.toDir(stateToken);
String filename = cnt.getFilename();
+ String title = cnt.getTitle();
String extension = FileUtils.getFileNameExtension(filename, true);
BasicMimeType mimeType = cnt.getMimeType();
- boolean isPdfAndNotDownload = mimeType.isPdf() && !download;
- if (mimeType.isImage() || isPdfAndNotDownload) {
+ boolean isPdfAndNotDownload = mimeType != null && mimeType.isPdf() && !download;
+ if (mimeType != null && (mimeType.isImage() || isPdfAndNotDownload)) {
String imgsizePrefix = imgsize == null ? "" : "." + imgsize;
String filenameWithoutExtension = FileUtils.getFileNameWithoutExtension(filename, extension);
String filenameResized = filenameWithoutExtension + imgsizePrefix
+ (isPdfAndNotDownload ? ".png" : extension);
- if (new File(absDir + filenameResized).exists()) {
- // thumb can fail
+ if (fileUtils.exist(absDir + filenameResized)) {
filename = filenameResized;
}
}
@@ -95,26 +111,18 @@
final String absFilename = absDir + filename;
- doBuildResp(resp, absFilename, cnt.getTitle(), mimeType, extension, download);
- }
+ final File file = new File(absFilename);
- private void doBuildResp(final HttpServletResponse resp, final String filename, final String otherName,
- final BasicMimeType mimeType, final String extension, final boolean download) throws FileNotFoundException,
- IOException {
- final File file = new File(filename);
-
resp.setContentLength((int) file.length());
if (mimeType == null || download) {
- resp.setContentType("application/x-download");
+ resp.setContentType(APPLICATION_X_DOWNLOAD);
} else if (mimeType.isImage()) {
resp.setContentType(mimeType.toString());
} else {
- resp.setContentType("application/x-download");
+ resp.setContentType(APPLICATION_X_DOWNLOAD);
}
- resp.setHeader("Content-Disposition", "attachment; filename=\"" + otherName + extension + "\"");
-
- final OutputStream out = resp.getOutputStream();
- returnFile(filename, out);
+ resp.setHeader(RESP_HEADER_CONTEND_DISP, RESP_HEADER_ATTACHMENT_FILENAME + title + extension + RESP_HEADER_END);
+ return absFilename;
}
@Authenticated(mandatory = false)
Deleted: trunk/src/main/java/org/ourproject/kune/platf/server/manager/file/FileDownloadManagerAbstract.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/manager/file/FileDownloadManagerAbstract.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/manager/file/FileDownloadManagerAbstract.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -1,49 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */package org.ourproject.kune.platf.server.manager.file;
-
-import java.io.BufferedInputStream;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-import javax.servlet.http.HttpServlet;
-
-public abstract class FileDownloadManagerAbstract extends HttpServlet {
-
- private static final long serialVersionUID = 1L;
-
- public void returnFile(final String filename, final OutputStream out) throws FileNotFoundException, IOException {
- InputStream in = null;
- try {
- in = new BufferedInputStream(new FileInputStream(filename));
- final byte[] buf = new byte[4 * 1024]; // 4K buffer
- int bytesRead;
- while ((bytesRead = in.read(buf)) != -1) {
- out.write(buf, 0, bytesRead);
- }
- } finally {
- if (in != null) {
- in.close();
- }
- }
- }
-}
Copied: trunk/src/main/java/org/ourproject/kune/platf/server/manager/file/FileDownloadManagerUtils.java (from rev 985, trunk/src/main/java/org/ourproject/kune/platf/server/manager/file/FileDownloadManagerAbstract.java)
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/manager/file/FileDownloadManagerAbstract.java 2008-12-05 17:53:45 UTC (rev 985)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/manager/file/FileDownloadManagerUtils.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -0,0 +1,48 @@
+/*
+ *
+ * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */package org.ourproject.kune.platf.server.manager.file;
+
+import java.io.BufferedInputStream;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+public class FileDownloadManagerUtils {
+
+ private static final long serialVersionUID = 1L;
+
+ public static void returnFile(final String filename, final OutputStream out) throws FileNotFoundException,
+ IOException {
+ InputStream in = null;
+ try {
+ in = new BufferedInputStream(new FileInputStream(filename));
+ final byte[] buf = new byte[4 * 1024]; // 4K buffer
+ int bytesRead;
+ while ((bytesRead = in.read(buf)) != -1) {
+ out.write(buf, 0, bytesRead);
+ }
+ } finally {
+ if (in != null) {
+ in.close();
+ }
+ }
+ }
+}
Property changes on: trunk/src/main/java/org/ourproject/kune/platf/server/manager/file/FileDownloadManagerUtils.java
___________________________________________________________________
Name: svn:mergeinfo
+
Modified: trunk/src/main/java/org/ourproject/kune/platf/server/manager/file/FileUtils.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/manager/file/FileUtils.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/manager/file/FileUtils.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -128,4 +128,8 @@
public static String toDir(final StateToken stateToken) {
return SLASH + stateToken.getGroup() + SLASH + stateToken.getTool() + SLASH + stateToken.getFolder() + SLASH;
}
+
+ public boolean exist(String file) {
+ return new File(file).exists();
+ }
}
Added: trunk/src/main/java/org/ourproject/kune/platf/server/utils/FilenameUtils.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/utils/FilenameUtils.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/utils/FilenameUtils.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -0,0 +1,22 @@
+package org.ourproject.kune.platf.server.utils;
+
+import org.apache.commons.lang.StringUtils;
+import org.ourproject.kune.platf.client.errors.NameNotPermittedException;
+
+public class FilenameUtils {
+
+ /**
+ * Check filename is not empty, or '.', or '..'
+ *
+ * @param filename
+ */
+ public static void checkBasicFilename(String filename) {
+ if (filename.length() == 0 || filename.equals(".") || filename.equals("..")) {
+ throw new NameNotPermittedException();
+ }
+ }
+
+ public static String chomp(String filename) {
+ return StringUtils.chomp(filename);
+ }
+}
Modified: trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiFolderContentPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiFolderContentPresenter.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiFolderContentPresenter.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -41,7 +41,7 @@
public WikiFolderContentPresenter(StateManager stateManager, Session session, ActionContentToolbar toolbar,
final ActionRegistry<StateToken> actionRegistry, I18nTranslationService i18n,
Provider<FileDownloadUtils> downloadProvider) {
- super(WikiClientTool.NAME, stateManager, session, toolbar, actionRegistry, downloadProvider);
+ super(WikiClientTool.NAME, stateManager, session, toolbar, actionRegistry, downloadProvider, i18n);
this.i18n = i18n;
}
Modified: trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiViewerPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiViewerPresenter.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiViewerPresenter.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -36,7 +36,7 @@
public WikiViewerPresenter(StateManager stateManager, Session session, I18nUITranslationService i18n,
ActionContentToolbar toolbar, ContentActionRegistry actionRegistry,
Provider<FileDownloadUtils> downloadProvider) {
- super(WikiClientTool.NAME, stateManager, session, toolbar, actionRegistry, downloadProvider);
+ super(WikiClientTool.NAME, stateManager, session, toolbar, actionRegistry, downloadProvider, i18n);
}
public void init(WikiViewerView view) {
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/AbstractFoldableContentActions.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/AbstractFoldableContentActions.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/AbstractFoldableContentActions.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -7,6 +7,7 @@
import org.ourproject.kune.platf.client.actions.ActionToolbarButtonSeparator;
import org.ourproject.kune.platf.client.actions.ActionToolbarMenuAndItemDescriptor;
import org.ourproject.kune.platf.client.actions.ActionToolbarMenuDescriptor;
+import org.ourproject.kune.platf.client.actions.ActionToolbarMenuRadioDescriptor;
import org.ourproject.kune.platf.client.actions.ActionToolbarPosition;
import org.ourproject.kune.platf.client.actions.ContentActionRegistry;
import org.ourproject.kune.platf.client.actions.ContextActionRegistry;
@@ -36,6 +37,7 @@
import org.ourproject.kune.workspace.client.entityheader.EntityHeader;
import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService;
import org.ourproject.kune.workspace.client.site.Site;
+import org.ourproject.kune.workspace.client.socialnet.RadioMustBeChecked;
import com.calclab.suco.client.ioc.Provider;
import com.calclab.suco.client.listener.Listener;
@@ -101,18 +103,18 @@
}
protected void createContentModeratedActions(String parentMenuTitle, final String... contentsModerated) {
- final ActionToolbarMenuDescriptor<StateToken> setPublishStatus = createSetStatusAction(
+ final ActionToolbarMenuRadioDescriptor<StateToken> setPublishStatus = createSetStatusAction(
AccessRolDTO.Administrator, i18n.t("Published online"), parentMenuTitle,
ContentStatusDTO.publishedOnline);
- final ActionToolbarMenuDescriptor<StateToken> setEditionInProgressStatus = createSetStatusAction(
+ final ActionToolbarMenuRadioDescriptor<StateToken> setEditionInProgressStatus = createSetStatusAction(
AccessRolDTO.Administrator, i18n.t("Editing in progress"), parentMenuTitle,
ContentStatusDTO.editingInProgress);
- final ActionToolbarMenuDescriptor<StateToken> setRejectStatus = createSetStatusAction(
+ final ActionToolbarMenuRadioDescriptor<StateToken> setRejectStatus = createSetStatusAction(
AccessRolDTO.Administrator, i18n.t("Rejected"), parentMenuTitle, ContentStatusDTO.rejected);
- final ActionToolbarMenuDescriptor<StateToken> setSubmittedForPublishStatus = createSetStatusAction(
+ final ActionToolbarMenuRadioDescriptor<StateToken> setSubmittedForPublishStatus = createSetStatusAction(
AccessRolDTO.Administrator, i18n.t("Submitted for publish"), parentMenuTitle,
ContentStatusDTO.publishedOnline);
- final ActionToolbarMenuDescriptor<StateToken> setInTheDustBinStatus = createSetStatusAction(
+ final ActionToolbarMenuRadioDescriptor<StateToken> setInTheDustBinStatus = createSetStatusAction(
AccessRolDTO.Administrator, i18n.t("In the rubbish bin"), parentMenuTitle, ContentStatusDTO.inTheDustbin);
contentActionRegistry.addAction(setPublishStatus, contentsModerated);
contentActionRegistry.addAction(setEditionInProgressStatus, contentsModerated);
@@ -431,9 +433,9 @@
return setAsDefGroupContent;
}
- protected ActionToolbarMenuAndItemDescriptor<StateToken> createSetStatusAction(final AccessRolDTO rol,
+ protected ActionToolbarMenuRadioDescriptor<StateToken> createSetStatusAction(final AccessRolDTO rol,
final String textDescription, String parentMenuTitle, final ContentStatusDTO status) {
- final ActionToolbarMenuAndItemDescriptor<StateToken> action = new ActionToolbarMenuAndItemDescriptor<StateToken>(
+ final ActionToolbarMenuRadioDescriptor<StateToken> action = new ActionToolbarMenuRadioDescriptor<StateToken>(
rol, ActionToolbarPosition.topbar, new Listener<StateToken>() {
public void onEvent(final StateToken stateToken) {
final AsyncCallbackSimple<Object> callback = new AsyncCallbackSimple<Object>() {
@@ -449,6 +451,14 @@
contentServiceProvider.get().setStatus(session.getUserHash(), stateToken, status, callback);
}
}
+ }, "ContentRadioStatus", new RadioMustBeChecked() {
+ public boolean mustBeChecked() {
+ if (session.getContainerState() instanceof StateContentDTO) {
+ ContentStatusDTO currentStatus = session.getContentState().getStatus();
+ return status.equals(currentStatus);
+ }
+ return false;
+ }
});
action.setTextDescription(textDescription);
action.setParentMenuTitle(parentMenuTitle);
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/WorkspaceMessages.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/WorkspaceMessages.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/WorkspaceMessages.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -2,7 +2,7 @@
public interface WorkspaceMessages {
String REGISTER_A_NEW_GROUP_TITLE = "Register a new Group";
- String MUST_BE_BETWEEN_3_AND_15 = "The name must be between 3 and 15 lowercase characters. It can only contain Western characters, numbers, and dashes";
+ String FIELD_MUST_BE_BETWEEN_3_AND_15 = "The name must be between 3 and 15 lowercase characters. It can only contain Western characters, numbers, and dashes";
String NAME_IN_ALREADY_IN_USE = "This name is already in use. Please try with a different name";
String REGISTER_TO_CREATE_A_GROUP = "Please, sign in or register to create a group";
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/AbstractContentView.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/AbstractContentView.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/AbstractContentView.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -14,6 +14,8 @@
void setInfo(String info);
+ void setInfoMessage(String text);
+
void setNoPreview();
void setWidgetAsContent(final Widget widget, boolean setDefMargins);
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/FoldableContentPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/FoldableContentPanel.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/FoldableContentPanel.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -18,21 +18,21 @@
private static final String DEF_CONTENT_MARGINS_STYLE = "kune-Margin-7-trbl";
private final I18nTranslationService i18n;
- private final RoundedPanel previewPanel;
- private final IconLabel previewLabel;
+ private final RoundedPanel messagePanel;
+ private final IconLabel messageLabel;
public FoldableContentPanel(final WorkspaceSkeleton ws, I18nTranslationService i18n) {
super(ws);
this.i18n = i18n;
- previewLabel = new IconLabel(Images.App.getInstance().info(), "");
- previewLabel.addStyleName("k-preview-msg-lab");
- previewPanel = new RoundedPanel(previewLabel, RoundedPanel.ALL, 2);
- previewPanel.setCornerStyleName("k-preview-msg");
- previewPanel.addStyleName("kune-Margin-7-b");
+ messageLabel = new IconLabel(Images.App.getInstance().info(), "");
+ messageLabel.addStyleName("k-preview-msg-lab");
+ messagePanel = new RoundedPanel(messageLabel, RoundedPanel.ALL, 2);
+ messagePanel.setCornerStyleName("k-preview-msg");
+ messagePanel.addStyleName("kune-Margin-7-b");
}
public void setContent(String content, boolean showPreviewMsg) {
- final VerticalPanel vp = createPreviewVp(showPreviewMsg);
+ final VerticalPanel vp = createMessageVp(showPreviewMsg);
final HTML html = new HTML(content);
vp.add(html);
setWidgetAsContent(vp, true);
@@ -42,6 +42,12 @@
setLabel(info);
}
+ public void setInfoMessage(String text) {
+ VerticalPanel vp = createMessageVp(true);
+ messageLabel.setText(text);
+ setWidgetAsContent(vp, true);
+ }
+
public void setLabel(String text) {
Label label = new Label(text);
setDefStyle(label);
@@ -49,7 +55,7 @@
}
public void setNoPreview() {
- VerticalPanel vp = createPreviewVp(true);
+ VerticalPanel vp = createMessageVp(true);
setNoPreviewLabelMsg();
setWidgetAsContent(vp, true);
}
@@ -68,7 +74,7 @@
}
public void showImage(String imageUrl, String imageResizedUrl, boolean showPreviewMsg) {
- final VerticalPanel vp = createPreviewVp(showPreviewMsg);
+ final VerticalPanel vp = createMessageVp(showPreviewMsg);
final Image imgOrig = new Image(imageUrl);
final Image imgResized = new Image(imageResizedUrl);
KuneUiUtils.setQuickTip(imgOrig, i18n.t("Click to zoom out"));
@@ -94,11 +100,11 @@
Image.prefetch(imageUrl);
}
- private VerticalPanel createPreviewVp(boolean showPreviewMsg) {
+ private VerticalPanel createMessageVp(boolean showMsg) {
final VerticalPanel vp = new VerticalPanel();
- if (showPreviewMsg) {
+ if (showMsg) {
setDefPreviewMsg();
- vp.add(previewPanel);
+ vp.add(messagePanel);
}
return vp;
}
@@ -109,7 +115,7 @@
}
private void setDefPreviewMsg() {
- previewLabel.setText(i18n.t("This is only a preview, download it to get the complete file"));
+ messageLabel.setText(i18n.t("This is only a preview, download it to get the complete file"));
}
private void setDefStyle(final Widget widget) {
@@ -118,6 +124,6 @@
}
private void setNoPreviewLabelMsg() {
- previewLabel.setText(i18n.t("Preview not available"));
+ messageLabel.setText(i18n.t("Preview not available"));
}
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/FoldableContentPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/FoldableContentPresenter.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/FoldableContentPresenter.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -9,6 +9,7 @@
import org.ourproject.kune.platf.client.dto.StateContainerDTO;
import org.ourproject.kune.platf.client.dto.StateContentDTO;
import org.ourproject.kune.platf.client.dto.StateToken;
+import org.ourproject.kune.platf.client.services.I18nTranslationService;
import org.ourproject.kune.platf.client.state.Session;
import org.ourproject.kune.platf.client.state.StateManager;
import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
@@ -24,15 +25,17 @@
protected final Session session;
private final ActionContentToolbar toolbar;
private final Provider<FileDownloadUtils> downloadProvider;
+ private final I18nTranslationService i18n;
public FoldableContentPresenter(final String toolName, StateManager stateManager, Session session,
final ActionContentToolbar toolbar, ActionRegistry<StateToken> actionRegistry,
- Provider<FileDownloadUtils> downloadProvider) {
+ Provider<FileDownloadUtils> downloadProvider, I18nTranslationService i18n) {
this.toolName = toolName;
this.session = session;
this.toolbar = toolbar;
this.actionRegistry = actionRegistry;
this.downloadProvider = downloadProvider;
+ this.i18n = i18n;
stateManager.onStateChanged(new Listener<StateAbstractDTO>() {
public void onEvent(final StateAbstractDTO state) {
setState(state);
@@ -71,7 +74,11 @@
view.setNoPreview();
}
} else {
- view.setRawContent(contentBody);
+ if ((contentBody == null || contentBody.length() == 0) && state.getContentRights().isEditable()) {
+ view.setInfoMessage(i18n.t("There is currently no text in this page, you can edit this page"));
+ } else {
+ view.setRawContent(contentBody);
+ }
}
view.attach();
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/ctxnav/ContextNavigator.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/ctxnav/ContextNavigator.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/ctxnav/ContextNavigator.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -41,10 +41,9 @@
void setEditOnNextStateChange(boolean edit);
+ void setFireOnTextChange(boolean visible);
+
void setItemStatus(StateToken stateToken, ContentStatusDTO status);
- void setItemText(StateToken stateToken, String name);
-
void setState(StateContainerDTO state, boolean selectItem);
-
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/ctxnav/ContextNavigatorPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/ctxnav/ContextNavigatorPresenter.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/ctxnav/ContextNavigatorPresenter.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -47,13 +47,12 @@
import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
import org.ourproject.kune.platf.client.ui.download.ImageSize;
import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService;
-import org.ourproject.kune.workspace.client.site.Site;
-import org.ourproject.kune.workspace.client.title.EntityTitle;
+import org.ourproject.kune.workspace.client.title.RenameAction;
import com.calclab.suco.client.ioc.Provider;
import com.calclab.suco.client.listener.Listener;
import com.calclab.suco.client.listener.Listener0;
-import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.calclab.suco.client.listener.Listener2;
public class ContextNavigatorPresenter implements ContextNavigator {
@@ -63,7 +62,6 @@
private final Provider<ContentServiceAsync> contentServiceProvider;
private final I18nUITranslationService i18n;
private final HashMap<StateToken, ActionItemCollection<StateToken>> actionsByItem;
- private final EntityTitle entityTitle;
private boolean editOnNextStateChange;
private final ContentIconsRegistry contentIconsRegistry;
private final ActionRegistry<StateToken> actionRegistry;
@@ -71,30 +69,31 @@
private final Provider<FileDownloadUtils> downloadUtilsProvider;
private final boolean useGenericImageIcon;
private final ContentCapabilitiesRegistry capabilitiesRegistry;
+ private final RenameAction renameAction;
public ContextNavigatorPresenter(final StateManager stateManager, final Session session,
final Provider<ContentServiceAsync> contentServiceProvider, final I18nUITranslationService i18n,
- final EntityTitle entityTitle, final ContentIconsRegistry contentIconsRegistry,
- ContentCapabilitiesRegistry capabilitiesRegistry, final ActionToolbar<StateToken> toolbar,
- final ActionRegistry<StateToken> actionRegistry, Provider<FileDownloadUtils> downloadUtilsProvider,
- boolean useGenericImageIcon) {
+ final ContentIconsRegistry contentIconsRegistry, ContentCapabilitiesRegistry capabilitiesRegistry,
+ final ActionToolbar<StateToken> toolbar, final ActionRegistry<StateToken> actionRegistry,
+ Provider<FileDownloadUtils> downloadUtilsProvider, boolean useGenericImageIcon, RenameAction renameAction) {
this.stateManager = stateManager;
this.session = session;
this.contentServiceProvider = contentServiceProvider;
this.i18n = i18n;
- this.entityTitle = entityTitle;
this.contentIconsRegistry = contentIconsRegistry;
this.capabilitiesRegistry = capabilitiesRegistry;
this.actionRegistry = actionRegistry;
this.toolbar = toolbar;
this.downloadUtilsProvider = downloadUtilsProvider;
this.useGenericImageIcon = useGenericImageIcon;
+ this.renameAction = renameAction;
actionsByItem = new HashMap<StateToken, ActionItemCollection<StateToken>>();
editOnNextStateChange = false;
+ confRenameListener();
}
public void attach() {
- // FIXME At the moment detach (removeFromParent) destroy the gwt-eext
+ // FIXME At the moment detach (removeFromParent) destroy the gwt-ext
// TreePanel and the widget must be recreated (cannot be attached again
// like in gwt)
setState(session.getCurrentState(), true);
@@ -143,32 +142,7 @@
}
public void onItemRename(final String token, final String newName, final String oldName) {
- if (!newName.equals(oldName)) {
- Site.showProgress(i18n.t("Renaming"));
- final StateToken stateToken = new StateToken(token);
- final AsyncCallback<String> asyncCallback = new AsyncCallback<String>() {
- public void onFailure(final Throwable caught) {
- view.setFireOnTextChange(false);
- setItemText(stateToken, oldName);
- view.setFireOnTextChange(true);
- Site.error(i18n.t("Error renaming"));
- Site.hideProgress();
- }
-
- public void onSuccess(final String result) {
- Site.hideProgress();
- if (session.getCurrentState().getStateToken().getEncoded().equals(token)) {
- // I have to update EntityTitle
- entityTitle.setContentTitle(newName);
- }
- }
- };
- if (stateToken.isComplete()) {
- contentServiceProvider.get().renameContent(session.getUserHash(), stateToken, newName, asyncCallback);
- } else {
- contentServiceProvider.get().renameContainer(session.getUserHash(), stateToken, newName, asyncCallback);
- }
- }
+ renameAction.rename(new StateToken(token), oldName, newName);
}
public void refresh(final StateToken stateToken) {
@@ -190,14 +164,14 @@
editOnNextStateChange = edit;
}
+ public void setFireOnTextChange(boolean visible) {
+ view.setFireOnTextChange(visible);
+ }
+
public void setItemStatus(final StateToken stateToken, ContentStatusDTO status) {
view.setItemStatus(genId(stateToken), status);
}
- public void setItemText(final StateToken stateToken, final String name) {
- view.setItemText(genId(stateToken), name);
- }
-
public void setState(final StateContainerDTO state, final boolean select) {
setStateContainer(state, select);
}
@@ -288,6 +262,25 @@
return toolbarActions;
}
+ private void confRenameListener() {
+ Listener2<StateToken, String> onSuccess = new Listener2<StateToken, String>() {
+ public void onEvent(StateToken token, String newName) {
+ view.setFireOnTextChange(false);
+ setItemText(token, newName);
+ view.setFireOnTextChange(true);
+ }
+ };
+ renameAction.onSuccess(onSuccess);
+ Listener2<StateToken, String> onFail = new Listener2<StateToken, String>() {
+ public void onEvent(StateToken token, String oldName) {
+ view.setFireOnTextChange(false);
+ setItemText(token, oldName);
+ view.setFireOnTextChange(true);
+ }
+ };
+ renameAction.onFail(onFail);
+ }
+
private void createChildItems(final ContainerDTO container, final AccessRightsDTO containerRights) {
for (final ContentSimpleDTO content : container.getContents()) {
addItem(content.getTitle(), content.getTypeId(), content.getMimeType(), content.getStatus(),
@@ -340,6 +333,10 @@
}
}
+ private void setItemText(final StateToken stateToken, final String name) {
+ view.setItemText(genId(stateToken), name);
+ }
+
private void setState(final StateAbstractDTO state, boolean select) {
if (state instanceof StateContainerDTO) {
setState((StateContainerDTO) state, select);
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/newgroup/NewGroupPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/newgroup/NewGroupPanel.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/newgroup/NewGroupPanel.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -235,9 +235,9 @@
shortNameField.setMaxLength(15);
shortNameField.setAllowBlank(false);
shortNameField.setRegex("^[a-z0-9_\\-]+$");
- shortNameField.setMinLengthText(i18n.t(WorkspaceMessages.MUST_BE_BETWEEN_3_AND_15));
- shortNameField.setMaxLengthText(i18n.t(WorkspaceMessages.MUST_BE_BETWEEN_3_AND_15));
- shortNameField.setRegexText(i18n.t(WorkspaceMessages.MUST_BE_BETWEEN_3_AND_15));
+ shortNameField.setMinLengthText(i18n.t(WorkspaceMessages.FIELD_MUST_BE_BETWEEN_3_AND_15));
+ shortNameField.setMaxLengthText(i18n.t(WorkspaceMessages.FIELD_MUST_BE_BETWEEN_3_AND_15));
+ shortNameField.setRegexText(i18n.t(WorkspaceMessages.FIELD_MUST_BE_BETWEEN_3_AND_15));
shortNameField.setValidationDelay(1000);
form.add(shortNameField);
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/nohomepage/NoHomePagePanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/nohomepage/NoHomePagePanel.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/nohomepage/NoHomePagePanel.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -33,7 +33,7 @@
public NoHomePagePanel(final NoHomePagePresenter presenter, final WorkspaceSkeleton ws, I18nTranslationService i18n) {
this.ws = ws;
- noHomepageCtnLabel = new Label(i18n.t(PlatfMessages.USER_DON_T_HAVE_A_HOMEPAGE));
+ noHomepageCtnLabel = new Label(i18n.t(PlatfMessages.USER_DOESN_T_HAVE_A_HOMEPAGE));
noHomepageCtnLabel.ensureDebugId(NO_HOME_PAGE_LABEL);
noHomepageCtnLabel.setStyleName("kune-Content-Main");
noHomepageCtnLabel.addStyleName("kune-Margin-7-trbl");
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/signin/RegisterForm.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/signin/RegisterForm.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/signin/RegisterForm.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -72,9 +72,9 @@
shortNameRegField.setMinLength(3);
shortNameRegField.setMaxLength(15);
shortNameRegField.setRegex("^[a-z0-9_\\-]+$");
- shortNameRegField.setMinLengthText(i18n.t(WorkspaceMessages.MUST_BE_BETWEEN_3_AND_15));
- shortNameRegField.setMaxLengthText(i18n.t(WorkspaceMessages.MUST_BE_BETWEEN_3_AND_15));
- shortNameRegField.setRegexText(i18n.t(WorkspaceMessages.MUST_BE_BETWEEN_3_AND_15));
+ shortNameRegField.setMinLengthText(i18n.t(WorkspaceMessages.FIELD_MUST_BE_BETWEEN_3_AND_15));
+ shortNameRegField.setMaxLengthText(i18n.t(WorkspaceMessages.FIELD_MUST_BE_BETWEEN_3_AND_15));
+ shortNameRegField.setRegexText(i18n.t(WorkspaceMessages.FIELD_MUST_BE_BETWEEN_3_AND_15));
shortNameRegField.setValidationEvent(false);
add(shortNameRegField);
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPresenter.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPresenter.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -26,13 +26,14 @@
import org.ourproject.kune.platf.client.actions.ActionEnableCondition;
import org.ourproject.kune.platf.client.actions.ActionMenuItemDescriptor;
import org.ourproject.kune.platf.client.actions.ActionToolbarButtonAndItemDescriptor;
-import org.ourproject.kune.platf.client.actions.ActionToolbarMenuDescriptor;
+import org.ourproject.kune.platf.client.actions.ActionToolbarMenuRadioDescriptor;
import org.ourproject.kune.platf.client.actions.ActionToolbarPosition;
import org.ourproject.kune.platf.client.actions.GroupActionRegistry;
import org.ourproject.kune.platf.client.actions.UserActionRegistry;
import org.ourproject.kune.platf.client.actions.toolbar.ActionBuddiesSummaryToolbar;
import org.ourproject.kune.platf.client.dto.AccessRightsDTO;
import org.ourproject.kune.platf.client.dto.AccessRolDTO;
+import org.ourproject.kune.platf.client.dto.SocialNetworkDataDTO;
import org.ourproject.kune.platf.client.dto.StateAbstractDTO;
import org.ourproject.kune.platf.client.dto.UserBuddiesDataDTO;
import org.ourproject.kune.platf.client.dto.UserBuddiesVisibilityDTO;
@@ -52,6 +53,8 @@
public class BuddiesSummaryPresenter extends SocialNetworkPresenter implements BuddiesSummary {
+ public static final String BUDDIES_VISIBILITY_GROUP = "k-bsp-bud-visib";
+
private BuddiesSummaryView view;
private final StateManager stateManager;
private final UserActionRegistry actionRegistry;
@@ -145,7 +148,7 @@
}
private void createSetBuddiesVisibilityAction(String textDescription, final UserBuddiesVisibilityDTO visibility) {
- ActionToolbarMenuDescriptor<UserSimpleDTO> buddiesVisibilityAction = new ActionToolbarMenuDescriptor<UserSimpleDTO>(
+ ActionToolbarMenuRadioDescriptor<UserSimpleDTO> buddiesVisibilityAction = new ActionToolbarMenuRadioDescriptor<UserSimpleDTO>(
AccessRolDTO.Administrator, ActionToolbarPosition.bottombar, new Listener<UserSimpleDTO>() {
public void onEvent(UserSimpleDTO parameter) {
userServiceAsync.get().setBuddiesVisibility(session.getUserHash(),
@@ -156,6 +159,15 @@
}
});
}
+ }, BUDDIES_VISIBILITY_GROUP, new RadioMustBeChecked() {
+ public boolean mustBeChecked() {
+ StateAbstractDTO currentState = session.getCurrentState();
+ if (currentState.getGroup().isPersonal()) {
+ SocialNetworkDataDTO socialNetworkData = currentState.getSocialNetworkData();
+ return socialNetworkData.getUserBuddiesVisibility().equals(visibility);
+ }
+ return false;
+ }
});
buddiesVisibilityAction.setTextDescription(textDescription);
buddiesVisibilityAction.setParentMenuTitle(i18n.t("Options"));
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPresenter.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPresenter.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -22,6 +22,7 @@
import org.ourproject.kune.chat.client.ChatEngine;
import org.ourproject.kune.platf.client.actions.ActionToolbarMenuDescriptor;
+import org.ourproject.kune.platf.client.actions.ActionToolbarMenuRadioDescriptor;
import org.ourproject.kune.platf.client.actions.ActionToolbarPosition;
import org.ourproject.kune.platf.client.actions.GroupActionRegistry;
import org.ourproject.kune.platf.client.actions.toolbar.ActionGroupSummaryToolbar;
@@ -59,6 +60,8 @@
public class GroupMembersSummaryPresenter extends SocialNetworkPresenter implements GroupMembersSummary {
+ public static final String MEMBERS_VISIBILITY_GROUP = "k-gmsp-memb-visib";
+
private GroupMembersSummaryView view;
private final I18nUITranslationService i18n;
private final GridGroup adminCategory;
@@ -176,7 +179,7 @@
}
private void createSetMembersVisibilityAction(String textDescription, final SocialNetworkVisibilityDTO visibility) {
- ActionToolbarMenuDescriptor<StateToken> showMembers = new ActionToolbarMenuDescriptor<StateToken>(
+ ActionToolbarMenuRadioDescriptor<StateToken> showMembers = new ActionToolbarMenuRadioDescriptor<StateToken>(
AccessRolDTO.Administrator, ActionToolbarPosition.bottombar, new Listener<StateToken>() {
public void onEvent(StateToken parameter) {
groupServiceProvider.get().setSocialNetworkVisibility(session.getUserHash(),
@@ -187,6 +190,15 @@
}
});
}
+ }, MEMBERS_VISIBILITY_GROUP, new RadioMustBeChecked() {
+ public boolean mustBeChecked() {
+ StateAbstractDTO currentState = session.getCurrentState();
+ if (!currentState.getGroup().isPersonal()) {
+ SocialNetworkDataDTO socialNetworkData = currentState.getSocialNetworkData();
+ return socialNetworkData.getSocialNetworkVisibility().equals(visibility);
+ }
+ return false;
+ }
});
showMembers.setTextDescription(textDescription);
showMembers.setParentMenuTitle(i18n.t("Options"));
Added: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/RadioMustBeChecked.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/RadioMustBeChecked.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/RadioMustBeChecked.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -0,0 +1,5 @@
+package org.ourproject.kune.workspace.client.socialnet;
+
+public interface RadioMustBeChecked {
+ boolean mustBeChecked();
+}
\ No newline at end of file
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/title/EntityTitlePanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/title/EntityTitlePanel.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/title/EntityTitlePanel.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -24,6 +24,7 @@
import org.ourproject.kune.workspace.client.skel.SimpleToolbar;
import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton;
+import com.calclab.suco.client.listener.Listener2;
import com.google.gwt.user.client.ui.Image;
public class EntityTitlePanel implements EntityTitleView {
@@ -34,11 +35,16 @@
public EntityTitlePanel(final WorkspaceSkeleton ws, final EntityTitlePresenter presenter) {
icon = new Image();
titleLabel = new EditableIconLabel(new EditableClickListener() {
- public void onEdited(final String text) {
- presenter.onTitleRename(text);
+ public void onEdited(final String newName) {
}
});
+ titleLabel.onEdit(new Listener2<String, String>() {
+ public void onEvent(String oldName, String newName) {
+ presenter.onTitleRename(oldName, newName);
+ }
+ });
+
final SimpleToolbar wsTitle = ws.getEntityWorkspace().getTitleComponent();
wsTitle.add(icon);
wsTitle.add(titleLabel);
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/title/EntityTitlePresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/title/EntityTitlePresenter.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/title/EntityTitlePresenter.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -26,37 +26,27 @@
import org.ourproject.kune.platf.client.dto.StateContentDTO;
import org.ourproject.kune.platf.client.dto.StateToken;
import org.ourproject.kune.platf.client.registry.RenamableRegistry;
-import org.ourproject.kune.platf.client.rpc.ContentServiceAsync;
-import org.ourproject.kune.platf.client.services.KuneErrorHandler;
import org.ourproject.kune.platf.client.state.Session;
import org.ourproject.kune.platf.client.state.StateManager;
-import org.ourproject.kune.workspace.client.ctxnav.ContextNavigator;
-import org.ourproject.kune.workspace.client.site.Site;
-import com.calclab.suco.client.ioc.Provider;
import com.calclab.suco.client.listener.Listener;
-import com.google.gwt.user.client.rpc.AsyncCallback;
+import com.calclab.suco.client.listener.Listener2;
public class EntityTitlePresenter implements EntityTitle {
private EntityTitleView view;
- private final KuneErrorHandler errorHandler;
- private final Provider<ContentServiceAsync> contentServiceProvider;
private final Session session;
- private final Provider<ContextNavigator> contextNavigatorProvider;
private final ContentIconsRegistry iconsRegistry;
private final RenamableRegistry renamableContentRegistry;
+ private final RenameAction renameAction;
- public EntityTitlePresenter(final KuneErrorHandler errorHandler, final StateManager stateManager,
- final Session session, final Provider<ContentServiceAsync> contentServiceProvider,
- final Provider<ContextNavigator> contextNavigatorProvider, final ContentIconsRegistry iconsRegistry,
- RenamableRegistry renamableContentRegistry) {
- this.errorHandler = errorHandler;
+ public EntityTitlePresenter(final StateManager stateManager, final Session session,
+ final ContentIconsRegistry iconsRegistry, RenamableRegistry renamableContentRegistry,
+ RenameAction renameAction) {
this.session = session;
- this.contentServiceProvider = contentServiceProvider;
- this.contextNavigatorProvider = contextNavigatorProvider;
this.iconsRegistry = iconsRegistry;
this.renamableContentRegistry = renamableContentRegistry;
+ this.renameAction = renameAction;
stateManager.onStateChanged(new Listener<StateAbstractDTO>() {
public void onEvent(final StateAbstractDTO state) {
if (state instanceof StateContentDTO) {
@@ -69,6 +59,7 @@
}
}
});
+ createRenameListeners();
}
public View getView() {
@@ -87,27 +78,24 @@
view.setContentTitleVisible(true);
}
- protected void onTitleRename(final String newName) {
- Site.showProgressSaving();
- final StateToken stateToken = session.getCurrentState().getStateToken();
- final AsyncCallback<String> asyncCallback = new AsyncCallback<String>() {
- public void onFailure(final Throwable caught) {
- view.restoreOldTitle();
- errorHandler.process(caught);
- }
+ protected void onTitleRename(final String oldName, final String newName) {
+ final StateToken token = session.getCurrentState().getStateToken();
+ renameAction.rename(token, oldName, newName);
+ }
- public void onSuccess(final String result) {
- Site.hideProgress();
- view.setContentTitle(result);
- contextNavigatorProvider.get().setItemText(stateToken, newName);
+ private void createRenameListeners() {
+ Listener2<StateToken, String> onSuccess = new Listener2<StateToken, String>() {
+ public void onEvent(StateToken token, String newName) {
+ view.setContentTitle(newName);
}
};
- if (stateToken.isComplete()) {
- contentServiceProvider.get().renameContent(session.getUserHash(), stateToken, newName, asyncCallback);
- } else {
- contentServiceProvider.get().renameContainer(session.getUserHash(), stateToken, newName, asyncCallback);
- }
- Site.hideProgress();
+ renameAction.onSuccess(onSuccess);
+ Listener2<StateToken, String> onFail = new Listener2<StateToken, String>() {
+ public void onEvent(StateToken token, String oldName) {
+ view.setContentTitle(oldName);
+ }
+ };
+ renameAction.onFail(onFail);
}
private void setContentTitle(final String title, final boolean editable) {
@@ -140,5 +128,4 @@
setIcon(contentTypeIcon);
view.setContentTitleVisible(true);
}
-
}
Added: trunk/src/main/java/org/ourproject/kune/workspace/client/title/RenameAction.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/title/RenameAction.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/title/RenameAction.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -0,0 +1,71 @@
+package org.ourproject.kune.workspace.client.title;
+
+import org.ourproject.kune.platf.client.dto.StateToken;
+import org.ourproject.kune.platf.client.errors.NameInUseException;
+import org.ourproject.kune.platf.client.errors.NameNotPermittedException;
+import org.ourproject.kune.platf.client.rpc.ContentServiceAsync;
+import org.ourproject.kune.platf.client.services.I18nTranslationService;
+import org.ourproject.kune.platf.client.state.Session;
+import org.ourproject.kune.workspace.client.site.Site;
+
+import com.calclab.suco.client.ioc.Provider;
+import com.calclab.suco.client.listener.Event2;
+import com.calclab.suco.client.listener.Listener2;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+
+public class RenameAction {
+ private final I18nTranslationService i18n;
+ private final Provider<ContentServiceAsync> contentService;
+ private final Session session;
+ private final Event2<StateToken, String> onSuccess;
+ private final Event2<StateToken, String> onFail;
+
+ public RenameAction(I18nTranslationService i18n, Session session, Provider<ContentServiceAsync> contentService) {
+ this.i18n = i18n;
+ this.session = session;
+ this.contentService = contentService;
+ this.onSuccess = new Event2<StateToken, String>("onSuccess");
+ this.onFail = new Event2<StateToken, String>("onFail");
+ }
+
+ public void onFail(final Listener2<StateToken, String> slot) {
+ onFail.add(slot);
+ }
+
+ public void onSuccess(final Listener2<StateToken, String> slot) {
+ onSuccess.add(slot);
+ }
+
+ public void rename(final StateToken token, final String oldName, final String newName) {
+ if (!newName.equals(oldName)) {
+ Site.showProgress(i18n.t("Renaming"));
+ final AsyncCallback<String> asyncCallback = new AsyncCallback<String>() {
+ public void onFailure(final Throwable caught) {
+ Site.hideProgress();
+ try {
+ throw caught;
+ } catch (final NameInUseException e) {
+ Site.error(i18n.tWithNT("This name already exists",
+ "Used when a file or a folder with the same name already exists"));
+ } catch (final NameNotPermittedException e) {
+ Site.error(i18n.tWithNT("This name is not permitted",
+ "Used when a file or a folder has a not permitted name"));
+ } catch (final Throwable e) {
+ Site.error(i18n.t("Error renaming"));
+ }
+ onFail.fire(token, oldName);
+ }
+
+ public void onSuccess(final String finalNewName) {
+ Site.hideProgress();
+ onSuccess.fire(token, finalNewName);
+ }
+ };
+ if (token.isComplete()) {
+ contentService.get().renameContent(session.getUserHash(), token, newName, asyncCallback);
+ } else {
+ contentService.get().renameContainer(session.getUserHash(), token, newName, asyncCallback);
+ }
+ }
+ }
+}
Modified: trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/SignInSeleniumTest.java
===================================================================
--- trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/SignInSeleniumTest.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/SignInSeleniumTest.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -51,7 +51,7 @@
click(RegisterPanel.WELCOME_OK_BUTTON);
clickOnPushButton(gid(SiteUserMenuPanel.LOGGED_USER_MENU));
click(linkId(PlatfMessages.YOUR_HOMEPAGE));
- waitForTextInside(gid(NoHomePagePanel.NO_HOME_PAGE_LABEL), PlatfMessages.USER_DON_T_HAVE_A_HOMEPAGE);
+ waitForTextInside(gid(NoHomePagePanel.NO_HOME_PAGE_LABEL), PlatfMessages.USER_DOESN_T_HAVE_A_HOMEPAGE);
}
@Test
Modified: trunk/src/test/java/org/ourproject/kune/platf/server/content/ContentManagerDefaultTest.java
===================================================================
--- trunk/src/test/java/org/ourproject/kune/platf/server/content/ContentManagerDefaultTest.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/test/java/org/ourproject/kune/platf/server/content/ContentManagerDefaultTest.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -1,13 +1,12 @@
package org.ourproject.kune.platf.server.content;
-
public class ContentManagerDefaultTest {// extends PersistenceTest {
ContentManagerDefault manager;
// @Before
public void before() {
- manager = new ContentManagerDefault(null, null, null, null, null);
+ manager = new ContentManagerDefault(null, null, null, null, null, null, null);
}
}
Added: trunk/src/test/java/org/ourproject/kune/platf/server/manager/file/FileDownloadManagerTest.java
===================================================================
--- trunk/src/test/java/org/ourproject/kune/platf/server/manager/file/FileDownloadManagerTest.java 2008-12-06 19:36:56 UTC (rev 988)
+++ trunk/src/test/java/org/ourproject/kune/platf/server/manager/file/FileDownloadManagerTest.java 2008-12-10 01:36:03 UTC (rev 989)
@@ -0,0 +1,181 @@
+package org.ourproject.kune.platf.server.manager.file;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.IOException;
+
+import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletResponse;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mockito;
+import org.ourproject.kune.platf.client.dto.StateToken;
+import org.ourproject.kune.platf.client.ui.download.ImageSize;
+import org.ourproject.kune.platf.integration.IntegrationTestHelper;
+import org.ourproject.kune.platf.server.domain.BasicMimeType;
+import org.ourproject.kune.platf.server.domain.Content;
+import org.ourproject.kune.platf.server.properties.KuneProperties;
+
+import com.google.inject.Inject;
+
+public class FileDownloadManagerTest {
+
+ private static final String SOMETITLE = "Sometitle";
+
+ @Inject
+ FileDownloadManager fileDownloadManager;
+
+ @Inject
+ KuneProperties kuneProperties;
+
+ private HttpServletResponse resp;
+ private Content content;
+
+ private String uploadLocation;
+
+ private FileUtils fileUtils;
+
+ private StateToken stateToken;
+
+ private String filename;
+
+ @Before
+ public void create() throws IOException {
+ new IntegrationTestHelper(this);
+ content = Mockito.mock(Content.class);
+ resp = Mockito.mock(HttpServletResponse.class);
+ ServletOutputStream oStream = Mockito.mock(ServletOutputStream.class);
+
+ Mockito.stub(resp.getOutputStream()).toReturn(oStream);
+ uploadLocation = kuneProperties.get(KuneProperties.UPLOAD_LOCATION);
+
+ fileUtils = Mockito.mock(FileUtils.class);
+ Mockito.stub(fileUtils.exist(Mockito.anyString())).toReturn(true);
+ stateToken = new StateToken("test.test.1.1");
+ filename = "somefile";
+
+ Mockito.stub(content.getTitle()).toReturn(SOMETITLE);
+ }
+
+ @Test
+ public void fileWithNoExtensionDownloadTest() throws Exception {
+ throw new Exception("TODO");
+ }
+
+ @Test
+ public void testJpgThumbDownload() throws IOException {
+ String extension = ".jpg";
+ contentStub(new BasicMimeType("image", "jpg"), filename, extension);
+ String subExt = ImageSize.thumb.toString();
+ String absFile = fileDownloadManager.buildResponse(content, stateToken, "false", subExt, resp, fileUtils);
+ assertEquals(uploadLocation + FileUtils.toDir(stateToken) + filename + "." + subExt + extension, absFile);
+ Mockito.verify(resp).setContentType("image/jpg");
+ Mockito.verify(resp).setHeader(
+ FileDownloadManager.RESP_HEADER_CONTEND_DISP,
+ FileDownloadManager.RESP_HEADER_ATTACHMENT_FILENAME + SOMETITLE + extension
+ + FileDownloadManager.RESP_HEADER_END);
+ }
+
+ @Test
+ public void testPdfDownload1() throws IOException {
+ String extension = ".pdf";
+ contentStub(new BasicMimeType("application", "pdf"), filename, extension);
+ String absFile = fileDownloadManager.buildResponse(content, stateToken, "true", ImageSize.ico.toString(), resp,
+ fileUtils);
+ assertEquals(uploadLocation + FileUtils.toDir(stateToken) + filename + extension, absFile);
+ Mockito.verify(resp).setContentType(FileDownloadManager.APPLICATION_X_DOWNLOAD);
+ Mockito.verify(resp).setHeader(
+ FileDownloadManager.RESP_HEADER_CONTEND_DISP,
+ FileDownloadManager.RESP_HEADER_ATTACHMENT_FILENAME + SOMETITLE + extension
+ + FileDownloadManager.RESP_HEADER_END);
+ }
+
+ @Test
+ public void testPdfDownload2() throws IOException {
+ String pngExtension = ".png";
+ contentStub(new BasicMimeType("application", "pdf"), filename, ".pdf");
+ String subExt = ImageSize.ico.toString();
+ String absFile = fileDownloadManager.buildResponse(content, stateToken, "false", subExt, resp, fileUtils);
+ assertEquals(uploadLocation + FileUtils.toDir(stateToken) + filename + "." + subExt + pngExtension, absFile);
+ Mockito.verify(resp).setContentType("image/png");
+ Mockito.verify(resp).setHeader(
+ FileDownloadManager.RESP_HEADER_CONTEND_DISP,
+ FileDownloadManager.RESP_HEADER_ATTACHMENT_FILENAME + SOMETITLE + pngExtension
+ + FileDownloadManager.RESP_HEADER_END);
+ }
+
+ @Test
+ public void testPdfDownload3() throws IOException {
+ String pngExtension = ".png";
+ contentStub(new BasicMimeType("application", "pdf"), filename, ".pdf");
+ String subExt = ImageSize.sized.toString();
+ String absFile = fileDownloadManager.buildResponse(content, stateToken, "false", subExt, resp, fileUtils);
+ assertEquals(uploadLocation + FileUtils.toDir(stateToken) + filename + "." + subExt + pngExtension, absFile);
+ Mockito.verify(resp).setContentType("image/png");
+ Mockito.verify(resp).setHeader(
+ FileDownloadManager.RESP_HEADER_CONTEND_DISP,
+ FileDownloadManager.RESP_HEADER_ATTACHMENT_FILENAME + SOMETITLE + pngExtension
+ + FileDownloadManager.RESP_HEADER_END);
+ }
+
+ @Test
+ public void testPdfDownload4() throws IOException {
+ String pngExtension = ".png";
+ contentStub(new BasicMimeType("application", "pdf"), filename, ".pdf");
+ String subExt = ImageSize.thumb.toString();
+ String absFile = fileDownloadManager.buildResponse(content, stateToken, "false", subExt, resp, fileUtils);
+ assertEquals(uploadLocation + FileUtils.toDir(stateToken) + filename + "." + subExt + pngExtension, absFile);
+ Mockito.verify(resp).setContentType("image/png");
+ Mockito.verify(resp).setHeader(
+ FileDownloadManager.RESP_HEADER_CONTEND_DISP,
+ FileDownloadManager.RESP_HEADER_ATTACHMENT_FILENAME + SOMETITLE + pngExtension
+ + FileDownloadManager.RESP_HEADER_END);
+ }
+
+ @Test
+ public void testPdfDownloadNullMime() throws IOException {
+ String extension = ".pdf";
+ contentStub(null, filename, extension);
+ String absFile = fileDownloadManager.buildResponse(content, stateToken, "true", ImageSize.ico.toString(), resp,
+ fileUtils);
+ assertEquals(uploadLocation + FileUtils.toDir(stateToken) + filename + extension, absFile);
+ Mockito.verify(resp).setContentType(FileDownloadManager.APPLICATION_X_DOWNLOAD);
+ Mockito.verify(resp).setHeader(
+ FileDownloadManager.RESP_HEADER_CONTEND_DISP,
+ FileDownloadManager.RESP_HEADER_ATTACHMENT_FILENAME + SOMETITLE + extension
+ + FileDownloadManager.RESP_HEADER_END);
+ }
+
+ @Test
+ public void testPngDownload1() throws IOException {
+ String extension = ".png";
+ contentStub(new BasicMimeType("image", "png"), filename, extension);
+ String absFile = fileDownloadManager.buildResponse(content, stateToken, "true", null, resp, fileUtils);
+ assertEquals(uploadLocation + FileUtils.toDir(stateToken) + filename + extension, absFile);
+ Mockito.verify(resp).setContentType(FileDownloadManager.APPLICATION_X_DOWNLOAD);
+ Mockito.verify(resp).setHeader(
+ FileDownloadManager.RESP_HEADER_CONTEND_DISP,
+ FileDownloadManager.RESP_HEADER_ATTACHMENT_FILENAME + SOMETITLE + extension
+ + FileDownloadManager.RESP_HEADER_END);
+ }
+
+ @Test
+ public void testPngDownload2() throws IOException {
+ String extension = ".png";
+ contentStub(new BasicMimeType("image", "png"), filename, extension);
+ String subExt = ImageSize.thumb.toString();
+ String absFile = fileDownloadManager.buildResponse(content, stateToken, "false", subExt, resp, fileUtils);
+ assertEquals(uploadLocation + FileUtils.toDir(stateToken) + filename + "." + subExt + extension, absFile);
+ Mockito.verify(resp).setContentType("image/png");
+ Mockito.verify(resp).setHeader(
+ FileDownloadManager.RESP_HEADER_CONTEND_DISP,
+ FileDownloadManager.RESP_HEADER_ATTACHMENT_FILENAME + SOMETITLE + extension
+ + FileDownloadManager.RESP_HEADER_END);
+ }
+
+ private void contentStub(BasicMimeType mimeType, String filename, String extension) {
+ Mockito.stub(content.getMimeType()).toReturn(mimeType);
+ Mockito.stub(content.getFilename()).toReturn(filename + extension);
+ }
+}
1
0
06 Dec '08
Author: shevek
Date: 2008-12-06 20:36:56 +0100 (Sat, 06 Dec 2008)
New Revision: 988
Modified:
trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientActions.java
trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogFolderContentPresenter.java
trunk/src/main/java/org/ourproject/kune/blogs/server/BlogServerTool.java
trunk/src/main/java/org/ourproject/kune/chat/client/ChatEngineDefault.java
trunk/src/main/java/org/ourproject/kune/chat/client/cnt/ChatRoomPresenter.java
trunk/src/main/java/org/ourproject/kune/chat/client/ctx/room/AddRoomPanel.java
trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java
trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneErrorHandler.java
trunk/src/main/java/org/ourproject/kune/platf/client/ui/AbstractSearcherPanel.java
trunk/src/main/java/org/ourproject/kune/platf/client/ui/upload/FileUploaderDialog.java
trunk/src/main/java/org/ourproject/kune/platf/server/manager/file/FileJsonUploadManagerAbstract.java
trunk/src/main/java/org/ourproject/kune/platf/server/state/StateServiceDefault.java
trunk/src/main/java/org/ourproject/kune/wiki/server/WikiServerTool.java
Log:
Translation improved
Modified: trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientActions.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientActions.java 2008-12-05 21:15:09 UTC (rev 987)
+++ trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientActions.java 2008-12-06 19:36:56 UTC (rev 988)
@@ -87,7 +87,7 @@
createRefreshCxtAction(parentMenuTitleCtx, containers);
createUploadAction(i18n.t("Upload file"), "images/nav/upload.png",
- i18n.t("Upload some files (images, PDFs, ...)"), null, containersNoRoot);
+ i18n.t("Upload files (images, PDFs...)"), null, containersNoRoot);
createSetAsDefContent(parentMenuTitle, contents);
Modified: trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogFolderContentPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogFolderContentPresenter.java 2008-12-05 21:15:09 UTC (rev 987)
+++ trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogFolderContentPresenter.java 2008-12-06 19:36:56 UTC (rev 988)
@@ -53,7 +53,7 @@
protected void setState(StateContainerDTO state) {
if (state.getTypeId().equals(BlogClientTool.TYPE_ROOT)) {
if (state.getRootContainer().getChilds().size() == 0) {
- view.setInfo(i18n.t("This group has no blogs."));
+ view.setInfo(i18n.t("This group has no blogs"));
} else {
view.setInfo("");
}
Modified: trunk/src/main/java/org/ourproject/kune/blogs/server/BlogServerTool.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/blogs/server/BlogServerTool.java 2008-12-05 21:15:09 UTC (rev 987)
+++ trunk/src/main/java/org/ourproject/kune/blogs/server/BlogServerTool.java 2008-12-06 19:36:56 UTC (rev 988)
@@ -100,7 +100,7 @@
content.setStatus(ContentStatus.publishedOnline);
contentManager.save(user, content,
- i18n.t("This is only a post sample. You can edit it, and rename this post and this blog"));
+ i18n.t("This is only a post sample. You can edit it, rename the post and this blog"));
return group;
}
Modified: trunk/src/main/java/org/ourproject/kune/chat/client/ChatEngineDefault.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/chat/client/ChatEngineDefault.java 2008-12-05 21:15:09 UTC (rev 987)
+++ trunk/src/main/java/org/ourproject/kune/chat/client/ChatEngineDefault.java 2008-12-06 19:36:56 UTC (rev 988)
@@ -69,8 +69,8 @@
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 produce problems with the chat functionality. "
- + "Check kune.properties on the server.");
+ + "). This will cause problems with the chat functionality. "
+ + "Please check kune.properties on the server.");
}
}
});
@@ -113,7 +113,7 @@
+ chatOptions.userOptions.getUserJid().getNode());
emiteUIProvider.get().joinRoom(roomURI);
} else {
- ws.showAlertMessage(i18n.t("Error"), i18n.t("To join a chatroom you need to be 'online'."));
+ ws.showAlertMessage(i18n.t("Error"), i18n.t("To join a chatroom you need to be 'online'"));
}
}
Modified: trunk/src/main/java/org/ourproject/kune/chat/client/cnt/ChatRoomPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/chat/client/cnt/ChatRoomPresenter.java 2008-12-05 21:15:09 UTC (rev 987)
+++ trunk/src/main/java/org/ourproject/kune/chat/client/cnt/ChatRoomPresenter.java 2008-12-06 19:36:56 UTC (rev 988)
@@ -59,7 +59,7 @@
view.setInfo(i18n.t("Select a chat room"));
}
} else {
- view.setInfo("History of room conversations ..." + Site.IN_DEVELOPMENT);
+ view.setInfo("History of room conversations..." + Site.IN_DEVELOPMENT);
}
super.setState(state);
}
Modified: trunk/src/main/java/org/ourproject/kune/chat/client/ctx/room/AddRoomPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/chat/client/ctx/room/AddRoomPanel.java 2008-12-05 21:15:09 UTC (rev 987)
+++ trunk/src/main/java/org/ourproject/kune/chat/client/ctx/room/AddRoomPanel.java 2008-12-06 19:36:56 UTC (rev 988)
@@ -82,7 +82,7 @@
roomName.setAllowBlank(false);
roomName.setValidationEvent(false);
roomName.setRegex(TextUtils.UNIX_NAME);
- roomName.setRegexText(i18n.t("Can only contain characters, numbers, and dashes"));
+ roomName.setRegexText(i18n.t("The name must contain only characters, numbers and dashes"));
roomName.setId(ROOM_NAME_ID);
formPanel.add(roomName);
Modified: trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java 2008-12-05 21:15:09 UTC (rev 987)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java 2008-12-06 19:36:56 UTC (rev 988)
@@ -90,7 +90,7 @@
createSetAsDefContent(parentMenuTitle, contents);
createUploadAction(i18n.t("Upload file"), "images/nav/upload.png",
- i18n.t("Upload some files (images, PDFs, ...)"), null, containers);
+ i18n.t("Upload files (images, PDFs...)"), null, containers);
createDownloadActions(TYPE_UPLOADEDFILE);
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneErrorHandler.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneErrorHandler.java 2008-12-05 21:15:09 UTC (rev 987)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneErrorHandler.java 2008-12-06 19:36:56 UTC (rev 988)
@@ -60,7 +60,7 @@
public void doSessionExpired() {
onSessionExpired.fire();
getWorkspaceSkeleton().showAlertMessage(i18n.t("Session expired"),
- i18n.t("Your session has expired. Please login again."));
+ i18n.t("Your session has expired. Please log in again."));
}
public WorkspaceSkeleton getWorkspaceSkeleton() {
@@ -77,7 +77,7 @@
throw caught;
} catch (final AccessViolationException e) {
logException(e);
- Site.error(i18n.t("You don't have rights to do that"));
+ Site.error(i18n.t("You do not have rights to perform that action"));
} catch (final SessionExpiredException e) {
logException(e);
doSessionExpired();
@@ -111,13 +111,13 @@
getWorkspaceSkeleton().showAlertMessage(
i18n.t("Warning"),
i18n.t("Sorry, you are the last admin of this group."
- + " Look for someone to substitute you appropriately as admin before unjoin this group."));
+ + " Look for someone to substitute you appropriately as admin before leaving this group."));
} catch (final AlreadyGroupMemberException e) {
logException(e);
Site.error(i18n.t("This group is already a group member"));
} catch (final AlreadyUserMemberException e) {
logException(e);
- Site.error(i18n.t("This user is already a member of this group"));
+ Site.error(i18n.t("This user is already a group member"));
} catch (final Throwable e) {
logException(e, true);
Site.error(i18n.t("Error performing operation"));
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/ui/AbstractSearcherPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/AbstractSearcherPanel.java 2008-12-05 21:15:09 UTC (rev 987)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/AbstractSearcherPanel.java 2008-12-06 19:36:56 UTC (rev 988)
@@ -45,8 +45,8 @@
final PagingToolbar pag = new PagingToolbar(store);
pag.setPageSize(PAGINATION_SIZE);
pag.setDisplayInfo(true);
- pag.setDisplayMsg(i18n.tWithNT("Displaying results {0} - {1} of {2}", "Respect {} values in translations, "
- + "this will produce: 'Displaying results 1 - 25 of 95465' for instance"));
+ pag.setDisplayMsg(i18n.tWithNT("Displaying results {0} - {1} of {2}", "Respect {} values in translations. "
+ + "This will produce: 'Displaying results 1 - 25 of 95465' for instance"));
pag.setEmptyMsg(i18n.t("No results to display"));
pag.setAfterPageText(i18n.tWithNT("of {0}", "Used to show multiple results: '1 of 30'"));
pag.setBeforePageText(i18n.t("Page"));
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/ui/upload/FileUploaderDialog.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/upload/FileUploaderDialog.java 2008-12-05 21:15:09 UTC (rev 987)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/upload/FileUploaderDialog.java 2008-12-06 19:36:56 UTC (rev 988)
@@ -58,7 +58,7 @@
public void destroy() {
if (hasUploadingFiles()) {
dialog.stopUpload();
- Site.important(i18n.t("Upload canceled after sign out"));
+ Site.important(i18n.t("Upload cancelled after signing out"));
}
if (dialog != null) {
dialog.destroy();
@@ -135,7 +135,7 @@
public boolean onBeforeAdd(final UploadDialog source, final String filename) {
boolean mustAdd = presenter.checkFolderChange();
if (!mustAdd) {
- Site.important(i18n.t("Wait until current uploads finish to upload files in other location"));
+ Site.important(i18n.t("Please, wait until current uploads are finished to upload new files into another location"));
}
return mustAdd;
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/server/manager/file/FileJsonUploadManagerAbstract.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/manager/file/FileJsonUploadManagerAbstract.java 2008-12-05 21:15:09 UTC (rev 987)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/manager/file/FileJsonUploadManagerAbstract.java 2008-12-06 19:36:56 UTC (rev 988)
@@ -62,6 +62,6 @@
@Override
protected void onSuccess(HttpServletResponse response) throws IOException {
- doResponse(response, createJsonResponse(true, i18n.t("Success uploading")).toString());
+ doResponse(response, createJsonResponse(true, i18n.t("Uploading was successful")).toString());
}
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/server/state/StateServiceDefault.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/state/StateServiceDefault.java 2008-12-05 21:15:09 UTC (rev 987)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/state/StateServiceDefault.java 2008-12-06 19:36:56 UTC (rev 988)
@@ -114,7 +114,7 @@
state.setEnabledTools(groupManager.findEnabledTools(group.getId()));
setSocialNetwork(state, userLogged, group);
state.setStateToken(group.getStateToken());
- state.setTitle("<h2>" + i18n.t("This user doesn't have a homepage") + "</h2>");
+ state.setTitle("<h2>" + i18n.t("This user does not have a homepage") + "</h2>");
return state;
}
Modified: trunk/src/main/java/org/ourproject/kune/wiki/server/WikiServerTool.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/wiki/server/WikiServerTool.java 2008-12-05 21:15:09 UTC (rev 987)
+++ trunk/src/main/java/org/ourproject/kune/wiki/server/WikiServerTool.java 2008-12-06 19:36:56 UTC (rev 988)
@@ -98,7 +98,7 @@
descriptor.setTypeId(TYPE_WIKIPAGE);
descriptor.setStatus(ContentStatus.publishedOnline);
contentManager.save(user, descriptor,
- i18n.t("This is only a wiki page sample. You can edit or rename it but also any other user."));
+ i18n.t("This is only a wiki page sample. You can edit or rename it, as any other user."));
return group;
}
1
0
r987 - in trunk/src/main/java/org/ourproject/kune/workspace/client: . cxt i18n signin sitebar/sitepublic summary
by Samer . 05 Dec '08
by Samer . 05 Dec '08
05 Dec '08
Author: shevek
Date: 2008-12-05 22:15:09 +0100 (Fri, 05 Dec 2008)
New Revision: 987
Modified:
trunk/src/main/java/org/ourproject/kune/workspace/client/AbstractFoldableContentActions.java
trunk/src/main/java/org/ourproject/kune/workspace/client/cxt/ContextPropEditorPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/i18n/I18nTranslatorPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/signin/RegisterForm.java
trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/sitepublic/SitePublicSpaceLinkPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/summary/GroupSummaryPanel.java
Log:
Translation improved
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/AbstractFoldableContentActions.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/AbstractFoldableContentActions.java 2008-12-05 19:10:49 UTC (rev 986)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/AbstractFoldableContentActions.java 2008-12-05 21:15:09 UTC (rev 987)
@@ -113,7 +113,7 @@
AccessRolDTO.Administrator, i18n.t("Submitted for publish"), parentMenuTitle,
ContentStatusDTO.publishedOnline);
final ActionToolbarMenuDescriptor<StateToken> setInTheDustBinStatus = createSetStatusAction(
- AccessRolDTO.Administrator, i18n.t("In the dustbin"), parentMenuTitle, ContentStatusDTO.inTheDustbin);
+ AccessRolDTO.Administrator, i18n.t("In the rubbish bin"), parentMenuTitle, ContentStatusDTO.inTheDustbin);
contentActionRegistry.addAction(setPublishStatus, contentsModerated);
contentActionRegistry.addAction(setEditionInProgressStatus, contentsModerated);
contentActionRegistry.addAction(setRejectStatus, contentsModerated);
@@ -144,7 +144,7 @@
delContainer.setTextDescription(i18n.t(text));
delContainer.setMustBeConfirmed(true);
delContainer.setConfirmationTitle(i18n.t("Please confirm"));
- delContainer.setConfirmationText(i18n.t("You will delete it and also all its contents. Are you sure?"));
+ delContainer.setConfirmationText(i18n.t("You will delete it with all its contents. Are you sure?"));
contextActionRegistry.addAction(delContainer, registerInTypes);
}
@@ -418,7 +418,7 @@
});
}
});
- setAsDefGroupContent.setTextDescription(i18n.t("Set this as the group default page"));
+ setAsDefGroupContent.setTextDescription(i18n.t("Set this as the default group page"));
setAsDefGroupContent.setIconUrl("images/group-home.png");
setAsDefGroupContent.setEnableCondition(new ActionEnableCondition<StateToken>() {
public boolean mustBeEnabled(final StateToken itemToken) {
@@ -496,7 +496,7 @@
protected ActionToolbarButtonAndItemDescriptor<StateToken> createUploadMediaAction(String... registerInTypes) {
ActionToolbarButtonAndItemDescriptor<StateToken> uploadMedia = createUploadAction(i18n.t("Upload media"),
- "images/nav/upload.png", i18n.t("Upload some media (images, videos)"),
+ "images/nav/upload.png", i18n.t("Upload some media (images, videos...)"),
session.getGalleryPermittedExtensions());
contextActionRegistry.addAction(uploadMedia, registerInTypes);
return uploadMedia;
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/cxt/ContextPropEditorPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/cxt/ContextPropEditorPanel.java 2008-12-05 19:10:49 UTC (rev 986)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/cxt/ContextPropEditorPanel.java 2008-12-05 21:15:09 UTC (rev 987)
@@ -180,7 +180,7 @@
if (langComponent == null) {
final LanguageSelectorPanel view = (LanguageSelectorPanel) langSelectorProv.get().getView();
view.setWidth(FORMS_WIDTH);
- langComponent = new ContextPropertyPanel(i18n.t("What language is this in?"), null, true, LANG_PROP, view);
+ langComponent = new ContextPropertyPanel(i18n.t("In which language is this written?"), null, true, LANG_PROP, view);
view.addChangeListener(new ComboBoxListenerAdapter() {
@Override
public void onSelect(final ComboBox comboBox, final Record record, final int index) {
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/i18n/I18nTranslatorPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/i18n/I18nTranslatorPresenter.java 2008-12-05 19:10:49 UTC (rev 986)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/i18n/I18nTranslatorPresenter.java 2008-12-05 21:15:09 UTC (rev 987)
@@ -55,7 +55,7 @@
if (session.isLogged()) {
view.show();
} else {
- Site.info(i18n.t("Sign in or register to help with translation"));
+ Site.info(i18n.t("Sign in or register to help with the translation"));
}
Site.hideProgress();
}
@@ -65,7 +65,7 @@
i18nService.setTranslation(session.getUserHash(), id, translation, new AsyncCallback<String>() {
public void onFailure(final Throwable caught) {
Site.hideProgress();
- Site.error(i18n.t("Server error saving translation"));
+ Site.error(i18n.t("Server error saving the translation"));
}
public void onSuccess(final String result) {
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/signin/RegisterForm.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/signin/RegisterForm.java 2008-12-05 19:10:49 UTC (rev 986)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/signin/RegisterForm.java 2008-12-05 21:15:09 UTC (rev 987)
@@ -224,7 +224,7 @@
createRadio(personalSpaceFieldSet, wantPersonalHomePage,
i18n.t("Yes, I want a homepage for publish my contents."), WANNAPERSONALHOMEPAGE_ID);
wantPersonalHomePage.setChecked(true);
- createRadio(personalSpaceFieldSet, noPersonalHomePage, i18n.t("No, I don't want. Maybe in the future."),
+ createRadio(personalSpaceFieldSet, noPersonalHomePage, i18n.t("No, I do not want. Maybe in the future i will."),
NOPERSONALHOMEPAGE_ID);
add(personalSpaceFieldSet);
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInPanel.java 2008-12-05 19:10:49 UTC (rev 986)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/signin/SignInPanel.java 2008-12-05 21:15:09 UTC (rev 987)
@@ -86,7 +86,7 @@
noAccRegisterPanel.setBorder(false);
noAccRegisterPanel.setMargins(0, 20, 0, 0);
HorizontalPanel hp = new HorizontalPanel();
- final Label dontHaveAccountLabel = new Label(i18n.t("Don't have an account?"));
+ final Label dontHaveAccountLabel = new Label(i18n.t("Don't you have an account?"));
final Label registerLabel = new Label(i18n.t("Create one."));
registerLabel.ensureDebugId(CREATE_ONE);
registerLabel.addClickListener(new ClickListener() {
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/sitepublic/SitePublicSpaceLinkPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/sitepublic/SitePublicSpaceLinkPanel.java 2008-12-05 19:10:49 UTC (rev 986)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/sitepublic/SitePublicSpaceLinkPanel.java 2008-12-05 21:15:09 UTC (rev 987)
@@ -60,7 +60,7 @@
gotoPublic();
}
});
- gotoPublic.setTitle(i18n.t("Leave the workspace and go to the public space of this group")
+ gotoPublic.setTitle(i18n.t("Leave the workspace and go to this group public space")
+ Site.IN_DEVELOPMENT);
gotoPublic.addStyleName("k-sitebar-labellink");
contentNoPublic.addStyleName("k-sitebar-labellink");
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/summary/GroupSummaryPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/summary/GroupSummaryPanel.java 2008-12-05 19:10:49 UTC (rev 986)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/summary/GroupSummaryPanel.java 2008-12-05 21:15:09 UTC (rev 987)
@@ -35,7 +35,7 @@
public GroupSummaryPanel(Images img, final GroupSummaryPresenter presenter, final I18nTranslationService i18n,
final WorkspaceSkeleton ws) {
super(img, i18n.t("Group Summary"), true);
- setHeaderTitle(i18n.t("Some summarized information about current project" + Site.IN_DEVELOPMENT));
+ setHeaderTitle(i18n.t("Summarized information about current project" + Site.IN_DEVELOPMENT));
vp = new VerticalPanel();
vp.setWidth("100%");
super.setContent(vp);
1
0
r986 - in trunk/src/main/java/org/ourproject/kune/workspace/client: editor licensechoose newgroup search socialnet tags
by Samer . 05 Dec '08
by Samer . 05 Dec '08
05 Dec '08
Author: shevek
Date: 2008-12-05 20:10:49 +0100 (Fri, 05 Dec 2008)
New Revision: 986
Modified:
trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorToolbar.java
trunk/src/main/java/org/ourproject/kune/workspace/client/licensechoose/LicenseChoosePanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/newgroup/NewGroupPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/search/SiteSearcherPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/ParticipationSummaryPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/SocialNetworkPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/tags/TagsSummaryPanel.java
Log:
Translation improved
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorPanel.java 2008-12-05 17:53:45 UTC (rev 985)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorPanel.java 2008-12-05 19:10:49 UTC (rev 986)
@@ -131,7 +131,7 @@
}
public void showSaveBeforeDialog() {
- MessageBox.confirm(i18n.t("Save confirmation"), i18n.t("Save before closing the editor?"),
+ MessageBox.confirm(i18n.t("Save confirmation"), i18n.t("Do you want to save before closing the editor?"),
new MessageBox.ConfirmCallback() {
public void execute(final String btnID) {
if (btnID.equals("yes")) {
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorToolbar.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorToolbar.java 2008-12-05 17:53:45 UTC (rev 985)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorToolbar.java 2008-12-05 19:10:49 UTC (rev 986)
@@ -391,7 +391,7 @@
private MenuBar createFontSizesMenu() {
final MenuBar menu = new MenuBar();
final MenuBar submenu = new MenuBar(true);
- final String fontSizes[] = { i18n.t("Extra small"), i18n.t("Very small"), i18n.t("small"), i18n.t("Medium"),
+ final String fontSizes[] = { i18n.t("Extra small"), i18n.t("Very small"), i18n.t("Small"), i18n.t("Medium"),
i18n.t("Large"), i18n.t("Very large"), i18n.t("Extra large") };
KuneUiUtils.setQuickTip(menu, i18n.t("Font Size"));
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/licensechoose/LicenseChoosePanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/licensechoose/LicenseChoosePanel.java 2008-12-05 17:53:45 UTC (rev 985)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/licensechoose/LicenseChoosePanel.java 2008-12-05 19:10:49 UTC (rev 986)
@@ -66,7 +66,7 @@
final VerticalPanel licenseTypesVP = new VerticalPanel();
ccRB = new RadioButton("ccOrNot", i18n.t("Creative Commons"));
- final RadioButton notCcRB = new RadioButton("ccOrNot", i18n.t("Others licenses"));
+ final RadioButton notCcRB = new RadioButton("ccOrNot", i18n.t("Other licenses"));
options = new DeckPanel();
ccIntro = new Label(
i18n.t("With a Creative Commons license, you keep your copyright but allow people to copy and distribute your work provided they give you credit — and only on the conditions you specify here. What do you want to do?"));
@@ -75,10 +75,10 @@
final VerticalPanel ccOptionsVP = new VerticalPanel();
final VerticalPanel nonCcOptionsVP = new VerticalPanel();
- final Label comercialLabel = new Label(i18n.t("Allow commercial uses of your work?"));
- commercialRB = new RadioButton("comercial", i18n.t("Yes"));
- nonCommercialRB = new RadioButton("comercial", i18n.t("No"));
- final Label allowModifLabel = new Label(i18n.t("Allow modifications of your work?"));
+ final Label comercialLabel = new Label(i18n.t("Do you want to allow commercial uses of your work?"));
+ commercialRB = new RadioButton("commercial", i18n.t("Yes"));
+ nonCommercialRB = new RadioButton("commercial", i18n.t("No"));
+ final Label allowModifLabel = new Label(i18n.t("Do you want to allow modifications of your work?"));
allowModifRB = new RadioButton("allowModif", i18n.t("Yes"));
allowModifShareAlikeRB = new RadioButton("allowModif", i18n.t("Yes, as long as others share alike"));
noModifRB = new RadioButton("allowModif", i18n.t("No"));
@@ -201,7 +201,7 @@
public void showNotCCoptions() {
options.showWidget(1);
- optionsBox.setTitle(i18n.t("Select one of these licenses:"));
+ optionsBox.setTitle(i18n.t("Please, select one of these licenses:"));
}
private void configureListeners(final LicenseChoosePresenter presenter) {
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/newgroup/NewGroupPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/newgroup/NewGroupPanel.java 2008-12-05 17:53:45 UTC (rev 985)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/newgroup/NewGroupPanel.java 2008-12-05 19:10:49 UTC (rev 986)
@@ -270,12 +270,12 @@
tags.setName(TAGS_FIELD);
tags.setWidth(BIG_FIELD_WIDTH);
tags.setAllowBlank(false);
- final ToolTip fieldToolTip = new ToolTip(i18n.t("Some words related to this group (separated with spaces)."));
+ final ToolTip fieldToolTip = new ToolTip(i18n.t("Please, write some keywords for this group (separated with spaces)."));
fieldToolTip.applyTo(tags);
tags.setValidationDelay(1000);
form.add(tags);
- final FieldSet groupTypeFieldSet = new FieldSet(i18n.t("Type of group"));
+ final FieldSet groupTypeFieldSet = new FieldSet(i18n.t("Group type"));
groupTypeFieldSet.setStyle("margin-left: 105px");
groupTypeFieldSet.setWidth(BIG_FIELD_WIDTH);
@@ -284,23 +284,23 @@
projectRadio = new Radio();
projectRadio.setTabIndex(5);
createRadio(groupTypeFieldSet, projectRadio, "Project",
- "A project is a kind of group in which new members inclusion "
+ "A project is a kind of group in which new members joining "
+ "is moderated by the project administrators. "
+ "An administrator is the person who creates the project "
- + "and other people she/he choose in the future as administrator too.", PROJ_GROUP_TYPE_ID);
+ + "and other people she/he chooses to be administrator as well.", PROJ_GROUP_TYPE_ID);
projectRadio.setChecked(true);
orgRadio = new Radio();
orgRadio.setTabIndex(6);
- createRadio(groupTypeFieldSet, orgRadio, "Organization", "An organization is like a project, "
+ createRadio(groupTypeFieldSet, orgRadio, "Organization", "An organization works as a project, "
+ "but organizations must be a legal entity.", ORG_GROUP_TYPE_ID);
communityRadio = new Radio();
communityRadio.setTabIndex(7);
- createRadio(groupTypeFieldSet, communityRadio, "Community", "Communities are social group of persons "
- + "with shared interests and they are open to new members "
+ createRadio(groupTypeFieldSet, communityRadio, "Community", "Communities are social groups of persons "
+ + "with shared interests, which are open to new members "
+ "(for instance the environmental community or the LGBT community). "
- + "Normally they aren't a legal entity.", COMM_GROUP_TYPE_ID);
+ + "They rarely are a legal entity.", COMM_GROUP_TYPE_ID);
groupTypeFieldSet.setCollapsible(false);
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/search/SiteSearcherPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/search/SiteSearcherPanel.java 2008-12-05 17:53:45 UTC (rev 985)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/search/SiteSearcherPanel.java 2008-12-05 19:10:49 UTC (rev 986)
@@ -104,7 +104,7 @@
dialog.expand();
dialog.center();
if (traybarButton == null) {
- traybarButton = new SiteBottomTrayButton("images/kune-search-ico-push.gif", i18n.t("Show/hide searcher"),
+ traybarButton = new SiteBottomTrayButton("images/kune-search-ico-push.gif", i18n.t("Show/hide search engine"),
dialog, ws);
}
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPanel.java 2008-12-05 17:53:45 UTC (rev 985)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPanel.java 2008-12-05 19:10:49 UTC (rev 986)
@@ -53,7 +53,7 @@
public BuddiesSummaryPanel(final BuddiesSummaryPresenter presenter, final WorkspaceSkeleton ws,
I18nTranslationService i18n, ActionManager actionManager, ActionToolbarView<UserSimpleDTO> actionToolbarView) {
- super(i18n.t("Buddies"), i18n.t("Buddies of this user"), ws);
+ super(i18n.t("Buddies"), i18n.t("This user buddies"), ws);
this.actionManager = actionManager;
menuItemsContainer = new MenuItemsContainer<UserSimpleDTO>();
this.i18n = i18n;
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPresenter.java 2008-12-05 17:53:45 UTC (rev 985)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPresenter.java 2008-12-05 19:10:49 UTC (rev 986)
@@ -171,7 +171,7 @@
}
});
addAsBuddie.setMustBeAuthenticated(true);
- addAsBuddie.setTextDescription(i18n.t("Add as buddie"));
+ addAsBuddie.setTextDescription(i18n.t("Add as a buddie"));
addAsBuddie.setIconUrl("images/add-green.png");
addAsBuddie.setAddCondition(new ActionAddCondition<UserSimpleDTO>() {
public boolean mustBeAdded(UserSimpleDTO item) {
@@ -192,7 +192,7 @@
}
});
go.setMustBeAuthenticated(false);
- go.setTextDescription(i18n.t("Visit this user homepage"));
+ go.setTextDescription(i18n.t("Visit this user's homepage"));
go.setIconUrl("images/group-home.gif");
actionRegistry.addAction(go);
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPanel.java 2008-12-05 17:53:45 UTC (rev 985)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPanel.java 2008-12-05 19:10:49 UTC (rev 986)
@@ -106,7 +106,7 @@
public void confirmAddCollab(final String groupShortName, final String groupLongName) {
final String groupName = groupLongName + " (" + groupShortName + ")";
- MessageBox.confirm(i18n.t("Confirm addition of member"), i18n.t("Add [%s] as member?", groupName),
+ MessageBox.confirm(i18n.t("Confirm member joining"), i18n.t("Add [%s] as a member?", groupName),
new MessageBox.ConfirmCallback() {
public void execute(final String btnID) {
if (btnID.equals("yes")) {
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPresenter.java 2008-12-05 17:53:45 UTC (rev 985)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPresenter.java 2008-12-05 19:10:49 UTC (rev 986)
@@ -112,7 +112,7 @@
chatEngineProvider.get().chat(
XmppURI.jid(group.getShortName() + "@" + initData.getChatDomain()));
} else {
- Site.important(i18n.t("To start a chat you need to be 'online'."));
+ Site.important(i18n.t("To start a chat you need to be 'online'"));
}
}
}), true);
@@ -163,7 +163,7 @@
});
addMember.setIconUrl("images/add-green.gif");
addMember.setTextDescription(i18n.t("Add member"));
- addMember.setToolTip(i18n.t("Add a group or a person as member of this group"));
+ addMember.setToolTip(i18n.t("Add an user or a group as member of this group"));
addMember.setParentMenuTitle(i18n.t("Options"));
groupActionRegistry.addAction(addMember);
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/ParticipationSummaryPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/ParticipationSummaryPanel.java 2008-12-05 17:53:45 UTC (rev 985)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/ParticipationSummaryPanel.java 2008-12-05 19:10:49 UTC (rev 986)
@@ -43,8 +43,8 @@
public ParticipationSummaryPanel(final ParticipationSummaryPresenter presenter, final I18nTranslationService i18n,
final WorkspaceSkeleton ws, ActionToolbarView<StateToken> actionToolbarView) {
- super(i18n.t("Participates in"), i18n.t("Groups in which participates"), ws);
- gridMenuPanel = new GridMenuPanel<GroupDTO>(i18n.t("This user is not member of any group"), false, false,
+ super(i18n.t("Participates in"), i18n.t("Groups in which the user participates"), ws);
+ gridMenuPanel = new GridMenuPanel<GroupDTO>(i18n.t("This user does not belong to any group"), false, false,
false, false, false);
Listener<String> go = new Listener<String>() {
public void onEvent(final String groupShortName) {
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/SocialNetworkPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/SocialNetworkPresenter.java 2008-12-05 17:53:45 UTC (rev 985)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/SocialNetworkPresenter.java 2008-12-05 19:10:49 UTC (rev 986)
@@ -162,7 +162,7 @@
Site.important(i18n.t("Sorry this is a closed group"));
break;
case moderated:
- Site.info(i18n.t("Requested. Waiting for admins decision"));
+ Site.info(i18n.t("Membership requested. Waiting for admins decision"));
break;
}
}
@@ -186,11 +186,11 @@
}
});
unJoin.setIconUrl("images/del.gif");
- unJoin.setTextDescription(i18n.t("Unjoin"));
- unJoin.setToolTip(i18n.t("Don't participate more in this group"));
+ unJoin.setTextDescription(i18n.t("Leave"));
+ unJoin.setToolTip(i18n.t("Do not participate anymore in this group"));
unJoin.setParentMenuTitle(i18n.t("Options"));
unJoin.setMustBeConfirmed(true);
- unJoin.setConfirmationTitle(i18n.t("Unjoin this group"));
+ unJoin.setConfirmationTitle(i18n.t("Leave this group"));
unJoin.setConfirmationText(i18n.t("Are you sure?"));
}
@@ -244,7 +244,7 @@
stateManager.gotoToken(groupDTO.getShortName());
}
});
- unJoinMenuItem = new MenuItem<GroupDTO>("images/del.gif", i18n.t("Don't participate more in this group"),
+ unJoinMenuItem = new MenuItem<GroupDTO>("images/del.gif", i18n.t("Do not participate anymore in this group"),
new Listener<GroupDTO>() {
public void onEvent(final GroupDTO groupDTO) {
removeMemberAction(groupDTO);
@@ -259,7 +259,7 @@
new AsyncCallbackSimple<SocialNetworkDataDTO>() {
public void onSuccess(final SocialNetworkDataDTO result) {
Site.hideProgress();
- Site.info(i18n.t("Type of member changed"));
+ Site.info(i18n.t("Member type changed"));
stateManager.setSocialNetwork(result);
}
});
@@ -297,7 +297,7 @@
new AsyncCallbackSimple<SocialNetworkDataDTO>() {
public void onSuccess(final SocialNetworkDataDTO result) {
Site.hideProgress();
- Site.info(i18n.t("Type of member changed"));
+ Site.info(i18n.t("Member type changed"));
stateManager.setSocialNetwork(result);
}
});
@@ -318,7 +318,7 @@
});
}
});
- denyJoinGroupMenuItem = new MenuItem<GroupDTO>("images/cancel.gif", i18n.t("Don't accept this member"),
+ denyJoinGroupMenuItem = new MenuItem<GroupDTO>("images/cancel.gif", i18n.t("Reject this member"),
new Listener<GroupDTO>() {
public void onEvent(final GroupDTO group) {
Site.showProgressProcessing();
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/tags/TagsSummaryPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/tags/TagsSummaryPanel.java 2008-12-05 17:53:45 UTC (rev 985)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/tags/TagsSummaryPanel.java 2008-12-05 19:10:49 UTC (rev 986)
@@ -58,9 +58,9 @@
final Label label = new Label(name);
// i18n pluralization
if (count > 1) {
- KuneUiUtils.setQuickTip(label, i18n.t("[%d] items with this tag", count));
+ KuneUiUtils.setQuickTip(label, i18n.t("There are [%d] items with this tag", count));
} else {
- KuneUiUtils.setQuickTip(label, i18n.t("[%d] item with this tag", count));
+ KuneUiUtils.setQuickTip(label, i18n.t("There are [%d] item with this tag", count));
}
label.addClickListener(new ClickListener() {
public void onClick(final Widget sender) {
1
0
Author: vjrj
Date: 2008-12-05 18:53:45 +0100 (Fri, 05 Dec 2008)
New Revision: 985
Added:
trunk/src/main/java/org/ourproject/kune/platf/server/utils/
trunk/src/main/java/org/ourproject/kune/platf/server/utils/StringW.java
trunk/src/main/java/org/ourproject/kune/platf/server/utils/XmlW.java
trunk/src/test/java/org/ourproject/kune/platf/server/manager/file/orig.pdf
Modified:
trunk/src/main/java/org/ourproject/kune/app/public/css/all.css
trunk/src/main/java/org/ourproject/kune/app/public/css/kune-new.css
trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientModule.java
trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogFolderContentPresenter.java
trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogViewerPresenter.java
trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogViewerView.java
trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientModule.java
trunk/src/main/java/org/ourproject/kune/chat/client/cnt/ChatRoomPresenter.java
trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java
trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientModule.java
trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientTool.java
trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocFolderContentPanel.java
trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocFolderContentPresenter.java
trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentViewerPresenter.java
trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentViewerView.java
trunk/src/main/java/org/ourproject/kune/gallery/client/GalleryClientModule.java
trunk/src/main/java/org/ourproject/kune/gallery/client/GalleryClientTool.java
trunk/src/main/java/org/ourproject/kune/gallery/client/cnt/GalleryFolderContentPanel.java
trunk/src/main/java/org/ourproject/kune/gallery/client/cnt/GalleryFolderContentPresenter.java
trunk/src/main/java/org/ourproject/kune/gallery/client/cnt/GalleryViewerPresenter.java
trunk/src/main/java/org/ourproject/kune/gallery/client/cnt/GalleryViewerView.java
trunk/src/main/java/org/ourproject/kune/platf/client/dto/BasicMimeTypeDTO.java
trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneModule.java
trunk/src/main/java/org/ourproject/kune/platf/client/ui/KuneUiUtils.java
trunk/src/main/java/org/ourproject/kune/platf/server/domain/BasicMimeType.java
trunk/src/main/java/org/ourproject/kune/platf/server/manager/file/FileDownloadManager.java
trunk/src/main/java/org/ourproject/kune/platf/server/manager/file/FileUploadManager.java
trunk/src/main/java/org/ourproject/kune/platf/server/manager/file/ImageUtilsDefault.java
trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientActions.java
trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientModule.java
trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientTool.java
trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiFolderContentPresenter.java
trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiViewerPresenter.java
trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiViewerView.java
trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/AbstractContentPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/AbstractContentView.java
trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/FoldableContentPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/FoldableContentPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/ctxnav/ContextNavigatorPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorToolbar.java
trunk/src/main/resources/kune.properties
trunk/src/test/java/org/ourproject/kune/platf/server/manager/file/ImageUtilsDefaultTest.java
Log:
Preview of uploaded files (different than images).
Complete - task pdf to img for previews
Complete - task Text files preview
Modified: trunk/src/main/java/org/ourproject/kune/app/public/css/all.css
===================================================================
--- trunk/src/main/java/org/ourproject/kune/app/public/css/all.css 2008-12-05 16:22:07 UTC (rev 984)
+++ trunk/src/main/java/org/ourproject/kune/app/public/css/all.css 2008-12-05 17:53:45 UTC (rev 985)
@@ -41,4 +41,4 @@
padding: 1px 0px 1px 1px;
text-decoration:none;
}
-*/.k-textlinethrough{text-decoration:line-through;color:red;}.k-textnormal{text-decoration:inherit;color:green;}.k-textunderline{text-decoration:underline;color:gray;}.x-tool-kmenu{background-position:0 -75px;}.x-tool-kmenu-over{background-position:-15px -75px;}.k-border-openbox{border-bottom:1px #D0D0D0 solid;border-right:1px #D0D0D0 solid;border-left:1px #D0D0D0 solid;}/* SiteToastMessages */.k-stm-info-icon{background-image:url(img/info.gif)!important;}.k-stm-imp-icon{background-image:url(img/alert.gif)!important;}.k-stm-verimp-icon{background-image:url(img/important.gif)!important;}.k-stm-error-icon{background-image:url(img/error.gif)!important;}.k-error-tb{background:#FFB380 none repeat scroll 0 50%;color:#250;}.k-infod-head{font-size:108%;margin-bottom:10px;}.gwt-DisclosurePanel{}.gwt-DisclosurePanel-open{}.gwt-DisclosurePanel-closed{}.gwt-DisclosurePanel .header,.gwt-DisclosurePanel .header a,.gwt-DisclosurePanel .header td{text-decoration:none;/* Remove underline from header */color:#000;cursor:pointer;cursor:hand;}.gwt-DisclosurePanel .content{border-left:3px solid #e8eef7;padding:4px 0 4px 8px;margin-left:6px;}.k-basic-thumb{background:#FAFAFA none repeat scroll 0 50%;border:1px solid #EBEBEB;padding:3px;margin:3px;}.k-basic-thumb td{padding:2px 3px;border:none;}.k-text-gray{color:gray;}.k-elp-limg{margin-top:4px;margin-left:5px;cursor:pointer;}.k-tsp-tag{float:right;margin-right:5px;cursor:pointer;color:#00F;}.k-tsp-cloud{vertical-align:bottom;}.k-options-icon{background-image:url(img/emblem-system.gif)!important;}.x-toolbar-body table{width:100%;}
\ No newline at end of file
+*/.k-textlinethrough{text-decoration:line-through;color:red;}.k-textnormal{text-decoration:inherit;color:green;}.k-textunderline{text-decoration:underline;color:gray;}.x-tool-kmenu{background-position:0 -75px;}.x-tool-kmenu-over{background-position:-15px -75px;}.k-border-openbox{border-bottom:1px #D0D0D0 solid;border-right:1px #D0D0D0 solid;border-left:1px #D0D0D0 solid;}/* SiteToastMessages */.k-stm-info-icon{background-image:url(img/info.gif)!important;}.k-stm-imp-icon{background-image:url(img/alert.gif)!important;}.k-stm-verimp-icon{background-image:url(img/important.gif)!important;}.k-stm-error-icon{background-image:url(img/error.gif)!important;}.k-error-tb{background:#FFB380 none repeat scroll 0 50%;color:#250;}.k-infod-head{font-size:108%;margin-bottom:10px;}.gwt-DisclosurePanel{}.gwt-DisclosurePanel-open{}.gwt-DisclosurePanel-closed{}.gwt-DisclosurePanel .header,.gwt-DisclosurePanel .header a,.gwt-DisclosurePanel .header td{text-decoration:none;/* Remove underline from header */color:#000;cursor:pointer;cursor:hand;}.gwt-DisclosurePanel .content{border-left:3px solid #e8eef7;padding:4px 0 4px 8px;margin-left:6px;}.k-basic-thumb{background:#FAFAFA none repeat scroll 0 50%;border:1px solid #EBEBEB;padding:3px;margin:3px;}.k-basic-thumb td{padding:2px 3px;border:none;}.k-text-gray{color:gray;}.k-elp-limg{margin-top:4px;margin-left:5px;cursor:pointer;}.k-tsp-tag{float:right;margin-right:5px;cursor:pointer;color:#00F;}.k-tsp-cloud{vertical-align:bottom;}.k-options-icon{background-image:url(img/emblem-system.gif)!important;}.x-toolbar-body table{/* width: 100%; */}.k-preview-msg{background:#FCA;}.k-preview-msg-lab{background:#FCA;padding:0 5px;}
\ No newline at end of file
Modified: trunk/src/main/java/org/ourproject/kune/app/public/css/kune-new.css
===================================================================
--- trunk/src/main/java/org/ourproject/kune/app/public/css/kune-new.css 2008-12-05 16:22:07 UTC (rev 984)
+++ trunk/src/main/java/org/ourproject/kune/app/public/css/kune-new.css 2008-12-05 17:53:45 UTC (rev 985)
@@ -816,6 +816,15 @@
}
.x-toolbar-body table {
- width: 100%;
+ /* width: 100%; */
}
+.k-preview-msg
+ {
+ background: #FFCCAA;
+}
+.k-preview-msg-lab
+ {
+ background: #FFCCAA;
+ padding: 0 5px;
+}
Modified: trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientModule.java 2008-12-05 16:22:07 UTC (rev 984)
+++ trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientModule.java 2008-12-05 17:53:45 UTC (rev 985)
@@ -108,7 +108,7 @@
public BlogFolderContent create() {
final BlogFolderContentPresenter presenter = new BlogFolderContentPresenter($(StateManager.class),
$(Session.class), $(ActionContentToolbar.class), $(ContentActionRegistry.class),
- $(I18nTranslationService.class));
+ $(I18nTranslationService.class), $$(FileDownloadUtils.class));
final BlogFolderContentView view = new BlogFolderContentPanel($(WorkspaceSkeleton.class),
$(I18nTranslationService.class));
presenter.init(view);
Modified: trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogFolderContentPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogFolderContentPresenter.java 2008-12-05 16:22:07 UTC (rev 984)
+++ trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogFolderContentPresenter.java 2008-12-05 17:53:45 UTC (rev 985)
@@ -27,16 +27,20 @@
import org.ourproject.kune.platf.client.services.I18nTranslationService;
import org.ourproject.kune.platf.client.state.Session;
import org.ourproject.kune.platf.client.state.StateManager;
+import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
import org.ourproject.kune.workspace.client.cnt.FoldableContentPresenter;
+import com.calclab.suco.client.ioc.Provider;
+
public class BlogFolderContentPresenter extends FoldableContentPresenter implements BlogFolderContent {
private BlogFolderContentView view;
private final I18nTranslationService i18n;
public BlogFolderContentPresenter(StateManager stateManager, Session session, ActionContentToolbar toolbar,
- final ActionRegistry<StateToken> actionRegistry, I18nTranslationService i18n) {
- super(BlogClientTool.NAME, stateManager, session, toolbar, actionRegistry);
+ final ActionRegistry<StateToken> actionRegistry, I18nTranslationService i18n,
+ Provider<FileDownloadUtils> downloadProvider) {
+ super(BlogClientTool.NAME, stateManager, session, toolbar, actionRegistry, downloadProvider);
this.i18n = i18n;
}
Modified: trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogViewerPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogViewerPresenter.java 2008-12-05 16:22:07 UTC (rev 984)
+++ trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogViewerPresenter.java 2008-12-05 17:53:45 UTC (rev 985)
@@ -22,62 +22,31 @@
import org.ourproject.kune.blogs.client.BlogClientTool;
import org.ourproject.kune.platf.client.actions.ContentActionRegistry;
import org.ourproject.kune.platf.client.actions.toolbar.ActionContentToolbar;
-import org.ourproject.kune.platf.client.dto.BasicMimeTypeDTO;
import org.ourproject.kune.platf.client.dto.StateContentDTO;
-import org.ourproject.kune.platf.client.dto.StateToken;
import org.ourproject.kune.platf.client.state.Session;
import org.ourproject.kune.platf.client.state.StateManager;
import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
-import org.ourproject.kune.platf.client.ui.download.ImageSize;
import org.ourproject.kune.workspace.client.cnt.FoldableContentPresenter;
import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService;
import com.calclab.suco.client.ioc.Provider;
public class BlogViewerPresenter extends FoldableContentPresenter implements BlogViewer {
- private BlogViewerView view;
- private final Provider<FileDownloadUtils> downloadProvider;
public BlogViewerPresenter(StateManager stateManager, Session session, I18nUITranslationService i18n,
ActionContentToolbar toolbar, ContentActionRegistry actionRegistry,
Provider<FileDownloadUtils> downloadProvider) {
- super(BlogClientTool.NAME, stateManager, session, toolbar, actionRegistry);
- this.downloadProvider = downloadProvider;
+ super(BlogClientTool.NAME, stateManager, session, toolbar, actionRegistry, downloadProvider);
}
public void init(BlogViewerView view) {
super.init(view);
- this.view = view;
}
@Override
protected void setState(StateContentDTO state) {
super.setState(state);
- setContent(state, BlogClientTool.TYPE_UPLOADEDFILE);
+ super.setContent(state, BlogClientTool.TYPE_UPLOADEDFILE);
}
- private void setContent(StateContentDTO state, String uploadedfileType) {
- String typeId = state.getTypeId();
- String contentBody = state.getContent();
- StateToken token = state.getStateToken();
- BasicMimeTypeDTO mimeType = state.getMimeType();
- if (typeId.equals(uploadedfileType)) {
- if (mimeType != null) {
- FileDownloadUtils fileDownloadUtils = downloadProvider.get();
- if (mimeType.getType().equals("image")) {
- view.showImage(fileDownloadUtils.getImageUrl(token), fileDownloadUtils.getImageResizedUrl(token,
- ImageSize.sized));
- } else if (mimeType.toString().equals("text/plain") || mimeType.toString().equals("application/pdf")) {
- view.setContent(contentBody);
- } else {
- view.setContent("");
- }
- } else {
- view.setContent("");
- }
- } else {
- view.setContent(contentBody);
- }
- view.attach();
- }
}
Modified: trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogViewerView.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogViewerView.java 2008-12-05 16:22:07 UTC (rev 984)
+++ trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogViewerView.java 2008-12-05 17:53:45 UTC (rev 985)
@@ -23,8 +23,4 @@
public interface BlogViewerView extends AbstractContentView {
- void setContent(String content);
-
- void showImage(String imageUrl, String imageResizedUrl);
-
}
Modified: trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientModule.java 2008-12-05 16:22:07 UTC (rev 984)
+++ trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientModule.java 2008-12-05 17:53:45 UTC (rev 985)
@@ -37,6 +37,7 @@
import org.ourproject.kune.platf.client.state.Session;
import org.ourproject.kune.platf.client.state.StateManager;
import org.ourproject.kune.platf.client.tool.ToolSelector;
+import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
import org.ourproject.kune.workspace.client.ctxnav.ContextNavigator;
import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService;
import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton;
@@ -91,7 +92,7 @@
public ChatRoom create() {
final ChatRoomPresenter presenter = new ChatRoomPresenter($(StateManager.class), $(Session.class),
$(I18nUITranslationService.class), $(ActionContentToolbar.class),
- $(ContentActionRegistry.class));
+ $(ContentActionRegistry.class), $$(FileDownloadUtils.class));
final ChatRoomPanel panel = new ChatRoomPanel($(WorkspaceSkeleton.class),
$(I18nTranslationService.class));
presenter.init(panel);
Modified: trunk/src/main/java/org/ourproject/kune/chat/client/cnt/ChatRoomPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/chat/client/cnt/ChatRoomPresenter.java 2008-12-05 16:22:07 UTC (rev 984)
+++ trunk/src/main/java/org/ourproject/kune/chat/client/cnt/ChatRoomPresenter.java 2008-12-05 17:53:45 UTC (rev 985)
@@ -26,18 +26,22 @@
import org.ourproject.kune.platf.client.dto.StateToken;
import org.ourproject.kune.platf.client.state.Session;
import org.ourproject.kune.platf.client.state.StateManager;
+import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
import org.ourproject.kune.workspace.client.cnt.FoldableContentPresenter;
import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService;
import org.ourproject.kune.workspace.client.site.Site;
+import com.calclab.suco.client.ioc.Provider;
+
public class ChatRoomPresenter extends FoldableContentPresenter implements ChatRoom {
private ChatRoomView view;
private final I18nUITranslationService i18n;
public ChatRoomPresenter(StateManager stateManager, Session session, I18nUITranslationService i18n,
- ActionContentToolbar toolbar, final ActionRegistry<StateToken> actionRegistry) {
- super(ChatClientTool.NAME, stateManager, session, toolbar, actionRegistry);
+ ActionContentToolbar toolbar, final ActionRegistry<StateToken> actionRegistry,
+ Provider<FileDownloadUtils> downloadProvider) {
+ super(ChatClientTool.NAME, stateManager, session, toolbar, actionRegistry, downloadProvider);
this.i18n = i18n;
}
Modified: trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java 2008-12-05 16:22:07 UTC (rev 984)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java 2008-12-05 17:53:45 UTC (rev 985)
@@ -100,7 +100,7 @@
createEditAction(TYPE_DOCUMENT);
- createTranslateAction(TYPE_DOCUMENT, TYPE_FOLDER, TYPE_UPLOADEDFILE);
+ createTranslateAction(TYPE_DOCUMENT, TYPE_FOLDER);
createDelContainerAction("Delete folder", parentMenuTitleCtx, containersNoRoot);
createDelContentAction(parentMenuTitle, i18n.t("Delete"), contents);
Modified: trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientModule.java 2008-12-05 16:22:07 UTC (rev 984)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientModule.java 2008-12-05 17:53:45 UTC (rev 985)
@@ -76,8 +76,8 @@
$(Session.class), $(StateManager.class), $(DeferredCommandWrapper.class),
$$(ContentServiceAsync.class), $$(GroupServiceAsync.class), $$(FileUploader.class),
$(ContentActionRegistry.class), $(ContextActionRegistry.class), $$(FileDownloadUtils.class),
- $(EntityHeader.class), $$(TextEditor.class), $(KuneErrorHandler.class), $(DocumentViewer.class),
- $$(ContextPropEditor.class));
+ $(EntityHeader.class), $$(TextEditor.class), $(KuneErrorHandler.class),
+ $(DocumentViewer.class), $$(ContextPropEditor.class));
}
});
@@ -107,7 +107,8 @@
@Override
public DocFolderContent create() {
final DocFolderContentPresenter presenter = new DocFolderContentPresenter($(StateManager.class),
- $(Session.class), $(ActionContentToolbar.class), $(ContentActionRegistry.class));
+ $(Session.class), $(ActionContentToolbar.class), $(ContentActionRegistry.class),
+ $$(FileDownloadUtils.class));
final DocFolderContentView view = new DocFolderContentPanel($(WorkspaceSkeleton.class),
$(I18nTranslationService.class));
presenter.init(view);
Modified: trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientTool.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientTool.java 2008-12-05 16:22:07 UTC (rev 984)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientTool.java 2008-12-05 17:53:45 UTC (rev 985)
@@ -46,7 +46,7 @@
registerRateableTypes(TYPE_DOCUMENT, TYPE_UPLOADEDFILE);
registerRenamableTypes(TYPE_DOCUMENT, TYPE_FOLDER, TYPE_UPLOADEDFILE);
registerTageableTypes(TYPE_DOCUMENT, TYPE_UPLOADEDFILE);
- registerTranslatableTypes(TYPE_DOCUMENT, TYPE_FOLDER, TYPE_UPLOADEDFILE);
+ registerTranslatableTypes(TYPE_DOCUMENT, TYPE_FOLDER);
registerIcons();
}
Modified: trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocFolderContentPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocFolderContentPanel.java 2008-12-05 16:22:07 UTC (rev 984)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocFolderContentPanel.java 2008-12-05 17:53:45 UTC (rev 985)
@@ -21,13 +21,11 @@
import org.ourproject.kune.platf.client.services.I18nTranslationService;
import org.ourproject.kune.workspace.client.cnt.FoldableContentPanel;
-import org.ourproject.kune.workspace.client.site.Site;
import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton;
public class DocFolderContentPanel extends FoldableContentPanel implements DocFolderContentView {
public DocFolderContentPanel(WorkspaceSkeleton ws, I18nTranslationService i18n) {
super(ws, i18n);
- super.setLabel("Folder properties, translations ..." + Site.IN_DEVELOPMENT);
}
}
Modified: trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocFolderContentPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocFolderContentPresenter.java 2008-12-05 16:22:07 UTC (rev 984)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocFolderContentPresenter.java 2008-12-05 17:53:45 UTC (rev 985)
@@ -25,13 +25,16 @@
import org.ourproject.kune.platf.client.dto.StateToken;
import org.ourproject.kune.platf.client.state.Session;
import org.ourproject.kune.platf.client.state.StateManager;
+import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
import org.ourproject.kune.workspace.client.cnt.FoldableContentPresenter;
+import com.calclab.suco.client.ioc.Provider;
+
public class DocFolderContentPresenter extends FoldableContentPresenter implements DocFolderContent {
public DocFolderContentPresenter(StateManager stateManager, Session session, ActionContentToolbar toolbar,
- final ActionRegistry<StateToken> actionRegistry) {
- super(DocumentClientTool.NAME, stateManager, session, toolbar, actionRegistry);
+ final ActionRegistry<StateToken> actionRegistry, Provider<FileDownloadUtils> downloadProvider) {
+ super(DocumentClientTool.NAME, stateManager, session, toolbar, actionRegistry, downloadProvider);
}
public void init(final DocFolderContentView view) {
Modified: trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentViewerPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentViewerPresenter.java 2008-12-05 16:22:07 UTC (rev 984)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentViewerPresenter.java 2008-12-05 17:53:45 UTC (rev 985)
@@ -22,32 +22,25 @@
import org.ourproject.kune.docs.client.DocumentClientTool;
import org.ourproject.kune.platf.client.actions.ContentActionRegistry;
import org.ourproject.kune.platf.client.actions.toolbar.ActionContentToolbar;
-import org.ourproject.kune.platf.client.dto.BasicMimeTypeDTO;
import org.ourproject.kune.platf.client.dto.StateContentDTO;
-import org.ourproject.kune.platf.client.dto.StateToken;
import org.ourproject.kune.platf.client.state.Session;
import org.ourproject.kune.platf.client.state.StateManager;
import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
-import org.ourproject.kune.platf.client.ui.download.ImageSize;
import org.ourproject.kune.workspace.client.cnt.FoldableContentPresenter;
import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService;
import com.calclab.suco.client.ioc.Provider;
public class DocumentViewerPresenter extends FoldableContentPresenter implements DocumentViewer {
- private DocumentViewerView view;
- private final Provider<FileDownloadUtils> downloadProvider;
public DocumentViewerPresenter(StateManager stateManager, Session session, I18nUITranslationService i18n,
ActionContentToolbar toolbar, ContentActionRegistry actionRegistry,
Provider<FileDownloadUtils> downloadProvider) {
- super(DocumentClientTool.NAME, stateManager, session, toolbar, actionRegistry);
- this.downloadProvider = downloadProvider;
+ super(DocumentClientTool.NAME, stateManager, session, toolbar, actionRegistry, downloadProvider);
}
public void init(DocumentViewerView view) {
super.init(view);
- this.view = view;
}
@Override
@@ -55,29 +48,4 @@
super.setState(state);
setContent(state, DocumentClientTool.TYPE_UPLOADEDFILE);
}
-
- private void setContent(StateContentDTO state, String uploadedfileType) {
- String typeId = state.getTypeId();
- String contentBody = state.getContent();
- StateToken token = state.getStateToken();
- BasicMimeTypeDTO mimeType = state.getMimeType();
- if (typeId.equals(uploadedfileType)) {
- if (mimeType != null) {
- FileDownloadUtils fileDownloadUtils = downloadProvider.get();
- if (mimeType.getType().equals("image")) {
- view.showImage(fileDownloadUtils.getImageUrl(token), fileDownloadUtils.getImageResizedUrl(token,
- ImageSize.sized));
- } else if (mimeType.toString().equals("text/plain") || mimeType.toString().equals("application/pdf")) {
- view.setContent(contentBody);
- } else {
- view.setContent("");
- }
- } else {
- view.setContent("");
- }
- } else {
- view.setContent(contentBody);
- }
- view.attach();
- }
}
Modified: trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentViewerView.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentViewerView.java 2008-12-05 16:22:07 UTC (rev 984)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentViewerView.java 2008-12-05 17:53:45 UTC (rev 985)
@@ -22,9 +22,4 @@
import org.ourproject.kune.workspace.client.cnt.AbstractContentView;
public interface DocumentViewerView extends AbstractContentView {
-
- void setContent(String content);
-
- void showImage(String imageUrl, String imageResizedUrl);
-
}
Modified: trunk/src/main/java/org/ourproject/kune/gallery/client/GalleryClientModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/gallery/client/GalleryClientModule.java 2008-12-05 16:22:07 UTC (rev 984)
+++ trunk/src/main/java/org/ourproject/kune/gallery/client/GalleryClientModule.java 2008-12-05 17:53:45 UTC (rev 985)
@@ -108,9 +108,10 @@
public GalleryFolderContent create() {
final GalleryFolderContentPresenter presenter = new GalleryFolderContentPresenter(
$(StateManager.class), $(Session.class), $(ActionContentToolbar.class),
- $(ContentActionRegistry.class), $(I18nTranslationService.class), $$(FileDownloadUtils.class));
+ $(ContentActionRegistry.class), $(I18nTranslationService.class), $$(FileDownloadUtils.class),
+ $$(FileDownloadUtils.class));
final GalleryFolderContentView view = new GalleryFolderContentPanel($(WorkspaceSkeleton.class),
- $(I18nTranslationService.class), $(StateManager.class));
+ $(I18nTranslationService.class), $(StateManager.class), $(Session.class));
presenter.init(view);
return presenter;
}
Modified: trunk/src/main/java/org/ourproject/kune/gallery/client/GalleryClientTool.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/gallery/client/GalleryClientTool.java 2008-12-05 16:22:07 UTC (rev 984)
+++ trunk/src/main/java/org/ourproject/kune/gallery/client/GalleryClientTool.java 2008-12-05 17:53:45 UTC (rev 985)
@@ -45,7 +45,7 @@
registerRateableTypes(TYPE_UPLOADEDFILE);
registerRenamableTypes(TYPE_ALBUM, TYPE_UPLOADEDFILE);
registerTageableTypes(TYPE_UPLOADEDFILE);
- registerTranslatableTypes(TYPE_ALBUM, TYPE_UPLOADEDFILE);
+ // registerTranslatableTypes();
registerIcons();
}
Modified: trunk/src/main/java/org/ourproject/kune/gallery/client/cnt/GalleryFolderContentPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/gallery/client/cnt/GalleryFolderContentPanel.java 2008-12-05 16:22:07 UTC (rev 984)
+++ trunk/src/main/java/org/ourproject/kune/gallery/client/cnt/GalleryFolderContentPanel.java 2008-12-05 17:53:45 UTC (rev 985)
@@ -21,6 +21,7 @@
import org.ourproject.kune.platf.client.dto.StateToken;
import org.ourproject.kune.platf.client.services.I18nTranslationService;
+import org.ourproject.kune.platf.client.state.Session;
import org.ourproject.kune.platf.client.state.StateManager;
import org.ourproject.kune.platf.client.ui.BasicThumb;
import org.ourproject.kune.workspace.client.cnt.FoldableContentPanel;
@@ -37,20 +38,24 @@
private static final int TEXT_MAX_LENGHT = 15;
private FlowPanel flowPanel;
private final StateManager stateManager;
+ private final Session session;
- public GalleryFolderContentPanel(WorkspaceSkeleton ws, I18nTranslationService i18n, StateManager stateManager) {
+ public GalleryFolderContentPanel(WorkspaceSkeleton ws, I18nTranslationService i18n, StateManager stateManager,
+ Session session) {
super(ws, i18n);
this.stateManager = stateManager;
+ this.session = session;
}
public void addThumb(final StateToken token, final String title, final String imgUrl) {
DeferredCommand.addCommand(new Command() {
public void execute() {
- BasicThumb thumb = new BasicThumb(imgUrl, 85, title, TEXT_MAX_LENGHT, true, new ClickListener() {
- public void onClick(Widget sender) {
- stateManager.gotoToken(token);
- }
- });
+ BasicThumb thumb = new BasicThumb(imgUrl, session.getImgCropsize(), title, TEXT_MAX_LENGHT, true,
+ new ClickListener() {
+ public void onClick(Widget sender) {
+ stateManager.gotoToken(token);
+ }
+ });
thumb.setHeight("100");
thumb.setWidth("100");
if (title.length() > TEXT_MAX_LENGHT) {
@@ -67,6 +72,6 @@
} else {
flowPanel.clear();
}
- super.setContent(flowPanel);
+ super.setWidgetAsContent(flowPanel, true);
}
}
Modified: trunk/src/main/java/org/ourproject/kune/gallery/client/cnt/GalleryFolderContentPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/gallery/client/cnt/GalleryFolderContentPresenter.java 2008-12-05 16:22:07 UTC (rev 984)
+++ trunk/src/main/java/org/ourproject/kune/gallery/client/cnt/GalleryFolderContentPresenter.java 2008-12-05 17:53:45 UTC (rev 985)
@@ -43,8 +43,8 @@
public GalleryFolderContentPresenter(StateManager stateManager, Session session, ActionContentToolbar toolbar,
final ActionRegistry<StateToken> actionRegistry, I18nTranslationService i18n,
- Provider<FileDownloadUtils> downloadUtils) {
- super(GalleryClientTool.NAME, stateManager, session, toolbar, actionRegistry);
+ Provider<FileDownloadUtils> downloadUtils, Provider<FileDownloadUtils> downloadProvider) {
+ super(GalleryClientTool.NAME, stateManager, session, toolbar, actionRegistry, downloadProvider);
this.i18n = i18n;
this.downloadUtils = downloadUtils;
}
Modified: trunk/src/main/java/org/ourproject/kune/gallery/client/cnt/GalleryViewerPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/gallery/client/cnt/GalleryViewerPresenter.java 2008-12-05 16:22:07 UTC (rev 984)
+++ trunk/src/main/java/org/ourproject/kune/gallery/client/cnt/GalleryViewerPresenter.java 2008-12-05 17:53:45 UTC (rev 985)
@@ -22,32 +22,25 @@
import org.ourproject.kune.gallery.client.GalleryClientTool;
import org.ourproject.kune.platf.client.actions.ContentActionRegistry;
import org.ourproject.kune.platf.client.actions.toolbar.ActionContentToolbar;
-import org.ourproject.kune.platf.client.dto.BasicMimeTypeDTO;
import org.ourproject.kune.platf.client.dto.StateContentDTO;
-import org.ourproject.kune.platf.client.dto.StateToken;
import org.ourproject.kune.platf.client.state.Session;
import org.ourproject.kune.platf.client.state.StateManager;
import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
-import org.ourproject.kune.platf.client.ui.download.ImageSize;
import org.ourproject.kune.workspace.client.cnt.FoldableContentPresenter;
import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService;
import com.calclab.suco.client.ioc.Provider;
public class GalleryViewerPresenter extends FoldableContentPresenter implements GalleryViewer {
- private GalleryViewerView view;
- private final Provider<FileDownloadUtils> downloadProvider;
public GalleryViewerPresenter(StateManager stateManager, Session session, I18nUITranslationService i18n,
ActionContentToolbar toolbar, ContentActionRegistry actionRegistry,
Provider<FileDownloadUtils> downloadProvider) {
- super(GalleryClientTool.NAME, stateManager, session, toolbar, actionRegistry);
- this.downloadProvider = downloadProvider;
+ super(GalleryClientTool.NAME, stateManager, session, toolbar, actionRegistry, downloadProvider);
}
public void init(GalleryViewerView view) {
super.init(view);
- this.view = view;
}
@Override
@@ -56,28 +49,4 @@
setContent(state, GalleryClientTool.TYPE_UPLOADEDFILE);
}
- private void setContent(StateContentDTO state, String uploadedfileType) {
- String typeId = state.getTypeId();
- String contentBody = state.getContent();
- StateToken token = state.getStateToken();
- BasicMimeTypeDTO mimeType = state.getMimeType();
- if (typeId.equals(uploadedfileType)) {
- if (mimeType != null) {
- FileDownloadUtils fileDownloadUtils = downloadProvider.get();
- if (mimeType.getType().equals("image")) {
- view.showImage(fileDownloadUtils.getImageUrl(token), fileDownloadUtils.getImageResizedUrl(token,
- ImageSize.sized));
- } else if (mimeType.toString().equals("text/plain") || mimeType.toString().equals("application/pdf")) {
- view.setContent(contentBody);
- } else {
- view.setContent("");
- }
- } else {
- view.setContent("");
- }
- } else {
- view.setContent(contentBody);
- }
- view.attach();
- }
}
Modified: trunk/src/main/java/org/ourproject/kune/gallery/client/cnt/GalleryViewerView.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/gallery/client/cnt/GalleryViewerView.java 2008-12-05 16:22:07 UTC (rev 984)
+++ trunk/src/main/java/org/ourproject/kune/gallery/client/cnt/GalleryViewerView.java 2008-12-05 17:53:45 UTC (rev 985)
@@ -22,9 +22,4 @@
import org.ourproject.kune.workspace.client.cnt.AbstractContentView;
public interface GalleryViewerView extends AbstractContentView {
-
- void setContent(String content);
-
- void showImage(String imageUrl, String imageResizedUrl);
-
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/dto/BasicMimeTypeDTO.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/dto/BasicMimeTypeDTO.java 2008-12-05 16:22:07 UTC (rev 984)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/dto/BasicMimeTypeDTO.java 2008-12-05 17:53:45 UTC (rev 985)
@@ -52,10 +52,33 @@
return type;
}
+ /**
+ * Duplicate code in BMT
+ *
+ * @return
+ */
public boolean isImage() {
- return getType().equals("image");
+ return type != null && type.equals("image");
}
+ /**
+ * Duplicate code in BMT
+ *
+ * @return
+ */
+ public boolean isPdf() {
+ return type != null && subtype != null && type.equals("application") && subtype.equals("pdf");
+ }
+
+ /**
+ * Duplicate code in BMTDTO
+ *
+ * @return
+ */
+ public boolean isText() {
+ return type != null && subtype != null && type.equals("text") && subtype.equals("plain");
+ }
+
public void setSubtype(final String subtype) {
this.subtype = subtype;
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneModule.java 2008-12-05 16:22:07 UTC (rev 984)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneModule.java 2008-12-05 17:53:45 UTC (rev 985)
@@ -384,7 +384,7 @@
$(I18nUITranslationService.class), $(StateManager.class), $(SiteSignOutLink.class),
$(DeferredCommandWrapper.class));
final TextEditorPanel panel = new TextEditorPanel(presenter, $(I18nTranslationService.class),
- $(WorkspaceSkeleton.class), $(ColorWebSafePalette.class));
+ $(WorkspaceSkeleton.class), $(ColorWebSafePalette.class), false);
presenter.init(panel);
return presenter;
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/ui/KuneUiUtils.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/KuneUiUtils.java 2008-12-05 16:22:07 UTC (rev 984)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/KuneUiUtils.java 2008-12-05 17:53:45 UTC (rev 985)
@@ -77,7 +77,7 @@
return tipHtml;
}
- public static String genQuickTipWithImage(String imageResizedUrl) {
+ public static String genQuickTipWithImage(String imageResizedUrl, int size) {
return new Image(imageResizedUrl).toString();
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/server/domain/BasicMimeType.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/domain/BasicMimeType.java 2008-12-05 16:22:07 UTC (rev 984)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/domain/BasicMimeType.java 2008-12-05 17:53:45 UTC (rev 985)
@@ -53,6 +53,33 @@
return type;
}
+ /**
+ * Duplicate code in BMTDTO
+ *
+ * @return
+ */
+ public boolean isImage() {
+ return type != null && type.equals("image");
+ }
+
+ /**
+ * Duplicate code in BMTDTO
+ *
+ * @return
+ */
+ public boolean isPdf() {
+ return type != null && subtype != null && type.equals("application") && subtype.equals("pdf");
+ }
+
+ /**
+ * Duplicate code in BMTDTO
+ *
+ * @return
+ */
+ public boolean isText() {
+ return type != null && subtype != null && type.equals("text") && subtype.equals("plain");
+ }
+
public void setSubtype(final String subtype) {
this.subtype = subtype;
}
@@ -61,6 +88,7 @@
this.type = type;
}
+ @Override
public String toString() {
return subtype == null ? type : type + "/" + subtype;
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/server/manager/file/FileDownloadManager.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/manager/file/FileDownloadManager.java 2008-12-05 16:22:07 UTC (rev 984)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/manager/file/FileDownloadManager.java 2008-12-05 17:53:45 UTC (rev 985)
@@ -75,16 +75,24 @@
String extension = FileUtils.getFileNameExtension(filename, true);
BasicMimeType mimeType = cnt.getMimeType();
- if (mimeType.getType().equals("image")) {
+ boolean isPdfAndNotDownload = mimeType.isPdf() && !download;
+ if (mimeType.isImage() || isPdfAndNotDownload) {
String imgsizePrefix = imgsize == null ? "" : "." + imgsize;
String filenameWithoutExtension = FileUtils.getFileNameWithoutExtension(filename, extension);
- String filenameResized = filenameWithoutExtension + imgsizePrefix + extension;
+ String filenameResized = filenameWithoutExtension + imgsizePrefix
+ + (isPdfAndNotDownload ? ".png" : extension);
if (new File(absDir + filenameResized).exists()) {
// thumb can fail
filename = filenameResized;
}
}
+ // We will send the pdf thumb not the real pdf
+ if (isPdfAndNotDownload) {
+ extension = ".png";
+ mimeType = new BasicMimeType("image", "png");
+ }
+
final String absFilename = absDir + filename;
doBuildResp(resp, absFilename, cnt.getTitle(), mimeType, extension, download);
@@ -98,7 +106,7 @@
resp.setContentLength((int) file.length());
if (mimeType == null || download) {
resp.setContentType("application/x-download");
- } else if (mimeType.getType().equals("image")) {
+ } else if (mimeType.isImage()) {
resp.setContentType(mimeType.toString());
} else {
resp.setContentType("application/x-download");
Modified: trunk/src/main/java/org/ourproject/kune/platf/server/manager/file/FileUploadManager.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/manager/file/FileUploadManager.java 2008-12-05 16:22:07 UTC (rev 984)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/manager/file/FileUploadManager.java 2008-12-05 17:53:45 UTC (rev 985)
@@ -42,6 +42,7 @@
import org.ourproject.kune.platf.server.domain.User;
import org.ourproject.kune.platf.server.manager.FileManager;
import org.ourproject.kune.platf.server.properties.KuneProperties;
+import org.ourproject.kune.platf.server.utils.StringW;
import com.google.inject.Inject;
import com.google.inject.servlet.RequestScoped;
@@ -116,15 +117,21 @@
log.info("Mimetype: " + basicMimeType);
final String extension = FileUtils.getFileNameExtension(file.getName(), false);
- if (basicMimeType.getType().equals("image")) {
- generateThumbs(absDir, file.getName(), extension);
+ 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()) {
+ 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 String preview = "Preview of this file (in development)";
final Content content = contentManager.createContent(FileUtils.getFileNameWithoutExtension(file.getName(),
extension), preview, user, container, typeId);
content.setMimeType(basicMimeType);
@@ -138,7 +145,7 @@
}
}
- private void generateThumbs(String absDir, String filename, String extension) {
+ private void generateThumbs(String absDir, String filename, String extension, boolean isPdf) {
try {
String fileOrig = absDir + filename;
String withoutExtension = FileUtils.getFileNameWithoutExtension(filename, extension);
@@ -146,6 +153,7 @@
String resizeName = absDir + withoutExtension + "." + ImageSize.sized + "." + extension;
String thumbName = absDir + withoutExtension + "." + ImageSize.thumb + "." + extension;
String iconName = absDir + withoutExtension + "." + ImageSize.ico + "." + extension;
+ String previewName = absDir + withoutExtension + "." + extension;
int resizeWidth = Integer.parseInt(kuneProperties.get(KuneProperties.IMAGES_RESIZEWIDTH));
int thumbSize = Integer.parseInt(kuneProperties.get(KuneProperties.IMAGES_THUMBSIZE));
@@ -155,6 +163,9 @@
ImageUtilsDefault.scaleImageToMax(fileOrig, resizeName, resizeWidth);
ImageUtilsDefault.createThumb(fileOrig, thumbName, thumbSize, cropSize);
ImageUtilsDefault.createThumb(fileOrig, iconName, iconSize);
+ if (isPdf) {
+ ImageUtilsDefault.createThumbFromPdf(fileOrig, previewName);
+ }
} catch (NumberFormatException e) {
log.error("Image sizes in kune.properties are not integers");
Modified: trunk/src/main/java/org/ourproject/kune/platf/server/manager/file/ImageUtilsDefault.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/manager/file/ImageUtilsDefault.java 2008-12-05 16:22:07 UTC (rev 984)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/manager/file/ImageUtilsDefault.java 2008-12-05 17:53:45 UTC (rev 985)
@@ -46,7 +46,7 @@
if (thumbDimension < cropDimension) {
throw new IndexOutOfBoundsException("Thumb dimension must be bigger than crop dimension");
}
- MagickImage imageOrig = createImage(fileOrig);
+ MagickImage imageOrig = readImage(fileOrig);
Dimension origDimension = imageOrig.getDimension();
int origHeight = origDimension.height;
int origWidth = origDimension.width;
@@ -57,6 +57,12 @@
cropImage(scaled, fileDest, x, y, cropDimension, cropDimension);
}
+ static public boolean createThumbFromPdf(String pdfFile, String newPngFile) throws MagickException {
+ MagickImage pdf = readImage(pdfFile);
+ MagickImage pdf1 = pdf.breakFrames()[0];
+ return writeImage(pdf1, newPngFile);
+ }
+
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);
@@ -66,32 +72,42 @@
public static boolean cropImage(String fileOrig, String fileDest, Rectangle rectangle) throws MagickException,
FileNotFoundException {
checkExist(fileOrig);
- return cropImage(createImage(fileOrig), fileDest, rectangle);
+ return cropImage(readImage(fileOrig), fileDest, rectangle);
}
public static Dimension getDimension(String file) throws MagickException {
- MagickImage imageOrig = createImage(file);
+ MagickImage imageOrig = readImage(file);
return imageOrig.getDimension();
}
+ /**
+ * 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();
+ }
+
public static boolean scaleImage(String fileOrig, String fileDest, Dimension dimension) throws MagickException,
FileNotFoundException {
checkExist(fileOrig);
- MagickImage imageOrig = createImage(fileOrig);
+ MagickImage imageOrig = readImage(fileOrig);
return scaleImage(imageOrig, fileDest, (int) dimension.getWidth(), (int) dimension.getHeight());
}
public static boolean scaleImage(String fileOrig, String fileDest, int width, int height) throws MagickException,
FileNotFoundException {
checkExist(fileOrig);
- MagickImage imageOrig = createImage(fileOrig);
+ MagickImage imageOrig = readImage(fileOrig);
return scaleImage(imageOrig, fileDest, width, height);
}
public static boolean scaleImageToMax(String fileOrig, String fileDest, int maxSize) throws MagickException,
FileNotFoundException {
checkExist(fileOrig);
- MagickImage imageOrig = createImage(fileOrig);
+ MagickImage imageOrig = readImage(fileOrig);
Dimension origDimension = imageOrig.getDimension();
int origHeight = origDimension.height;
int origWidth = origDimension.width;
@@ -130,12 +146,14 @@
}
private static ImageInfo createEmptyImageInfo() throws MagickException {
- ImageInfo info = new ImageInfo();
- return info;
+ ImageInfo imageInfo = new ImageInfo();
+ return imageInfo;
}
- private static MagickImage createImage(String file) throws MagickException {
- return new MagickImage(new ImageInfo(file));
+ private static ImageInfo createEmptyImageInfoWithNoPage() throws MagickException {
+ ImageInfo imageInfo = createEmptyImageInfo();
+ imageInfo.setPage("0x0+0+0");
+ return imageInfo;
}
private static boolean cropImage(MagickImage fileOrig, String fileDest, int x, int y, int width, int height)
@@ -146,9 +164,16 @@
private static boolean cropImage(MagickImage fileOrig, String fileDest, Rectangle rectangle) throws MagickException {
MagickImage cropped = fileOrig.cropImage(rectangle);
- return writeImage(cropped, fileDest);
+ cropped.setFileName(fileDest);
+ ImageInfo imageInfo = createEmptyImageInfoWithNoPage();
+ return cropped.writeImage(imageInfo);
}
+ private static MagickImage readImage(String file) throws MagickException {
+ 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);
}
Added: trunk/src/main/java/org/ourproject/kune/platf/server/utils/StringW.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/utils/StringW.java 2008-12-05 16:22:07 UTC (rev 984)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/utils/StringW.java 2008-12-05 17:53:45 UTC (rev 985)
@@ -0,0 +1,305 @@
+/*
+ * Copyright 1999,2004 The Apache Software Foundation.
+ *
+ * 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.
+ */
+// Copied from GenerationJava Core Library.
+//package com.generationjava.lang;
+// copied in kune from:
+// http://svn.apache.org/repos/asf/jakarta/taglibs/proper/string/trunk/src/org…
+package org.ourproject.kune.platf.server.utils;
+
+import org.apache.commons.lang.StringUtils;
+
+/**
+ * A set of String library static methods. While extending String or
+ * StringBuffer would have been the nicest solution, that is not possible, so a
+ * simple set of static methods seems the most workable.
+ *
+ * Method ideas have so far been taken from the PHP4, Ruby and .NET languages.
+ *
+ * @author bayard(a)generationjava.com
+ * @version 0.4 20010812
+ */
+final public class StringW {
+
+ /**
+ * Quote a string so that it may be used in a regular expression without any
+ * parts of the string being considered as a part of the regular
+ * expression's control characters.
+ */
+ static public String quoteRegularExpression(String str) {
+ // replace ? + * / . ^ $ as long as they're not in character
+ // class. so must be done by hand
+ char[] chrs = str.toCharArray();
+ int sz = chrs.length;
+ StringBuffer buffer = new StringBuffer(2 * sz);
+ for (int i = 0; i < sz; i++) {
+ switch (chrs[i]) {
+ case '[':
+ case ']':
+ case '?':
+ case '+':
+ case '*':
+ case '/':
+ case '.':
+ case '^':
+ case '$':
+ buffer.append("\\");
+ default:
+ buffer.append(chrs[i]);
+ }
+ }
+ return buffer.toString();
+ }
+
+ /**
+ * Truncates a string nicely. It will search for the first space after the
+ * lower limit and truncate the string there. It will also append any string
+ * passed as a parameter to the end of the string. The hard limit can be
+ * specified to forcibily truncate a string (in the case of an extremely
+ * long word or such). All HTML/XML markup will be stripped from the string
+ * prior to processing for truncation.
+ *
+ * @param str
+ * String the string to be truncated.
+ * @param lower
+ * int value of the lower limit.
+ * @param upper
+ * int value of the upper limit, -1 if no limit is desired. If
+ * the uppper limit is lower than the lower limit, it will be
+ * adjusted to be same as the lower limit.
+ * @param appendToEnd
+ * String to be appended to the end of the truncated string. This
+ * is appended ONLY if the string was indeed truncated. The
+ * append is does not count towards any lower/upper limits.
+ *
+ * @author timster(a)mac.com
+ */
+ public static String truncateNicely(String str, int lower, int upper, String appendToEnd) {
+ // strip markup from the string
+ str = XmlW.removeXml(str);
+
+ // unescape temporarily for length handling
+ str = XmlW.unescapeXml(str);
+
+ // quickly adjust the upper if it is set lower than 'lower'
+ if (upper < lower) {
+ upper = lower;
+ }
+
+ // now determine if the string fits within the upper limit
+ // if it does, go straight to return, do not pass 'go' and collect $200
+ if (str.length() > upper) {
+ // the magic location int
+ int loc;
+
+ // first we determine where the next space appears after lower
+ loc = str.lastIndexOf(' ', upper);
+
+ // now we'll see if the location is greater than the lower limit
+ if (loc >= lower) {
+ // yes it was, so we'll cut it off here
+ str = str.substring(0, loc);
+ } else {
+ // no it wasnt, so we'll cut it off at the upper limit
+ str = str.substring(0, upper);
+ }
+
+ // the string was truncated, so we append the appendToEnd String
+ str = str + appendToEnd;
+ }
+
+ // escape after finished processing string
+ str = XmlW.escapeXml(str);
+
+ return str;
+ }
+
+ /**
+ * Create a word-wrapped version of a String. Wrap at 80 characters and use
+ * newlines as the delimiter. If a word is over 80 characters long use a -
+ * sign to split it.
+ */
+ static public String wordWrap(String str) {
+ return wordWrap(str, 80, "\n", "-", true);
+ }
+
+ /**
+ * Create a word-wrapped version of a String. Wrap at a specified width and
+ * use newlines as the delimiter. If a word is over the width in lenght use
+ * a - sign to split it.
+ */
+ static public String wordWrap(String str, int width) {
+ return wordWrap(str, width, "\n", "-", true);
+ }
+
+ /**
+ * Word-wrap a string.
+ *
+ * @param str
+ * String to word-wrap
+ * @param width
+ * int to wrap at
+ * @param delim
+ * String to use to separate lines
+ * @param split
+ * String to use to split a word greater than width long
+ *
+ * @return String that has been word wrapped (with the delim inside width
+ * boundaries)
+ */
+ static public String wordWrap(String str, int width, String delim, String split) {
+ return wordWrap(str, width, delim, split, true);
+ }
+
+ /**
+ * Word-wrap a string.
+ *
+ * @param str
+ * String to word-wrap
+ * @param width
+ * int to wrap at
+ * @param delim
+ * String to use to separate lines
+ * @param split
+ * String to use to split a word greater than width long
+ * @param delimInside
+ * wheter or not delim should be included in chunk before length
+ * reaches width.
+ *
+ * @return String that has been word wrapped
+ */
+ static public String wordWrap(String str, int width, String delim, String split, boolean delimInside) {
+ int sz = str.length();
+
+ // System.err.println( ">>>> inside: " + delimInside + " sz : " + sz );
+
+ // / shift width up one. mainly as it makes the logic easier
+ width++;
+
+ // our best guess as to an initial size
+ StringBuffer buffer = new StringBuffer(sz / width * delim.length() + sz);
+
+ // every line might include a delim on the end
+ // System.err.println( "width before: "+ width );
+ if (delimInside) {
+ width = width - delim.length();
+ } else {
+ width--;
+ }
+ // System.err.println( "width after: "+ width );
+
+ int idx = -1;
+ String substr = null;
+
+ // beware: i is rolled-back inside the loop
+ for (int i = 0; i < sz; i += width) {
+
+ // on the last line
+ if (i > sz - width) {
+ buffer.append(str.substring(i));
+ // System.err.print("LAST-LINE: "+str.substring(i));
+ break;
+ }
+
+ // System.err.println("loop[i] is: "+i);
+ // the current line
+ substr = str.substring(i, i + width);
+ // System.err.println( "substr: " + substr );
+
+ // is the delim already on the line
+ idx = substr.indexOf(delim);
+ // System.err.println( "i: " + i + " idx : " + idx );
+ if (idx != -1) {
+ buffer.append(substr.substring(0, idx));
+ // System.err.println("Substr: '"substr.substring(0,idx)+"'");
+ buffer.append(delim);
+ i -= width - idx - delim.length();
+
+ // System.err.println("loop[i] is now: "+i);
+ // System.err.println("ounfd-whitespace: '"+substr.charAt(idx+1)+"'.");
+ // Erase a space after a delim. Is this too obscure?
+ if (substr.length() > idx + 1) {
+ if (substr.charAt(idx + 1) != '\n') {
+ if (Character.isWhitespace(substr.charAt(idx + 1))) {
+ i++;
+ }
+ }
+ }
+ // System.err.println("i -= "+width+"-"+idx);
+ continue;
+ }
+
+ idx = -1;
+
+ // figure out where the last space is
+ char[] chrs = substr.toCharArray();
+ for (int j = width; j > 0; j--) {
+ if (Character.isWhitespace(chrs[j - 1])) {
+ idx = j;
+ // System.err.println("Found whitespace: "+idx);
+ break;
+ }
+ }
+
+ // idx is the last whitespace on the line.
+ // System.err.println("idx is "+idx);
+ if (idx == -1) {
+ for (int j = width; j > 0; j--) {
+ if (chrs[j - 1] == '-') {
+ idx = j;
+ // System.err.println("Found Dash: "+idx);
+ break;
+ }
+ }
+ if (idx == -1) {
+ buffer.append(substr);
+ buffer.append(delim);
+ // System.err.print(substr);
+ // System.err.print(delim);
+ } else {
+ if (idx != width) {
+ idx++;
+ }
+ buffer.append(substr.substring(0, idx));
+ buffer.append(delim);
+ // System.err.print(substr.substring(0,idx));
+ // System.err.print(delim);
+ i -= width - idx;
+ }
+ } else {
+ /*
+ * if(force) { if(idx == width-1) { buffer.append(substr);
+ * buffer.append(delim); } else { // stick a split in. int
+ * splitsz = split.length();
+ * buffer.append(substr.substring(0,width-splitsz));
+ * buffer.append(split); buffer.append(delim); i -= splitsz; } }
+ * else {
+ */
+ // insert spaces
+ buffer.append(substr.substring(0, idx));
+ buffer.append(StringUtils.repeat(" ", width - idx));
+ // System.err.print(substr.substring(0,idx));
+ // System.err.print(StringUtils.repeat(" ",width-idx));
+ buffer.append(delim);
+ // System.err.print(delim);
+ // System.err.println("i -= "+width+"-"+idx);
+ i -= width - idx;
+ // }
+ }
+ }
+ // System.err.println("\n*************");
+ return buffer.toString();
+ }
+}
Added: trunk/src/main/java/org/ourproject/kune/platf/server/utils/XmlW.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/utils/XmlW.java 2008-12-05 16:22:07 UTC (rev 984)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/utils/XmlW.java 2008-12-05 17:53:45 UTC (rev 985)
@@ -0,0 +1,161 @@
+/*
+ * Copyright 1999,2004 The Apache Software Foundation.
+ *
+ * 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.
+ */
+// Copied from GenerationJava Core Library.
+//package com.generationjava.web;
+// Copied in kune from:
+// http://svn.apache.org/repos/asf/jakarta/taglibs/proper/string/trunk/src/org…
+package org.ourproject.kune.platf.server.utils;
+
+import org.apache.commons.lang.StringUtils;
+
+/**
+ * XML helping static methods.
+ *
+ * @author bayard(a)generationjava.com
+ * @version 0.4 20010812
+ */
+final public class XmlW {
+
+ static public String escapeXml(String str) {
+ str = StringUtils.replace(str, "&", "&");
+ str = StringUtils.replace(str, "<", "<");
+ str = StringUtils.replace(str, ">", ">");
+ str = StringUtils.replace(str, "\"", """);
+ str = StringUtils.replace(str, "'", "'");
+ return str;
+ }
+
+ static public String getAttribute(String attribute, String text) {
+ return getAttribute(attribute, text, 0);
+ }
+
+ static public String getAttribute(String attribute, String text, int idx) {
+ int close = text.indexOf(">", idx);
+ int attrIdx = text.indexOf(attribute + "=\"", idx);
+ if (attrIdx == -1) {
+ return null;
+ }
+ if (attrIdx > close) {
+ return null;
+ }
+ int attrStartIdx = attrIdx + attribute.length() + 2;
+ int attrCloseIdx = text.indexOf("\"", attrStartIdx);
+ if (attrCloseIdx > close) {
+ return null;
+ }
+ return unescapeXml(text.substring(attrStartIdx, attrCloseIdx));
+ }
+
+ static public String getContent(String tag, String text) {
+ int idx = XmlW.getIndexOpeningTag(tag, text);
+ if (idx == -1) {
+ return "";
+ }
+ text = text.substring(idx);
+ int end = XmlW.getIndexClosingTag(tag, text);
+ idx = text.indexOf('>');
+ if (idx == -1) {
+ return "";
+ }
+ return text.substring(idx + 1, end);
+ }
+
+ // Pass in "para" and a string that starts with
+ // <para> and it will return the index of the matching </para>
+ // It assumes well-formed xml. Or well enough.
+ static public int getIndexClosingTag(String tag, String text) {
+ return getIndexClosingTag(tag, text, 0);
+ }
+
+ static public int getIndexClosingTag(String tag, String text, int start) {
+ String open = "<" + tag;
+ String close = "</" + tag + ">";
+ // System.err.println("OPEN: "+open);
+ // System.err.println("CLOSE: "+close);
+ int closeSz = close.length();
+ int nextCloseIdx = text.indexOf(close, start);
+ // System.err.println("first close: "+nextCloseIdx);
+ if (nextCloseIdx == -1) {
+ return -1;
+ }
+ int count = StringUtils.countMatches(text.substring(start, nextCloseIdx), open);
+ // System.err.println("count: "+count);
+ if (count == 0) {
+ return -1; // tag is never opened
+ }
+ int expected = 1;
+ while (count != expected) {
+ nextCloseIdx = text.indexOf(close, nextCloseIdx + closeSz);
+ if (nextCloseIdx == -1) {
+ return -1;
+ }
+ count = StringUtils.countMatches(text.substring(start, nextCloseIdx), open);
+ expected++;
+ }
+ return nextCloseIdx;
+ }
+
+ static public int getIndexOpeningTag(String tag, String text) {
+ return getIndexOpeningTag(tag, text, 0);
+ }
+
+ /**
+ * Remove any xml tags from a String. Same as HtmlW's method.
+ */
+ static public String removeXml(String str) {
+ int sz = str.length();
+ StringBuffer buffer = new StringBuffer(sz);
+ // boolean inString = false;
+ boolean inTag = false;
+ for (int i = 0; i < sz; i++) {
+ char ch = str.charAt(i);
+ if (ch == '<') {
+ inTag = true;
+ } else if (ch == '>') {
+ inTag = false;
+ continue;
+ }
+ if (!inTag) {
+ buffer.append(ch);
+ }
+ }
+ return buffer.toString();
+ }
+
+ static public String unescapeXml(String str) {
+ str = StringUtils.replace(str, "&", "&");
+ str = StringUtils.replace(str, "<", "<");
+ str = StringUtils.replace(str, ">", ">");
+ str = StringUtils.replace(str, """, "\"");
+ str = StringUtils.replace(str, "'", "'");
+ return str;
+ }
+
+ static private int getIndexOpeningTag(String tag, String text, int start) {
+ // consider whitespace?
+ int idx = text.indexOf("<" + tag, start);
+ if (idx == -1) {
+ return -1;
+ }
+ char next = text.charAt(idx + 1 + tag.length());
+ if ((next == '>') || Character.isWhitespace(next)) {
+ return idx;
+ } else {
+ return getIndexOpeningTag(tag, text, idx + 1);
+ }
+ }
+
+}
Modified: trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientActions.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientActions.java 2008-12-05 16:22:07 UTC (rev 984)
+++ trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientActions.java 2008-12-05 17:53:45 UTC (rev 985)
@@ -100,7 +100,7 @@
createEditAction(TYPE_WIKIPAGE);
- createTranslateAction(TYPE_FOLDER, TYPE_UPLOADEDFILE, TYPE_WIKIPAGE);
+ createTranslateAction(TYPE_FOLDER, TYPE_WIKIPAGE);
createDelContainerAction("Delete folder", parentMenuTitleCtx, containersNoRoot);
createDelContentAction(parentMenuTitle, i18n.t("Delete"), contents);
Modified: trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientModule.java 2008-12-05 16:22:07 UTC (rev 984)
+++ trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientModule.java 2008-12-05 17:53:45 UTC (rev 985)
@@ -108,7 +108,7 @@
public WikiFolderContent create() {
final WikiFolderContentPresenter presenter = new WikiFolderContentPresenter($(StateManager.class),
$(Session.class), $(ActionContentToolbar.class), $(ContentActionRegistry.class),
- $(I18nTranslationService.class));
+ $(I18nTranslationService.class), $$(FileDownloadUtils.class));
final WikiFolderContentView view = new WikiFolderContentPanel($(WorkspaceSkeleton.class),
$(I18nTranslationService.class));
presenter.init(view);
Modified: trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientTool.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientTool.java 2008-12-05 16:22:07 UTC (rev 984)
+++ trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientTool.java 2008-12-05 17:53:45 UTC (rev 985)
@@ -46,7 +46,7 @@
registerRateableTypes(TYPE_UPLOADEDFILE, TYPE_WIKIPAGE);
registerRenamableTypes(TYPE_FOLDER, TYPE_UPLOADEDFILE, TYPE_WIKIPAGE);
registerTageableTypes(TYPE_UPLOADEDFILE, TYPE_WIKIPAGE);
- registerTranslatableTypes(TYPE_FOLDER, TYPE_UPLOADEDFILE, TYPE_WIKIPAGE);
+ registerTranslatableTypes(TYPE_FOLDER, TYPE_WIKIPAGE);
registerIcons();
}
Modified: trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiFolderContentPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiFolderContentPresenter.java 2008-12-05 16:22:07 UTC (rev 984)
+++ trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiFolderContentPresenter.java 2008-12-05 17:53:45 UTC (rev 985)
@@ -27,17 +27,21 @@
import org.ourproject.kune.platf.client.services.I18nTranslationService;
import org.ourproject.kune.platf.client.state.Session;
import org.ourproject.kune.platf.client.state.StateManager;
+import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
import org.ourproject.kune.wiki.client.WikiClientTool;
import org.ourproject.kune.workspace.client.cnt.FoldableContentPresenter;
+import com.calclab.suco.client.ioc.Provider;
+
public class WikiFolderContentPresenter extends FoldableContentPresenter implements WikiFolderContent {
private WikiFolderContentView view;
private final I18nTranslationService i18n;
public WikiFolderContentPresenter(StateManager stateManager, Session session, ActionContentToolbar toolbar,
- final ActionRegistry<StateToken> actionRegistry, I18nTranslationService i18n) {
- super(WikiClientTool.NAME, stateManager, session, toolbar, actionRegistry);
+ final ActionRegistry<StateToken> actionRegistry, I18nTranslationService i18n,
+ Provider<FileDownloadUtils> downloadProvider) {
+ super(WikiClientTool.NAME, stateManager, session, toolbar, actionRegistry, downloadProvider);
this.i18n = i18n;
}
Modified: trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiViewerPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiViewerPresenter.java 2008-12-05 16:22:07 UTC (rev 984)
+++ trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiViewerPresenter.java 2008-12-05 17:53:45 UTC (rev 985)
@@ -19,35 +19,28 @@
*/
package org.ourproject.kune.wiki.client.cnt;
-import org.ourproject.kune.wiki.client.WikiClientTool;
import org.ourproject.kune.platf.client.actions.ContentActionRegistry;
import org.ourproject.kune.platf.client.actions.toolbar.ActionContentToolbar;
-import org.ourproject.kune.platf.client.dto.BasicMimeTypeDTO;
import org.ourproject.kune.platf.client.dto.StateContentDTO;
-import org.ourproject.kune.platf.client.dto.StateToken;
import org.ourproject.kune.platf.client.state.Session;
import org.ourproject.kune.platf.client.state.StateManager;
import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
-import org.ourproject.kune.platf.client.ui.download.ImageSize;
+import org.ourproject.kune.wiki.client.WikiClientTool;
import org.ourproject.kune.workspace.client.cnt.FoldableContentPresenter;
import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService;
import com.calclab.suco.client.ioc.Provider;
public class WikiViewerPresenter extends FoldableContentPresenter implements WikiViewer {
- private WikiViewerView view;
- private final Provider<FileDownloadUtils> downloadProvider;
public WikiViewerPresenter(StateManager stateManager, Session session, I18nUITranslationService i18n,
ActionContentToolbar toolbar, ContentActionRegistry actionRegistry,
Provider<FileDownloadUtils> downloadProvider) {
- super(WikiClientTool.NAME, stateManager, session, toolbar, actionRegistry);
- this.downloadProvider = downloadProvider;
+ super(WikiClientTool.NAME, stateManager, session, toolbar, actionRegistry, downloadProvider);
}
public void init(WikiViewerView view) {
super.init(view);
- this.view = view;
}
@Override
@@ -55,29 +48,4 @@
super.setState(state);
setContent(state, WikiClientTool.TYPE_UPLOADEDFILE);
}
-
- private void setContent(StateContentDTO state, String uploadedfileType) {
- String typeId = state.getTypeId();
- String contentBody = state.getContent();
- StateToken token = state.getStateToken();
- BasicMimeTypeDTO mimeType = state.getMimeType();
- if (typeId.equals(uploadedfileType)) {
- if (mimeType != null) {
- FileDownloadUtils fileDownloadUtils = downloadProvider.get();
- if (mimeType.getType().equals("image")) {
- view.showImage(fileDownloadUtils.getImageUrl(token), fileDownloadUtils.getImageResizedUrl(token,
- ImageSize.sized));
- } else if (mimeType.toString().equals("text/plain") || mimeType.toString().equals("application/pdf")) {
- view.setContent(contentBody);
- } else {
- view.setContent("");
- }
- } else {
- view.setContent("");
- }
- } else {
- view.setContent(contentBody);
- }
- view.attach();
- }
}
Modified: trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiViewerView.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiViewerView.java 2008-12-05 16:22:07 UTC (rev 984)
+++ trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiViewerView.java 2008-12-05 17:53:45 UTC (rev 985)
@@ -22,9 +22,4 @@
import org.ourproject.kune.workspace.client.cnt.AbstractContentView;
public interface WikiViewerView extends AbstractContentView {
-
- void setContent(String content);
-
- void showImage(String imageUrl, String imageResizedUrl);
-
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/AbstractContentPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/AbstractContentPresenter.java 2008-12-05 16:22:07 UTC (rev 984)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/AbstractContentPresenter.java 2008-12-05 17:53:45 UTC (rev 985)
@@ -2,7 +2,7 @@
public abstract class AbstractContentPresenter {
- private AbstractContentView view;
+ protected AbstractContentView view;
public AbstractContentPresenter() {
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/AbstractContentView.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/AbstractContentView.java 2008-12-05 16:22:07 UTC (rev 984)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/AbstractContentView.java 2008-12-05 17:53:45 UTC (rev 985)
@@ -1,11 +1,22 @@
package org.ourproject.kune.workspace.client.cnt;
+import com.google.gwt.user.client.ui.Widget;
+
public interface AbstractContentView {
+ public void setRawContent(final String content);
+
void attach();
void detach();
+ void setContent(String content, boolean showPreviewMsg);
+
void setInfo(String info);
+ void setNoPreview();
+
+ void setWidgetAsContent(final Widget widget, boolean setDefMargins);
+
+ void showImage(String imageUrl, String imageResizedUrl, boolean showPreviewMsg);
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/FoldableContentPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/FoldableContentPanel.java 2008-12-05 16:22:07 UTC (rev 984)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/FoldableContentPanel.java 2008-12-05 17:53:45 UTC (rev 985)
@@ -1,35 +1,43 @@
package org.ourproject.kune.workspace.client.cnt;
import org.ourproject.kune.platf.client.services.I18nTranslationService;
+import org.ourproject.kune.platf.client.services.Images;
+import org.ourproject.kune.platf.client.ui.IconLabel;
import org.ourproject.kune.platf.client.ui.KuneUiUtils;
+import org.ourproject.kune.platf.client.ui.RoundedPanel;
import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
-public abstract class FoldableContentPanel extends AbstractContentPanel {
+public abstract class FoldableContentPanel extends AbstractContentPanel implements AbstractContentView {
+ private static final String DEF_CONTENT_MARGINS_STYLE = "kune-Margin-7-trbl";
private final I18nTranslationService i18n;
+ private final RoundedPanel previewPanel;
+ private final IconLabel previewLabel;
public FoldableContentPanel(final WorkspaceSkeleton ws, I18nTranslationService i18n) {
super(ws);
this.i18n = i18n;
+ previewLabel = new IconLabel(Images.App.getInstance().info(), "");
+ previewLabel.addStyleName("k-preview-msg-lab");
+ previewPanel = new RoundedPanel(previewLabel, RoundedPanel.ALL, 2);
+ previewPanel.setCornerStyleName("k-preview-msg");
+ previewPanel.addStyleName("kune-Margin-7-b");
}
- public void setContent(final String content) {
+ public void setContent(String content, boolean showPreviewMsg) {
+ final VerticalPanel vp = createPreviewVp(showPreviewMsg);
final HTML html = new HTML(content);
- setContent(html);
+ vp.add(html);
+ setWidgetAsContent(vp, true);
}
- public void setContent(final Widget widget) {
- setDefStyle(widget);
- setWidget(widget);
- attach();
- }
-
public void setInfo(String info) {
setLabel(info);
}
@@ -40,7 +48,27 @@
setWidget(label);
}
- public void showImage(String imageUrl, String imageResizedUrl) {
+ public void setNoPreview() {
+ VerticalPanel vp = createPreviewVp(true);
+ setNoPreviewLabelMsg();
+ setWidgetAsContent(vp, true);
+ }
+
+ public void setRawContent(final String content) {
+ final HTML html = new HTML(content);
+ setDefStyle(html);
+ setContent(html);
+ }
+
+ public void setWidgetAsContent(final Widget widget, boolean setDefMargins) {
+ if (setDefMargins) {
+ widget.addStyleName(DEF_CONTENT_MARGINS_STYLE);
+ }
+ setContent(widget);
+ }
+
+ public void showImage(String imageUrl, String imageResizedUrl, boolean showPreviewMsg) {
+ final VerticalPanel vp = createPreviewVp(showPreviewMsg);
final Image imgOrig = new Image(imageUrl);
final Image imgResized = new Image(imageResizedUrl);
KuneUiUtils.setQuickTip(imgOrig, i18n.t("Click to zoom out"));
@@ -51,25 +79,45 @@
imgResized.addStyleName("kune-pointer");
imgResized.addClickListener(new ClickListener() {
public void onClick(Widget sender) {
- detach();
- setWidget(imgOrig);
- attach();
+ imgResized.removeFromParent();
+ vp.add(imgOrig);
}
});
imgOrig.addClickListener(new ClickListener() {
public void onClick(Widget sender) {
- detach();
- setWidget(imgResized);
- attach();
+ imgOrig.removeFromParent();
+ vp.add(imgResized);
}
});
- setWidget(imgResized);
- attach();
+ vp.add(imgResized);
+ setWidgetAsContent(vp, true);
Image.prefetch(imageUrl);
}
+ private VerticalPanel createPreviewVp(boolean showPreviewMsg) {
+ final VerticalPanel vp = new VerticalPanel();
+ if (showPreviewMsg) {
+ setDefPreviewMsg();
+ vp.add(previewPanel);
+ }
+ return vp;
+ }
+
+ private void setContent(final Widget widget) {
+ setWidget(widget);
+ attach();
+ }
+
+ private void setDefPreviewMsg() {
+ previewLabel.setText(i18n.t("This is only a preview, download it to get the complete file"));
+ }
+
private void setDefStyle(final Widget widget) {
widget.setStyleName("kune-Content-Main");
- widget.addStyleName("kune-Margin-7-trbl");
+ widget.addStyleName(DEF_CONTENT_MARGINS_STYLE);
}
+
+ private void setNoPreviewLabelMsg() {
+ previewLabel.setText(i18n.t("Preview not available"));
+ }
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/FoldableContentPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/FoldableContentPresenter.java 2008-12-05 16:22:07 UTC (rev 984)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/FoldableContentPresenter.java 2008-12-05 17:53:45 UTC (rev 985)
@@ -4,13 +4,17 @@
import org.ourproject.kune.platf.client.actions.ActionRegistry;
import org.ourproject.kune.platf.client.actions.toolbar.ActionContentToolbar;
import org.ourproject.kune.platf.client.dto.AccessRightsDTO;
+import org.ourproject.kune.platf.client.dto.BasicMimeTypeDTO;
import org.ourproject.kune.platf.client.dto.StateAbstractDTO;
import org.ourproject.kune.platf.client.dto.StateContainerDTO;
import org.ourproject.kune.platf.client.dto.StateContentDTO;
import org.ourproject.kune.platf.client.dto.StateToken;
import org.ourproject.kune.platf.client.state.Session;
import org.ourproject.kune.platf.client.state.StateManager;
+import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
+import org.ourproject.kune.platf.client.ui.download.ImageSize;
+import com.calclab.suco.client.ioc.Provider;
import com.calclab.suco.client.listener.Listener;
public abstract class FoldableContentPresenter extends AbstractContentPresenter implements FoldableContent {
@@ -19,13 +23,16 @@
private final ActionRegistry<StateToken> actionRegistry;
protected final Session session;
private final ActionContentToolbar toolbar;
+ private final Provider<FileDownloadUtils> downloadProvider;
public FoldableContentPresenter(final String toolName, StateManager stateManager, Session session,
- final ActionContentToolbar toolbar, ActionRegistry<StateToken> actionRegistry) {
+ final ActionContentToolbar toolbar, ActionRegistry<StateToken> actionRegistry,
+ Provider<FileDownloadUtils> downloadProvider) {
this.toolName = toolName;
this.session = session;
this.toolbar = toolbar;
this.actionRegistry = actionRegistry;
+ this.downloadProvider = downloadProvider;
stateManager.onStateChanged(new Listener<StateAbstractDTO>() {
public void onEvent(final StateAbstractDTO state) {
setState(state);
@@ -41,6 +48,34 @@
setState(session.getContentState());
}
+ protected void setContent(StateContentDTO state, String uploadedfileType) {
+ String typeId = state.getTypeId();
+ String contentBody = state.getContent();
+ StateToken token = state.getStateToken();
+ BasicMimeTypeDTO mimeType = state.getMimeType();
+ if (typeId.equals(uploadedfileType)) {
+ if (mimeType != null) {
+ FileDownloadUtils fileDownloadUtils = downloadProvider.get();
+ if (mimeType.isImage()) {
+ view.showImage(fileDownloadUtils.getImageUrl(token), fileDownloadUtils.getImageResizedUrl(token,
+ ImageSize.sized), false);
+ } else if (mimeType.isPdf()) {
+ view.showImage(fileDownloadUtils.getImageUrl(token), fileDownloadUtils.getImageResizedUrl(token,
+ ImageSize.sized), true);
+ } else if (mimeType.isText()) {
+ view.setContent(contentBody, true);
+ } else {
+ view.setNoPreview();
+ }
+ } else {
+ view.setNoPreview();
+ }
+ } else {
+ view.setRawContent(contentBody);
+ }
+ view.attach();
+ }
+
protected void setState(StateAbstractDTO state) {
toolbar.detach();
if (state instanceof StateContainerDTO) {
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/ctxnav/ContextNavigatorPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/ctxnav/ContextNavigatorPresenter.java 2008-12-05 16:22:07 UTC (rev 984)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/ctxnav/ContextNavigatorPresenter.java 2008-12-05 17:53:45 UTC (rev 985)
@@ -332,9 +332,9 @@
}
private String getTooltip(StateToken token, BasicMimeTypeDTO mimeType) {
- if (mimeType != null && mimeType.getType().equals("image")) {
+ if (mimeType != null && (mimeType.isImage() || mimeType.isPdf())) {
return KuneUiUtils.genQuickTipWithImage(downloadUtilsProvider.get().getImageResizedUrl(token,
- ImageSize.thumb));
+ ImageSize.thumb), session.getImgCropsize());
} else {
return null;
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorPanel.java 2008-12-05 16:22:07 UTC (rev 984)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorPanel.java 2008-12-05 17:53:45 UTC (rev 985)
@@ -45,7 +45,7 @@
private final WorkspaceSkeleton ws;
public TextEditorPanel(final TextEditorPresenter presenter, final I18nTranslationService i18n,
- final WorkspaceSkeleton ws, final ColorWebSafePalette colorPalette) {
+ final WorkspaceSkeleton ws, final ColorWebSafePalette colorPalette, boolean permitHtmlButton) {
this.presenter = presenter;
this.i18n = i18n;
this.ws = ws;
@@ -53,14 +53,14 @@
mainPanel.setWidth("100%");
gwtRTarea = new RichTextArea();
- gwtRTarea.setWidth("97%");
+ gwtRTarea.setWidth("96%");
gwtRTarea.setHeight("100%");
gwtRTarea.addStyleName("kune-TexEditorPanel-TextArea");
gwtRTarea.ensureDebugId(TEXT_AREA);
final Toolbar editorTopBar = new Toolbar();
editorTopBar.getPanel().setWidth("auto");
- textEditorToolbar = new TextEditorToolbar(gwtRTarea, presenter, colorPalette, i18n);
+ textEditorToolbar = new TextEditorToolbar(gwtRTarea, presenter, colorPalette, i18n, permitHtmlButton);
editorTopBar.add(textEditorToolbar);
editorTopBar.addStyleName("k-toolbar-bottom-line");
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorToolbar.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorToolbar.java 2008-12-05 16:22:07 UTC (rev 984)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorToolbar.java 2008-12-05 17:53:45 UTC (rev 985)
@@ -115,6 +115,8 @@
colorPalette.hide();
}
});
+ } else if (sender == editHtml) {
+ presenter.onEditHTML();
} else if (sender == fontColor) {
colorPalette.show(sender.getAbsoluteLeft(), sender.getAbsoluteTop() + 20, new Listener<String>() {
public void onEvent(final String color) {
@@ -264,6 +266,7 @@
private ToggleButton subscript;
private ToggleButton superscript;
private ToggleButton strikethrough;
+ private ToggleButton editHtml;
private PushButton indent;
private PushButton outdent;
private PushButton justifyLeft;
@@ -291,7 +294,7 @@
* the rich text area to be controlled
*/
public TextEditorToolbar(final RichTextArea richText, final TextEditorPresenter presenter,
- final ColorWebSafePalette colorPalette, final I18nTranslationService i18n) {
+ final ColorWebSafePalette colorPalette, final I18nTranslationService i18n, boolean permitEditHtml) {
this.richText = richText;
this.colorPalette = colorPalette;
this.i18n = i18n;
@@ -348,10 +351,9 @@
richText.addClickListener(listener);
}
- // if (basic != null) {
- // topPanel.add(editHtml = createToggleButton(images.editHtml(),
- // i18n.t("Edit HTML")));
- // }
+ if (basic != null && permitEditHtml) {
+ topPanel.add(editHtml = createToggleButton(images.edithtml(), i18n.t("Edit HTML")));
+ }
// super.setVisible(false);
}
@@ -359,28 +361,28 @@
public void editHTML(final boolean edit) {
final boolean enable = !edit;
if (basic != null) {
- bold.setEnabled(enable);
- italic.setEnabled(enable);
- underline.setEnabled(enable);
- subscript.setEnabled(enable);
- superscript.setEnabled(enable);
- justifyLeft.setEnabled(enable);
- justifyCenter.setEnabled(enable);
- justifyRight.setEnabled(enable);
- backColor.setEnabled(enable);
- fontColor.setEnabled(enable);
+ bold.setVisible(enable);
+ italic.setVisible(enable);
+ underline.setVisible(enable);
+ subscript.setVisible(enable);
+ superscript.setVisible(enable);
+ justifyLeft.setVisible(enable);
+ justifyCenter.setVisible(enable);
+ justifyRight.setVisible(enable);
+ backColor.setVisible(enable);
+ fontColor.setVisible(enable);
}
if (extended != null) {
- strikethrough.setEnabled(enable);
- indent.setEnabled(enable);
- outdent.setEnabled(enable);
- insertImage.setEnabled(enable);
- createLink.setEnabled(enable);
- removeLink.setEnabled(enable);
- ol.setEnabled(enable);
- ul.setEnabled(enable);
- hr.setEnabled(enable);
- removeFormat.setEnabled(enable);
+ strikethrough.setVisible(enable);
+ indent.setVisible(enable);
+ outdent.setVisible(enable);
+ insertImage.setVisible(enable);
+ createLink.setVisible(enable);
+ removeLink.setVisible(enable);
+ ol.setVisible(enable);
+ ul.setVisible(enable);
+ hr.setVisible(enable);
+ removeFormat.setVisible(enable);
fonts.setVisible(enable);
fontSizes.setVisible(enable);
}
@@ -416,8 +418,7 @@
KuneUiUtils.setQuickTip(menu, i18n.t("Font Type"));
menu.addItem(images.charfontname().getHTML(), true, submenu);
- for (int i = 0; i < fontName.length; i++) {
- final String f = fontName[i];
+ for (final String f : fontName) {
submenu.addItem("<span style=\"font-family: " + f + "\">" + f + "</span>", true, new Command() {
public void execute() {
basic.setFontName(f);
Modified: trunk/src/main/resources/kune.properties
===================================================================
--- trunk/src/main/resources/kune.properties 2008-12-05 16:22:07 UTC (rev 984)
+++ trunk/src/main/resources/kune.properties 2008-12-05 17:53:45 UTC (rev 985)
@@ -30,6 +30,7 @@
kune.upload.gallerypermittedextensions = jpg,jpeg,png,gif,bmp,svg,avi,mpg,mpeg,ogg,mov,tif,tiff,mp3,wav
kune.upload.maxfilesizeinmegas = 10
# Images are resized to thumbsize pixels and later cropped (centered) to cropsize
+# (integer values)
kune.images.resizewidth = 400
kune.images.thumbsize = 100
kune.images.cropsize = 85
Modified: trunk/src/test/java/org/ourproject/kune/platf/server/manager/file/ImageUtilsDefaultTest.java
===================================================================
--- trunk/src/test/java/org/ourproject/kune/platf/server/manager/file/ImageUtilsDefaultTest.java 2008-12-05 16:22:07 UTC (rev 984)
+++ trunk/src/test/java/org/ourproject/kune/platf/server/manager/file/ImageUtilsDefaultTest.java 2008-12-05 17:53:45 UTC (rev 985)
@@ -26,8 +26,9 @@
public class ImageUtilsDefaultTest {
private static final String IMG_PATH = "src/test/java/org/ourproject/kune/platf/server/manager/file/";
- private static String[] images = { "orig.png", "orig.gif", "orig.jpg", "orig.tiff" };
+ private static String[] images = { "orig.png", "orig.gif", "orig.jpg", "orig.tiff", "orig.pdf" };
private static String imageDest;
+ private static String pdf = "orig.pdf";
@AfterClass
public static void after() {
@@ -37,10 +38,15 @@
@BeforeClass
public static void before() {
- imageDest = IMG_PATH + "output";
+ imageDest = IMG_PATH + "output.png";
}
@Test
+ public void convertPdfToPng() throws MagickException {
+ ImageUtilsDefault.createThumbFromPdf(IMG_PATH + pdf, imageDest);
+ }
+
+ @Test
public void generateIcon() throws MagickException, FileNotFoundException {
for (String image : images) {
ImageUtilsDefault.createThumb(IMG_PATH + image, imageDest, 16, 16);
@@ -164,9 +170,11 @@
@Test
public void testSize() throws MagickException {
for (String image : images) {
- Dimension dimension = ImageUtilsDefault.getDimension(IMG_PATH + image);
- assertEquals(400, (int) dimension.getHeight());
- assertEquals(300, (int) dimension.getWidth());
+ if (!image.equals(pdf)) {
+ Dimension dimension = ImageUtilsDefault.getDimension(IMG_PATH + image);
+ assertEquals(400, (int) dimension.getHeight());
+ assertEquals(300, (int) dimension.getWidth());
+ }
}
}
Added: trunk/src/test/java/org/ourproject/kune/platf/server/manager/file/orig.pdf
===================================================================
--- trunk/src/test/java/org/ourproject/kune/platf/server/manager/file/orig.pdf 2008-12-05 16:22:07 UTC (rev 984)
+++ trunk/src/test/java/org/ourproject/kune/platf/server/manager/file/orig.pdf 2008-12-05 17:53:45 UTC (rev 985)
@@ -0,0 +1,445 @@
+%PDF-1.4
+%����
+3 0 obj
+<< /Length 4 0 R
+ /Filter /FlateDecode
+>>
+stream
+x���M�d9�%�������o ���A̢�K�"�"�
�E�,��xxHɮ�p���T"ʟh���(�:���:�M�������y����L�o���=�8����[x���o�<�����������#�����B���O�O�3{-���ˑ��(�V����˭����0�c�[�����ǭΆO5��:tJ�����R����Y��x�~c���ٗ�U#��H^�'���n���i4���C��������q����2&Ss���G,y�QF'��-͚[�o��O�p�h���[K{*�I��oHY���5K�n� �'��Bb�3��za1J�"bJ�dR?I����s
������ ��[�� 9c�Z�o#��~K�-�����mR�[�BB>����Mf�.��t}+s��%�PQ�[��>��a��$�5ɒ�6�H{�H�7
�ﳐY�Hy˒����0����,Z�c�rV1ۗ��g�3�҆9�&a2�'42t���ۀn�6��I�2>3K��J�Y�,c�.��V�S�д�OK�)�/�
+I�:t<�4c��ΊO��Rm����2%^�!�Zi�)
s0������2�x��)�m:��)H��|���Z3D�t��%���C��� 2�Mھ܌ ���isJ{�P�ԒVz!N1�DBOo��!�BzyK}/v���>S8R�˘3Ej��3�~1s�\t�@��ɾ2v�,\f�w��a��(����q������XYUEk$��0�a�~��*���
+�6�͝ZSH��� ��i�4Gì.z�)֝#���b�HNq6�g��ɺ:
+r�(��,
:g��(���R
+D/d4���3�0f/�q�r��
+T�[Z>����1�Hq��~�4uNV����I���S�OE暀"lBx�9[������ws��w�N�Y��\-hi�c��!2}��̩��M1��{�A�y��)7f�r��ֿȌ�ј�%���r3�L�!-sȓ���E�@�IS
Yk��
�����Ζs�ݙ�VS��*�M'��OM�B�%̕�3E���B�m��4g^�f���@�*�V2m��;a���"�F�>̳�[&��R�9t��&KZgs���������NQMUwi��L�'s>�Ht-b��9E��J�XG��*3�Ϫ���ޓ���ݽ�<��,���,��K��dQ�T"
+��S'��u��D��if��`}�9��߷��f�!$e��ς�MT
+
`��zkW���DH�"��i����K������c��s��?zNS�L��^�*Ă|b������=ǭ'������bk�'�����ט�f�OW�M�<���PE��sy9�<e������K9�6�:;��0�����T�StŒ����K:��PX���������Gt�\��*��O|�\�v����J��U�9G��(�M���Ǐo��\�K��@�i*h��HGg�����-K�S���lϤ��r��uv@��_�1Qe�$b[D^gqsYMNy�/�g��ڴ�+���}8��*{�,�W<[G��9���a�e� Nk�Z�0w�h���3�Z6�l��?V���x7�5��6��Y���p�f�rFEe.}6t�E���2�`��e-�eó���:vY���������N+��<��:��(�'3Go���\�:�^c���Q���CgRZ��0=wzًk]v�+��d�d�9jS[��P�IY��P���ޚ�Q��Z�����gn�1s��!��Ȓ��`�F0��Mv��"�M����ľ�vrQ�8O���XR����6,���&�,�������Xm6˳^=�a��36͆���Dh�ε,�-�9y�E6b��H��O�N�#D�#@��<�|���%MkL��2��Kgſ�ϒ�l�Q�.`So�:�]+ϓ�Z� Ś��9A���G`�}�ꥄ��~�2������k�0̏�>'��͵�m�:7J�r��_>��f��_~9~8�3��"�K�����/�jK!��#�:M1Mc<�Wa2�5�(ӐsK�%���"͞���9a���b��yl��EAT�̹���+EÍV!����?�s�d[a%1yX]wϠ�y��6�
+co.88��L��Pϕqu�M+qv�ݡ���u����_����_�������?�����?��~a���S�A�$�C3����7��3��~��_�C��r�M�[����T�����[Գ�)�ڵ��5�t��6f�6���u$��6~�c��\��S�4&���d����V��m��-��c��*��5�R�KTX�Ol�|�-��|�-�N/S��W�����|K!B�i:X
+�,$� gl�yZ�Y�X�a��pƖ��0_=���C��k��n#0���
���N>N�0���kV&G�*��f�Čs�@ +������ 8��`%�Xi�ϣ�?i����0�C�m��Z¢���ht��l��F�)d���Q�Jm�Y6
+Iaa�´�`���jz������袥5>��wxv6y���ï͵�5�dMLz15�o� �[oآ��-;S����Y��M��OC}��V�����^��f���v���[y������)`
��؛K�7K`q�CF����K���*Wʾ|�ݸ��4�q�e��i$Ϻ7�>N+:�E�����l�c��7ʲ�EMr+ԍz���lԦ-#?�-՜���I�"�E0;�(��_m<˴�]�h�ʢ�z���3K*��,�i�����,�?moB��ζuN�b1��� N�"h���>��`�o�5����e���[����m�L�`Ե���>�8�%��M�B `�K.<����CB0
�:��3e�K9~n"} CP*�L|C%�i�Lg� I���:a.du,JLr��7��� �l:�)� ,t�ֻd�ڶd"N�2�E�g*�X� �,�Xm��2q���+�>"q����6wO��A����u��ߐ�1pZ�)���X��ٕE�#>�b�bp�+R6��*��]B��-�FEM*�\HY��"VZ��YϬ&����,�5�د�A�_a��Y?�)/�C��S���O�ҟ�v,�OyR�)�Ny��<�ݦ<۶M���V%Ny�My'��'e��N�g�k�_x�)�§My�y������� 8��[?V�m3m� qzX��4}gC%���H��X3���F��r�Bi�^�[��6��c�zI��KVV��"�����E�{/<����CP� �9s��W�~��XPXH�C�ハ� vv�t�_#�Ī��X�3���s�[�*��_��������S��m���]X�����9���FX{�p�ner�o���ߚe{�l8 ���!!g�$hz��[��;�{+�;�5>��_����{����VR�ׂ!��O�߈��@�j��'�Z@ʶ8�k]k����m[j����[�Ҷ8��R���)\X�Z.<QMp���4A|K���-�OQ�Ϻ� �O��'�N�?
�s ,��ZW\��\YI��5��X`����W�$�t��|���*3���Ւ��CFX� �h��F��Qb��8����h1�C�/�sJû���v@�w]�m?�*|������ �ȿb�1���uM�$��5n�'�e�
����Hxڔ K�8A�����\��ڵ���y�L�#�[��q��R6�������
+/<���*Z��
�#F�ϔ������9]�=���{�aQ`\�
�\R6Yp
+���.a`��0�mK�߰��ޤ,,�ɂQ�,,���e.Q�pD�\��(H
ӖL߆'�2BN����v��wQ\�B��D��5���
+* r0e����K
+̽ɻ�đ�����g��)��0�-+0�����4�ZwHX� ���D_xX�Zxب���,��taþ�,��ƅ瓿������=�Dt������)?]���%6Wo����ו�����o7�����zW$��a�u39���;��y2-�4� 6s���\�Y�U��^�syv��=���|]�cL7�?~7�;&R6g�H�4�.
+�(+7u�^��MFp"��,����"<�*T�lVyH�'�$|I�S�J�$�X�y��<�P+���t}�;�ٵ��]��lL1��̝����9�F
������:�����sUS��̮����e'�줭�r]����6p�T��:�zIm�{�に
��cQf'�w�(�<��Lދ5��U��V�Ve��L�ʅ��(��X���x����WN��oG�=�hw�ls�B�{�d�tN��;N��8Ÿ���úw�u�.M�w)��xs�b}x�6�s����w{�͕��"�U��%$�w�)��m�n����k4��?�ܞ��_~z�zT�7�B���P�_3�fLMMt�{�Vq �=Z{�{xڏ<���x�,px���$���NBq5uQ�2(O� ��~����<e���������C��"��s
+�G��w@6e���@f�r��RӮ-�" �x#�fZ��B�Ob�](���p� =�u����Z,���ݞ��8�4I�]�"F�pT^�.r�Ya`�ʖ�C���'�z�N��4i����d����L@v�s3�Ë����ӭ�LJ���3����U@��`e*x4^n$T����*��<<�m7B�UC|-;�2U�t�\��믇�n�.���'��9^HE���/�Dn ɁT�[���Q�]Hi�˛T�O\������\�!A��~,hӼ�H�S�8>��m��R�3�h���I�}��5��;�J.b��@&��8w���ׁ��3���r�!������k��u��H�.J�9�K�����~�����w�b.+F��s�6�*��Ax� W�I��\��^���h�W2 �[�ɖ�L����e2��9���������
�ي-!7��ΰ%Upb�U|��n7&9���Jx�.�_��)��
+|'�:y$�H�&�^��)j2TO"�F4AB�(q�5�D�p]�Im4�W��vm��Q�02��㘓����V����8D��O�Dv��R>�ɸ
+F�͓���֭���:H^�˳K��Ƃ�):Hu%��;����hB4ͭ���G�!xʭ
8���=8c�ڈv�|����m#����껄�[�B�.�?� 3~+����ZȻ�J�.:k��Y�ި�s¦δ|��/y��S]+dP�\ ��ט�|y�X�,I�!��Q���GiY��Z��ǬJ����m��Q����P%�����ֱ�GK{ۍ`�^���q������\Cl��ߡ�3�0}}�����I4�Z��k�r`��r��;[!�\cA�����X+d���Ğ�Ȭ���ln��@"NKY+d��̶B�ς�B�}�
+����VHK�Ɠ�R��%*-�9��&SJ�wE;k�}��������!FĒS%�#��B1 �t-T��&��I�x�)!�wn�V2!�}"�2��Np�Ir<%#(��O�_.uW���Jy(��VeQUy�m�\պ����,}`���Ĕg�U$>9!�҃�;8�eE
+��'@�Vj���Pӟso6����%��شK%����q!"�m�eyL����J�GG���B�(�Ms"Q�.w��͜��"�MA rF[�S6}j�AuZr�?4�<��+O+ߔ�T��+O6�'��Q۾tg�q���Ұ�1�Y�#-�Y�v�9��rͩ��pMSoʧ-�ޔ��<e���%ζ*[$���r�q�u}r�)wpۚ��{(N�YzJ��< ��Mi���_�4-��B��`C維��q�Ǵ&�_ۊR�t�J��_ZS"�H�,ϐtѠ֔�mkZS��=�����\kZr��jM|��Rz}����,��3�>�����)���.�Y�G4�cz=n��9yx��AÇlh�'������<<�K����e�n�W���C���H��:����F~�K��A'>/�f��[m3P�O>A��o}��;"ށ����L7�����>{4�"�SH���}��@�e�S�Y�5��vƻٸ���xH�,�����H��C�DPs_�r%��J8tVH� �)#���n��Hf�r3g�U���3Y/1�l�J<��|�W�кB����&$�.�2�f�lN!���;@uB��&q����]o������/���넋\���/�"&���MW�v�P�-L�%rkh�J�=������&D0�A��dR[θ~�8�Ǧ{TOˎ7X~�lARQ-�% �#��̮�(��� q�xV`�'U�2��^�E�ٱI#��b-BRHs|2%3�z�"�h%[�,�f���hDjbkk��
+aȀ��2�to2�)F1�>�3���y,A1±Q������f����AڞA�t�`��U�ίi+��lxLQ��)6�3��H�B2|K����껛�F�,Z���S���C7B}X�2��u���1��up%��P��>a0Uu�Ss��f���~����(,y<�~�,u�T�u��h����RtiPaB{��L֞d���x��s�,�&�E�HK�,|�b���[ݘqTzn�����qՎ
������� rH4�(;�OI��E���B��L��H����b�1wԓ�O[
Q+H<����tf,I6�'�WO�͡]�b@��Ŏ�����P��䔠�z�@b'E�4��%B��H�Ё8MH�S��A�aMAsJ��FA(@�ix(�X"��?�%1a�p�����Ԕ��I%%����-G���GI�`����8G��]�'�\�kA�%v�D擻)�KC�D/!�w-:XN�cӬ���2����E5�mo7����\ij$튬B�8$r]�"%�QI�%�@6�`��MS3Jb7tl/�)�]�@�M�ĄABWlő��n��L���`�Ь���^<k܋�ŐBg�Y9U�Lo_<���X��� ��K�*�G[B��-3rX�TFܫ��(n"��X�J�צ���`BsD�
x��@~&>M�dMc\�� ��$e�@;!���Q}��$'�,]�
+b&n$2#x&���.�3 � �ISWFa�~_`W�{�jne��Mqs$k�옞��Lu$+VA��x�G�oD��� +�'���N����9� fOIwDoeG+�S7�h-iE�Ʌ�A
I�G���Hj�(W�ϴ�#�I�AC��0Jar��/��[�-r��Ʉ��$�B J2�N��*!�,��1D
�tø�Ȑ���1�1�bB��VU�Ͳ����T��M�pJ��TUTǖ_�ѱ9A~ �
X�$;E�t2$R@�C3@*�5��I��}gFk�Dm*3i��:^@)N�����d�5�ڧ3;߂�v�RQ7Q��vͮ� ��!~��iY���zFc����>�0�
c0?���nH'�/\DY �4BxC�D�й*`�kVhi؉�0�J��M�$�thN/���8�cZ����k�ٚtM���������uY��kU]�{|?�^~�4�A+���V�0߷kW�AK������CN��A�Qy��I��g�R�����,���Y��UM��qV���A�%��z �%->�)8@vq���:���eP3j���"o$d���Z���VZ�V�HT�����u��+�x��-���r����L��Rg�k�w�~
+�d'���]
+ˁ����ټ|p#�zY���W��BYeT���:0�<VRnM���-s#�!��P����"
+b&�_N�%��Q��jQ@p$
59�� V��7NƁ��5�s�~�K�0Pl)=1���hn���VifN}���lDS�<"���O�Ԣ�>ed��isb./Rd��u���-
+
+)�M1Q��H��i4� SY4�ǂ������ɉG��g3-�t�.��]�[B�X�ar D],�UC�����l|}�������/�QM�d��M?)r$�$�;r��3H^͈���x�M�¨�H�w�N��x&��Sc�q�=��n(<R��R�n�P�5�-�ŝ�I��]�����F|�A+ ��r�ō4�1�,fV�.���Ԣk$a&�A����p8�<c��U-���3䂖5`�Ġq�#����rI:��@� BPS=c[x!�Y�ةzTX��d��h�Uz�2w('��ɖO�Ay�)F�� s/fs� ���]t~�$�-�)E(ħ�k��C� �A����"��ɘ�'�h�vUT.q�HSVT��Qv��d��t�ϳz��N'��y���Kz�0F��U�-Hf��rz!?���K.U�Iz��2l��gE�w��b����]�,3�'�� Mo�`Ҝ�~�tu�h�
+����:(�fܮ� �(#qL�E ��j�*�L!i#߂.Zo���~��������:�3sߡ��9-}�AfFn�N%�#A��ը*�:l{�Ae-|y+�
+a�W.���5��#����W�s_@o4�*r������Zu1-Z�<����q��]8(��s��DSUUc��ր��j)G�O]����ؚ.i ��xԸ�s��U Z@�RН�X�º�m���-�� z���^�]�����3lv����i��
+r�6�p�~��)o�9�ָ��Fh�K���:1�z��"����T�)��}RS���r����6T>���!ҥ6�t�� g���t��--�2��X!]]��b6Kav���XJ�|�"id5أ_����"f���:w1 �9aqO\���@��<����֨2Va�|�5�B��j�l���>ζ�k}U�p��Y��{.[��Ш��!���i��{[���w|
+�jt�<n��JZ�`E�.*���b\�A���¥U��Ɲ�A�B y���6t��8�q><zh�����q9��dt/R��:�zd-�$�$.��?���˧6�*}��N�A.��B"�cx)z�M�
�\�5�3�{dz�B�-*MA!J
+?(�Xf��i�k�J��֞r�3�7�Va�n�h�
+�r
+J�7�N/�<PL����NA!�9��N8F�S�����-(Dm^�O�b&*rh�o��:�
+�sN��M��T�K���h�l8O��`0*ƛ���YA8[�؈J�$����*%��!�u��H��e�"%W;b����t�%@U�ȕ��@U!�9���4"S�Y<e�V�R��*fPq;=�FU�A�U,@U'7CV��S!�V!p�`��M2hW����
_E'��W�>�ew�`�* ]��xX��c���A�;�z��IT��T�U(pw3�=��!�zi±V���/%�g^h��-����B�"���+�W�%��u��nTT+����C1W���Y��Vv�U5�ʻ�Tʫ���:�58/��D���Oߟ�"1g�vkWi���D�U
+�I�_�>Q�UURX�A�g~�����uϮ,�(���J�a��-(<����E!��*�x��2�܆�jn_��!'���V�B�Hw�F��ah��QHVZء��uu:��J�c%�)�n�i<t��=�@�{��쬵����=����Y)F7�<�/x�sV����
+U�Ki�y���{V��G����iA��9U��Ӎ�R�UAZ�fS��Y�´_MQ�P�-�V�|,���H�t�QXb:��E�J�f�T�H
+����U [m��
+v7�����:�jo����u�Xh���J�����-�yԍi˚�D���r�
�@+O�����u��d�߃R����®L���9�x��j&�|�v�;��[ p�l+�Z��BV�c�� 5�Q
�rҎ��v����uF�\�bP�<��6cԕ.�T�UUs���f�D3C[.�°ə�w���rN�^��J2��.�����ɠ'K
+dHZOҀ�JR���S.�gp��(C��F�&"ΝA��N�������{�pj=��"����
y�f�$3-xvAYa/�p���
+홂�HWnұ������%�6Cـ^)��#�k�"�0���"C\X�Z}��^�U�h/���E�l���9ګFfT�x�j7U�^�L&BܴS*�����x��H��*�+�ժb�3���D��E8Ħ���=ӑ���G�������-�W%�������ú��<�3�W(=���AmP��&Ud�
FY
+k5CA]5/
���#�%��y��e@�a80��i�G�+��!L=ǝ��T�)Ѽ�v&�p0Q�?�H6���8�!�y��Nx'�P�7�n>`1��L�^O�GԖ��)0��iR�a�!7��A2w&��f�aR
�k<Kr��ݵ�����Y��j(<!��]u;��jӨp�6�t`�/��G^M7
+�F�2ZPxV͋�b`�8.�
+DW�N�Bg�ax��KTe/
� U���9+�����͞�yt���1��@�A�<Q^�u�>��d'�W�t�eN��v�;��}x.�C�㵉T�W��+Ȏeh?��^
+,d�ګ���;b>O���fV
�L�`��Sc�Ѷ�ò��8*4m;��Z�%C���
��)�JX���)���\�SF��@e��|��Q�D�$Vß2�`R�6���
+-?�^��(k�p/o`r2Kl�UYh���?����4Vp��4�b�{�)�۵�;+6G���ݠ@3�ُ�Ԍءf-ö>E�w�������U�f��K��;Gp�X�Ď
n��N�$<V����I�F���h�'C���N�4J�9�&��g�!i�����г�
l�r��A !�ɉ^����fd�#_���5G۵j�h�i�vⰞu�Ah�愥@�t��4���qf�t�lg?���5h������0�7�Y#�w��D�dށ�h�+�9yh��a��z;qeE��9U�|�5��;F���I�:}�5ϴriA��t�&ԜN"���%Gްf��CnX�\�jďNԻփ8ܝP!�t��ײqt�h�@�|h<Q�~�Pc�7���8�?�@3f5�;�A�� 4KZ�U��:����Ӹs�� 4G=WY@s4ONͰ�v^4�+�� %����}�8Ќ}4�m��e0�f�=�Ś�Vs�E���#͢��=�H3�qvU�O�:���է&Qf>X竝�MQf̴n��
+� t�T�5�U]6z�7����.@��ck���>�>>���а�-�Y
+$�L�Y>��d��F�Q�+��c���fˑ�� ��M3c���JϪ2�n!��ց��P�u��Q�4�]ɹ�_�!qfQ�t0�,B�`Ff9qd��:�l�L��ęE�4��4#}��3K�@4qf�-I��Y�Hl�͚��F�"D=�m4��q��4A�8Ǚ%Kݰf��l7ǚ�|U�/����Jk�t�c>b�B�}9�����ޒ�<6{36�9�v��x�`3�8ؼ
+���m�^)A�T7E�͒�}��Hj ����ͱ��G]�9{�7K �0,�θZE�d�ѥ�c'���s
+<�h�p�҈7��-���";�r�!�/��x���!�H
ֈ�C���A�B�;S�����������,9>U�*g/�g���3v�@U�Б[_B��$����81g!�b�����9Kz�w8�l=���*��k9AgjĘO��Lu7u8>l�11gh�ۆ8�.�
+8��:���@غ������B�gnԵb4��z1���7K��ͺd�5&O�����Y��Ď芦�X���F��S"���B9c�%��9V7WO}նf�;sRR!�,���q�v4��s��dž9�$��w�3ǔ���Ig �
�p�9V^i8�7�q�d��8���bΑ��
+9���
+G��Ҹch�s�9c�RcM1g�4��r�v�M�92�φ9˨��WM��n�9�1v�YDm6�P�]Ü!7)�s���b��#�܈fsl�����e�b��Qg�D��_t��u.c�b�s�����_YS�y@���cu,����UZ@�hC
+: �69)�!L�Y��(��9�'�B�p�9�t���H�Y�c�0�y,nrt�2�{�637VĜc&�k�3
+9髌
rG��hZ�t�:��j��N���v��d�]�v������}�;�J"�1˙���V��6$q2�t�O���h�������Y�B���30R�}�N�����U��Y�۱
+��zF��qY�PC�QH�٪�U�S�<c��鹜}Bu�!r�
+�E�~��
̠gLR�;�Ј���tQ���^�S�+��}�z"�pPUɱvID�ei?�]���f��>':�*�|,<�M�6�bMs�䱎b�
+;�M
+|�MǞ/��
+a3�� =ð�mȳo, ����"�� �g�q��Yth��c�u�s������6����`������AxPW�F@89L�ք#ϗZ� �Uz��
+=��w=�%n�s��WG�aG�[�(���|����m��� ���"��@d]�h�)�X\.�X�2ӎq�:q{��p�7�����������-�pvF�9f�V����7ORnv��p��C4��,�7G��B���
ߪ@�~��6OB��}l��9����B"-z�W��ۓos�u�hs�\�yn��38vH�9�p#G�j�͒�7�Y�d_���Y��ɷ9��շY�a�y���`&E]a8g
��|�/=��E
*� �l��
+9Kn���%}>c�9��\`Β��s�}��!�O�����w2!B�t_eC���*�b�<@�/�X�{1��nG*�,yns�|����LsΉp$1g�6�f��J��0���s��������q��Tq���K�
+�ne�d�1�YF�g���%��}����rɭ+F��o��\��}��d.�8��G�8�pk
�s˅Wː��XK�ؐ��i:UrN�n�r���6�f<���ۜO^6�6�r�����,�R���̉��t��z2�����6��"���$�8'�:e�3��;�<�6;�:��wt�3��,M�pt�y�6�fƎw�Y�jn��b<Q�4�d���ݵYzj2�����;��~ ��1^+�:B��Tޥg��s�k��PI58�1g]/�,_��C%��'�f�
�����lw�r�%뎨S�)�9˜mO�s^7(a�g��H�9'?"�P%iC�sZ�� ��c�sN,"�O��
q��ɳ9'�1q�Y($�������%(m\1&�N�s3��;�,9�
+3a�8�,��@��s�mۅ7K�`�i3܉7�U�s��"4v{����Ȳ�M�of�ތx��Se�X�'��O��B yÛs�04��a7!����B[�6�yU�Vm��`���o�ɑ/ky�3bQ�6�9'�މ7�Dt�x�7��fax�\�%�s��,��ӓ�s6C����ÊG�c؞�l���CO�ًp��ü��ݪ�<�o�����~M7!<�8ˢ�M1��V��xs�v;��c_ȉ7K����)�`�~D��:&���PhLq?W\��i`OF�s@�'$���Y���8�&��|1�� ��:�*���,%��7��e5a��ց�V�3/�:�4���^β����Y�֝(�G�Y^c��,a�6�95Vopsj�#A�Y�.gI�� mN�[G�����98���ڜ�u��fÿ́3Dm��E�ps�.�ps�v8R��H�xs2���f>d�x3s,�Y4r�7'��7�F�@�9�z;ޜ=��fl�,����7������f>��x��@o;�,c.@��͒�m�͉�hnN�ܜ:=] 7'�cp3�����d7�oN�*�xs�)����n�W��f!ܜ:g�fI�?Y�f��BQ��f����sj<�5�YD:*DM�9�g��d1؈7�pR{�r�z�(B���M��d�h�,��,�)4��(B�mhsZ�.�,��>��2��_T��6�}��F��G�9U:9�,Yh1mN���9U�I�Ay}��C�Ycsr��C��ڊ�D�9�g�'!ڞ��t�issNzI�������`��o<遳]�s7��ע;YD��|�rn0��fX�m���n�D����:ڜ���z�=ᆖ�_x�K=���Y����'�K�B�K�0X�f1����,�ݲbrܹ~���7!?�:g��P7[;V��;�GF.!�얈��LB��A����d��p�=%�b<�F�ܻ�+3glƈ,U�vQҊث��)���ޱ`[�v����˓�s�{l�����Mu��]�l��kU�&���!g��^P���z�rvc�0�l��cΒ�l�����y;_�u��^(�,K�9'Ӥ�t��'�m�;�f�2̢ʛ�36�O�ΗZUR*�AG��� ��*q<���"E,�Ytk��(tsw�Trg��fd�je�4�T�f��̇�Nv=����+�wǛ�]oC��B�Gc �ڛi�No���t!�MZ��g�����\�ȱ�6i33!ǟ'�2�(ٱ0��%�����C ?K ����},��K�P�
+?���+۾ S���A?I��y��/��Y�X���P~.�Wj?K��d?��2�3���?_��z�_�$���d~.�;�=ȝ�������C��M,��K%V�^+6/�����8��G�����:-� l@�BV.�qХ��-9x� �L�����El=�:���P,*��Ѕב�A�Lk�0h!$]�� ��c�.���A��u�A[/�A�`����n��X���[2�3�Ms�s���B����.�C��FU�$�"�>���i�yT�T�J� %���{=�� ��ʀ�KɻJ��Gd?��1sVv��ĠK���X�Ȼ�@h4����u]5_�31�W"��B�6�9(�|ƞyw}.
+���,�kC=V2!h���
+ZF�0.@�b.�Bo��.��.�-:]�*a蒈����>t�CZtD��60���%�3���oj����-�v,+�s�B�*�n�3
+�I$�z���,/C��n�%��a Z��� 842���:����q)6,D�Ke����K������@%]V,-�%GW �� ]^Oq�_T�C�Lv��0�����
+�!�c�\�X,�C������%]�
�
�&�a�R=x�JR��cġK�Aa�Ri���tx����%���
��*��Y�n�*�%��I��\�Q4o�]pkl�Yx����b&30��h�.ˉ�0t������B�8�z��vFmK�س����� C�
+�BJ|���Ԋ��FJ��t)�O�X�G�K�K���
+71�R��A�k� ����BK��*D��^#=����&�Y�O�'v&B���� ��B:�B�(�B���ͮH�R/5������#&.><ѯ���j����'���է���,�g�"%�u�s��$3�ah,`�-M"��uԂqt.�gZphy2q�ژ����1´Q�ԑ�b����:�(-IIT$�o����EV19"�3%Y�E�a�}`;�K���
+$:��#ѹ/�#�E�``���l7���Ħ�DK�Nu�S2�
+
�h}ց���z�Ѕ~-C:�}�жk0 �06��K���e�Ѕ!-v�%SJ�XE�L��a�g�b�144��-�Q�׆C���8���
+�.�c۪�O���@t1�-��ɍ��.Q�^����:-��������-@�<j���]�i�����k�.|k�8tt[�`�}��+�C:�πt2�q6���W�ʓ�T��D�e��p
+��4���YD���\s�BK�샃�XQ��-�15o�-^1�<�|GL����GZʠ�:ۛ8�����aЪB�lC�W���=�j@�ԚAЇ��P���Vl�,�>�?+=?�%O�ЉH���
+:�.�GZf��)��8]����R��/�l
+���
+�?i\X_^*����>��h�����]�Gl
���@ta�sК�z�_7+���Aw��;6��C6�J(Pa7��.�Q���%�c�r���7��K"�؉V(�����|��Φ�`nMQC�t�ϰ�'zˠ:,P륅TN�bK�^��r�vZ(v�Zh��:5@�nt�~#�4�h��D���T�H��5+-kO��4�^������`ŭ)C�uk�x/���R�;�Rǟs_n"��;Mm���^�Z���3��(T?�|��Ί�ğ�r ���]
-jW�Ӟ�����"�������{w<PX���m*��ۖ;]��D��x�D�)��M��?��<���<�k~!�~���)�!P����Sf� ϛ/N�Í©%}*/�~��G����v,�Ei�mɫ<��� 6h����b���
+�4���u��X��\/�ݹ�@��|e˿���+�DJ|���sq�FE킲NE��ې��#^h�G�RbЇ!Ak������b�g=]�N|�1j���#���9�hb���20�gW�3G�����O.�j6��Y���/'�R����s�O��y/�(�W��E����:��(��X���x'�:.�������������W���{����X�,�&olJX�4w��6��O���͊w=C�[������W)Zc�*�Po���.�;��uu��.��'�S]�`�(�EijF�_9� ��k�:�>�
�S��.,P��Q� ��Ⅻ�"�K,��f��NIl/�)��6��rii5��(���.���>��×[Hz=�(��C�i���)|,B���}e� >��Rnz�]#�^/ ��5���m��=F�t`%2yX�w��f=An�_V��_���khз�Wm1i��5Q<o��|����6F�p������:} �]>1��Y���+�X��h,���������>����s��E�[>iۻj\��~����Q����1%eɗ3�(����Q�)jG c1���2�w'�e���B���F�e�a��jIPs
+M#E,"E�"����2���Z�+[��(�x/��{ሙU�\��Y���c�[=%l�e��n!�����-Ă%r����ڴ6D�q�I��;#M#4|]0� )X��ʑEW�Q_'L-�asB����Lk��c.��W��P���9���'(�N���ZE��&��EU�*+�Ƀ��w6��h+�}�0Z��1}m*���*���_,�O�9o5<���ϻQ��ˇ�~����ؗ��=��5{�,;#����!Zs�n*K��D�)&b��"aE��y�.c�0��S�%e)�'1;�r��EѶ{�&[W~����H����Թ=�!�=��!�ku�3>��|L��c�����bծA���AIEm ���^֠8��kP��A�2}P.���p����7ķA����A)��E��XLmP���b'pP�L�v
�5m
� O�|��O��Aq�
�֠8��be��\8�Ay��GW�2'�`h]5�.�}����w���D��&�]�b�sڎ�
ϝoț����S/��m������ܮ�u���7~�Tm�.%W~���1VYf��m���"�aNha,4�����q۶em��y]��Ey)h߶�¿g�S߿�,O���ċ*'�k�1l��WO��U�G$>���'9�����Y�;6i��M*�}���5E�M!\k�*�c6�=��E�k0�MTHY��N��DeQ^
+z/\x��n|@8��dm�1�6��-�p�g��
+I�;�04���#Ŕt��dLRF�zC�7���}�|����<���c�"�Y����|��F��2-y�]���]�h˽Lv�j=�]�+�>2c���߁&@�7�\�5�b[�����������_�չ���ǚ[ߑ?����4��B���ȟQ��"V�#V�N�6��gsJ�z ��E0��)8-�6�5���H��>"!�|�$��G�KAO�.Ov�2G]�9��
+��?�L�jf@8*�{�����U���Ƶ��ٹ���v:|9�q$�P[s�(���I��(�������p#��U/�<6�.^d��<��J�h
���<�7��݇�y,�V{߲�e�EЦ[���7T�\9�!��,�Qmu�{���L�i�������Y���{�.7�IXj���bE�+��`X�2g�%
/d��i�E0aYX/҄�k]�b-[�R��KKѐ�KZ�����#PZ�H�? ./<����(.S%�S��n,~D��M~��d���<��x}�r[�&/�~RF bA�2�YߛZ��[�������c��[�^hWW�êe�~�����t#��IV ��Uy�l�c��V�ua ��|D"��a.�p
��0��_;���<�'�O�e������X���B�ƌ�K���1J��V.6�N�7J��w
+G�
+�y����{۪�}��PF %=���)��Q��^(���h�>}H+�S.��}U^|K~�|�з��o/C�.C߮C�^���}�}�}��2��2��:��e���з�з�зw��7M�}�>���)됇��bM�R�Lh>ԛ��W/"0^D`\D�_E�����m�@UO@��p�q��\��D�)+�E�����>$M<�C|b�;�������Ƅ\=->���%�m�@Zn0��/���S|�E����z}�m>�S#�2���4��\#�y���w�6�����'�/|��~B�c�o{��rys��^�l�B��D���$� .FY�J��a�.���-��۵�8%�V�K�"�D8�%bQ(V�Ką'��>}H"
+.�~X"�~fb�!�w��5i��K9|^m[4�2,�I�S\E�5i�z�4Xۖ4��K�(ip�K�Q�48��`��4\xix�Ӈ�a��I����1Jɟ/�����)�8��#;4��al��8������Q:��ZN����`�%FY�`Y+�X�w�m6�Ł�{�ɓ88�~�8$ܑ���`Pҏ����u�m�I���@���=��m(���z������V��M(aSJ��c�K��m�ٮm��t/�]{��Ӡ;�~�7����:�N�<�x �oy�@G�y�?塏�����1�r��� n�1I�#X��> /����cQ�-�,R=�|��I�����Q�U=)R�5��Y��<*6�$ r�|,�V~_Y��Ǣ��T��?" �0�r���^jzE)��w��X�G�wIA���(J��v��_RJկe�
+��19P�bؠ����$�4d�����?$֊�Q��,˺q�8�����[���i��'�|�A��eW��t�gŭ�/�p'=�S�@�>c9&A�^��)�r�,�y�K5������E��4�24H�;��p��� ��K��-�����^\� GW�m��æ��B���oɚ�(��E�����?V�b�j������=��h�V���:��}a�+K�O=]�ڸHP���g>���,C��r���)�=/z��o|�6�g=\DiQ���-r�w��}��%�O1^�1\�ÕO1��i��U�bM_��*��d�/>�6�g�ʧEq>-��(^�t�>nڽ�D������Ou`E��T���U����n��UNq>9Ż�E/>���O�F�����(�ON�9�;r�>��ɧÅ�B��i�>>�P�|Z$kբX�ź��v>Y��O���q�Ӣ8�i�h\�t�>��^X��|�U�oY�e�����m����8�͌�l3���U�m�ڗmŐ7۬���6+Uc�{�U�������F3��iF��e�ifU��f�z,����c�.�86cm1�k�$�kr��a8�v��A� b��z�7H�g�g�L�[��v��Dz�d�%����Oz�Ҏ�ni-���J߳ė�'"�l����S�/;je�����9�b-q�5����:[<�u6.�0��Ϝ xqqg��Y�,�5iQ�ًb=[E;�~g�j���]X�(ΣEZ-j.]���ٕ%�u��ɬ��'�P[�4�v>9�[��S�{^��տ��m��hf�GY|r���)ޑK�w��Of�,�[G�'3�Vaffm|Z$kբX�ź��v>y�Χ�F�,^��(ΧE��+���߭�g>���d���M��x�Y;���r���)�=/z���_|�6�g4�ޣ,>9�[��ȥ��u��'3Eѭ#瓙P�03�6>-��jQ��b�[E;��~��j��l\��(ΧEZ->]��[gO|��u���-�ٴ�N �g��U��E��A�{<��r��ЈFQ�죆��$����f���f�R��6c�L�P9ՠ�C2�W��,����z,��xq���qu��͌��3��ͤo�ͅ������"?�������+�Y`�Y��v�S�i'�Q��_'q]�R���/��t��}P�(E�<lz6�Q����l8��xQ�Q���Y�=#����p�y�HyLJ��F�5!t�z,��{_YضǢ��^(����W>}�
+�74��z�',���C#�F�"\����k�c:�A�=�@b��(YC��;X�x�a�2���t\ Jk8]-�X���Y�]���M�2�k/��ay����(�v�i�F�ˉ�GG�Wϧ��Gc26�=]9�jA�I�c��q+�� r�3
+}��([����on<vR�=�U��Y�J�c%k�R�X)�y"(�4�l�R���U߷Ll�c'i/V���+p>��4�bs(�>��t�5̹,Gj� ����8�\���e��tG����\r;��)m%�mKd��?������k��L���zW���3�����/h��ӌI�ͩ�B(�
����A���ů���ҁh����7����ׯ2s�Q��
�.C?������9�VCC�5�u4�XiAD���/�w�R�����~�]"9�R���3;2���r�U�[�ro�+d杕)�v�����N�o<iG��f�ē�bp��_�9�(85���QD��V����G!�)��ʒ��ay9h�
+�S^+ s�c�H�E�F�}�����g6��h+�}��h�k>b�J��:�D����'�_w}�&ʧ8���Q�e.�qZ^֔��X���������=�%�c�����e�x�S��Un/x��Xu�"�XI�����a�I�p��������[6�`��w��p��ۑߘ��biZe�Ai�B�g�̴F����)k��T}��bcd�V#V]�Y��"�'m���6Y��F�!2JYC�$"+8�=�F��ʯ�1D�5.�:.�e\�e\�˸��q�/�ү�ү��_ǥ��K��K��2.�u\�u\�u\�;��L��Łh���Dr�w��Z&O��
+��%�yE�خJ9��t2r�\�Ϭ��"a����
+�����p�y�HyLJ��FI�D�p+�p뽯,l�cQ�|/��{� b�����8�m��ր0��[I�%u��p���Q���;q�>��B[+x_��z�p�i�,����oe����f2yX�w��q0���[ό�mq��GL�e�j(�-��%y����]�Ʉ�}^]���Z5����V��.a�쩵�A�0��hq0���+��V+g�5bJˌ0G���#T�#Y S��x7�5��lg��0BG�ʜ
s��sC;�y6����%�O@]�^$6�������4�Bӵ�������ۢ���}1b�ؖT��+���Z��0j�Ƕ�Z��j:��L���H������R˱VR���V&��J�}���O�n��q�q�5$l�@�3uD݅-B~��e��K�X:;)c�g�NBdv�b'��p�
'k��c�h�ۈh�a|@���<
���O ���Mo#���}՚x�*�3k�اFMp�Y���v�55�ަ)�o��V�O
V����
���
+e�|nh�i �A6�݆9�q��)�8\�1䝋3:�!$yi�>
���e��O�n��p8�-��-�(���VnȈ�u��I�b��$I9s�+�oF�$X�`��N��e#���'����>Vg/<��2�O��ѹ��|<v�Ew�X��+^խ2�E�,B�C�ݳ4���B���Jmrk����ӤѦA�VyF ;%�����c�ڻg��=6���
+��]9��ʤ���ũq%ܴJүGg��������7����/�ixo:s����2o�\�2�Lc٧��w)�06�S�
^��"���=�����Y�#�J����)Zx����u
+���(�r+�{���g�|l��q�(
+ �#�R~��=��(�+��M|�DSm�7/^�?-����h��,�/7/�W\u#O�b7�������x
+endstream
+endobj
+4 0 obj
+ 22398
+endobj
+2 0 obj
+<<
+ /ExtGState <<
+ /a0 << /CA 1 /ca 1 >>
+ >>
+ /Font <<
+ /f-0-0 5 0 R
+ /f-1-0 6 0 R
+ /f-2-0 7 0 R
+ >>
+>>
+endobj
+8 0 obj
+<< /Type /Page
+ /Parent 1 0 R
+ /MediaBox [ 0 0 595.275586 841.889746 ]
+ /Contents 3 0 R
+ /Group <<
+ /Type /Group
+ /S /Transparency
+ /CS /DeviceRGB
+ >>
+ /Resources 2 0 R
+>>
+endobj
+10 0 obj
+<< /Length 11 0 R
+ /Filter /FlateDecode
+>>
+stream
+x�+�
+���
+endstream
+endobj
+11 0 obj
+ 13
+endobj
+9 0 obj
+<<
+>>
+endobj
+12 0 obj
+<< /Type /Page
+ /Parent 1 0 R
+ /MediaBox [ 0 0 595.275586 841.889746 ]
+ /Contents 10 0 R
+ /Group <<
+ /Type /Group
+ /S /Transparency
+ /CS /DeviceRGB
+ >>
+ /Resources 9 0 R
+>>
+endobj
+13 0 obj
+<< /Length 14 0 R
+ /Filter /FlateDecode
+ /Length1 7884
+>>
+stream
+x��Y XS���s� �aH@""e �Ȏ( ��,EAE��EK�nm�V�E[�L�����6Զ��j������}:]�����}�:s{;U�|�9IL�}f� ��rN��[�������Ukw�fr��(@��>�ڷ-6&�����㑎������'"�;ۚҬh���sY�x"�!���x��ٽ��A�x� ?�qSk�H�C����t7�o���m<ޏDZ�{�6�/ۇ�'�8����Z�N
+��X�����a%Ri��ҧ�M����F�����|�&����F`[���`�34$-���eN�5c�i�*X�bCT�t��!*P�s��(�㕪P�Ǵ��W�Ƙ��`,��{��whU�-"�S+N��p�Z�SK�����A��1f�5Τΰ�ͦx�T�W��6u�-�3���)��̒T�O��jh|�k5y�?�h�3���ĵ�?X:�Q,37��1�°S&M˝P�%bӄ6$�N�
+U�X1�g��jM6�]��r�-d<6g��s�dh�T��Tܧ.Rm��hUbV$� )Fo���jS�
���&���1�����ѩ�g�����&�.���E���*z�z7�~�����I��p�uXO�N�Nu���:
�Tz)G^!�3�舷�X�����@�]�i�L�\��V��e�>�:)��oQk�.:�`K�geb�꣓[����ٿ�Ɦ�}��7�/ZV�n{�c�bQ1���՞:�畑�nkt��[�G�K۶�8V�4o���h�3�ž����X��X��A����X�b�V"c�XeN㏕�uBsf������}9:�������C_�cU�ڍe��-��ty�����ən�Y��W�_U��s�==xǰ�F0C�s�1"\��Դ�T���f "ܛslB���P"�0q�ќ$�O���ILq��.�����h�[������'���tdG痻�"���Xbߵt�N#���[�d�wi����ެ=�K��+W���tUM���q|�u3 �>��W7�$�=� X��H��Q�RX7r[�L@�THd#��8Q@�z���Cq�2g7�T��G�R�ʊ{�v߹;JN����Zܰ��xY1�������چ7w�S��?��}l����9KJ:6U8x�k0�U�ϑo5��d�/���
E���P>̫^�,���� �%H��( ����KEJ�<�X������$������%і^��v��愌tsB�͚`�����_�.���������S�H��̎�jBD��&"�S��$Δ魃w�h}�m�t{Q�%�%m�4�6v��5�ߪY���\^���i�2x��BݪD��BЭp\T��l���2ux(�G���Ω�����xƊ����V$'W�⦖e��}OZyvvlrRlƐ��|��zGɰ��U�3g�3�x$C�3��
+�'I����e�H��8O��j IN��L��p�C��ֹ��)C�<(J�`��tl�b-f��ZH�qXO1��q��!͵��Ouu���7<~��T� ��?ܿ�j����as�g�\T]�N�p����ujlruѓ�+���H���7=��c3_�z�m��6A2}P��2���q�T���] 8rڀ
+���{�Ɉ�܃+Ĉ�'o~�P![��#jQo���9��+Q�JSc�����)Y���7�D�[����lao1��7�:�H��`��.�z%�������!��,�@#�UF�2��tr���˜����W#++S-Z�e<04z|�ƶ�%/�a�ѡ���������w��7O�.�).�ϭ[�.0D�w����V��ʫ �^��������|���H$������BZC�+�K��*a*d�|`�"/ݍ���L�[$��9N�D&����W&h����u8kh�h"�X��}`͇d��_tύ��9GN�d�p�ۅ��_n�y���@o��g���cn}�_I��P���O~R���]�za�3�&�nM��K�.�c�A�R�R�1b��@އ�B.�̊xB�z5}ਃd�@$��X֤em���2��������'�~�=ѻ�&�ȳ?���*���y�݉�k�S��t&��Q����N�V��ʼn�[��[q|��e"jB�L�)��(}R��4f1�a�j����7�tndφye[jv�y�{(ḱ삎������
+�X�A��ɋ6���g�SQoN�0�,l�Y4G�r��%�,�y�C�'������v�Q���H�C }>&=r$�M��~4$~�R�y����$i����\g~�k�=AK
+~E��YE<M��'��p��������ڴZ���������O��]���;l�X2�2S�ת{�:�i����i.��k��n���3�!��d��,)����,K�ɒ�i�~a�;�Ԣ� �h��S �=�'��}FD(e�/�i"
Np ���A04�ap)�~y�7p�Fb����io��ig�O��ӛ�RF�W�����ӭ�f�}n.��l'��md� ;�JH̠F�� ��g��T�U�]{�]���!��䳍�x�TN�
�<��cPc�:D!e���qE N��A�E!u�}5�ʿ���#S[�ț��;��Y������0�'�VL�/G����֯I���&�z`�o�p 1�!��QZ��Q���1u)���)4L����O/7˛�����n]�sqϮ�?�����������l������:��7<���͗W.n�.+nX\���!��=��
։hU(O^��`t�g
J���L�B�LHSo�s�6}<
��f��m��y��v--��{.r�����Լ��--� h}v��zq�����!���
=%�at��F
�XNN�3$�W{�*�[�3t���H�ԉ]�%�
a��6�g#X�ec����g(�[d����J�n#,��5?���/���ߛ��"��s���߹��V�k�e_��Z0�C��(o�A
+U�7V�������ȈRx��\�oE �I�
�q�ZT�h� ,G����V.8���\��E�&�lΣ~�v^�\���l[�e�����m�y�wUΙsb��pφfӼ��u-�_ �[ʋ��wU�4TU��f�.�[��pu}˕=�������o�^ǒ�)�K����,_�~��;���3�Ew����9���
�M��|QIYŚ�C�0>�����)J�Vt�n��=�f]xCJ�����7��6s�;��5����+n�@z.��~��yp�ɔ�w/���>,�WV���5���#ySSx/z_ ]d=���W1K�<� �碫��8��}��']�@����s�����h��5�;~L�Q��%��1�R�� �Y��f���zR�cV���Ä:(�P�:�ƙ�q�2m��E�MO)S�/�~�������w�:�����͛�e^*��H���D�'�E�Q*eZj���Q^m�� �R�'��t��@��0�W1Y3gk���f���2
)f�����8q�Ǿ�k�0HA�ŧ閾�⥼{��U�Ͻ�b���#X�� �n1�ƀ��W_���Qs��z-^�<k������?ټ7I����к�X��f��ز=?snWT"�;)�,x�j�%c�C����Ykʮ��c��X�}�ݺ��Ҟ�KL�������a݄F"6��-�������u@�c���3P���E�Z% `�=IOm�m�V�������������W{*�닛�U5���
����{���g�95ݹ��}{Unm����<���3���"�A�I�*�<Q�D��~a~ނt�Uu��
+��Q-�^0G,�k�Y��yi��*HEaA�|�$ϻ1��R"C��aQ�I��=-^9�
+P��Vo2����P�0z�D�]���٘��=�P���<6���VWw��~��~�&5��nth���V֭�n�mmYP߶���j��1%~ђ����jqϝ��cϽ�w���p;9u�dc�zg͖-;Ǝ�.j�?����G~�4���A���p�y�cE�A" ��M�`�U�����/J�_����=���ۊ�0gB*ȳS�+��0��'�1��T+��[����Īx���7���|����
+�����GM�'O4�t�{�����L;������Q��}��='����0>�L-�F�S����~%N����ߡ�t�Ul�8����&�2j��@�lX�]�����ޭ�S��ǡo�k���_��w����F~]�fנ�2��ΨȀ}��hU$&v\���-.s���
�Gb�+�#}�0GG�VN�2�z a H���/&R���1+tr<ǩ8�u�f�<]�q�m5��꾉�=�y����;lQ�V��T6�4o��:t�U-5w?�PYV֦6mN=������lw����b�gj���s~@3D���F�c��,�F�b���)�H�������^�9'�$��}���,}�d|d�b�U�?x�?�ff���Q���/�d�?��"�Y)���N���
+A%S!
h��z0 ��A8D@$D�����E�&H�U��b���n6��3|�?�6x��Kp��6��Z��<�a���4�!"���&�E֒�����(��
p
�`�Ij`F�Mꡓ���}�`ޅg�(���n�� ���5�OBJ�����)4�o��x�c�6m����E����*�����o<e��)���ݭG2~��^�m�"5����~
+v��L���t�[������>���4D�)p��ݷ e��R&�X��g�o|�ȍ�?�������m"-��X����X�`�gٿA>$ɰ���=� �Y V�=��J�[+f��wh�>f
+������~�~ ��N,�����Kb%{%�%?J�J�U�˾�#�I�R��8�Ee��^�;�L���s|&����;�����%j<"A,r&/�V8K����Cqg����: �
+endstream
+endobj
+14 0 obj
+ 4938
+endobj
+15 0 obj
+<< /Length 16 0 R
+ /Filter /FlateDecode
+>>
+stream
+x�]��j�0��>E���vA���x�j�1�B7Jt����
[���g�8IO�s��U��~2�b���LWoH�t]"���Y���\���!��-+]Z7LI]��#,.���ݓ�zzH�雷�Gw��S�W�u��BnY�4��>���W}!���}k�����!�/��6�P�%Z2��eֆ�vgJ�,\���p5 9�o�Ȑ��[�.Cx���M$�*@9(���*A
+T���G�AґW�#Ȁ8�F:p=B�i"�]#R¯��d��~�Z¯*A�S�.�O��ς��H��
+�+{�J�I�UL�+ف���Jt�����;���s$�4���_��}*�)쒂_ő�S�8P<9�hm��>���}�xX�nS::���y���x��6ݣ
+endstream
+endobj
+16 0 obj
+ 394
+endobj
+17 0 obj
+<< /Type /FontDescriptor
+ /FontName /HoratioDMed
+ /Flags 4
+ /FontBBox [ -136 -250 1094 898 ]
+ /ItalicAngle 0
+ /Ascent 946
+ /Descent -253
+ /CapHeight 898
+ /StemV 80
+ /StemH 80
+ /FontFile2 13 0 R
+>>
+endobj
+18 0 obj
+<< /Type /Font
+ /Subtype /CIDFontType2
+ /BaseFont /HoratioDMed
+ /CIDSystemInfo
+ << /Registry (Adobe)
+ /Ordering (Identity)
+ /Supplement 0
+ >>
+ /FontDescriptor 17 0 R
+ /W [0 [ 250 468 282 508 508 483 508 212 508 464 250 740 629 612 373 395 464 365 363 261 382 237 211 624 496 343 416 509 574 211 173 264 237 494 494 770 253 457 291 477 291 ]]
+>>
+endobj
+5 0 obj
+<< /Type /Font
+ /Subtype /Type0
+ /BaseFont /HoratioDMed
+ /Encoding /Identity-H
+ /DescendantFonts [ 18 0 R]
+ /ToUnicode 15 0 R
+>>
+endobj
+19 0 obj
+<< /Length 20 0 R
+ /Filter /FlateDecode
+ /Length1 2432
+>>
+stream
+x�uVLU�?�{_���_�>���WPF����0d�AF�y@T�u�VC;��F�jZ�,�4�6��+aY�
T�Ę�df�k�F��X�E��s_q]�����~�9����|����. ��s�h�����9�V��|�pnd��+����`��Q�"����ط��ٴw@l{1�{�n @=E��6Rd��y��q�u;��*�(����CGZ�V������#z<&.��$�l�~�b���_$���B`,VB�@v(��� ������ӂ�iAfZ����B���Σ�@���7t�a���o��+S�V��`BI(��tө���0e
ɠWG̓��%c
+��p�N�s�:�/+�>�nY�M��B�mJKMK��|�"�]i�>��X�ʷ����4��<܁��Z�{U��w�.~�ϏON^�d�'Ǒ�]S�M����>�����G�����i�O>7}��$�G\Gyi"�I���B�SO�5
Г�1EG�.BZVV�_�B����)_�ǷIj:���]�7��x�$�=��������[�U�w�$�v|T��� �qKY��1�t���5���(F���PABӎ��_���)7/�|�M%�%�շ��o/���M,�J��m�������yf����8���S�8�io�c^�?b_�뺷0�k��U>�g'��Լ�c�裔�����R��2��ák�Q�@r`LMPe��F�j�\`fC<(���"���/.��Y
+��?����wqSQ�w��&}t���:.�N�7C'ё���
yE���@�cIn�����*D/�%;/w���"�@~VQ~d_Uՙ��wVe�>���v�:x�lU�հ��ƕ)��H�\�w�eS�u:a��;�E�$|)A[+aJR<�a}^n��ˉқ�&ޘ潽C�#�?a�9�|`����V�͂]˵|�҄5�=^'CT'mătbBah��0��59^Լ�R���O}���p�Wd�$>oZj��,}����
+b���=�|ub���k����/ޤ���|������熶��b�{'{��|�/_G���:���m>w(tTۡ'��"D�g]�Q������L �.}Fؑ�Bqt��GD��������y7o���+� ^��/.����GM��o�!��L����� �A�H��UWV�
+++.X�!CV|�l�/�DZ�Z�L� x����V���a�S��J�<+�U�@l����z�H�y6��X�e�����"5�w�O�O�_��S�~jC&����Ā�4A4B8�t҉ĩ���j�N���EuR�P{գj��K-U]������#�=�_yM)QtyN���K��s�)�O� \�NMB�P@����\���!�^�g�����[�:�{��UR^Kc�Q�07a�C�)�d�ە�LtP�SY��������c���#�������J�˶�b��
F\�R~�Z,?�����K(䄍
+�-�j 9��1�F�P����G������1Ǩh������}���^Cf���G�f��0���'���m�ΝRN�l��~\�0�r{�J�� :6q(b� {�-!mo���
K0�#Ȥ��3�c�K4��V�}V��^�n��F��l&�۷VE�U��`If�L�n�������Q#�=�AZ���j���6-��+(`��z+��`��Q�!�!x*��,o~0^
4��w�M��%.����K���Ħxհ���k��t ��������9h����Z\�y�[�-�]�4���ս�ރ�����i������1*�
�;Nܺ�G�2˩R8���#����Pn�F�/�\f��dC1b���;�J�RK�^9{:��������A)?'
+endstream
+endobj
+20 0 obj
+ 1898
+endobj
+21 0 obj
+<< /Length 22 0 R
+ /Filter /FlateDecode
+>>
+stream
+x�]��n� ��<��ݡ"I�6��HS{�a�l@�ɐ@���#��Y���l�/��5:��Vv`�Fy���%B��6,/@i�v9 �x4w�pj�`Y]����
+�e{|b�߽B����KGG���
'42�4�p�
+�&&���VE]�um_�C(�T��
+g'$zaFdu��z��04�^����);��YvʛDE�sAt �@t$��J�g���Dg�J���2�sy�l�m�x;N�N�nMj���p�m��~P�3
+endstream
+endobj
+22 0 obj
+ 263
+endobj
+23 0 obj
+<< /Type /FontDescriptor
+ /FontName /Emblem
+ /Flags 4
+ /FontBBox [ -83 -210 1162 835 ]
+ /ItalicAngle 0
+ /Ascent 688
+ /Descent -215
+ /CapHeight 835
+ /StemV 80
+ /StemH 80
+ /FontFile2 19 0 R
+>>
+endobj
+24 0 obj
+<< /Type /Font
+ /Subtype /CIDFontType2
+ /BaseFont /Emblem
+ /CIDSystemInfo
+ << /Registry (Adobe)
+ /Ordering (Identity)
+ /Supplement 0
+ >>
+ /FontDescriptor 23 0 R
+ /W [0 [ 750 646 333 566 606 253 312 627 606 ]]
+>>
+endobj
+6 0 obj
+<< /Type /Font
+ /Subtype /Type0
+ /BaseFont /Emblem
+ /Encoding /Identity-H
+ /DescendantFonts [ 24 0 R]
+ /ToUnicode 21 0 R
+>>
+endobj
+25 0 obj
+<< /Length 26 0 R
+ /Filter /FlateDecode
+ /Length1 7972
+>>
+stream
+x��Yy|U���Nݮ�zOw�Iw���Y�B `�&� 2�h!t!�$�ąEI��(���B�-Bp".�̈"Ou���7�?�I����{��}�/��{�Vݳ}�|� ��#��oѲ+��o ����Z�z����K�8o �n_�bɲ���E��S��yIպş������g��/���IH\�
���K�&���~jŲUk�|X��������E�3�����]��'`_��[���WܱN�=�qMv��b��_�������u�y�����I^�ٞk�t��lO��ⷤ�-��<�_ ��_(m����Z�I(Y9�9�ǓLr^�.%�K��1��8�o�ޠ��7����>N�����q�^O��)P����^ѕ���1���T.�L&dI��z�v�H�R��Z�?������|�kq�O�U*H��x)D��M>�˦�L.
$| 9�2O7O?�0�8/i�o�^riʆ�
�
�
�Rڒ�|m��䶔I|���x���C�C�C�C�Cq��'�''�']'�N�Me���� ���Kϣ��p������Hɥ)��ݙD�îIIN_���������Wf]�7ݱjͼ�[w����%]�.�Y]6w�kr��-�z ����U3g��)+'��z�3At�e
+�)g�=q�ɲ��Z�n�Pk"�1
�9h�wJ��C�ݪ��zB�=g��?��BSЩ�٥��`'�ljMa)1�;&����/,���_��;nl^�|v���vZ�jrǏ��;�njHfV�;F�����H��u�dl��"��p���q�d�A-ɋ�.��Ͼ�^wIJ���8�2�B�_G�;�B�&0�!8�t!]�s7�[�{ܺ2[
+�W`�;��M_T`Bc�~�o��t�r`��Ic����=���J:Ey�r�l�
7�o���;Ն�?��`\�I<�.'r�����C\y��d(O���sV�t�'���V,�z$�[���V�W�6x��}�{��N<+C�?��#!"D�A�����u�$m^<uA��:��wʝմnj�*qD<�aC��vZ���aʹ�G_9��sJ�P��q�;�d�Ec0ڹ��8c���֖�$�B�HSP
+�<(q�%�p7z?jh�7dQ�ZZ�Z����x�,�|C|{<w5:<���Ӣ��ߢ�D��j`�쎗�{��YeW����O����6n����E�G�Ϝ�+z�����ϣz`�»h�8�,jm�s��0g�Q[k٭\��V1`����j��H]�HooH9}��RlAD%N���䐜�K����D�2'���l�Cv�.9Ks�d�q���P�����6��e���p�Ap;���>uS�{o@?X����T��q��vŃP�����JS4��b�s�1��b� H��&%� ��z3����C����d+�������A_�9@
+�=B�3+GUc.�q�1�ӃQ'����h�sc�S�OKr�܆��\ձDq�D���(�p�U�D���E�����K;K˭����d]��_�{r8�Pvnk��ں�i����?�(��%<�������*���o|��G;�I��(����ٲ��4-*|����E� �Q�r����}�j7G�Ң�2&��
+Hv�Ul߱c��;�}�|I�.P����o��/\���f"C�!及��]�2����
$��,)�x��o� 0�k}���&O����Ԥ <hS�+��1?U�Z8�ţ�'#��l\��|CZ{JJ���6p%�;�<&t�������m��Rդ�/w�I��p�������>���7^�<����ק��V�+�ܩ�ϋ�{H��!�Z����E������=��x���[g��دf��#� j6������\-9j�ὁ���V�|}�n�t4����mk�x���!� �&/_����/�����+��{Q/Y!�
+F���Z��Z�;�jZ�k��e�-!�1m�H>��H��O�a�ԭZ4����ꏖj��/�%5$�'�O�K�B/[z?����b;�U�<Q�~`���)_�YF-?�T-���ӑG~�z�9Db,_������-�e��V��I-G�$ @���b�q�4ba���0�r���J�� �~ա��H$�䈺�>��I�l�DSc��8�t��+��Kͺ�E�94���5�����ڰa�rj=O�0=�laDiP�P�+
C:����Iz[#�7j1Hg�����n*}^���/)�JJ�^C���r�H���b��~V�O�P\4}zQ�
#�OQ4}��F+�_�?^6��5&�E �I:��"��p��"q�B�zjݵq�K�/+�F���V4�ݑ�˔��[yT De���ɤyl��I�!�'~"~
$̖�
��g�u�O�����D�t��Lb��g�wIEB���O����(�����gd��n�f�����L�o��n�}z;+Z�H�Ʊ*C���4d3�2}�����b�H�H�Hc��8qd�H�Hq�ɺ��)���II�}���������������&G�U�*}���X�T��W%/M�����u�u���:_��.y]J����lNe��/Yd�/!c��?9��Jv��c5/���!j�Tq���r���~s癗�|F�F�X78�Φ�h�X��h�u����_r��Wk������h�+{����`�y��t��:-'�1����`��Q@���ӌ��L�Adj
+���dԊ���Dk�sf��[hr�R
��;�EWH�ċ�C��SD��I�)�0KX$�Q��|<sh�4��g�,m�.�4��K�����M�"��%�´�_��h֊k�kuk� h8?U�F�6v��OY��^8H�i�ڲFY��r �����<��A�c��{X=���&A
��h���Ia
3G�$� �@%Q0�7pFI�i��TM$�|�f�,��dԣ1G�Ѧ�Uk�t�5��XnvQ�7d�'��h��j���d6�,C�a�0-�V
�J�Z��������KUz&����9�
|v�~��~?��N�荰ʾ�":I������
+�\���u�8�c6��:N��d6�{���H9�4�0���4�˙=�s:p�f�j���z9�I���LN4p�f/&��=�b�4��F�B�}?��,�W,��L�-湤�t)]Ky��2Y��B0��R)����f��534��9�9�
+ƝQ�&,�&k�Z�.��_�Vi�i��"��0�!������_����dE���(��B��щ��_D�;T[��(t����h�����Տ��E2�9~�h����)���'�d�<I�ӂA��A�y�&�$��j��)�j�B���6kw�W/�>���$>���M���m�R�?M�+�NX^;;�,hA��VK4�zC�� ��DmWL��l��ån� ����F�C�?�o�����3ο��0n��O���������@-
�x���y��-3� ��7
<�e�T�����-mm[�tgn�]DF=N��jǽ�ڴХ��
+�a��R��`��:�E��\U�KK,������?2?^-�WD�C��S�����C�w?�\V֠��~J5Jߧ��_q����6U��Ouv|<TOW~��cM�r�g9���/7,��D�ٜ�
�I�����!�-1���JI�I*��j��sȸP����u�q��c�3�[��XF��ɵԾ�&�3�~���O~�O7��\x�
+�}K�S�u�o�Q�Q^R:�g�<�rAB�3h�8j����1�XØp�F��%A�LsجOuP-��N���D�6�p��T�+�a�S��z>�a&��?���>�ݭFMwqt�
W�F��ʩ
+?tD3�٣�o�V�f�[��&Y3�y�L[�}��Zk���>Y�d��:�6�^*�Z�[���ٗ
+�j�R�R�����Ѡ�"�D�S��v[��*����Å��Vh�(L��&�of�7�f��BX��W w��l+퍞=�C���T��=���:e(~i��5'���8g�;_?9�qB!�
+9�z���|��G�����-o����=�f�:�A����z7�sZ��&���[R�[�qof�5qnF�9�Ơ�Lz�IvfeF�Hlo��P��n���/���b�̗S��ꬵ�Y|mF'��:���b]�.G���������mh�U�n��Y�?��R
+c�ϼ��oشjes�~e�轕���{�r��/�G�_�����?[][}�z|�/��S&���'�[^x.3���w#����t�Ѳ;�K��r�*&��ǃ���c���-R����]��=.�n����2��X��E�)o(�br&��Rf ��7���&�P��VW�*���� �L 5r��$V]�H�w�d����MZ#�!F� �m�Ò�.�t���K�������O��
��d>�gd�%�^l12�R9)�ܵ�T��1n��g�+�`���,��n\2�f*�z�noo��q�2���5��W�?����ȋq�uA=;���0��yl8�gp���A��� �T��ܤ>����G����=�y������
�� N�g�an�PY�Ou�7���W7�zx#ً�_����)^T��g��wI��y��h^T������_���da�~�m��mn
�`^͈>��t�(�doǎ�So���(9�^��IΛI�a�o�B����^���G�I3Yɫz{�c1�m!{/ھ#�FWV�"�=���$�zǷ�L:�a1-E
9z&��z�˱�m|T��W���K��n�2�=��k���?HF���Q�Ixp��p��J�f��a��@5B=��w렀��xI9������8�L��s�
+��E
�Y`�'�si����M��?������_;��n\���Q��wn;Kh�4��OK�����,'8uF���̄�Co�P>�f����a�0>'e�L���o.�'I���5��7\9����Hc��;��J\�_a��%�����0V�����b|<Yɵ�)PDF���b E�.��ޟ����u��)8o$�}�fr
+ϭ��<ͯ�c�^R�
�aI�&�����_#�5���j~����ӝ�Pa�hBh��|6����~�:�r{�8!�Ɉ��nBt%���l�u:K������'B,+��
��a��U���sZ�Mv9�T����6��\����
+���k]��0�&�]��{#�z*�^
ét���z8��cz8���
��v��K
+���
+<���_��A��pH�g���6�S
�);4��B��0<��C�ľ0{B�}ax���O��kulo�
+�I�h.�ޔ�v+��.�=�]<���N��8o� v��|p�v4�m&h����`�}�l�۶�ض4��jd[m���ʲ�o}P�Z���A�<�Pv�-����l�[϶X`��7�U�Hh�|�5)���2��ln��?�=P���(��i�i��mJ�M��� ���q��a�/�u�=mp��a֨@C���pW����z�Ygfwڠ��m��ku�f�����w$��>�#V�C�a��V�f���(��+d���/ÖW²1PUi`UT5����.郥��R*����cP��/Y�Ɩ���_����� �EX�����r���m
+�)p�T���)0w<�*�+������v�)3n4��p��_'���0%��E6�
&��z���6�h� ��Mp��q66�ƍ��8��N��Jp��e��Aւ��qm��sؘi0���FO��Q:Vb������V6��GXX�FX���(fg�
++��av(�X�
B�hYH����B~^�y��y�|n���: ���цYN��,8�Q�l;d�|���̌|�yd�`��S@����f�cie��be�� K�B��'����1��,��N> K�@R#���D���@��S���g�Y�Ʒ��!N.�R�)��ng�J��l�n���l`�y�c`A�Z��$�3�on�3)`���(�����#*A�st��
�(X�h�b�z`��N�+��r:���(@;hx}3���#����?�:�
�?
+endstream
+endobj
+26 0 obj
+ 6009
+endobj
+27 0 obj
+<< /Length 28 0 R
+ /Filter /FlateDecode
+>>
+stream
+x�]�Mn�0���b��" ����tâ?*���b,Cܾ��J�Z����<_�Z�v�
/�ZY����L_��� �@�-��D�Kn�y����%şN����YM?ED�[�v�W�}_|j�����z�$�*Rܻr��ykG��'�k��aY�.�/�k5L�g���x6�d��+Ge�NEe�N�V���@Z��[k}�p�Ir<T�RO�t���2h9(����#"������Zh���A$A�Sz1(D� t-O9j���_&@�_ȃ����S�_j�_�@�_� �L�F��m,�=f.�ֺq�E�s�&<h~좙̖�_>z��
+endstream
+endobj
+28 0 obj
+ 336
+endobj
+29 0 obj
+<< /Type /FontDescriptor
+ /FontName /DejaVuSerif
+ /Flags 4
+ /FontBBox [ -769 -346 1679 1242 ]
+ /ItalicAngle 0
+ /Ascent 928
+ /Descent -235
+ /CapHeight 1242
+ /StemV 80
+ /StemH 80
+ /FontFile2 25 0 R
+>>
+endobj
+30 0 obj
+<< /Type /Font
+ /Subtype /CIDFontType2
+ /BaseFont /DejaVuSerif
+ /CIDSystemInfo
+ << /Registry (Adobe)
+ /Ordering (Identity)
+ /Supplement 0
+ >>
+ /FontDescriptor 29 0 R
+ /W [0 [ 600 513 319 401 591 644 478 640 602 640 560 644 319 390 317 390 685 564 722 564 752 672 765 1023 596 801 370 ]]
+>>
+endobj
+7 0 obj
+<< /Type /Font
+ /Subtype /Type0
+ /BaseFont /DejaVuSerif
+ /Encoding /Identity-H
+ /DescendantFonts [ 30 0 R]
+ /ToUnicode 27 0 R
+>>
+endobj
+1 0 obj
+<< /Type /Pages
+ /Kids [ 8 0 R 12 0 R ]
+ /Count 2
+>>
+endobj
+31 0 obj
+<< /Creator (cairo 1.8.0 (http://cairographics.org))
+ /Producer (cairo 1.8.0 (http://cairographics.org))
+>>
+endobj
+32 0 obj
+<< /Type /Catalog
+ /Pages 1 0 R
+>>
+endobj
+xref
+0 33
+0000000000 65535 f
+0000039841 00000 n
+0000022513 00000 n
+0000000015 00000 n
+0000022489 00000 n
+0000029394 00000 n
+0000032408 00000 n
+0000039687 00000 n
+0000022660 00000 n
+0000022987 00000 n
+0000022874 00000 n
+0000022965 00000 n
+0000023008 00000 n
+0000023224 00000 n
+0000028257 00000 n
+0000028281 00000 n
+0000028753 00000 n
+0000028776 00000 n
+0000029009 00000 n
+0000029548 00000 n
+0000031541 00000 n
+0000031565 00000 n
+0000031906 00000 n
+0000031929 00000 n
+0000032156 00000 n
+0000032557 00000 n
+0000038661 00000 n
+0000038685 00000 n
+0000039099 00000 n
+0000039122 00000 n
+0000039357 00000 n
+0000039913 00000 n
+0000040039 00000 n
+trailer
+<< /Size 33
+ /Root 32 0 R
+ /Info 31 0 R
+>>
+startxref
+40092
+%%EOF
1
0
Author: shevek
Date: 2008-12-05 17:22:07 +0100 (Fri, 05 Dec 2008)
New Revision: 984
Modified:
trunk/src/main/java/org/ourproject/kune/workspace/client/WorkspaceMessages.java
Log:
Translation improved
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/WorkspaceMessages.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/WorkspaceMessages.java 2008-12-05 16:21:02 UTC (rev 983)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/WorkspaceMessages.java 2008-12-05 16:22:07 UTC (rev 984)
@@ -2,7 +2,7 @@
public interface WorkspaceMessages {
String REGISTER_A_NEW_GROUP_TITLE = "Register a new Group";
- String MUST_BE_BETWEEN_3_AND_15 = "Must be between 3 and 15 lowercase characters. Can only contain occidental characters, numbers, and dashes";
- String NAME_IN_ALREADY_IN_USE = "This name in already in use, try with a different name.";
- String REGISTER_TO_CREATE_A_GROUP = "Sign in or register to create a group";
+ String MUST_BE_BETWEEN_3_AND_15 = "The name must be between 3 and 15 lowercase characters. It can only contain Western characters, numbers, and dashes";
+ String NAME_IN_ALREADY_IN_USE = "This name is already in use. Please try with a different name";
+ String REGISTER_TO_CREATE_A_GROUP = "Please, sign in or register to create a group";
}
1
0
Author: shevek
Date: 2008-12-05 17:21:02 +0100 (Fri, 05 Dec 2008)
New Revision: 983
Modified:
trunk/src/main/java/org/ourproject/kune/platf/client/PlatfMessages.java
Log:
Translation improved
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/PlatfMessages.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/PlatfMessages.java 2008-12-05 01:14:07 UTC (rev 982)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/PlatfMessages.java 2008-12-05 16:21:02 UTC (rev 983)
@@ -5,11 +5,11 @@
String MEMBERS_NOT_PUBLIC = "The members of this group are not public";
String REGISTER_TITLE = "Register";
String SIGN_IN_TITLE = "Sign in";
- String EMAIL_IN_USE = "This email in in use by other person, try with another.";
- String NAME_IN_USE = "This name in already in use, try with a different name.";
- String INCORRECT_NICKNAME_EMAIL_OR_PASSWORD = "Incorrect nickname/email or password";
+ String EMAIL_IN_USE = "This email address is being used by another user. Please, try with another one";
+ String NAME_IN_USE = "This name in already in use. Please try with a different name";
+ String INCORRECT_NICKNAME_EMAIL_OR_PASSWORD = "The nickname/email or password is incorrect";
String YOUR_HOMEPAGE = "Your homepage";
- String USER_DON_T_HAVE_A_HOMEPAGE = "This user don't have a homepage";
+ String USER_DON_T_HAVE_A_HOMEPAGE = "This user does not have a homepage";
String ENT_LOGO_SELECTOR_NORMAL_TITLE = "Logo";
String ENT_LOGO_SELECTOR_PERSON_TITLE = "Avatar";
String ENT_OPTIONS_GROUP_TITLE = "Group options";
1
0
05 Dec '08
Author: vjrj
Date: 2008-12-05 02:14:07 +0100 (Fri, 05 Dec 2008)
New Revision: 982
Added:
trunk/src/main/java/org/ourproject/kune/platf/client/ui/BasicThumb.java
Modified:
trunk/src/main/java/org/ourproject/kune/app/public/css/all.css
trunk/src/main/java/org/ourproject/kune/app/public/css/kune-new.css
trunk/src/main/java/org/ourproject/kune/gallery/client/GalleryClientModule.java
trunk/src/main/java/org/ourproject/kune/gallery/client/cnt/GalleryFolderContentPanel.java
trunk/src/main/java/org/ourproject/kune/gallery/client/cnt/GalleryFolderContentPresenter.java
trunk/src/main/java/org/ourproject/kune/gallery/client/cnt/GalleryFolderContentView.java
trunk/src/main/java/org/ourproject/kune/gallery/client/cnt/GalleryViewerPanel.java
trunk/src/main/java/org/ourproject/kune/platf/client/dto/BasicMimeTypeDTO.java
trunk/src/main/java/org/ourproject/kune/platf/client/dto/InitDataDTO.java
trunk/src/main/java/org/ourproject/kune/platf/client/dto/StateContainerDTO.java
trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneWorkspaceModule.java
trunk/src/main/java/org/ourproject/kune/platf/client/state/Session.java
trunk/src/main/java/org/ourproject/kune/platf/client/state/SessionDefault.java
trunk/src/main/java/org/ourproject/kune/platf/server/InitData.java
trunk/src/main/java/org/ourproject/kune/platf/server/rpc/SiteRPC.java
trunk/src/main/java/org/ourproject/kune/platf/server/state/StateContainer.java
trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/FoldableContentPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryView.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/SocialNetworkPresenter.java
Log:
Complete - task Gallery thumbs
Modified: trunk/src/main/java/org/ourproject/kune/app/public/css/all.css
===================================================================
--- trunk/src/main/java/org/ourproject/kune/app/public/css/all.css 2008-12-04 14:34:33 UTC (rev 981)
+++ trunk/src/main/java/org/ourproject/kune/app/public/css/all.css 2008-12-05 01:14:07 UTC (rev 982)
@@ -41,4 +41,4 @@
padding: 1px 0px 1px 1px;
text-decoration:none;
}
-*/.k-textlinethrough{text-decoration:line-through;color:red;}.k-textnormal{text-decoration:inherit;color:green;}.k-textunderline{text-decoration:underline;color:gray;}.x-tool-kmenu{background-position:0 -75px;}.x-tool-kmenu-over{background-position:-15px -75px;}.k-border-openbox{border-bottom:1px #D0D0D0 solid;border-right:1px #D0D0D0 solid;border-left:1px #D0D0D0 solid;}/* SiteToastMessages */.k-stm-info-icon{background-image:url(img/info.gif)!important;}.k-stm-imp-icon{background-image:url(img/alert.gif)!important;}.k-stm-verimp-icon{background-image:url(img/important.gif)!important;}.k-stm-error-icon{background-image:url(img/error.gif)!important;}.k-error-tb{background:#FFB380 none repeat scroll 0 50%;color:#250;}.k-infod-head{font-size:108%;margin-bottom:10px;}.gwt-DisclosurePanel{}.gwt-DisclosurePanel-open{}.gwt-DisclosurePanel-closed{}.gwt-DisclosurePanel .header,.gwt-DisclosurePanel .header a,.gwt-DisclosurePanel .header td{text-decoration:none;/* Remove underline from header */color:#000;cursor:pointer;cursor:hand;}.gwt-DisclosurePanel .content{border-left:3px solid #e8eef7;padding:4px 0 4px 8px;margin-left:6px;}.k-bsp-buddie{background:#FAFAFA none repeat scroll 0 50%;border:1px solid #EBEBEB;padding:3px;margin:3px;}.k-bsp-buddie td{padding:2px 3px;}.k-text-gray{color:gray;}.k-elp-limg{margin-top:4px;margin-left:5px;cursor:pointer;}.k-tsp-tag{float:right;margin-right:5px;cursor:pointer;color:#00F;}.k-tsp-cloud{vertical-align:bottom;}.k-options-icon{background-image:url(img/emblem-system.gif)!important;}.x-toolbar-body table{width:100%;}
\ No newline at end of file
+*/.k-textlinethrough{text-decoration:line-through;color:red;}.k-textnormal{text-decoration:inherit;color:green;}.k-textunderline{text-decoration:underline;color:gray;}.x-tool-kmenu{background-position:0 -75px;}.x-tool-kmenu-over{background-position:-15px -75px;}.k-border-openbox{border-bottom:1px #D0D0D0 solid;border-right:1px #D0D0D0 solid;border-left:1px #D0D0D0 solid;}/* SiteToastMessages */.k-stm-info-icon{background-image:url(img/info.gif)!important;}.k-stm-imp-icon{background-image:url(img/alert.gif)!important;}.k-stm-verimp-icon{background-image:url(img/important.gif)!important;}.k-stm-error-icon{background-image:url(img/error.gif)!important;}.k-error-tb{background:#FFB380 none repeat scroll 0 50%;color:#250;}.k-infod-head{font-size:108%;margin-bottom:10px;}.gwt-DisclosurePanel{}.gwt-DisclosurePanel-open{}.gwt-DisclosurePanel-closed{}.gwt-DisclosurePanel .header,.gwt-DisclosurePanel .header a,.gwt-DisclosurePanel .header td{text-decoration:none;/* Remove underline from header */color:#000;cursor:pointer;cursor:hand;}.gwt-DisclosurePanel .content{border-left:3px solid #e8eef7;padding:4px 0 4px 8px;margin-left:6px;}.k-basic-thumb{background:#FAFAFA none repeat scroll 0 50%;border:1px solid #EBEBEB;padding:3px;margin:3px;}.k-basic-thumb td{padding:2px 3px;border:none;}.k-text-gray{color:gray;}.k-elp-limg{margin-top:4px;margin-left:5px;cursor:pointer;}.k-tsp-tag{float:right;margin-right:5px;cursor:pointer;color:#00F;}.k-tsp-cloud{vertical-align:bottom;}.k-options-icon{background-image:url(img/emblem-system.gif)!important;}.x-toolbar-body table{width:100%;}
\ No newline at end of file
Modified: trunk/src/main/java/org/ourproject/kune/app/public/css/kune-new.css
===================================================================
--- trunk/src/main/java/org/ourproject/kune/app/public/css/kune-new.css 2008-12-04 14:34:33 UTC (rev 981)
+++ trunk/src/main/java/org/ourproject/kune/app/public/css/kune-new.css 2008-12-05 01:14:07 UTC (rev 982)
@@ -778,15 +778,16 @@
margin-left: 6px;
}
-.k-bsp-buddie {
+.k-basic-thumb {
background: #FAFAFA none repeat scroll 0% 50%;
border: 1px solid #EBEBEB;
padding: 3px;
margin: 3px;
}
-.k-bsp-buddie td {
+.k-basic-thumb td {
padding: 2px 3px 2px 3px;
+ border: none;
}
.k-text-gray {
Modified: trunk/src/main/java/org/ourproject/kune/gallery/client/GalleryClientModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/gallery/client/GalleryClientModule.java 2008-12-04 14:34:33 UTC (rev 981)
+++ trunk/src/main/java/org/ourproject/kune/gallery/client/GalleryClientModule.java 2008-12-05 01:14:07 UTC (rev 982)
@@ -108,9 +108,9 @@
public GalleryFolderContent create() {
final GalleryFolderContentPresenter presenter = new GalleryFolderContentPresenter(
$(StateManager.class), $(Session.class), $(ActionContentToolbar.class),
- $(ContentActionRegistry.class), $(I18nTranslationService.class));
+ $(ContentActionRegistry.class), $(I18nTranslationService.class), $$(FileDownloadUtils.class));
final GalleryFolderContentView view = new GalleryFolderContentPanel($(WorkspaceSkeleton.class),
- $(I18nTranslationService.class));
+ $(I18nTranslationService.class), $(StateManager.class));
presenter.init(view);
return presenter;
}
Modified: trunk/src/main/java/org/ourproject/kune/gallery/client/cnt/GalleryFolderContentPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/gallery/client/cnt/GalleryFolderContentPanel.java 2008-12-04 14:34:33 UTC (rev 981)
+++ trunk/src/main/java/org/ourproject/kune/gallery/client/cnt/GalleryFolderContentPanel.java 2008-12-05 01:14:07 UTC (rev 982)
@@ -19,15 +19,54 @@
*/
package org.ourproject.kune.gallery.client.cnt;
+import org.ourproject.kune.platf.client.dto.StateToken;
import org.ourproject.kune.platf.client.services.I18nTranslationService;
+import org.ourproject.kune.platf.client.state.StateManager;
+import org.ourproject.kune.platf.client.ui.BasicThumb;
import org.ourproject.kune.workspace.client.cnt.FoldableContentPanel;
-import org.ourproject.kune.workspace.client.site.Site;
import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton;
+import com.google.gwt.user.client.Command;
+import com.google.gwt.user.client.DeferredCommand;
+import com.google.gwt.user.client.ui.ClickListener;
+import com.google.gwt.user.client.ui.FlowPanel;
+import com.google.gwt.user.client.ui.Widget;
+
public class GalleryFolderContentPanel extends FoldableContentPanel implements GalleryFolderContentView {
- public GalleryFolderContentPanel(WorkspaceSkeleton ws, I18nTranslationService i18n) {
+ private static final int TEXT_MAX_LENGHT = 15;
+ private FlowPanel flowPanel;
+ private final StateManager stateManager;
+
+ public GalleryFolderContentPanel(WorkspaceSkeleton ws, I18nTranslationService i18n, StateManager stateManager) {
super(ws, i18n);
- super.setLabel("Folder properties, translations ..." + Site.IN_DEVELOPMENT);
+ this.stateManager = stateManager;
}
+
+ public void addThumb(final StateToken token, final String title, final String imgUrl) {
+ DeferredCommand.addCommand(new Command() {
+ public void execute() {
+ BasicThumb thumb = new BasicThumb(imgUrl, 85, title, TEXT_MAX_LENGHT, true, new ClickListener() {
+ public void onClick(Widget sender) {
+ stateManager.gotoToken(token);
+ }
+ });
+ thumb.setHeight("100");
+ thumb.setWidth("100");
+ if (title.length() > TEXT_MAX_LENGHT) {
+ thumb.setTooltip(title);
+ }
+ flowPanel.add(thumb);
+ }
+ });
+ }
+
+ public void setThumbPanel() {
+ if (flowPanel == null) {
+ flowPanel = new FlowPanel();
+ } else {
+ flowPanel.clear();
+ }
+ super.setContent(flowPanel);
+ }
}
Modified: trunk/src/main/java/org/ourproject/kune/gallery/client/cnt/GalleryFolderContentPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/gallery/client/cnt/GalleryFolderContentPresenter.java 2008-12-04 14:34:33 UTC (rev 981)
+++ trunk/src/main/java/org/ourproject/kune/gallery/client/cnt/GalleryFolderContentPresenter.java 2008-12-05 01:14:07 UTC (rev 982)
@@ -23,22 +23,30 @@
import org.ourproject.kune.platf.client.actions.ActionRegistry;
import org.ourproject.kune.platf.client.actions.toolbar.ActionContentToolbar;
import org.ourproject.kune.platf.client.dto.ContainerDTO;
+import org.ourproject.kune.platf.client.dto.ContentSimpleDTO;
import org.ourproject.kune.platf.client.dto.StateContainerDTO;
import org.ourproject.kune.platf.client.dto.StateToken;
import org.ourproject.kune.platf.client.services.I18nTranslationService;
import org.ourproject.kune.platf.client.state.Session;
import org.ourproject.kune.platf.client.state.StateManager;
+import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
+import org.ourproject.kune.platf.client.ui.download.ImageSize;
import org.ourproject.kune.workspace.client.cnt.FoldableContentPresenter;
+import com.calclab.suco.client.ioc.Provider;
+
public class GalleryFolderContentPresenter extends FoldableContentPresenter implements GalleryFolderContent {
private GalleryFolderContentView view;
private final I18nTranslationService i18n;
+ private final Provider<FileDownloadUtils> downloadUtils;
public GalleryFolderContentPresenter(StateManager stateManager, Session session, ActionContentToolbar toolbar,
- final ActionRegistry<StateToken> actionRegistry, I18nTranslationService i18n) {
+ final ActionRegistry<StateToken> actionRegistry, I18nTranslationService i18n,
+ Provider<FileDownloadUtils> downloadUtils) {
super(GalleryClientTool.NAME, stateManager, session, toolbar, actionRegistry);
this.i18n = i18n;
+ this.downloadUtils = downloadUtils;
}
public void init(final GalleryFolderContentView view) {
@@ -55,6 +63,15 @@
} else {
view.setInfo("");
}
+ } else if (state.isType(GalleryClientTool.TYPE_ALBUM) && (state.getContainer().getContents().size() > 0)) {
+ view.setThumbPanel();
+ for (ContentSimpleDTO content : state.getContainer().getContents()) {
+ if (content.getMimeType().isImage()) {
+ StateToken token = content.getStateToken();
+ String imgUrl = downloadUtils.get().getImageResizedUrl(token, ImageSize.thumb);
+ view.addThumb(token, content.getTitle(), imgUrl);
+ }
+ }
} else {
view.setInfo("");
}
Modified: trunk/src/main/java/org/ourproject/kune/gallery/client/cnt/GalleryFolderContentView.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/gallery/client/cnt/GalleryFolderContentView.java 2008-12-04 14:34:33 UTC (rev 981)
+++ trunk/src/main/java/org/ourproject/kune/gallery/client/cnt/GalleryFolderContentView.java 2008-12-05 01:14:07 UTC (rev 982)
@@ -19,7 +19,12 @@
*/
package org.ourproject.kune.gallery.client.cnt;
+import org.ourproject.kune.platf.client.dto.StateToken;
import org.ourproject.kune.workspace.client.cnt.AbstractContentView;
public interface GalleryFolderContentView extends AbstractContentView {
+
+ void addThumb(StateToken token, String title, String imgUrl);
+
+ void setThumbPanel();
}
Modified: trunk/src/main/java/org/ourproject/kune/gallery/client/cnt/GalleryViewerPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/gallery/client/cnt/GalleryViewerPanel.java 2008-12-04 14:34:33 UTC (rev 981)
+++ trunk/src/main/java/org/ourproject/kune/gallery/client/cnt/GalleryViewerPanel.java 2008-12-05 01:14:07 UTC (rev 982)
@@ -24,6 +24,7 @@
import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton;
public class GalleryViewerPanel extends FoldableContentPanel implements GalleryViewerView {
+
public GalleryViewerPanel(final WorkspaceSkeleton ws, I18nTranslationService i18n) {
super(ws, i18n);
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/dto/BasicMimeTypeDTO.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/dto/BasicMimeTypeDTO.java 2008-12-04 14:34:33 UTC (rev 981)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/dto/BasicMimeTypeDTO.java 2008-12-05 01:14:07 UTC (rev 982)
@@ -52,6 +52,10 @@
return type;
}
+ public boolean isImage() {
+ return getType().equals("image");
+ }
+
public void setSubtype(final String subtype) {
this.subtype = subtype;
}
@@ -60,6 +64,7 @@
this.type = type;
}
+ @Override
public String toString() {
return subtype == null ? type : type + "/" + subtype;
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/dto/InitDataDTO.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/dto/InitDataDTO.java 2008-12-04 14:34:33 UTC (rev 981)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/dto/InitDataDTO.java 2008-12-05 01:14:07 UTC (rev 982)
@@ -38,6 +38,10 @@
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;
@@ -69,6 +73,22 @@
return groupTools;
}
+ public int getImgCropsize() {
+ return imgCropsize;
+ }
+
+ public int getImgIconsize() {
+ return imgIconsize;
+ }
+
+ public int getImgResizewidth() {
+ return imgResizewidth;
+ }
+
+ public int getImgThumbsize() {
+ return imgThumbsize;
+ }
+
public ArrayList<I18nLanguageSimpleDTO> getLanguages() {
return languages;
}
@@ -137,6 +157,22 @@
this.groupTools = groupTools;
}
+ public void setImgCropsize(int imgCropsize) {
+ this.imgCropsize = imgCropsize;
+ }
+
+ public void setImgIconsize(int imgIconsize) {
+ this.imgIconsize = imgIconsize;
+ }
+
+ public void setImgResizewidth(int imgResizewidth) {
+ this.imgResizewidth = imgResizewidth;
+ }
+
+ public void setImgThumbsize(int imgThumbsize) {
+ this.imgThumbsize = imgThumbsize;
+ }
+
public void setLanguages(final ArrayList<I18nLanguageSimpleDTO> languages) {
this.languages = languages;
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/dto/StateContainerDTO.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/dto/StateContainerDTO.java 2008-12-04 14:34:33 UTC (rev 981)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/dto/StateContainerDTO.java 2008-12-05 01:14:07 UTC (rev 982)
@@ -72,6 +72,10 @@
return typeId;
}
+ public boolean isType(String type) {
+ return getTypeId().equals(type);
+ }
+
public void setAccessLists(AccessListsDTO accessLists) {
this.accessLists = accessLists;
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneWorkspaceModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneWorkspaceModule.java 2008-12-04 14:34:33 UTC (rev 981)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneWorkspaceModule.java 2008-12-05 01:14:07 UTC (rev 982)
@@ -373,7 +373,8 @@
final BuddiesSummaryPresenter presenter = new BuddiesSummaryPresenter($(StateManager.class),
$(Session.class), $$(UserServiceAsync.class), $(UserActionRegistry.class),
$(I18nTranslationService.class), $$(ChatEngine.class), $(ActionBuddiesSummaryToolbar.class),
- $$(FileDownloadUtils.class));
+ $$(FileDownloadUtils.class), $(ImageUtils.class), $$(SocialNetworkServiceAsync.class),
+ $(GroupActionRegistry.class));
final BuddiesSummaryPanel panel = new BuddiesSummaryPanel(presenter, $(WorkspaceSkeleton.class),
$(I18nTranslationService.class), $(ActionManager.class),
$(ActionBuddiesSummaryToolbar.class).getView());
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/state/Session.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/state/Session.java 2008-12-04 14:34:33 UTC (rev 981)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/state/Session.java 2008-12-05 01:14:07 UTC (rev 982)
@@ -64,6 +64,14 @@
*/
int SESSION_DURATION = 1000 * 60 * 60 * 24 * 14;
+ public int getImgCropsize();
+
+ public int getImgIconsize();
+
+ public int getImgResizewidth();
+
+ public int getImgThumbsize();
+
void check(AsyncCallbackSimple<?> callback);
StateContainerDTO getContainerState();
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/state/SessionDefault.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/state/SessionDefault.java 2008-12-04 14:34:33 UTC (rev 981)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/state/SessionDefault.java 2008-12-05 01:14:07 UTC (rev 982)
@@ -46,7 +46,7 @@
public class SessionDefault implements Session {
private String userHash;
- private InitDataDTO initData;
+ InitDataDTO initData;
private UserInfoDTO currentUserInfo;
private Object[][] languagesArray;
private Object[][] countriesArray;
@@ -119,6 +119,22 @@
return initData.getGroupTools();
}
+ public int getImgCropsize() {
+ return initData.getImgCropsize();
+ }
+
+ public int getImgIconsize() {
+ return initData.getImgIconsize();
+ }
+
+ public int getImgResizewidth() {
+ return initData.getImgResizewidth();
+ }
+
+ public int getImgThumbsize() {
+ return initData.getImgThumbsize();
+ }
+
public List<I18nLanguageSimpleDTO> getLanguages() {
return initData.getLanguages();
}
Added: trunk/src/main/java/org/ourproject/kune/platf/client/ui/BasicThumb.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/BasicThumb.java 2008-12-04 14:34:33 UTC (rev 981)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/BasicThumb.java 2008-12-05 01:14:07 UTC (rev 982)
@@ -0,0 +1,69 @@
+package org.ourproject.kune.platf.client.ui;
+
+import com.google.gwt.user.client.ui.ClickListener;
+import com.google.gwt.user.client.ui.Composite;
+import com.google.gwt.user.client.ui.Image;
+import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.VerticalPanel;
+import com.gwtext.client.util.Format;
+
+// http://en.wikipedia.org/wiki/Thumbnail
+
+public class BasicThumb extends Composite {
+ private static final int NOSIZE = -1;
+ private final Image thumbImg;
+ private final Label thumbLabel;
+
+ public BasicThumb(String imageUrl, int imgSize, String text, int textMaxLenght, boolean crop,
+ ClickListener clickListener) {
+ VerticalPanel vp = new VerticalPanel();
+ if (imgSize != NOSIZE) {
+ if (crop) {
+ thumbImg = new Image(imageUrl, 0, 0, imgSize, imgSize);
+ } else {
+ thumbImg = new Image(imageUrl);
+ thumbImg.setPixelSize(imgSize, imgSize);
+ }
+ } else {
+ thumbImg = new Image(imageUrl);
+ }
+ String title = textMaxLenght == NOSIZE ? text : Format.ellipsis(text, textMaxLenght);
+ thumbLabel = new Label(title);
+ vp.add(thumbImg);
+ vp.add(thumbLabel);
+ vp.addStyleName("k-basic-thumb");
+ vp.addStyleName("kune-Margin-Small-trbl");
+ vp.addStyleName("kune-pointer");
+ vp.addStyleName("kune-floatleft");
+ thumbLabel.addClickListener(clickListener);
+ vp.setCellHorizontalAlignment(thumbLabel, VerticalPanel.ALIGN_CENTER);
+ thumbImg.addClickListener(clickListener);
+ initWidget(vp);
+ }
+
+ public BasicThumb(String imageUrl, String thumText, ClickListener clickListener) {
+ this(imageUrl, NOSIZE, thumText, NOSIZE, false, clickListener);
+ }
+
+ public BasicThumb(String imageUrl, String text, int textMaxLenght, ClickListener clickListener) {
+ this(imageUrl, NOSIZE, text, textMaxLenght, false, clickListener);
+ }
+
+ public void setText(String text) {
+ thumbLabel.setText(text);
+ }
+
+ public void setThumbUrl(String url) {
+ thumbImg.setUrl(url);
+ }
+
+ public void setTooltip(String tip) {
+ KuneUiUtils.setQuickTip(thumbImg, tip);
+ KuneUiUtils.setQuickTip(thumbLabel, tip);
+ }
+
+ public void setTooltip(String tipTitle, String tip) {
+ KuneUiUtils.setQuickTip(thumbImg, tip, tipTitle);
+ KuneUiUtils.setQuickTip(thumbLabel, tip, tipTitle);
+ }
+}
Modified: trunk/src/main/java/org/ourproject/kune/platf/server/InitData.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/InitData.java 2008-12-04 14:34:33 UTC (rev 981)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/InitData.java 2008-12-05 01:14:07 UTC (rev 982)
@@ -43,6 +43,10 @@
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;
@@ -74,6 +78,22 @@
return groupTools;
}
+ public int getImgCropsize() {
+ return imgCropsize;
+ }
+
+ public int getImgIconsize() {
+ return imgIconsize;
+ }
+
+ public int getImgResizewidth() {
+ return imgResizewidth;
+ }
+
+ public int getImgThumbsize() {
+ return imgThumbsize;
+ }
+
public List<I18nLanguage> getLanguages() {
return languages;
}
@@ -138,6 +158,22 @@
this.groupTools = groupTools;
}
+ public void setImgCropsize(int imgCropsize) {
+ this.imgCropsize = imgCropsize;
+ }
+
+ public void setImgIconsize(int imgIconsize) {
+ this.imgIconsize = imgIconsize;
+ }
+
+ public void setImgResizewidth(int imgResizewidth) {
+ this.imgResizewidth = imgResizewidth;
+ }
+
+ public void setImgThumbsize(int imgThumbsize) {
+ this.imgThumbsize = imgThumbsize;
+ }
+
public void setLanguages(final List<I18nLanguage> languages) {
this.languages = languages;
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/server/rpc/SiteRPC.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/rpc/SiteRPC.java 2008-12-04 14:34:33 UTC (rev 981)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/rpc/SiteRPC.java 2008-12-05 01:14:07 UTC (rev 982)
@@ -96,6 +96,10 @@
data.setMaxFileSizeInMb(kuneProperties.get(KuneProperties.UPLOAD_MAX_FILE_SIZE));
data.setUserTools(serverToolRegistry.getToolsForUsers());
data.setGroupTools(serverToolRegistry.getToolsForGroups());
+ data.setImgResizewidth(new Integer(kuneProperties.get(KuneProperties.IMAGES_RESIZEWIDTH)));
+ data.setImgThumbsize(new Integer(kuneProperties.get(KuneProperties.IMAGES_THUMBSIZE)));
+ data.setImgCropsize(new Integer(kuneProperties.get(KuneProperties.IMAGES_CROPSIZE)));
+ data.setImgIconsize(new Integer(kuneProperties.get(KuneProperties.IMAGES_ICONSIZE)));
return mapper.map(data, InitDataDTO.class);
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/server/state/StateContainer.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/state/StateContainer.java 2008-12-04 14:34:33 UTC (rev 981)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/state/StateContainer.java 2008-12-05 01:14:07 UTC (rev 982)
@@ -77,6 +77,10 @@
return typeId;
}
+ public boolean isType(String type) {
+ return getTypeId().equals(type);
+ }
+
public void setAccessLists(AccessLists accessLists) {
this.accessLists = accessLists;
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/FoldableContentPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/FoldableContentPanel.java 2008-12-04 14:34:33 UTC (rev 981)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/FoldableContentPanel.java 2008-12-05 01:14:07 UTC (rev 982)
@@ -21,8 +21,12 @@
public void setContent(final String content) {
final HTML html = new HTML(content);
- setDefStyle(html);
- setWidget(html);
+ setContent(html);
+ }
+
+ public void setContent(final Widget widget) {
+ setDefStyle(widget);
+ setWidget(widget);
attach();
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPanel.java 2008-12-04 14:34:33 UTC (rev 981)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPanel.java 2008-12-05 01:14:07 UTC (rev 982)
@@ -28,15 +28,14 @@
import org.ourproject.kune.platf.client.actions.toolbar.ActionToolbarView;
import org.ourproject.kune.platf.client.dto.UserSimpleDTO;
import org.ourproject.kune.platf.client.services.I18nTranslationService;
+import org.ourproject.kune.platf.client.ui.BasicThumb;
import org.ourproject.kune.workspace.client.skel.SimpleToolbar;
import org.ourproject.kune.workspace.client.skel.SummaryPanel;
import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton;
import com.calclab.suco.client.listener.Listener;
import com.google.gwt.user.client.ui.ClickListener;
-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.Label;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
@@ -44,43 +43,6 @@
public class BuddiesSummaryPanel extends SummaryPanel implements BuddiesSummaryView {
- public class BuddieWidget extends Composite {
- private final Image avatar;
- private final Label nick;
-
- public BuddieWidget(String nickName, String avatarUrl, ClickListener clickListener) {
- // For Drag& drop, see gwt-ext-ux image:
- // http://www.gwt-ext.com:8080/demo-ux/#imageDDSample
- VerticalPanel vp = new VerticalPanel();
- avatar = new Image();
- if (avatarUrl.equals(NOAVATAR)) {
- // Images.App.getInstance().personAvatarDef().applyTo(avatar);
- avatar.setUrl("images/persons/person2-32.png");
- } else {
- avatar.setUrl(avatarUrl);
- }
- avatar.setPixelSize(AVATARSIZE, AVATARSIZE);
- nick = new Label(nickName);
- vp.add(avatar);
- vp.add(nick);
- vp.addStyleName("k-bsp-buddie");
- vp.addStyleName("kune-Margin-Small-trbl");
- vp.addStyleName("kune-pointer");
- vp.addStyleName("kune-floatleft");
- nick.addClickListener(clickListener);
- vp.setCellHorizontalAlignment(nick, VerticalPanel.ALIGN_CENTER);
- avatar.addClickListener(clickListener);
- initWidget(vp);
- }
-
- public void setAvatarUrl(String url) {
- avatar.setUrl(url);
- }
-
- public void setNick(String nickName) {
- nick.setText(nickName);
- }
- }
private final MenuItemsContainer<UserSimpleDTO> menuItemsContainer;
private final FlowPanel flowPanel;
private final Label otherBuddiesLabel;
@@ -112,7 +74,7 @@
}
public void addBuddie(final UserSimpleDTO user, ActionItemCollection<UserSimpleDTO> actionCollection,
- String avatarUrl) {
+ String avatarUrl, String tooltipTitle, String tooltip) {
ClickListener listener = new ClickListener() {
public void onClick(Widget sender) {
Menu menu = menuItemsContainer.get(user.getShortName());
@@ -128,7 +90,10 @@
}
});
- flowPanel.add(new BuddieWidget(user.getShortName(), avatarUrl, listener));
+ BasicThumb thumb = new BasicThumb(avatarUrl.equals(NOAVATAR) ? "images/persons/person2-32.png" : avatarUrl,
+ AVATARSIZE, user.getShortName(), AVATARLABELMAXSIZE, false, listener);
+ thumb.setTooltip(tooltipTitle, tooltip);
+ flowPanel.add(thumb);
}
@Override
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPresenter.java 2008-12-04 14:34:33 UTC (rev 981)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPresenter.java 2008-12-05 01:14:07 UTC (rev 982)
@@ -28,6 +28,7 @@
import org.ourproject.kune.platf.client.actions.ActionToolbarButtonAndItemDescriptor;
import org.ourproject.kune.platf.client.actions.ActionToolbarMenuDescriptor;
import org.ourproject.kune.platf.client.actions.ActionToolbarPosition;
+import org.ourproject.kune.platf.client.actions.GroupActionRegistry;
import org.ourproject.kune.platf.client.actions.UserActionRegistry;
import org.ourproject.kune.platf.client.actions.toolbar.ActionBuddiesSummaryToolbar;
import org.ourproject.kune.platf.client.dto.AccessRightsDTO;
@@ -37,7 +38,9 @@
import org.ourproject.kune.platf.client.dto.UserBuddiesVisibilityDTO;
import org.ourproject.kune.platf.client.dto.UserSimpleDTO;
import org.ourproject.kune.platf.client.rpc.AsyncCallbackSimple;
+import org.ourproject.kune.platf.client.rpc.SocialNetworkServiceAsync;
import org.ourproject.kune.platf.client.services.I18nTranslationService;
+import org.ourproject.kune.platf.client.services.ImageUtils;
import org.ourproject.kune.platf.client.state.Session;
import org.ourproject.kune.platf.client.state.StateManager;
import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
@@ -47,7 +50,7 @@
import com.calclab.suco.client.ioc.Provider;
import com.calclab.suco.client.listener.Listener;
-public class BuddiesSummaryPresenter implements BuddiesSummary {
+public class BuddiesSummaryPresenter extends SocialNetworkPresenter implements BuddiesSummary {
private BuddiesSummaryView view;
private final StateManager stateManager;
@@ -62,7 +65,10 @@
public BuddiesSummaryPresenter(StateManager stateManager, final Session session,
Provider<UserServiceAsync> userServiceAsync, UserActionRegistry actionRegistry,
I18nTranslationService i18n, final Provider<ChatEngine> chatEngineProvider,
- final ActionBuddiesSummaryToolbar toolbar, Provider<FileDownloadUtils> fileDownUtilsProvider) {
+ final ActionBuddiesSummaryToolbar toolbar, Provider<FileDownloadUtils> fileDownUtilsProvider,
+ ImageUtils imageUtils, Provider<SocialNetworkServiceAsync> snServiceAsync,
+ GroupActionRegistry groupActionRegistry) {
+ super(i18n, stateManager, imageUtils, session, snServiceAsync, groupActionRegistry, fileDownUtilsProvider);
this.stateManager = stateManager;
this.session = session;
this.userServiceAsync = userServiceAsync;
@@ -101,8 +107,10 @@
for (UserSimpleDTO user : buddies) {
String avatarUrl = user.hasLogo() ? fileDownUtilsProvider.get().getLogoImageUrl(
user.getStateToken()) : BuddiesSummaryView.NOAVATAR;
+ String tooltip = super.createTooltipWithLogo(user.getShortName(), user.getStateToken(),
+ user.hasLogo(), true);
view.addBuddie(user, actionRegistry.getCurrentActions(user, session.isLogged(),
- new AccessRightsDTO(true, true, true), false), avatarUrl);
+ new AccessRightsDTO(true, true, true), false), avatarUrl, user.getName(), tooltip);
}
boolean hasLocalBuddies = buddies.size() > 0;
int numExtBuddies = userBuddies.getOtherExternalBuddies();
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryView.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryView.java 2008-12-04 14:34:33 UTC (rev 981)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryView.java 2008-12-05 01:14:07 UTC (rev 982)
@@ -26,8 +26,10 @@
String NOAVATAR = "";
int AVATARSIZE = 32;
+ int AVATARLABELMAXSIZE = 15;
- void addBuddie(UserSimpleDTO user, ActionItemCollection<UserSimpleDTO> actionCollection, String avatarUrl);
+ void addBuddie(UserSimpleDTO user, ActionItemCollection<UserSimpleDTO> actionCollection, String avatarUrl,
+ String tooltipTitle, String tooltip);
void clear();
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/SocialNetworkPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/SocialNetworkPresenter.java 2008-12-04 14:34:33 UTC (rev 981)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/SocialNetworkPresenter.java 2008-12-05 01:14:07 UTC (rev 982)
@@ -31,6 +31,7 @@
import org.ourproject.kune.platf.client.dto.StateToken;
import org.ourproject.kune.platf.client.rpc.AsyncCallbackSimple;
import org.ourproject.kune.platf.client.rpc.SocialNetworkServiceAsync;
+import org.ourproject.kune.platf.client.services.I18nTranslationService;
import org.ourproject.kune.platf.client.services.ImageDescriptor;
import org.ourproject.kune.platf.client.services.ImageUtils;
import org.ourproject.kune.platf.client.state.Session;
@@ -41,7 +42,7 @@
import org.ourproject.kune.platf.client.ui.gridmenu.CustomMenu;
import org.ourproject.kune.platf.client.ui.gridmenu.GridGroup;
import org.ourproject.kune.platf.client.ui.gridmenu.GridItem;
-import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService;
+import org.ourproject.kune.workspace.client.entityheader.EntityHeaderView;
import org.ourproject.kune.workspace.client.site.Site;
import com.calclab.suco.client.ioc.Provider;
@@ -49,8 +50,6 @@
public class SocialNetworkPresenter {
- private static final int ICOSIZE = 16;
- private static final int THUMBSIZE = 50;
protected MenuItem<GroupDTO> changeToCollabMenuItem;
protected MenuItem<GroupDTO> removeMemberMenuItem;
protected MenuItem<GroupDTO> changeToAdminMenuItem;
@@ -59,7 +58,7 @@
protected MenuItem<GroupDTO> gotoMemberMenuItem;
protected MenuItem<GroupDTO> gotoGroupMenuItem;
protected MenuItem<GroupDTO> unJoinMenuItem;
- private final I18nUITranslationService i18n;
+ private final I18nTranslationService i18n;
private final StateManager stateManager;
private final Provider<SocialNetworkServiceAsync> snServiceProvider;
private final Session session;
@@ -73,7 +72,7 @@
protected ActionToolbarButtonDescriptor<StateToken> participate;
private final Provider<FileDownloadUtils> downloadProvider;
- public SocialNetworkPresenter(final I18nUITranslationService i18n, final StateManager stateManager,
+ public SocialNetworkPresenter(final I18nTranslationService i18n, final StateManager stateManager,
final ImageUtils imageUtils, final Session session,
final Provider<SocialNetworkServiceAsync> snServiceProvider, GroupActionRegistry groupActionRegistry,
final Provider<FileDownloadUtils> downloadProvider) {
@@ -131,6 +130,13 @@
return gridItem;
}
+ protected String createTooltipWithLogo(String shortName, StateToken token, boolean hasLogo, boolean isPersonal) {
+ return "<table><tr><td>"
+ + (hasLogo ? createLogoAvatar(token, hasLogo, isPersonal, EntityHeaderView.LOGO_ICON_DEFAULT_HEIGHT, 3)
+ : "") + "</td><td>"
+ + i18n.t(isPersonal ? "Nickname: [%s]" : "Group short name: [%s]", shortName) + "</td></tr></table>";
+ }
+
protected boolean isMember(AccessRightsDTO rights) {
boolean userIsAdmin = rights.isAdministrable();
final boolean userIsCollab = !userIsAdmin && rights.isEditable();
@@ -192,8 +198,10 @@
final CustomMenu<GroupDTO> menu = new CustomMenu<GroupDTO>(group);
final String longName = group.getLongName();
boolean hasLogo = group.hasLogo();
- final String toolTip = createTooltipWithLogo(group, hasLogo);
- final String imageHtml = createLogoAvatar(group.getStateToken(), hasLogo, group.isPersonal(), ICOSIZE, 0);
+ final String toolTip = createTooltipWithLogo(group.getShortName(), group.getStateToken(), hasLogo,
+ group.isPersonal());
+ final String imageHtml = createLogoAvatar(group.getStateToken(), hasLogo, group.isPersonal(),
+ session.getImgIconsize(), 0);
final GridItem<GroupDTO> gridItem = new GridItem<GroupDTO>(group, gridGroup, group.getShortName(), imageHtml,
longName, longName, " ", longName, toolTip, menu);
if (!group.isPersonal()) {
@@ -212,14 +220,6 @@
return gridItem;
}
- private String createTooltipWithLogo(final GroupDTO group, boolean hasLogo) {
- return "<table><tr><td>"
- + (hasLogo ? createLogoAvatar(group.getStateToken(), hasLogo, group.isPersonal(), THUMBSIZE, 3) : "")
- + "</td><td>"
- + i18n.t(group.isPersonal() ? "Nickname: [%s]" : "Group short name: [%s]", group.getShortName())
- + "</td></tr></table>";
- }
-
private String createLogoAvatar(StateToken groupToken, boolean groupHasLogo, boolean isPersonal, int size,
int hvspace) {
if (groupHasLogo) {
1
0
Author: vjrj
Date: 2008-12-04 15:34:33 +0100 (Thu, 04 Dec 2008)
New Revision: 981
Modified:
trunk/src/main/java/org/ourproject/kune/platf/client/dto/GroupDTO.java
trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneWorkspaceModule.java
trunk/src/main/java/org/ourproject/kune/platf/server/domain/Group.java
trunk/src/main/java/org/ourproject/kune/platf/server/manager/impl/SocialNetworkManagerDefault.java
trunk/src/main/java/org/ourproject/kune/platf/server/state/StateServiceDefault.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/options/EntityOptionsPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/options/EntityOptionsPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/options/logo/EntityOptionsLogoPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/options/tools/EntityOptionsToolsConfPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/siteusermenu/SiteUserMenuPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/ParticipationSummaryPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/SocialNetworkPresenter.java
Log:
Complete - task Logo/Avatar in SN
Complete - task Gallery action order problem
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/dto/GroupDTO.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/dto/GroupDTO.java 2008-12-03 11:25:34 UTC (rev 980)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/dto/GroupDTO.java 2008-12-04 14:34:33 UTC (rev 981)
@@ -122,7 +122,7 @@
return getHasLogo();
}
- public boolean isPersonalGroup() {
+ public boolean isPersonal() {
return groupType.equals(GroupType.PERSONAL);
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneWorkspaceModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneWorkspaceModule.java 2008-12-03 11:25:34 UTC (rev 980)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneWorkspaceModule.java 2008-12-04 14:34:33 UTC (rev 981)
@@ -181,7 +181,7 @@
@Override
public SiteUserMenu create() {
final SiteUserMenuPresenter presenter = new SiteUserMenuPresenter($(Session.class),
- $(StateManager.class), $$(EntityOptions.class));
+ $(StateManager.class), $$(EntityOptions.class), $$(FileDownloadUtils.class));
final SiteUserMenuPanel panel = new SiteUserMenuPanel(presenter, $(WorkspaceSkeleton.class),
$(I18nUITranslationService.class));
presenter.init(panel);
@@ -346,7 +346,7 @@
$(I18nUITranslationService.class), $(StateManager.class), $(ImageUtils.class),
$(Session.class), $$(SocialNetworkServiceAsync.class), $$(GroupServiceAsync.class),
$$(GroupLiveSearcher.class), $(WsThemePresenter.class), $$(ChatEngine.class),
- $(GroupActionRegistry.class), $(ActionGroupSummaryToolbar.class));
+ $(GroupActionRegistry.class), $(ActionGroupSummaryToolbar.class), $$(FileDownloadUtils.class));
final GroupMembersSummaryView view = new GroupMembersSummaryPanel(presenter,
$(I18nUITranslationService.class), $(WorkspaceSkeleton.class), $(
ActionGroupSummaryToolbar.class).getView());
@@ -388,7 +388,7 @@
final ParticipationSummaryPresenter presenter = new ParticipationSummaryPresenter(
$(I18nUITranslationService.class), $(StateManager.class), $(ImageUtils.class),
$(Session.class), $$(SocialNetworkServiceAsync.class), $(WsThemePresenter.class),
- $(GroupActionRegistry.class), $(ActionParticipationToolbar.class));
+ $(GroupActionRegistry.class), $(ActionParticipationToolbar.class), $$(FileDownloadUtils.class));
final ParticipationSummaryView view = new ParticipationSummaryPanel(presenter,
$(I18nUITranslationService.class), $(WorkspaceSkeleton.class),
($(ActionParticipationToolbar.class).getView()));
Modified: trunk/src/main/java/org/ourproject/kune/platf/server/domain/Group.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/domain/Group.java 2008-12-03 11:25:34 UTC (rev 980)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/domain/Group.java 2008-12-04 14:34:33 UTC (rev 981)
@@ -262,6 +262,10 @@
return (logo != null && logo.length > 0 && logoMime != null);
}
+ public boolean isPersonal() {
+ return getGroupType().equals(GroupType.PERSONAL);
+ }
+
public void setAdmissionType(final AdmissionType admissionType) {
this.admissionType = admissionType;
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/server/manager/impl/SocialNetworkManagerDefault.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/manager/impl/SocialNetworkManagerDefault.java 2008-12-03 11:25:34 UTC (rev 980)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/manager/impl/SocialNetworkManagerDefault.java 2008-12-04 14:34:33 UTC (rev 981)
@@ -139,7 +139,7 @@
final Long groupId = group.getId();
final List<Group> adminInGroups = finder.findAdminInGroups(groupId);
// Don't show self user group
- if (group.getGroupType().equals(GroupType.PERSONAL)) {
+ if (group.isPersonal()) {
adminInGroups.remove(group);
}
// adminInGroups.remove(userLogged.getUserGroup());
@@ -162,7 +162,7 @@
socialNetData.setGroupRights(groupRights);
socialNetData.setUserParticipation(findParticipation(userLogged, group));
socialNetData.setGroupMembers(get(userLogged, group));
- if (group.getGroupType().equals(GroupType.PERSONAL)) {
+ if (group.isPersonal()) {
UserBuddiesData userBuddies = userManager.getUserBuddies(group.getShortName());
User userGroup = userManager.findByShortname(group.getShortName());
socialNetData.setUserBuddies(userBuddies);
@@ -327,7 +327,7 @@
}
private void throwGroupMemberException(final Group group) throws DefaultException {
- if (group.getGroupType().equals(GroupType.PERSONAL)) {
+ if (group.isPersonal()) {
throw new AlreadyUserMemberException();
} else {
throw new AlreadyGroupMemberException();
Modified: trunk/src/main/java/org/ourproject/kune/platf/server/state/StateServiceDefault.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/state/StateServiceDefault.java 2008-12-03 11:25:34 UTC (rev 980)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/state/StateServiceDefault.java 2008-12-04 14:34:33 UTC (rev 981)
@@ -19,7 +19,6 @@
*/
package org.ourproject.kune.platf.server.state;
-import org.ourproject.kune.platf.client.dto.GroupType;
import org.ourproject.kune.platf.client.services.I18nTranslationService;
import org.ourproject.kune.platf.server.access.AccessRightsService;
import org.ourproject.kune.platf.server.content.ContentManager;
@@ -109,7 +108,7 @@
public StateNoContent createNoHome(User userLogged, String groupShortName) {
Group group = groupManager.findByShortName(groupShortName);
- assert (group.getGroupType().equals(GroupType.PERSONAL));
+ assert (group.isPersonal());
StateNoContent state = new StateNoContent();
state.setGroup(group);
state.setEnabledTools(groupManager.findEnabledTools(group.getId()));
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 2008-12-03 11:25:34 UTC (rev 980)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/entityheader/EntityHeaderPanel.java 2008-12-04 14:34:33 UTC (rev 981)
@@ -42,8 +42,9 @@
private final Images images;
private final VerticalPanel vp;
- public EntityHeaderPanel(final WorkspaceSkeleton ws, final Provider<FileDownloadUtils> dowloadProvider, Images images) {
- this.downloadProvider = dowloadProvider;
+ public EntityHeaderPanel(final WorkspaceSkeleton ws, final Provider<FileDownloadUtils> downloadProvider,
+ Images images) {
+ this.downloadProvider = downloadProvider;
this.images = images;
vp = new VerticalPanel();
vp.setWidth("100%");
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 2008-12-03 11:25:34 UTC (rev 980)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/entityheader/EntityHeaderPresenter.java 2008-12-04 14:34:33 UTC (rev 981)
@@ -21,7 +21,6 @@
import org.ourproject.kune.platf.client.View;
import org.ourproject.kune.platf.client.dto.ContentSimpleDTO;
import org.ourproject.kune.platf.client.dto.GroupDTO;
-import org.ourproject.kune.platf.client.dto.GroupType;
import org.ourproject.kune.platf.client.state.Session;
import org.ourproject.kune.platf.client.state.StateManager;
import org.ourproject.kune.workspace.client.themes.WsTheme;
@@ -77,7 +76,7 @@
view.setLogoImageVisible(true);
} else {
setLogoText(group.getLongName());
- if (group.getGroupType().equals(GroupType.PERSONAL)) {
+ if (group.isPersonal()) {
view.showDefUserLogo();
view.setLogoImageVisible(true);
} else {
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/options/EntityOptionsPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/options/EntityOptionsPanel.java 2008-12-03 11:25:34 UTC (rev 980)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/options/EntityOptionsPanel.java 2008-12-04 14:34:33 UTC (rev 981)
@@ -19,7 +19,7 @@
class EntityOptionPushButton extends IconLabel implements View {
public EntityOptionPushButton(String text, AbstractImagePrototype icon) {
- super(text, icon);
+ super(text, icon, false);
}
}
public static final String GROUP_OPTIONS_ERROR_ID = "k-gop-err-mess";
@@ -66,16 +66,18 @@
public void setGroupTitle() {
super.setTitle(i18n.t(PlatfMessages.ENT_OPTIONS_GROUP_TITLE));
- optionsButton.setTitle(i18n.t("Configure this group preferences"));
+ optionsButton.setText(i18n.t(PlatfMessages.ENT_OPTIONS_GROUP_TITLE));
+ // optionsButton.setTitle(i18n.t("Configure this group preferences"));
}
public void setPersonalTitle() {
super.setTitle(i18n.t(PlatfMessages.ENT_OPTIONS_USER_TITLE));
- optionsButton.setTitle(i18n.t("Configure your preferences"));
+ optionsButton.setText(i18n.t(PlatfMessages.ENT_OPTIONS_USER_TITLE));
+ // optionsButton.setTitle(i18n.t("Configure your preferences"));
}
private void createOptionsButton() {
- optionsButton = new EntityOptionPushButton(i18n.t("Configure"), images.emblemSystem());
+ optionsButton = new EntityOptionPushButton("", images.emblemSystem());
optionsButton.addClickListener(new ClickListener() {
public void onClick(Widget arg0) {
createAndShow();
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/options/EntityOptionsPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/options/EntityOptionsPresenter.java 2008-12-03 11:25:34 UTC (rev 980)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/options/EntityOptionsPresenter.java 2008-12-04 14:34:33 UTC (rev 981)
@@ -14,7 +14,7 @@
public EntityOptionsPresenter(StateManager stateManager) {
stateManager.onStateChanged(new Listener<StateAbstractDTO>() {
public void onEvent(StateAbstractDTO state) {
- if (state.getGroup().isPersonalGroup()) {
+ if (state.getGroup().isPersonal()) {
view.setPersonalTitle();
} else {
view.setGroupTitle();
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/options/logo/EntityOptionsLogoPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/options/logo/EntityOptionsLogoPresenter.java 2008-12-03 11:25:34 UTC (rev 980)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/options/logo/EntityOptionsLogoPresenter.java 2008-12-04 14:34:33 UTC (rev 981)
@@ -66,7 +66,7 @@
private void setState() {
view.setUploadParams(session.getUserHash(), session.getCurrentStateToken().toString());
- if (session.getCurrentState().getGroup().isPersonalGroup()) {
+ if (session.getCurrentState().getGroup().isPersonal()) {
view.setPersonalGroupsLabels();
} else {
view.setNormalGroupsLabels();
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/options/tools/EntityOptionsToolsConfPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/options/tools/EntityOptionsToolsConfPresenter.java 2008-12-03 11:25:34 UTC (rev 980)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/options/tools/EntityOptionsToolsConfPresenter.java 2008-12-04 14:34:33 UTC (rev 981)
@@ -82,7 +82,7 @@
StateAbstractDTO state = session.getCurrentState();
reset();
Collection<ToolSimpleDTO> toolCollection;
- if (state.getGroup().isPersonalGroup()) {
+ if (state.getGroup().isPersonal()) {
toolCollection = session.getUserTools();
} else {
toolCollection = session.getGroupTools();
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/siteusermenu/SiteUserMenuPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/siteusermenu/SiteUserMenuPresenter.java 2008-12-03 11:25:34 UTC (rev 980)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/siteusermenu/SiteUserMenuPresenter.java 2008-12-04 14:34:33 UTC (rev 981)
@@ -25,6 +25,7 @@
import org.ourproject.kune.platf.client.state.StateManager;
import org.ourproject.kune.platf.client.ui.MenuItem;
import org.ourproject.kune.platf.client.ui.MenuItemCollection;
+import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
import org.ourproject.kune.workspace.client.options.EntityOptions;
import com.calclab.suco.client.ioc.Provider;
@@ -38,12 +39,14 @@
private final StateManager stateManager;
private final Session session;
private final Provider<EntityOptions> entityOptions;
+ private final Provider<FileDownloadUtils> downloadProvider;
public SiteUserMenuPresenter(final Session session, final StateManager stateManager,
- final Provider<EntityOptions> entityOptions) {
+ final Provider<EntityOptions> entityOptions, final Provider<FileDownloadUtils> downloadProvider) {
this.session = session;
this.stateManager = stateManager;
this.entityOptions = entityOptions;
+ this.downloadProvider = downloadProvider;
participateInGroups = new MenuItemCollection<GroupDTO>();
session.onUserSignIn(new Listener<UserInfoDTO>() {
public void onEvent(final UserInfoDTO userInfoDTO) {
@@ -77,12 +80,13 @@
}
private void addPartipation(final GroupDTO group) {
- participateInGroups.add(new MenuItem<GroupDTO>("images/group-def-icon.gif", group.getShortName(),
- new Listener<GroupDTO>() {
- public void onEvent(final GroupDTO param) {
- stateManager.gotoToken(group.getShortName());
- }
- }));
+ String logoImageUrl = group.hasLogo() ? downloadProvider.get().getLogoImageUrl(group.getStateToken())
+ : "images/group-def-icon.gif";
+ participateInGroups.add(new MenuItem<GroupDTO>(logoImageUrl, group.getShortName(), new Listener<GroupDTO>() {
+ public void onEvent(final GroupDTO param) {
+ stateManager.gotoToken(group.getShortName());
+ }
+ }));
}
private void onUserSignIn(final UserInfoDTO userInfoDTO) {
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPresenter.java 2008-12-03 11:25:34 UTC (rev 980)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPresenter.java 2008-12-04 14:34:33 UTC (rev 981)
@@ -32,7 +32,6 @@
import org.ourproject.kune.platf.client.actions.toolbar.ActionBuddiesSummaryToolbar;
import org.ourproject.kune.platf.client.dto.AccessRightsDTO;
import org.ourproject.kune.platf.client.dto.AccessRolDTO;
-import org.ourproject.kune.platf.client.dto.GroupType;
import org.ourproject.kune.platf.client.dto.StateAbstractDTO;
import org.ourproject.kune.platf.client.dto.UserBuddiesDataDTO;
import org.ourproject.kune.platf.client.dto.UserBuddiesVisibilityDTO;
@@ -94,7 +93,7 @@
}
protected void setState(StateAbstractDTO state) {
- if (state.getGroup().getGroupType().equals(GroupType.PERSONAL)) {
+ if (state.getGroup().isPersonal()) {
view.clear();
UserBuddiesDataDTO userBuddies = state.getUserBuddies();
if (state.getSocialNetworkData().isBuddiesVisible()) {
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPresenter.java 2008-12-03 11:25:34 UTC (rev 980)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPresenter.java 2008-12-04 14:34:33 UTC (rev 981)
@@ -29,7 +29,6 @@
import org.ourproject.kune.platf.client.dto.AccessRightsDTO;
import org.ourproject.kune.platf.client.dto.AccessRolDTO;
import org.ourproject.kune.platf.client.dto.GroupDTO;
-import org.ourproject.kune.platf.client.dto.GroupType;
import org.ourproject.kune.platf.client.dto.InitDataDTO;
import org.ourproject.kune.platf.client.dto.LinkDTO;
import org.ourproject.kune.platf.client.dto.SocialNetworkDTO;
@@ -45,6 +44,7 @@
import org.ourproject.kune.platf.client.state.Session;
import org.ourproject.kune.platf.client.state.StateManager;
import org.ourproject.kune.platf.client.ui.MenuItem;
+import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
import org.ourproject.kune.platf.client.ui.gridmenu.GridGroup;
import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService;
import org.ourproject.kune.workspace.client.search.GroupLiveSearcher;
@@ -77,8 +77,8 @@
final Provider<GroupServiceAsync> groupServiceProvider,
final Provider<GroupLiveSearcher> liveSearcherProvider, final WsThemePresenter wsThemePresenter,
final Provider<ChatEngine> chatEngineProvider, final GroupActionRegistry groupActionRegistry,
- final ActionGroupSummaryToolbar toolbar) {
- super(i18n, stateManager, imageUtils, session, snServiceProvider, groupActionRegistry);
+ final ActionGroupSummaryToolbar toolbar, final Provider<FileDownloadUtils> downloadProvider) {
+ super(i18n, stateManager, imageUtils, session, snServiceProvider, groupActionRegistry, downloadProvider);
this.i18n = i18n;
this.stateManager = stateManager;
this.session = session;
@@ -229,7 +229,7 @@
}
private void setState(final StateAbstractDTO state) {
- if (state.getGroup().getGroupType().equals(GroupType.PERSONAL)) {
+ if (state.getGroup().isPersonal()) {
view.setVisible(false);
} else {
if (state.getSocialNetworkData().isMembersVisible()) {
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/ParticipationSummaryPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/ParticipationSummaryPresenter.java 2008-12-03 11:25:34 UTC (rev 980)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/ParticipationSummaryPresenter.java 2008-12-04 14:34:33 UTC (rev 981)
@@ -31,6 +31,7 @@
import org.ourproject.kune.platf.client.services.ImageUtils;
import org.ourproject.kune.platf.client.state.Session;
import org.ourproject.kune.platf.client.state.StateManager;
+import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
import org.ourproject.kune.platf.client.ui.gridmenu.GridGroup;
import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService;
import org.ourproject.kune.workspace.client.themes.WsTheme;
@@ -50,8 +51,9 @@
public ParticipationSummaryPresenter(final I18nUITranslationService i18n, final StateManager stateManager,
final ImageUtils imageUtils, final Session session,
final Provider<SocialNetworkServiceAsync> snServiceProvider, final WsThemePresenter wsThemePresenter,
- GroupActionRegistry groupActionRegistry, ActionParticipationToolbar actionParticipationToolbar) {
- super(i18n, stateManager, imageUtils, session, snServiceProvider, groupActionRegistry);
+ GroupActionRegistry groupActionRegistry, ActionParticipationToolbar actionParticipationToolbar,
+ final Provider<FileDownloadUtils> downloadProvider) {
+ super(i18n, stateManager, imageUtils, session, snServiceProvider, groupActionRegistry, downloadProvider);
adminCategory = new GridGroup("admin in:", " ", i18n.tWithNT("Administrate these groups",
"talking about a person"), false);
collabCategory = new GridGroup(i18n.t("and as collaborator in:"), " ", i18n.t("Collaborate in these groups"),
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/SocialNetworkPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/SocialNetworkPresenter.java 2008-12-03 11:25:34 UTC (rev 980)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/SocialNetworkPresenter.java 2008-12-04 14:34:33 UTC (rev 981)
@@ -26,9 +26,8 @@
import org.ourproject.kune.platf.client.dto.AccessRightsDTO;
import org.ourproject.kune.platf.client.dto.AccessRolDTO;
import org.ourproject.kune.platf.client.dto.GroupDTO;
-import org.ourproject.kune.platf.client.dto.GroupType;
+import org.ourproject.kune.platf.client.dto.SocialNetworkDataDTO;
import org.ourproject.kune.platf.client.dto.SocialNetworkRequestResult;
-import org.ourproject.kune.platf.client.dto.SocialNetworkDataDTO;
import org.ourproject.kune.platf.client.dto.StateToken;
import org.ourproject.kune.platf.client.rpc.AsyncCallbackSimple;
import org.ourproject.kune.platf.client.rpc.SocialNetworkServiceAsync;
@@ -38,6 +37,7 @@
import org.ourproject.kune.platf.client.state.StateManager;
import org.ourproject.kune.platf.client.ui.MenuItem;
import org.ourproject.kune.platf.client.ui.MenuItemCollection;
+import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
import org.ourproject.kune.platf.client.ui.gridmenu.CustomMenu;
import org.ourproject.kune.platf.client.ui.gridmenu.GridGroup;
import org.ourproject.kune.platf.client.ui.gridmenu.GridItem;
@@ -49,6 +49,8 @@
public class SocialNetworkPresenter {
+ private static final int ICOSIZE = 16;
+ private static final int THUMBSIZE = 50;
protected MenuItem<GroupDTO> changeToCollabMenuItem;
protected MenuItem<GroupDTO> removeMemberMenuItem;
protected MenuItem<GroupDTO> changeToAdminMenuItem;
@@ -69,22 +71,24 @@
protected ActionToolbarMenuDescriptor<StateToken> unJoin;
protected ActionToolbarButtonDescriptor<StateToken> participate;
+ private final Provider<FileDownloadUtils> downloadProvider;
public SocialNetworkPresenter(final I18nUITranslationService i18n, final StateManager stateManager,
final ImageUtils imageUtils, final Session session,
- final Provider<SocialNetworkServiceAsync> snServiceProvider, GroupActionRegistry groupActionRegistry) {
+ final Provider<SocialNetworkServiceAsync> snServiceProvider, GroupActionRegistry groupActionRegistry,
+ final Provider<FileDownloadUtils> downloadProvider) {
this.i18n = i18n;
this.stateManager = stateManager;
this.imageUtils = imageUtils;
this.session = session;
this.snServiceProvider = snServiceProvider;
+ this.downloadProvider = downloadProvider;
createButtons();
createMenuActions();
otherOperationsUsers = new MenuItemCollection<GroupDTO>();
otherLoggedOperationsUsers = new MenuItemCollection<GroupDTO>();
otherOperations = new MenuItemCollection<GroupDTO>();
otherLoggedOperations = new MenuItemCollection<GroupDTO>();
-
}
public void addGroupOperation(final MenuItem<GroupDTO> operation, final boolean mustBeLogged) {
@@ -187,29 +191,46 @@
private GridItem<GroupDTO> createDefMemberMenu(final GroupDTO group, final GridGroup gridGroup) {
final CustomMenu<GroupDTO> menu = new CustomMenu<GroupDTO>(group);
final String longName = group.getLongName();
- boolean isPersonal = group.getGroupType().equals(GroupType.PERSONAL);
- final String toolTip = i18n.t(isPersonal ? "User nickname: [%s]" : "Group short name: [%s]",
- group.getShortName());
- final String imageHtml = isPersonal ? imageUtils.getImageHtml(ImageDescriptor.personDef)
- : imageUtils.getImageHtml(ImageDescriptor.groupDefIcon);
+ boolean hasLogo = group.hasLogo();
+ final String toolTip = createTooltipWithLogo(group, hasLogo);
+ final String imageHtml = createLogoAvatar(group.getStateToken(), hasLogo, group.isPersonal(), ICOSIZE, 0);
final GridItem<GroupDTO> gridItem = new GridItem<GroupDTO>(group, gridGroup, group.getShortName(), imageHtml,
longName, longName, " ", longName, toolTip, menu);
- if (!isPersonal) {
+ if (!group.isPersonal()) {
menu.addMenuItemList(otherOperations);
}
- if (session.isLogged() && !isPersonal) {
+ if (session.isLogged() && !group.isPersonal()) {
menu.addMenuItemList(otherLoggedOperations);
}
- if (isPersonal) {
+ if (group.isPersonal()) {
menu.addMenuItemList(otherOperationsUsers);
}
- if (session.isLogged() && isPersonal) {
+ if (session.isLogged() && group.isPersonal()) {
menu.addMenuItemList(otherLoggedOperationsUsers);
}
return gridItem;
}
+ private String createTooltipWithLogo(final GroupDTO group, boolean hasLogo) {
+ return "<table><tr><td>"
+ + (hasLogo ? createLogoAvatar(group.getStateToken(), hasLogo, group.isPersonal(), THUMBSIZE, 3) : "")
+ + "</td><td>"
+ + i18n.t(group.isPersonal() ? "Nickname: [%s]" : "Group short name: [%s]", group.getShortName())
+ + "</td></tr></table>";
+ }
+
+ private String createLogoAvatar(StateToken groupToken, boolean groupHasLogo, boolean isPersonal, int size,
+ int hvspace) {
+ if (groupHasLogo) {
+ return "<img hspace='" + hvspace + "' vspace='" + hvspace + "' align='left' style='width: " + size
+ + "px; height: " + size + "px;' src='" + downloadProvider.get().getLogoImageUrl(groupToken) + "'>";
+ } else {
+ return isPersonal ? imageUtils.getImageHtml(ImageDescriptor.personDef)
+ : imageUtils.getImageHtml(ImageDescriptor.groupDefIcon);
+ }
+ }
+
private void createMenuActions() {
gotoGroupMenuItem = new MenuItem<GroupDTO>("images/group-home.gif", i18n.t("Visit this group homepage"),
new Listener<GroupDTO>() {
1
0
r980 - in trunk/src/test/java/org/ourproject/kune: platf/integration/selenium workspace/client workspace/client/entityheader
by vjrj 03 Dec '08
by vjrj 03 Dec '08
03 Dec '08
Author: vjrj
Date: 2008-12-03 12:25:34 +0100 (Wed, 03 Dec 2008)
New Revision: 980
Added:
trunk/src/test/java/org/ourproject/kune/workspace/client/entityheader/
Removed:
trunk/src/test/java/org/ourproject/kune/workspace/client/entitylogo/
Modified:
trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/ContentAddSeleniumTest.java
trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/EntityLogoSeleniumTest.java
trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/NewGroupSeleniumTest.java
trunk/src/test/java/org/ourproject/kune/workspace/client/entityheader/EntityLogoPresenterTest.java
Log:
svn problem renaming package
Modified: trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/ContentAddSeleniumTest.java
===================================================================
--- trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/ContentAddSeleniumTest.java 2008-12-03 11:17:42 UTC (rev 979)
+++ trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/ContentAddSeleniumTest.java 2008-12-03 11:25:34 UTC (rev 980)
@@ -2,7 +2,7 @@
import org.junit.Test;
import org.ourproject.kune.platf.client.dto.StateToken;
-import org.ourproject.kune.workspace.client.entitylogo.EntityTextLogo;
+import org.ourproject.kune.workspace.client.entityheader.EntityTextLogo;
public class ContentAddSeleniumTest extends KuneSeleniumTestHelper {
@Test
Modified: trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/EntityLogoSeleniumTest.java
===================================================================
--- trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/EntityLogoSeleniumTest.java 2008-12-03 11:17:42 UTC (rev 979)
+++ trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/EntityLogoSeleniumTest.java 2008-12-03 11:25:34 UTC (rev 980)
@@ -4,7 +4,7 @@
import java.io.IOException;
import org.junit.Test;
-import org.ourproject.kune.workspace.client.entitylogo.EntityHeaderView;
+import org.ourproject.kune.workspace.client.entityheader.EntityHeaderView;
import org.ourproject.kune.workspace.client.options.EntityOptionsPanel;
import org.ourproject.kune.workspace.client.options.logo.EntityOptionsLogoPanel;
Modified: trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/NewGroupSeleniumTest.java
===================================================================
--- trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/NewGroupSeleniumTest.java 2008-12-03 11:17:42 UTC (rev 979)
+++ trunk/src/test/java/org/ourproject/kune/platf/integration/selenium/NewGroupSeleniumTest.java 2008-12-03 11:25:34 UTC (rev 980)
@@ -6,7 +6,7 @@
import org.junit.Test;
import org.ourproject.kune.platf.client.dto.GroupType;
import org.ourproject.kune.workspace.client.WorkspaceMessages;
-import org.ourproject.kune.workspace.client.entitylogo.EntityTextLogo;
+import org.ourproject.kune.workspace.client.entityheader.EntityTextLogo;
import org.ourproject.kune.workspace.client.newgroup.NewGroupPanel;
import org.ourproject.kune.workspace.client.site.SiteToken;
Copied: trunk/src/test/java/org/ourproject/kune/workspace/client/entityheader (from rev 979, trunk/src/test/java/org/ourproject/kune/workspace/client/entitylogo)
Property changes on: trunk/src/test/java/org/ourproject/kune/workspace/client/entityheader
___________________________________________________________________
Name: svn:mergeinfo
+
Modified: trunk/src/test/java/org/ourproject/kune/workspace/client/entityheader/EntityLogoPresenterTest.java
===================================================================
--- trunk/src/test/java/org/ourproject/kune/workspace/client/entitylogo/EntityLogoPresenterTest.java 2008-12-03 11:17:42 UTC (rev 979)
+++ trunk/src/test/java/org/ourproject/kune/workspace/client/entityheader/EntityLogoPresenterTest.java 2008-12-03 11:25:34 UTC (rev 980)
@@ -1,4 +1,4 @@
-package org.ourproject.kune.workspace.client.entitylogo;
+package org.ourproject.kune.workspace.client.entityheader;
import org.junit.Before;
import org.junit.Test;
@@ -8,6 +8,8 @@
import org.ourproject.kune.platf.client.dto.StateToken;
import org.ourproject.kune.platf.client.state.Session;
import org.ourproject.kune.platf.client.state.StateManager;
+import org.ourproject.kune.workspace.client.entityheader.EntityHeaderPresenter;
+import org.ourproject.kune.workspace.client.entityheader.EntityHeaderView;
import org.ourproject.kune.workspace.client.themes.WsThemePresenter;
public class EntityLogoPresenterTest {
1
0