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
November 2011
- 1 participants
- 57 discussions
Author: vjrj_
Date: 2011-11-12 03:58:35 +0100 (Sat, 12 Nov 2011)
New Revision: 1603
Added:
trunk/src/main/java/cc/kune/core/client/i18n/I18nUrlUtils.java
trunk/src/test/java/cc/kune/core/client/i18n/I18nUrlUtilsTest.java
Modified:
trunk/TODO
trunk/src/main/java/cc/kune/chat/client/actions/NewRoomBtn.java
trunk/src/main/java/cc/kune/common/client/SampleEntryPoint.java
trunk/src/main/java/cc/kune/common/client/actions/gwtui/AbstractGwtButtonGui.java
trunk/src/main/java/cc/kune/common/client/actions/gwtui/AbstractGwtMenuItemGui.java
trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtIconLabelGui.java
trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtMenuGui.java
trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtSimpleGuiItem.java
trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtSubMenuGui.java
trunk/src/main/java/cc/kune/common/client/actions/ui/AbstractComposedGuiItem.java
trunk/src/main/java/cc/kune/common/client/actions/ui/ActionFlowPanel.java
trunk/src/main/java/cc/kune/common/client/actions/ui/ActionSimplePanel.java
trunk/src/main/java/cc/kune/common/client/actions/ui/descrip/AbstractGuiActionDescrip.java
trunk/src/main/java/cc/kune/common/client/actions/ui/descrip/GuiActionDescrip.java
trunk/src/main/java/cc/kune/common/client/ui/IconLabel.java
trunk/src/main/java/cc/kune/common/client/ui/dialogs/BasicTopDialog.java
trunk/src/main/java/cc/kune/common/client/ui/dialogs/PromptTopDialog.java
trunk/src/main/java/cc/kune/common/client/ui/dialogs/tabbed/AbstractTabbedDialogPanel.java
trunk/src/main/java/cc/kune/common/client/ui/dialogs/wizard/WizardDialog.java
trunk/src/main/java/cc/kune/common/client/utils/Url.java
trunk/src/main/java/cc/kune/core/client/auth/SignInAbstractPanel.java
trunk/src/main/java/cc/kune/core/client/auth/SignInAbstractPresenter.java
trunk/src/main/java/cc/kune/core/client/cnt/ActionContentToolbarImpl.java
trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupPanel.java
trunk/src/main/java/cc/kune/core/client/i18n/I18nTranslationServiceMocked.java
trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java
trunk/src/main/java/cc/kune/core/client/notify/confirm/UserConfirmPanel.java
trunk/src/main/java/cc/kune/core/client/sitebar/AboutKuneDialog.java
trunk/src/main/java/cc/kune/core/client/sitebar/ErrorsDialog.java
trunk/src/main/java/cc/kune/core/client/sitebar/search/EntitySearchPanel.java
trunk/src/main/java/cc/kune/core/client/sitebar/search/SearchBoxFactory.java
trunk/src/main/java/cc/kune/core/client/sn/AbstractSNPanel.java
trunk/src/main/java/cc/kune/core/client/sn/GroupSNPanel.java
trunk/src/main/java/cc/kune/core/client/sn/UserSNPanel.java
trunk/src/main/java/cc/kune/core/client/ws/entheader/EntityHeaderPanel.java
trunk/src/main/java/cc/kune/core/server/i18n/I18nTranslationServiceDefault.java
trunk/src/main/java/cc/kune/core/server/manager/impl/I18nTranslationManagerDefault.java
trunk/src/main/java/cc/kune/core/shared/dto/I18nLanguageDTO.java
trunk/src/main/java/cc/kune/core/shared/i18n/I18nTranslationService.java
trunk/src/main/java/cc/kune/domain/I18nLanguage.java
trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.java
trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslatorPanel.java
trunk/src/main/java/cc/kune/gspace/client/options/GroupOptionsPanel.java
trunk/src/main/java/cc/kune/gspace/client/options/UserOptionsPanel.java
trunk/src/main/java/cc/kune/gspace/client/resources/gSpaceArmor.css
trunk/src/main/java/cc/kune/gspace/client/resources/gSpaceArmorTheme.css
trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeSelectorPanel.java
trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsTablePanel.java
trunk/src/main/java/cc/kune/lists/client/actions/NewListAction.java
trunk/src/main/java/cc/kune/lists/client/actions/NewListPostAction.java
trunk/src/main/java/cc/kune/pspace/client/PSpacePanel.java
trunk/src/main/webapp/ws.html
Log:
NEW - # 144: Resolve some i18n typos (sizes, no translated, etc)
http://kune.ourproject.org/issues/ticket/144
NEW - # 156: Give RTL support (for Arabic and other similar languages)
http://kune.ourproject.org/issues/ticket/156
Modified: trunk/TODO
===================================================================
--- trunk/TODO 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/TODO 2011-11-12 02:58:35 UTC (rev 1603)
@@ -12,6 +12,20 @@
nick == assigned to
* SHORT-TERM (URGENT)
+** i18n usecase
+| logged | locale in URL | i18n supported | useDB |
+| false | false | false | true |
+| false | false | true | false |
+| false | true | false | true |
+| false | true | true | false |
+| true | false | false | true |
+| true | false | true | false |
+| true | true (same) | true | false |
+| true | true (same) | false | true |
+| true | true(*) (diff) | false | true |
+| true | true(*) (diff) | true | false |
+meta?
+
** TODO multi uploader
http://code.google.com/p/gwt-plupload/
http://www.plupload.com/example_all_runtimes.php
Modified: trunk/src/main/java/cc/kune/chat/client/actions/NewRoomBtn.java
===================================================================
--- trunk/src/main/java/cc/kune/chat/client/actions/NewRoomBtn.java 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/java/cc/kune/chat/client/actions/NewRoomBtn.java 2011-11-12 02:58:35 UTC (rev 1603)
@@ -65,7 +65,8 @@
@Override
public void actionPerformed(final ActionEvent event) {
- final Builder builder = new PromptTopDialog.Builder(ID, "Name of the new chatroom?", false, true);
+ final Builder builder = new PromptTopDialog.Builder(ID, i18n.t("Name of the new chatroom?"),
+ false, true, i18n.getDirection());
builder.width("200px").height("50px").firstButtonTitle(i18n.t("Create")).sndButtonTitle(
i18n.t("Cancel")).firstButtonId(CREATE_ID).sndButtonId(CANCEL_ID);
builder.regex(TextUtils.UNIX_NAME).regexText(
Modified: trunk/src/main/java/cc/kune/common/client/SampleEntryPoint.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/SampleEntryPoint.java 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/java/cc/kune/common/client/SampleEntryPoint.java 2011-11-12 02:58:35 UTC (rev 1603)
@@ -50,114 +50,116 @@
import com.google.gwt.user.client.ui.VerticalPanel;
public class SampleEntryPoint implements EntryPoint {
- public interface ISampleView {
- void addAll(GuiActionDescCollection actions);
+ public interface ISampleView {
+ void addAll(GuiActionDescCollection actions);
+ }
+
+ public class TestAction extends AbstractExtendedAction {
+ public TestAction(final String text) {
+ super(text);
}
- public class TestAction extends AbstractExtendedAction {
- public TestAction(final String text) {
- super(text);
- }
-
- public TestAction(final String text, final String tooltip, final String icon) {
- super(text, tooltip, icon);
- }
-
- @Override
- public void actionPerformed(final ActionEvent event) {
- final String message = "Testing: " + super.getValue(Action.NAME);
- // Log.info(message);
- userMsg.show(message);
- }
+ public TestAction(final String text, final String tooltip, final String icon) {
+ super(text, tooltip, icon);
}
- SimpleUserMessage userMsg = new SimpleUserMessage();
@Override
- public void onModuleLoad() {
+ public void actionPerformed(final ActionEvent event) {
+ final String message = "Testing: " + super.getValue(Action.NAME);
+ // Log.info(message);
+ userMsg.show(message);
+ }
+ }
+ SimpleUserMessage userMsg = new SimpleUserMessage();
- final SampleGinjector ginjector = GWT.create(SampleGinjector.class);
- ginjector.getGxtGuiProvider();
- ginjector.getGuiProvider();
- final GlobalShortcutRegister shortcutRegister = ginjector.getGlobalShortcutRegister();
+ @Override
+ public void onModuleLoad() {
- final GuiActionDescCollection actions = new GuiActionDescCollection();
+ final SampleGinjector ginjector = GWT.create(SampleGinjector.class);
+ ginjector.getGxtGuiProvider();
+ ginjector.getGuiProvider();
+ final GlobalShortcutRegister shortcutRegister = ginjector.getGlobalShortcutRegister();
- final TestAction action = new TestAction("Action 1", "Some tooltip", "oc-testico");
- final TestAction action2 = new TestAction("Action 2");
+ final GuiActionDescCollection actions = new GuiActionDescCollection();
- final KeyStroke shortcut = Shortcut.getShortcut(false, true, false, false, Character.valueOf('C'));
- shortcutRegister.put(shortcut, action);
+ final TestAction action = new TestAction("Action 1", "Some tooltip", "oc-testico");
+ final TestAction action2 = new TestAction("Action 2");
- final ButtonDescriptor simpleBtn = new ButtonDescriptor(action);
- // Same action but different text
- simpleBtn.putValue(Action.NAME, "Action 1 diff name");
+ final KeyStroke shortcut = Shortcut.getShortcut(false, true, false, false, Character.valueOf('C'));
+ shortcutRegister.put(shortcut, action);
- final PushButtonDescriptor pushBtn = new PushButtonDescriptor(action2);
- pushBtn.setPushed(true);
- pushBtn.putValue(Action.NAME, "Push btn");
+ final ButtonDescriptor simpleBtn = new ButtonDescriptor(action);
+ // Same action but different text
+ simpleBtn.putValue(Action.NAME, "Action 1 diff name");
- final ToolbarDescriptor toolbar = new ToolbarDescriptor();
+ final PushButtonDescriptor pushBtn = new PushButtonDescriptor(action2);
+ pushBtn.setPushed(true);
+ pushBtn.putValue(Action.NAME, "Push btn");
- final ToolbarSeparatorDescriptor tsepFill = new ToolbarSeparatorDescriptor(Type.fill, toolbar);
- final ToolbarSeparatorDescriptor toolbarSpace = new ToolbarSeparatorDescriptor(Type.spacer, toolbar);
+ final ToolbarDescriptor toolbar = new ToolbarDescriptor();
- simpleBtn.setParent(toolbar);
- pushBtn.setParent(toolbar);
+ final ToolbarSeparatorDescriptor tsepFill = new ToolbarSeparatorDescriptor(Type.fill, toolbar);
+ final ToolbarSeparatorDescriptor toolbarSpace = new ToolbarSeparatorDescriptor(Type.spacer, toolbar);
- final MenuDescriptor menu = new MenuDescriptor(action);
- menu.putValue(Action.NAME, "Menu");
+ simpleBtn.setParent(toolbar);
+ pushBtn.setParent(toolbar);
- final MenuDescriptor menu2 = new MenuDescriptor(action);
- menu2.putValue(Action.NAME, "Menu2");
+ final MenuDescriptor menu = new MenuDescriptor(action);
+ menu.putValue(Action.NAME, "Menu");
- menu.setParent(toolbar);
- final SubMenuDescriptor submenu = new SubMenuDescriptor("Some Submenu", "tip", "oc-testico");
- submenu.setParent(menu);
- final MenuSeparatorDescriptor menuSep = new MenuSeparatorDescriptor(menu);
+ final MenuDescriptor menu2 = new MenuDescriptor(action);
+ menu2.putValue(Action.NAME, "Menu2");
- final TestAction action3 = new TestAction("Action 3", "Some tooltip", "oc-testico");
- final TestAction action4 = new TestAction("Action 4");
+ menu.setParent(toolbar);
+ final SubMenuDescriptor submenu = new SubMenuDescriptor("Some Submenu", "tip", "oc-testico");
+ submenu.setParent(menu);
+ final MenuSeparatorDescriptor menuSep = new MenuSeparatorDescriptor(menu);
- final MenuItemDescriptor menuItem = new MenuItemDescriptor(menu, action3);
- final MenuItemDescriptor menuItem2 = new MenuItemDescriptor(menu, action4);
- final MenuItemDescriptor menuItem3 = new MenuItemDescriptor(submenu, action);
- final MenuItemDescriptor menuItem4 = new MenuItemDescriptor(submenu, action);
- final IconLabelDescriptor iconLabelDescr = new IconLabelDescriptor(action);
- final IconLabelDescriptor iconLabelNoAct = new IconLabelDescriptor(action4);
- final MenuItemDescriptor menuItem5 = new MenuItemDescriptor(menu2, action);
+ final TestAction action3 = new TestAction("Action 3", "Some tooltip", "oc-testico");
+ final TestAction action4 = new TestAction("Action 4");
- action.setShortcut(shortcut);
+ final MenuItemDescriptor menuItem = new MenuItemDescriptor(menu, action3);
+ final MenuItemDescriptor menuItem2 = new MenuItemDescriptor(menu, action4);
+ final MenuItemDescriptor menuItem3 = new MenuItemDescriptor(submenu, action);
+ final MenuItemDescriptor menuItem4 = new MenuItemDescriptor(submenu, action);
+ final IconLabelDescriptor iconLabelDescr = new IconLabelDescriptor(action);
+ final IconLabelDescriptor iconLabelNoAct = new IconLabelDescriptor(action4);
+ final MenuItemDescriptor menuItem5 = new MenuItemDescriptor(menu2, action);
- actions.add(toolbar, simpleBtn, tsepFill, pushBtn, toolbarSpace, menu, tsepFill, menuItem, menuItem2, menuSep,
- menuItem2, menuItem, iconLabelDescr, submenu, menuItem3, menuItem4, menu2, iconLabelNoAct, menuItem5);
+ action.setShortcut(shortcut);
- final ActionFlowPanel view = new ActionFlowPanel(ginjector.getGuiProvider());
- view.addAll(actions);
+ actions.add(toolbar, simpleBtn, tsepFill, pushBtn, toolbarSpace, menu, tsepFill, menuItem,
+ menuItem2, menuSep, menuItem2, menuItem, iconLabelDescr, submenu, menuItem3, menuItem4, menu2,
+ iconLabelNoAct, menuItem5);
- final IconLabel simpleIconLabel = new IconLabel("IconLabel (no action)");
- simpleIconLabel.setRightIcon("oc-testico");
- simpleIconLabel.setTitle("tooltip");
+ final ActionFlowPanel view = new ActionFlowPanel(ginjector.getGuiProvider(), null);
+ view.addAll(actions);
- final VerticalPanel panel = new VerticalPanel();
- panel.setWidth("100%");
- panel.add(view);
- panel.add(simpleIconLabel);
+ final IconLabel simpleIconLabel = new IconLabel("IconLabel (no action)");
+ simpleIconLabel.setRightIcon("oc-testico");
+ simpleIconLabel.setTitle("tooltip");
- final BasicThumb thumb = new BasicThumb("http://www.truth-out.org/sites/all/themes/truth/images/logo.gif", 60,
- "fooo", 5, false, new ClickHandler() {
+ final VerticalPanel panel = new VerticalPanel();
+ panel.setWidth("100%");
+ panel.add(view);
+ panel.add(simpleIconLabel);
- @Override
- public void onClick(final ClickEvent event) {
- userMsg.show("Testing");
- }
- });
- thumb.setTooltip("kkkkkkK");
- thumb.setOnOverLabel(true);
- final LayoutContainer layout = new LayoutContainer();
- // final QuickTip quickTip = new QuickTip(layout);
- // quickTip.setInterceptTitles(true);
- layout.add(thumb);
- RootPanel.get().add(layout);
- RootPanel.get().add(view);
- }
+ final BasicThumb thumb = new BasicThumb(
+ "http://www.truth-out.org/sites/all/themes/truth/images/logo.gif", 60, "fooo", 5, false,
+ new ClickHandler() {
+
+ @Override
+ public void onClick(final ClickEvent event) {
+ userMsg.show("Testing");
+ }
+ });
+ thumb.setTooltip("kkkkkkK");
+ thumb.setOnOverLabel(true);
+ final LayoutContainer layout = new LayoutContainer();
+ // final QuickTip quickTip = new QuickTip(layout);
+ // quickTip.setInterceptTitles(true);
+ layout.add(thumb);
+ RootPanel.get().add(layout);
+ RootPanel.get().add(view);
+ }
}
Modified: trunk/src/main/java/cc/kune/common/client/actions/gwtui/AbstractGwtButtonGui.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/gwtui/AbstractGwtButtonGui.java 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/java/cc/kune/common/client/actions/gwtui/AbstractGwtButtonGui.java 2011-11-12 02:58:35 UTC (rev 1603)
@@ -151,7 +151,7 @@
@Override
public void setText(final String text) {
- iconLabel.setText(text);
+ iconLabel.setText(text, descriptor.getDirection());
layout();
}
Modified: trunk/src/main/java/cc/kune/common/client/actions/gwtui/AbstractGwtMenuItemGui.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/gwtui/AbstractGwtMenuItemGui.java 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/java/cc/kune/common/client/actions/gwtui/AbstractGwtMenuItemGui.java 2011-11-12 02:58:35 UTC (rev 1603)
@@ -216,10 +216,11 @@
if (text != null) {
final KeyStroke key = (KeyStroke) descriptor.getValue(Action.ACCELERATOR_KEY);
if (key == null) {
- iconLabel.setText(text);
+ iconLabel.setText(text, descriptor.getDirection());
} else {
- iconLabel.setLabelText(text + createShortCut(key, "oc-mshortcut-hidden")
- + createShortCut(key, "oc-mshortcut"));
+ iconLabel.setText(
+ text + createShortCut(key, "oc-mshortcut-hidden") + createShortCut(key, "oc-mshortcut"),
+ descriptor.getDirection());
}
}
layout();
Modified: trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtIconLabelGui.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtIconLabelGui.java 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtIconLabelGui.java 2011-11-12 02:58:35 UTC (rev 1603)
@@ -93,7 +93,7 @@
@Override
public void setText(final String text) {
- iconLabel.setText(text);
+ iconLabel.setText(text, descriptor.getDirection());
}
@Override
Modified: trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtMenuGui.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtMenuGui.java 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtMenuGui.java 2011-11-12 02:58:35 UTC (rev 1603)
@@ -132,7 +132,7 @@
@Override
public void setText(final String text) {
if (notStandAlone) {
- iconLabel.setText(text);
+ iconLabel.setText(text, descriptor.getDirection());
layout();
}
}
Modified: trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtSimpleGuiItem.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtSimpleGuiItem.java 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtSimpleGuiItem.java 2011-11-12 02:58:35 UTC (rev 1603)
@@ -22,34 +22,35 @@
import cc.kune.common.client.actions.ui.AbstractComposedGuiItem;
import cc.kune.common.client.actions.ui.AbstractGuiItem;
import cc.kune.common.client.actions.ui.bind.GuiProvider;
+import cc.kune.core.shared.i18n.I18nTranslationService;
import com.google.gwt.user.client.ui.HorizontalPanel;
public class GwtSimpleGuiItem extends AbstractComposedGuiItem {
- private final HorizontalPanel bar;
+ private final HorizontalPanel bar;
- public GwtSimpleGuiItem(final GuiProvider provider) {
- super(provider);
- bar = new HorizontalPanel();
- initWidget(bar);
- }
+ public GwtSimpleGuiItem(final GuiProvider provider, final I18nTranslationService i18n) {
+ super(provider, i18n);
+ bar = new HorizontalPanel();
+ initWidget(bar);
+ }
- @Override
- protected void addWidget(final AbstractGuiItem item) {
- bar.add(item);
- }
+ @Override
+ protected void addWidget(final AbstractGuiItem item) {
+ bar.add(item);
+ }
- @Override
- public void clear() {
- super.clear();
- bar.clear();
- }
+ @Override
+ public void clear() {
+ super.clear();
+ bar.clear();
+ }
- @Override
- protected void insertWidget(final AbstractGuiItem item, final int position) {
- final int count = bar.getWidgetCount();
- bar.insert(item, count < position ? count : position);
- }
+ @Override
+ protected void insertWidget(final AbstractGuiItem item, final int position) {
+ final int count = bar.getWidgetCount();
+ bar.insert(item, count < position ? count : position);
+ }
}
Modified: trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtSubMenuGui.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtSubMenuGui.java 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/java/cc/kune/common/client/actions/gwtui/GwtSubMenuGui.java 2011-11-12 02:58:35 UTC (rev 1603)
@@ -79,7 +79,7 @@
@Override
public void setText(final String text) {
- iconLabel.setText(text);
+ iconLabel.setText(text, descriptor.getDirection());
layout();
}
Modified: trunk/src/main/java/cc/kune/common/client/actions/ui/AbstractComposedGuiItem.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/ui/AbstractComposedGuiItem.java 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/java/cc/kune/common/client/actions/ui/AbstractComposedGuiItem.java 2011-11-12 02:58:35 UTC (rev 1603)
@@ -28,16 +28,19 @@
import cc.kune.common.client.actions.ui.descrip.GuiActionDescrip;
import cc.kune.common.client.actions.ui.descrip.HasChilds;
import cc.kune.common.client.errors.UIException;
+import cc.kune.core.shared.i18n.I18nTranslationService;
import com.google.gwt.user.client.ui.Composite;
public abstract class AbstractComposedGuiItem extends Composite implements IsActionExtensible {
private final GuiProvider bindings;
private GuiActionDescCollection guiItems;
+ private final I18nTranslationService i18n;
- public AbstractComposedGuiItem(final GuiProvider bindings) {
+ public AbstractComposedGuiItem(final GuiProvider bindings, final I18nTranslationService i18n) {
super();
this.bindings = bindings;
+ this.i18n = i18n;
}
public void add(final GuiActionDescCollection descriptors) {
@@ -80,6 +83,8 @@
if (binding == null) {
throw new UIException("Unknown binding for: " + descrip);
} else {
+ // We set at that moment if the widget should be RTL or not
+ descrip.setRTL(i18n.isRTL());
final AbstractGuiItem item = binding.create(descrip);
if (binding.shouldBeAdded()) {
// TODO Change this ^ to shouldBeAttached
Modified: trunk/src/main/java/cc/kune/common/client/actions/ui/ActionFlowPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/ui/ActionFlowPanel.java 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/java/cc/kune/common/client/actions/ui/ActionFlowPanel.java 2011-11-12 02:58:35 UTC (rev 1603)
@@ -20,35 +20,36 @@
package cc.kune.common.client.actions.ui;
import cc.kune.common.client.actions.ui.bind.GuiProvider;
+import cc.kune.core.shared.i18n.I18nTranslationService;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.inject.Inject;
public class ActionFlowPanel extends AbstractComposedGuiItem implements ActionExtensibleView {
- private final FlowPanel bar;
+ private final FlowPanel bar;
- @Inject
- public ActionFlowPanel(final GuiProvider guiProvider) {
- super(guiProvider);
- bar = new FlowPanel();
- initWidget(bar);
- }
+ @Inject
+ public ActionFlowPanel(final GuiProvider guiProvider, final I18nTranslationService i18n) {
+ super(guiProvider, i18n);
+ bar = new FlowPanel();
+ initWidget(bar);
+ }
- @Override
- protected void addWidget(final AbstractGuiItem item) {
- bar.add(item);
- }
+ @Override
+ protected void addWidget(final AbstractGuiItem item) {
+ bar.add(item);
+ }
- @Override
- public void clear() {
- super.clear();
- bar.clear();
- }
+ @Override
+ public void clear() {
+ super.clear();
+ bar.clear();
+ }
- @Override
- protected void insertWidget(final AbstractGuiItem item, final int position) {
- final int count = bar.getWidgetCount();
- bar.insert(item, count < position ? count : position);
- }
+ @Override
+ protected void insertWidget(final AbstractGuiItem item, final int position) {
+ final int count = bar.getWidgetCount();
+ bar.insert(item, count < position ? count : position);
+ }
}
\ No newline at end of file
Modified: trunk/src/main/java/cc/kune/common/client/actions/ui/ActionSimplePanel.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/ui/ActionSimplePanel.java 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/java/cc/kune/common/client/actions/ui/ActionSimplePanel.java 2011-11-12 02:58:35 UTC (rev 1603)
@@ -20,35 +20,36 @@
package cc.kune.common.client.actions.ui;
import cc.kune.common.client.actions.ui.bind.GuiProvider;
+import cc.kune.core.shared.i18n.I18nTranslationService;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.inject.Inject;
public class ActionSimplePanel extends AbstractComposedGuiItem implements ActionExtensibleView {
- private final HorizontalPanel bar;
+ private final HorizontalPanel bar;
- @Inject
- public ActionSimplePanel(final GuiProvider guiProvider) {
- super(guiProvider);
- bar = new HorizontalPanel();
- initWidget(bar);
- }
+ @Inject
+ public ActionSimplePanel(final GuiProvider guiProvider, final I18nTranslationService i18n) {
+ super(guiProvider, i18n);
+ bar = new HorizontalPanel();
+ initWidget(bar);
+ }
- @Override
- protected void addWidget(final AbstractGuiItem item) {
- bar.add(item);
- }
+ @Override
+ protected void addWidget(final AbstractGuiItem item) {
+ bar.add(item);
+ }
- @Override
- public void clear() {
- super.clear();
- bar.clear();
- }
+ @Override
+ public void clear() {
+ super.clear();
+ bar.clear();
+ }
- @Override
- protected void insertWidget(final AbstractGuiItem item, final int position) {
- final int count = bar.getWidgetCount();
- bar.insert(item, count < position ? count : position);
- }
+ @Override
+ protected void insertWidget(final AbstractGuiItem item, final int position) {
+ final int count = bar.getWidgetCount();
+ bar.insert(item, count < position ? count : position);
+ }
}
Modified: trunk/src/main/java/cc/kune/common/client/actions/ui/descrip/AbstractGuiActionDescrip.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/ui/descrip/AbstractGuiActionDescrip.java 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/java/cc/kune/common/client/actions/ui/descrip/AbstractGuiActionDescrip.java 2011-11-12 02:58:35 UTC (rev 1603)
@@ -29,6 +29,8 @@
import cc.kune.common.client.actions.KeyStroke;
import cc.kune.core.client.dnd.DropTarget;
+import com.google.gwt.i18n.client.HasDirection.Direction;
+
/**
* The Class AbstractUIActionDescriptor.
*/
@@ -42,6 +44,9 @@
/** The item DOM id. */
private String id;
+ /** If is a Rigth-to-Left widget (for languages like Arabic) */
+ private boolean isRTL = false;
+
/** The item location. */
private String location;
@@ -82,6 +87,11 @@
}
@Override
+ public Direction getDirection() {
+ return isRTL ? Direction.RTL : Direction.LTR;
+ }
+
+ @Override
public String getId() {
return id;
}
@@ -149,6 +159,11 @@
}
@Override
+ public boolean isRTL() {
+ return isRTL;
+ }
+
+ @Override
public boolean isVisible() {
return (Boolean) getValue(VISIBLE);
}
@@ -225,6 +240,11 @@
}
@Override
+ public void setRTL(final boolean isRTL) {
+ this.isRTL = isRTL;
+ }
+
+ @Override
public void setStyles(final String styles) {
putValue(Action.STYLES, styles);
}
Modified: trunk/src/main/java/cc/kune/common/client/actions/ui/descrip/GuiActionDescrip.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/actions/ui/descrip/GuiActionDescrip.java 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/java/cc/kune/common/client/actions/ui/descrip/GuiActionDescrip.java 2011-11-12 02:58:35 UTC (rev 1603)
@@ -25,6 +25,8 @@
import cc.kune.common.client.actions.PropertyChangeListener;
import cc.kune.core.client.dnd.DropTarget;
+import com.google.gwt.i18n.client.HasDirection.Direction;
+
public interface GuiActionDescrip {
public static final String DROP_TARGET = "dropTarget";
@@ -51,6 +53,8 @@
AbstractAction getAction();
+ Direction getDirection();
+
String getId();
Object[] getKeys();
@@ -75,6 +79,8 @@
boolean isEnabled();
+ boolean isRTL();
+
boolean isVisible();
boolean mustBeAdded();
@@ -105,6 +111,8 @@
void setPosition(final int position);
+ void setRTL(final boolean isRTL);
+
void setStyles(final String styles);
void setTarget(final Object object);
Modified: trunk/src/main/java/cc/kune/common/client/ui/IconLabel.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/ui/IconLabel.java 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/java/cc/kune/common/client/ui/IconLabel.java 2011-11-12 02:58:35 UTC (rev 1603)
@@ -136,10 +136,6 @@
self.ensureDebugId(id);
}
- public void setLabelText(final String text) {
- label.setText(text);
- }
-
public void setLeftIcon(final String imgCss) {
commonStyle(iconLeft, imgCss);
iconLeft.addStyleName("k-iconlabel-left");
Modified: trunk/src/main/java/cc/kune/common/client/ui/dialogs/BasicTopDialog.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/ui/dialogs/BasicTopDialog.java 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/java/cc/kune/common/client/ui/dialogs/BasicTopDialog.java 2011-11-12 02:58:35 UTC (rev 1603)
@@ -29,6 +29,7 @@
import com.google.gwt.event.logical.shared.ResizeEvent;
import com.google.gwt.event.logical.shared.ResizeHandler;
import com.google.gwt.event.shared.HandlerRegistration;
+import com.google.gwt.i18n.client.HasDirection.Direction;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.PopupPanel;
import com.google.gwt.user.client.ui.UIObject;
@@ -40,6 +41,7 @@
private boolean autoscroll = false;
private boolean closeBtn = true;
private final String dialogId;
+ private final Direction direction;
private String firstButtonId;
private String firstButtonTitle;
private String height;
@@ -51,11 +53,13 @@
private String title;
private String width;
- public Builder(final String dialogId, final boolean autohide, final boolean modal) {
+ public Builder(final String dialogId, final boolean autohide, final boolean modal,
+ final Direction direction) {
// Required params
this.autohide = autohide;
this.modal = modal;
this.dialogId = dialogId;
+ this.direction = direction;
}
public Builder autoscroll(final boolean autoscroll) {
@@ -139,7 +143,7 @@
popup = new PopupTopPanel(builder.autohide, builder.modal);
popup.add(this);
popup.ensureDebugId(builder.dialogId);
- super.getTitleText().setText(builder.title);
+ super.getTitleText().setText(builder.title, builder.direction);
if (TextUtils.notEmpty(builder.icon)) {
super.setTitleIcon(builder.icon);
}
@@ -150,7 +154,7 @@
super.setSecondBtnText(builder.sndButtonTitle);
super.setSecondBtnId(builder.sndButtonId);
super.setSecondBtnTabIndex(builder.tabIndexStart + 1);
- super.getTitleText().setText(builder.title);
+ super.getTitleText().setText(builder.title, builder.direction);
setWidthImpl(builder.width);
setHeightImpl(builder.height);
recalculateSize();
Modified: trunk/src/main/java/cc/kune/common/client/ui/dialogs/PromptTopDialog.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/ui/dialogs/PromptTopDialog.java 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/java/cc/kune/common/client/ui/dialogs/PromptTopDialog.java 2011-11-12 02:58:35 UTC (rev 1603)
@@ -20,6 +20,7 @@
package cc.kune.common.client.ui.dialogs;
import com.extjs.gxt.ui.client.widget.form.TextField;
+import com.google.gwt.i18n.client.HasDirection.Direction;
public class PromptTopDialog extends BasicTopDialog {
@@ -36,8 +37,8 @@
private int width = 0;
public Builder(final String dialogId, final String promptText, final boolean autohide,
- final boolean modal) {
- super(dialogId, autohide, modal);
+ final boolean modal, final Direction direction) {
+ super(dialogId, autohide, modal, direction);
super.title(promptText);
}
Modified: trunk/src/main/java/cc/kune/common/client/ui/dialogs/tabbed/AbstractTabbedDialogPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/ui/dialogs/tabbed/AbstractTabbedDialogPanel.java 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/java/cc/kune/common/client/ui/dialogs/tabbed/AbstractTabbedDialogPanel.java 2011-11-12 02:58:35 UTC (rev 1603)
@@ -36,6 +36,7 @@
import com.google.gwt.event.logical.shared.HasCloseHandlers;
import com.google.gwt.event.logical.shared.SelectionEvent;
import com.google.gwt.event.logical.shared.SelectionHandler;
+import com.google.gwt.i18n.client.HasDirection.Direction;
import com.google.gwt.resources.client.ImageResource;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Element;
@@ -50,6 +51,7 @@
private final boolean autohide;
private BasicTopDialog dialog;
private final String dialogId;
+ private final Direction direction;
private final String errorLabelId;
private final String firstBtnId;
private final String firstBtnTitle;
@@ -69,7 +71,7 @@
public AbstractTabbedDialogPanel(final String dialogId, final String title, final boolean modal,
final boolean autoHide, final NotifyLevelImages images, final String errorLabelId,
final String firstBtnTitle, final String firstBtnId, final String sndBtnTitle,
- final String sndBtnId, final ProvidersCollection provCollection) {
+ final String sndBtnId, final ProvidersCollection provCollection, final Direction direction) {
this.dialogId = dialogId;
this.title = title;
this.modal = modal;
@@ -81,22 +83,24 @@
this.sndBtnId = sndBtnId;
this.provCollection = provCollection;
this.autohide = autoHide;
+ this.direction = direction;
}
public AbstractTabbedDialogPanel(final String dialogId, final String title, final boolean modal,
final NotifyLevelImages images, final String errorLabelId, final String firstBtnTitle,
final String firstBtnId, final String sndBtnTitle, final String sndBtnId,
- final ProvidersCollection provCollection) {
+ final ProvidersCollection provCollection, final Direction direction) {
this(dialogId, title, NO_SIZE, NO_SIZE, modal, false, images, errorLabelId, firstBtnTitle,
- firstBtnId, sndBtnTitle, sndBtnId, provCollection);
+ firstBtnId, sndBtnTitle, sndBtnId, provCollection, direction);
}
public AbstractTabbedDialogPanel(final String dialogId, final String title, final int width,
final int height, final boolean modal, final boolean autoHide, final NotifyLevelImages images,
final String errorLabelId, final String firstBtnTitle, final String firstBtnId,
- final String sndBtnTitle, final String sndBtnId, final ProvidersCollection provCollection) {
+ final String sndBtnTitle, final String sndBtnId, final ProvidersCollection provCollection,
+ final Direction direction) {
this(dialogId, title, modal, autoHide, images, errorLabelId, firstBtnTitle, firstBtnId, sndBtnTitle,
- sndBtnId, provCollection);
+ sndBtnId, provCollection, direction);
this.width = width;
this.height = height;
}
@@ -104,9 +108,9 @@
public AbstractTabbedDialogPanel(final String dialogId, final String title, final int width,
final int height, final boolean modal, final NotifyLevelImages images, final String errorLabelId,
final String firstBtnTitle, final String firstBtnId, final String sndBtnTitle,
- final String sndBtnId, final ProvidersCollection provCollection) {
+ final String sndBtnId, final ProvidersCollection provCollection, final Direction direction) {
this(dialogId, title, width, height, modal, false, images, errorLabelId, firstBtnTitle, firstBtnId,
- sndBtnTitle, sndBtnId, provCollection);
+ sndBtnTitle, sndBtnId, provCollection, direction);
}
@Override
@@ -129,9 +133,9 @@
}
private void createDialog() {
- final Builder builder = new BasicTopDialog.Builder(dialogId, autohide, modal).autoscroll(true).icon(
- iconCls).firstButtonId(firstBtnId).firstButtonTitle(firstBtnTitle).sndButtonId(dialogId).sndButtonTitle(
- sndBtnTitle).sndButtonId(sndBtnId).title(title);
+ final Builder builder = new BasicTopDialog.Builder(dialogId, autohide, modal, direction).autoscroll(
+ true).icon(iconCls).firstButtonId(firstBtnId).firstButtonTitle(firstBtnTitle).sndButtonId(
+ dialogId).sndButtonTitle(sndBtnTitle).sndButtonId(sndBtnId).title(title);
if (width != NO_SIZE) {
builder.width(String.valueOf(width + 20) + "px");
}
Modified: trunk/src/main/java/cc/kune/common/client/ui/dialogs/wizard/WizardDialog.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/ui/dialogs/wizard/WizardDialog.java 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/java/cc/kune/common/client/ui/dialogs/wizard/WizardDialog.java 2011-11-12 02:58:35 UTC (rev 1603)
@@ -62,8 +62,8 @@
this.maskWidget = maskWidget;
this.listener = listener;
this.i18n = i18n;
- final Builder dialogBuilder = new BasicTopDialog.Builder(dialogId, false, modal).width(width).height(
- height).firstButtonId(cancelId).sndButtonId(finishId).title(header);
+ final Builder dialogBuilder = new BasicTopDialog.Builder(dialogId, false, modal, i18n.getDirection()).width(
+ width).height(height).firstButtonId(cancelId).sndButtonId(finishId).title(header);
dialog = dialogBuilder.build();
dialog.setFirstBtnText(i18n.tWithNT("Cancel", "used in button"));
dialog.getFirstBtn().addClickHandler(new ClickHandler() {
Modified: trunk/src/main/java/cc/kune/common/client/utils/Url.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/utils/Url.java 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/java/cc/kune/common/client/utils/Url.java 2011-11-12 02:58:35 UTC (rev 1603)
@@ -20,44 +20,44 @@
package cc.kune.common.client.utils;
import java.util.ArrayList;
-import java.util.List;
public class Url {
- private final String base;
- private final List<UrlParam> params;
+ private final String base;
+ private final ArrayList<UrlParam> params;
- public Url(final String base) {
- this.base = base;
- params = new ArrayList<UrlParam>();
- }
+ public Url(final String base) {
+ this.base = base;
+ params = new ArrayList<UrlParam>();
+ }
- public Url(final String base, final UrlParam... iniParams) {
- this(base);
- for (UrlParam param : iniParams) {
- addImpl(param);
- }
+ public Url(final String base, final UrlParam... iniParams) {
+ this(base);
+ for (final UrlParam param : iniParams) {
+ addImpl(param);
}
+ }
- public void add(final UrlParam param) {
- addImpl(param);
- }
+ public void add(final UrlParam param) {
+ addImpl(param);
+ }
- @Override
- public String toString() {
- String paramPart = "";
- boolean first = true;
- for (UrlParam param : params) {
- if (first) {
- paramPart = "?" + param;
- first = false;
- } else {
- paramPart += "&" + param;
- }
- }
- return base + paramPart;
+ private void addImpl(final UrlParam param) {
+ params.add(param);
+ }
+
+ @Override
+ public String toString() {
+ String paramPart = "";
+ boolean first = true;
+ for (final UrlParam param : params) {
+ if (first) {
+ paramPart = "?" + param;
+ first = false;
+ } else {
+ paramPart += "&" + param;
+ }
}
+ return base + paramPart;
+ }
- private void addImpl(final UrlParam param) {
- params.add(param);
- }
}
Modified: trunk/src/main/java/cc/kune/core/client/auth/SignInAbstractPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/auth/SignInAbstractPanel.java 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/java/cc/kune/core/client/auth/SignInAbstractPanel.java 2011-11-12 02:58:35 UTC (rev 1603)
@@ -49,8 +49,8 @@
final String firstButtonId, final String cancelButtonTitle, final String cancelButtonId,
final NotifyLevelImages images, final String errorLabelId, final int tabIndexStart) {
- final Builder builder = new BasicTopDialog.Builder(dialogId, autohide, modal).autoscroll(autoscroll).title(
- title);
+ final Builder builder = new BasicTopDialog.Builder(dialogId, autohide, modal, i18n.getDirection()).autoscroll(
+ autoscroll).title(title);
builder.icon(icon);
builder.firstButtonTitle(firstButtonTitle).firstButtonId(firstButtonId);
builder.sndButtonTitle(cancelButtonTitle).sndButtonId(cancelButtonId);
Modified: trunk/src/main/java/cc/kune/core/client/auth/SignInAbstractPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/auth/SignInAbstractPresenter.java 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/java/cc/kune/core/client/auth/SignInAbstractPresenter.java 2011-11-12 02:58:35 UTC (rev 1603)
@@ -92,12 +92,13 @@
session.setUserHash(userHash);
session.setCurrentUserInfo(userInfoDTO);
final I18nLanguageDTO language = userInfoDTO.getLanguage();
- i18n.changeCurrentLanguage(language.getCode());
session.setCurrentLanguage(language);
- if (gotoHomePage) {
- stateManager.gotoStateToken(new StateToken(userInfoDTO.getHomePage()).clearDocument());
- } else {
- stateManager.redirectOrRestorePreviousToken();
+ if (!i18n.changeToLanguageIfNecessary(language.getCode())) {
+ if (gotoHomePage) {
+ stateManager.gotoStateToken(new StateToken(userInfoDTO.getHomePage()).clearDocument());
+ } else {
+ stateManager.redirectOrRestorePreviousToken();
+ }
}
}
Modified: trunk/src/main/java/cc/kune/core/client/cnt/ActionContentToolbarImpl.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/cnt/ActionContentToolbarImpl.java 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/java/cc/kune/core/client/cnt/ActionContentToolbarImpl.java 2011-11-12 02:58:35 UTC (rev 1603)
@@ -21,6 +21,7 @@
import cc.kune.common.client.actions.ui.ActionFlowPanel;
import cc.kune.common.client.actions.ui.bind.GuiProvider;
+import cc.kune.core.shared.i18n.I18nTranslationService;
import cc.kune.gspace.client.GSpaceArmor;
import com.google.gwt.user.client.ui.InsertPanel.ForIsWidget;
@@ -28,25 +29,26 @@
public class ActionContentToolbarImpl extends ActionFlowPanel implements ActionContentToolbar {
- private final ForIsWidget wsToolbar;
+ private final ForIsWidget wsToolbar;
- @Inject
- public ActionContentToolbarImpl(final GuiProvider guiProvider, final GSpaceArmor wsArmor) {
- super(guiProvider);
- this.wsToolbar = wsArmor.getDocSubheader();
- }
+ @Inject
+ public ActionContentToolbarImpl(final GuiProvider guiProvider, final GSpaceArmor wsArmor,
+ final I18nTranslationService i18n) {
+ super(guiProvider, i18n);
+ this.wsToolbar = wsArmor.getDocSubheader();
+ }
- @Override
- public void attach() {
- if (!this.isAttached()) {
- wsToolbar.add(this);
- }
+ @Override
+ public void attach() {
+ if (!this.isAttached()) {
+ wsToolbar.add(this);
}
+ }
- @Override
- public void detach() {
- if (this.isAttached()) {
- this.removeFromParent();
- }
+ @Override
+ public void detach() {
+ if (this.isAttached()) {
+ this.removeFromParent();
}
+ }
}
Modified: trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupPanel.java 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/java/cc/kune/core/client/groups/newgroup/NewGroupPanel.java 2011-11-12 02:58:35 UTC (rev 1603)
@@ -82,8 +82,8 @@
public NewGroupPanel(final I18nTranslationService i18n, final NotifyLevelImages img,
final MaskWidgetView mask, final GroupFieldFactory groupFieldFactory) {
this.groupFieldFactory = groupFieldFactory;
- final Builder builder = new BasicTopDialog.Builder(NEWGROUP_WIZARD, false, true).autoscroll(true).title(
- i18n.t("Register a new group"));
+ final Builder builder = new BasicTopDialog.Builder(NEWGROUP_WIZARD, false, true, i18n.getDirection()).autoscroll(
+ true).title(i18n.t("Register a new group"));
builder.icon("k-newgroup-icon");
builder.firstButtonTitle(i18n.t("Register")).firstButtonId(REGISTER_BUTTON);
builder.sndButtonTitle(i18n.t("Cancel")).sndButtonId(CANCEL_BUTTON);
Modified: trunk/src/main/java/cc/kune/core/client/i18n/I18nTranslationServiceMocked.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/i18n/I18nTranslationServiceMocked.java 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/java/cc/kune/core/client/i18n/I18nTranslationServiceMocked.java 2011-11-12 02:58:35 UTC (rev 1603)
@@ -24,6 +24,11 @@
public class I18nTranslationServiceMocked extends I18nTranslationService {
@Override
+ public boolean isRTL() {
+ return false;
+ }
+
+ @Override
public String tWithNT(final String text, final String noteForTranslators) {
final String encodeText = TextUtils.escapeHtmlLight(text);
final String translation = encodeText;
Modified: trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java 2011-11-12 02:58:35 UTC (rev 1603)
@@ -52,6 +52,7 @@
private String currentLanguageCode;
private final Set<Pair<String, String>> earlyTexts;
private final I18nServiceAsync i18nService;
+ private boolean isCurrentLangRTL = false;
private boolean isLangInProperties;
private final KuneConstants kuneConstants;
private HashMap<String, String> lexicon;
@@ -70,19 +71,11 @@
Log.info("Workspace starting with language: " + currentLocale.getLocaleName() + ", isRTL: "
+ LocaleInfo.getCurrentLocale().isRTL() + ", translated langs: "
+ Arrays.toString(LocaleInfo.getAvailableLocaleNames()));
+ isLangInProperties = isInConstantProperties(currentLocale.getLocaleName());
earlyTexts = new HashSet<Pair<String, String>>();
i18nService.getInitialLanguage(locale, new AsyncCallback<I18nLanguageDTO>() {
- private boolean isInConstantProperties(final I18nLanguageDTO currentLang) {
- for (final String lang : LocaleInfo.getAvailableLocaleNames()) {
- if (lang.equals(currentLang.getCode())) {
- return true;
- }
- }
- return false;
- }
-
@Override
public void onFailure(final Throwable caught) {
Log.error("Workspace adaptation to your language failed: " + caught.getMessage());
@@ -93,20 +86,25 @@
currentLang = result;
currentLanguageCode = currentLang.getCode();
session.setCurrentLanguage(currentLang);
- isLangInProperties = isInConstantProperties(currentLang);
+ isLangInProperties = isInConstantProperties(currentLang.getCode());
i18nService.getLexicon(currentLang.getCode(), new AsyncCallback<HashMap<String, String>>() {
@Override
public void onFailure(final Throwable caught) {
- Log.error("Workspace adaptation to your language failed: " + caught.getMessage());
+ Log.error("Workspace adaptation to server proposed language failed: " + caught.getMessage());
}
@Override
public void onSuccess(final HashMap<String, String> result) {
lexicon = result;
session.setCurrentLanguage(currentLang);
- Log.info("Workspace adaptation to language: " + currentLang.getEnglishName() + ", isRTL: "
- + currentLang.getDirection());
- eventBus.fireEvent(new I18nReadyEvent());
+ Log.info("Workspace adaptation to server proposed language: " + currentLang.getEnglishName()
+ + ", isRTL: " + currentLang.getDirection() + " use properties: "
+ + shouldIuseProperties());
+
+ if (!changeToLanguageIfNecessary(getCurrentGWTlanguage(), currentLang.getCode())) {
+ isCurrentLangRTL = currentLang.getDirection().equals(RTL);
+ eventBus.fireEvent(new I18nReadyEvent());
+ }
}
});
session.onUserSignIn(true, new UserSignInHandler() {
@@ -126,19 +124,22 @@
}
});
}
-
});
}
- public void changeCurrentLanguage(final String newLanguage) {
- if (!newLanguage.equals(this.currentLanguageCode)) {
- setCurrentLanguage(newLanguage);
- changeLocale(newLanguage);
- }
- }
+ /**
+ * https://developer.mozilla.org/en/DOM/window.location
+ *
+ * "If you need to change pathname but keep the hash as is, use the replace() method instead, which should work consistently across browsers."
+ *
+ * @param newUrl
+ */
+ private native void changeHref(String newUrl) /*-{
+ // $wnd.location.href = newUrl;
+ $wnd.location.replace(newUrl);
+ }-*/;
/**
- *
* See in:
* http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread
* /5e4e25050d3be984/7035ec39354d06aa?lnk=gst&q=get+locale&rnum=23
@@ -146,35 +147,39 @@
* JSNI method to change the locale of the application - it effectively parses
* the existing URL and creates a new one for the chosen locale.
*
- * It additionally launches any JavaScript debugger that might be attached to
- * the system (Windows only). To disable this functionality just remove the
- * "debugger" line.
- *
* @param newLocale
* String value of the new locale to go to.
*/
- private native void changeLocale(String newLocale)
- // FIXME: this now does not works correctly with hosted mode (and also give
- // some "Opss" in server side)
- /*-{
- // Uncomment the "debugger;" line to see how to set debug statements in JSNI code
- // When in web mode, if your browser has a JavaScript debugger attached, it will
- // launch at this point in the code (when the user changes locale through the menu system).
- // debugger;
+ private void changeLanguageInUrl(final String newLocale) {
+ final String hash = WindowUtils.getLocation().getHash();
+ final String query = WindowUtils.getLocation().getQueryString();
+ final String newUrl = I18nUrlUtils.changeLang(query + (TextUtils.notEmpty(hash) ? hash : ""),
+ newLocale);
+ Log.info("Locale current query: " + query);
+ Log.info("Locale current hash: " + hash);
+ Log.info("Locale new Url: " + newUrl);
+ changeHref("http://" + WindowUtils.getLocation().getHost() + newUrl);
+ }
- // Get the current location
- var currLocation = $wnd.location.toString();
- // Get rid of any GWT History tokens that might be present
- var noHistoryCurrLocArray = currLocation.split("#");
- var noHistoryCurrLoc = noHistoryCurrLocArray[0];
- var currHistory = noHistoryCurrLocArray[1];
- // Get rid of any locale string
- var locArray = noHistoryCurrLoc.split("?");
- // Build the new href location and then send the browser there.
- // $wnd.location.href = locArray[0]+"?locale="+newLocale+"#"+currHistory;
- $wnd.location.href = locArray[0] + "?locale=" + newLocale
- }-*/;
+ public boolean changeToLanguageIfNecessary(final String wantedLang) {
+ return changeToLanguageIfNecessary(currentLang.getCode(), wantedLang);
+ }
+ /**
+ *
+ * @param wantedLanguage
+ * to check and to change to
+ * @return true if we should reload the client with the new language
+ */
+ public boolean changeToLanguageIfNecessary(final String currentLang, final String wantedLang) {
+ if (!currentLang.equals(wantedLang) && isInConstantProperties(wantedLang)) {
+ setCurrentLanguage(wantedLang);
+ changeLanguageInUrl(wantedLang);
+ return true;
+ }
+ return false;
+ }
+
public String formatDateWithLocale(final Date date) {
return formatDateWithLocale(date, false);
}
@@ -199,6 +204,12 @@
return dateFormated;
}
+ private String getCurrentGWTlanguage() {
+ String gwtLang = LocaleInfo.getCurrentLocale().getLocaleName();
+ gwtLang = gwtLang.equals("default") ? "en" : gwtLang;
+ return gwtLang;
+ }
+
public String getCurrentLanguage() {
return currentLanguageCode;
}
@@ -242,6 +253,22 @@
return decodeHtml(translation);
}
+ private boolean isInConstantProperties(final String currentLang) {
+ for (final String lang : LocaleInfo.getAvailableLocaleNames()) {
+ if (lang.equals(currentLang)) {
+ Log.info("Workspace adaptation to language: " + currentLang + " is in properties");
+ return true;
+ }
+ }
+ Log.info("Workspace adaptation to language: " + currentLang + " is not in properties");
+ return false;
+ }
+
+ @Override
+ public boolean isRTL() {
+ return isCurrentLangRTL;
+ }
+
private void save(final String text, final String noteForTranslators) {
i18nService.getTranslation(session.getUserHash(), currentLanguageCode, text, noteForTranslators,
new AsyncCallback<String>() {
@@ -268,6 +295,10 @@
lexicon.put(text, translation);
}
+ private boolean shouldIuseProperties() {
+ return isLangInProperties;
+ }
+
/**
* In production, this method uses a hashmap. In development, if the text is
* not in the hashmap, it makes a server petition (that stores the text
@@ -286,7 +317,7 @@
}
final String encodeText = TextUtils.escapeHtmlLight(text);
- if (isLangInProperties) {
+ if (shouldIuseProperties()) {
// The db translations now are in properties files (more stable)
try {
return kuneConstants.getString(I18nUtils.convertMethodName(text + " " + noteForTranslators));
Added: trunk/src/main/java/cc/kune/core/client/i18n/I18nUrlUtils.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/i18n/I18nUrlUtils.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/i18n/I18nUrlUtils.java 2011-11-12 02:58:35 UTC (rev 1603)
@@ -0,0 +1,36 @@
+package cc.kune.core.client.i18n;
+
+import cc.kune.common.client.utils.TextUtils;
+import cc.kune.common.client.utils.Url;
+import cc.kune.common.client.utils.UrlParam;
+
+public class I18nUrlUtils {
+
+ private static void addLangParam(final String lang, final Url changedUrl) {
+ changedUrl.add(new UrlParam("locale", lang));
+ }
+
+ public static String changeLang(final String url, final String lang) {
+ final String[] hashSplitted = url.split("#");
+ final String hash = hashSplitted.length > 1 ? hashSplitted[1] : "";
+ String query = hashSplitted.length >= 1 ? hashSplitted[0] : (url.equals("#") ? "" : url);
+ query = query.startsWith("?") ? query.substring(1) : query;
+ final String[] params = query.split("&");
+ final Url changedUrl = new Url("");
+ if (!query.contains("locale")) {
+ addLangParam(lang, changedUrl);
+ }
+ for (final String param : params) {
+ if (TextUtils.notEmpty(param)) {
+ final String[] pair = param.split("=");
+ if (pair[0].equals("locale")) {
+ addLangParam(lang, changedUrl);
+ } else {
+ changedUrl.add(new UrlParam(pair[0], pair[1]));
+ }
+ }
+ }
+ return changedUrl.toString() + (url.contains("#") ? "#" + hash : "");
+ }
+
+}
Modified: trunk/src/main/java/cc/kune/core/client/notify/confirm/UserConfirmPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/notify/confirm/UserConfirmPanel.java 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/java/cc/kune/core/client/notify/confirm/UserConfirmPanel.java 2011-11-12 02:58:35 UTC (rev 1603)
@@ -44,8 +44,8 @@
@Inject
public UserConfirmPanel(final I18nTranslationService i18n) {
- dialog = new BasicTopDialog.Builder(DIALOG_ID, false, true).autoscroll(false).firstButtonId(OK_ID).sndButtonId(
- CANCEL_ID).tabIndexStart(1).build();
+ dialog = new BasicTopDialog.Builder(DIALOG_ID, false, true, i18n.getDirection()).autoscroll(false).firstButtonId(
+ OK_ID).sndButtonId(CANCEL_ID).tabIndexStart(1).build();
askLabel = new HTML();
askLabel.addStyleName("k-userconfirm-label");
dialog.getInnerPanel().add(askLabel);
Modified: trunk/src/main/java/cc/kune/core/client/sitebar/AboutKuneDialog.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/AboutKuneDialog.java 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/AboutKuneDialog.java 2011-11-12 02:58:35 UTC (rev 1603)
@@ -47,7 +47,7 @@
@Inject
public AboutKuneDialog(final I18nTranslationService i18n) {
- dialog = new BasicTopDialog.Builder(ABOUT_KUNE_ID, true, true).title(
+ dialog = new BasicTopDialog.Builder(ABOUT_KUNE_ID, true, true, i18n.getDirection()).title(
i18n.tWithNT("About Kune", "title of dialog")).autoscroll(false).firstButtonTitle(i18n.t("Ok")).firstButtonId(
ABOUT_KUNE_BTN_ID).tabIndexStart(1).height("300px").width("410px").build();
dialog.getInnerPanel().add(BINDER.createAndBindUi(this));
Modified: trunk/src/main/java/cc/kune/core/client/sitebar/ErrorsDialog.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/ErrorsDialog.java 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/ErrorsDialog.java 2011-11-12 02:58:35 UTC (rev 1603)
@@ -54,9 +54,9 @@
@Inject
public ErrorsDialog(final I18nTranslationService i18n, final EventBus eventBus) {
- dialog = new BasicTopDialog.Builder(ERROR_LOGGER_ID, true, true).title(i18n.t("Errors info")).autoscroll(
- true).firstButtonTitle(i18n.t("Ok")).firstButtonId(ERROR_LOGGER_BUTTON_ID).tabIndexStart(1).width(
- "400px").height("400px").build();
+ dialog = new BasicTopDialog.Builder(ERROR_LOGGER_ID, true, true, i18n.getDirection()).title(
+ i18n.t("Errors info")).autoscroll(true).firstButtonTitle(i18n.t("Ok")).firstButtonId(
+ ERROR_LOGGER_BUTTON_ID).tabIndexStart(1).width("400px").height("400px").build();
dialog.getTitleText().setText(i18n.t("Info about errors"));
final InlineLabel subTitle = new InlineLabel(
i18n.t("Please copy/paste this info to report problems"));
Modified: trunk/src/main/java/cc/kune/core/client/sitebar/search/EntitySearchPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/search/EntitySearchPanel.java 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/search/EntitySearchPanel.java 2011-11-12 02:58:35 UTC (rev 1603)
@@ -52,8 +52,8 @@
public EntitySearchPanel(final CoreResources img, final I18nUITranslationService i18n) {
this.i18n = i18n;
- dialog = new BasicTopDialog.Builder(DIALOG_ID, false, true).autoscroll(false).firstButtonId(OK_ID).tabIndexStart(
- 1).build();
+ dialog = new BasicTopDialog.Builder(DIALOG_ID, false, true, i18n.getDirection()).autoscroll(false).firstButtonId(
+ OK_ID).tabIndexStart(1).build();
dialog.setFirstBtnText(i18n.t("Close"));
dialog.setSecondBtnVisible(false);
dialog.getFirstBtn().addClickHandler(new ClickHandler() {
Modified: trunk/src/main/java/cc/kune/core/client/sitebar/search/SearchBoxFactory.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/search/SearchBoxFactory.java 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/search/SearchBoxFactory.java 2011-11-12 02:58:35 UTC (rev 1603)
@@ -4,6 +4,7 @@
import cc.kune.core.client.i18n.I18nUITranslationService;
import cc.kune.core.shared.SearcherConstants;
+import com.google.gwt.i18n.client.HasDirection.Direction;
import com.google.gwt.user.client.ui.SuggestBox;
import com.google.gwt.user.client.ui.SuggestOracle.Suggestion;
@@ -43,6 +44,7 @@
suggestBox,
searchOnlyUsers ? i18n.t("Type something to search for users in [%s]", siteCommonName) : i18n.t(
"Type something to search for users and groups in [%s]", siteCommonName));
+ suggestBox.getTextBox().setDirection(i18n.isRTL() ? Direction.RTL : Direction.LTR);
return multivalueSBox;
}
Modified: trunk/src/main/java/cc/kune/core/client/sn/AbstractSNPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/AbstractSNPanel.java 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/java/cc/kune/core/client/sn/AbstractSNPanel.java 2011-11-12 02:58:35 UTC (rev 1603)
@@ -115,7 +115,7 @@
this.avatarDecoratorProv = avatarDecorator;
this.dragController = dragController;
widget = uiBinder.createAndBindUi(this);
- actions = new ActionSimplePanel(guiProvider);
+ actions = new ActionSimplePanel(guiProvider, i18n);
notDrop.register(firstCategoryFlow);
notDrop.register(sndCategoryFlow);
notDrop.register(trdCategoryFlow);
Modified: trunk/src/main/java/cc/kune/core/client/sn/GroupSNPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/GroupSNPanel.java 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/java/cc/kune/core/client/sn/GroupSNPanel.java 2011-11-12 02:58:35 UTC (rev 1603)
@@ -55,7 +55,7 @@
i18n.t("Users pending to be accepted in this group by the administrators"));
sndDeckLabel.setText(i18n.t("This is an orphaned project, if you are interested in contributing please request to join"));
firstDeckLabel.setText(i18n.t("The members of this group are not public"));
- bottomActionsToolbar = new ActionFlowPanel(guiProvider);
+ bottomActionsToolbar = new ActionFlowPanel(guiProvider, i18n);
bottomPanel.add(bottomActionsToolbar);
bottomActionsToolbar.setStyleName("k-sn-bottomPanel-actions");
armor.getEntityToolsNorth().add(widget);
Modified: trunk/src/main/java/cc/kune/core/client/sn/UserSNPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/UserSNPanel.java 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/java/cc/kune/core/client/sn/UserSNPanel.java 2011-11-12 02:58:35 UTC (rev 1603)
@@ -62,7 +62,7 @@
setTooltip(trdCategoryLabel, "NOT USED");
super.setTrdCategoryVisible(false, false);
sndDeckLabel.setText("NOT USED");
- bottomActionsToolbar = new ActionFlowPanel(guiProvider);
+ bottomActionsToolbar = new ActionFlowPanel(guiProvider, i18n);
bottomPanel.add(bottomActionsToolbar);
bottomActionsToolbar.setStyleName("k-sn-bottomPanel-actions");
armor.getEntityToolsNorth().add(widget);
Modified: trunk/src/main/java/cc/kune/core/client/ws/entheader/EntityHeaderPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/ws/entheader/EntityHeaderPanel.java 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/java/cc/kune/core/client/ws/entheader/EntityHeaderPanel.java 2011-11-12 02:58:35 UTC (rev 1603)
@@ -29,6 +29,7 @@
import cc.kune.core.shared.FileConstants;
import cc.kune.core.shared.domain.utils.StateToken;
import cc.kune.core.shared.dto.GroupDTO;
+import cc.kune.core.shared.i18n.I18nTranslationService;
import cc.kune.gspace.client.GSpaceArmor;
import com.google.gwt.user.client.ui.AbstractImagePrototype;
@@ -53,7 +54,7 @@
@Inject
public EntityHeaderPanel(final Provider<FileDownloadUtils> downloadProvider,
final CoreResources images, final GuiProvider bindings, final GSpaceArmor armor,
- final EntityTextLogo entityTextLogo) {
+ final EntityTextLogo entityTextLogo, final I18nTranslationService i18n) {
this.entityTextLogo = entityTextLogo;
mainPanel = new HorizontalPanel();
mainPanel.setWidth("100%");
@@ -63,7 +64,7 @@
vpanel.setWidth("100%");
vpanel.setHorizontalAlignment(HorizontalPanel.ALIGN_RIGHT);
mainPanel.add(entityTextLogo);
- toolbar = new ActionFlowPanel(bindings);
+ toolbar = new ActionFlowPanel(bindings, i18n);
vpanel.add(toolbar);
mainPanel.add(vpanel);
armor.getEntityHeader().add(mainPanel);
Modified: trunk/src/main/java/cc/kune/core/server/i18n/I18nTranslationServiceDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/i18n/I18nTranslationServiceDefault.java 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/java/cc/kune/core/server/i18n/I18nTranslationServiceDefault.java 2011-11-12 02:58:35 UTC (rev 1603)
@@ -20,29 +20,34 @@
package cc.kune.core.server.i18n;
import cc.kune.common.client.utils.TextUtils;
-import cc.kune.core.server.UserSession;
+import cc.kune.core.server.UserSessionManager;
import cc.kune.core.server.manager.I18nTranslationManager;
import cc.kune.core.shared.i18n.I18nTranslationService;
import cc.kune.domain.I18nTranslation;
import com.google.inject.Inject;
-import com.google.inject.Provider;
import com.google.inject.Singleton;
@Singleton
public class I18nTranslationServiceDefault extends I18nTranslationService {
private final I18nTranslationManager translationManager;
+ private final UserSessionManager userSessionManager;
- // private final Provider<UserSession> userSessionProvider;
-
@Inject
public I18nTranslationServiceDefault(final I18nTranslationManager translationManager,
- final Provider<UserSession> userSessionProvider) {
+ final UserSessionManager userSessionManager) {
this.translationManager = translationManager;
- // this.userSessionProvider = userSessionProvider;
+ this.userSessionManager = userSessionManager;
}
+ @Override
+ public boolean isRTL() {
+ return userSessionManager.isUserLoggedIn() ? userSessionManager.getUser().getLanguage().getDirection().equals(
+ RTL)
+ : false;
+ }
+
/**
* If the text is not in the db, it stores the text pending for translation.
*
@@ -72,13 +77,11 @@
@Override
public String tWithNT(final String text, final String noteForTranslators) {
String language;
-
- // final UserSession userSession = userSessionProvider.get();
- // if (userSession.isUserLoggedIn()) {
- // language = userSession.getUser().getLanguage().getCode();
- // } else {
- language = I18nTranslation.DEFAULT_LANG;
- // }
+ if (userSessionManager.isUserLoggedIn()) {
+ language = userSessionManager.getUser().getLanguage().getCode();
+ } else {
+ language = I18nTranslation.DEFAULT_LANG;
+ }
final String encodeText = TextUtils.escapeHtmlLight(text);
String translation = translationManager.getTranslation(language, text, noteForTranslators);
if (translation == UNTRANSLATED_VALUE) {
Modified: trunk/src/main/java/cc/kune/core/server/manager/impl/I18nTranslationManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/impl/I18nTranslationManagerDefault.java 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/java/cc/kune/core/server/manager/impl/I18nTranslationManagerDefault.java 2011-11-12 02:58:35 UTC (rev 1603)
@@ -175,7 +175,8 @@
final String escapedTranslation = TextUtils.escapeHtmlLight(translation);
trans.setText(escapedTranslation);
persist(trans);
- langCache.clear();
+ // reset cache for this lang
+ langCache.remove(lang);
return escapedTranslation;
} else {
throw new DefaultException("Trying to translate a unknown item");
Modified: trunk/src/main/java/cc/kune/core/shared/dto/I18nLanguageDTO.java
===================================================================
--- trunk/src/main/java/cc/kune/core/shared/dto/I18nLanguageDTO.java 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/java/cc/kune/core/shared/dto/I18nLanguageDTO.java 2011-11-12 02:58:35 UTC (rev 1603)
@@ -23,68 +23,68 @@
public class I18nLanguageDTO implements IsSerializable {
- private String code;
- private String englishName;
- private String nativeName;
- private String direction;
- private String pluralization;
- private String dateFormat;
- private String dateFormatShort;
+ private String code;
+ private String dateFormat;
+ private String dateFormatShort;
+ private String direction;
+ private String englishName;
+ private String nativeName;
+ private String pluralization;
- public String getCode() {
- return code;
- }
+ public String getCode() {
+ return code;
+ }
- public String getDateFormat() {
- return dateFormat;
- }
+ public String getDateFormat() {
+ return dateFormat;
+ }
- public String getDateFormatShort() {
- return dateFormatShort;
- }
+ public String getDateFormatShort() {
+ return dateFormatShort;
+ }
- public String getDirection() {
- return direction;
- }
+ public String getDirection() {
+ return direction;
+ }
- public String getEnglishName() {
- return englishName;
- }
+ public String getEnglishName() {
+ return englishName;
+ }
- public String getNativeName() {
- return nativeName;
- }
+ public String getNativeName() {
+ return nativeName;
+ }
- public String getPluralization() {
- return pluralization;
- }
+ public String getPluralization() {
+ return pluralization;
+ }
- public void setCode(final String code) {
- this.code = code;
- }
+ public void setCode(final String code) {
+ this.code = code;
+ }
- public void setDateFormat(String dateFormat) {
- this.dateFormat = dateFormat;
- }
+ public void setDateFormat(final String dateFormat) {
+ this.dateFormat = dateFormat;
+ }
- public void setDateFormatShort(String dateFormatShort) {
- this.dateFormatShort = dateFormatShort;
- }
+ public void setDateFormatShort(final String dateFormatShort) {
+ this.dateFormatShort = dateFormatShort;
+ }
- public void setDirection(final String direction) {
- this.direction = direction;
- }
+ public void setDirection(final String direction) {
+ this.direction = direction;
+ }
- public void setEnglishName(final String englishName) {
- this.englishName = englishName;
- }
+ public void setEnglishName(final String englishName) {
+ this.englishName = englishName;
+ }
- public void setNativeName(final String nativeName) {
- this.nativeName = nativeName;
- }
+ public void setNativeName(final String nativeName) {
+ this.nativeName = nativeName;
+ }
- public void setPluralization(final String pluralization) {
- this.pluralization = pluralization;
- }
+ public void setPluralization(final String pluralization) {
+ this.pluralization = pluralization;
+ }
}
Modified: trunk/src/main/java/cc/kune/core/shared/i18n/I18nTranslationService.java
===================================================================
--- trunk/src/main/java/cc/kune/core/shared/i18n/I18nTranslationService.java 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/java/cc/kune/core/shared/i18n/I18nTranslationService.java 2011-11-12 02:58:35 UTC (rev 1603)
@@ -21,8 +21,12 @@
import cc.kune.common.client.utils.Pair;
+import com.google.gwt.i18n.client.HasDirection.Direction;
+
public abstract class I18nTranslationService {
+ protected static final String RTL = "rtl";
+
// Also in I18nTranslation
protected static final String UNTRANSLATED_VALUE = null;
@@ -32,6 +36,12 @@
return text;
}
+ public Direction getDirection() {
+ return isRTL() ? Direction.RTL : Direction.LTR;
+ }
+
+ public abstract boolean isRTL();
+
/**
* Use [%d] to reference the Integer parameters
*
Modified: trunk/src/main/java/cc/kune/domain/I18nLanguage.java
===================================================================
--- trunk/src/main/java/cc/kune/domain/I18nLanguage.java 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/java/cc/kune/domain/I18nLanguage.java 2011-11-12 02:58:35 UTC (rev 1603)
@@ -45,255 +45,256 @@
@Table(name = "globalize_languages")
public class I18nLanguage implements HasId {
- @Field(index = Index.TOKENIZED, store = Store.NO)
- @Column(name = "code", unique = true)
- private String code;
+ @Field(index = Index.TOKENIZED, store = Store.NO)
+ @Column(name = "code", unique = true)
+ private String code;
- @Column(name = "date_format")
- private String dateFormat;
+ @Column(name = "date_format")
+ private String dateFormat;
- @Column(name = "date_format_short")
- private String dateFormatShort;
+ @Column(name = "date_format_short")
+ private String dateFormatShort;
- @Column(name = "direction")
- private String direction;
+ @Column(name = "direction")
+ private String direction;
- @Field(index = Index.TOKENIZED, store = Store.NO)
- @Column(name = "english_name")
- private String englishName;
+ @Field(index = Index.TOKENIZED, store = Store.NO)
+ @Column(name = "english_name")
+ private String englishName;
- @Column(name = "english_name_locale")
- private String englishNameLocale;
+ @Column(name = "english_name_locale")
+ private String englishNameLocale;
- @Column(name = "english_name_modifier")
- private String englishNameModifier;
+ @Column(name = "english_name_modifier")
+ private String englishNameModifier;
- @Id
- // Is not GeneratedValue
- @DocumentId
- @Column(name = "id", unique = true, nullable = false)
- private Long id;
+ @Id
+ // Is not GeneratedValue
+ @DocumentId
+ @Column(name = "id", unique = true, nullable = false)
+ private Long id;
- @Column(name = "iso_639_1", length = 2)
- private String iso6391;
+ @Column(name = "iso_639_1", length = 2)
+ private String iso6391;
- @Column(name = "iso_639_2", length = 3, unique = true)
- private String iso6392;
+ @Column(name = "iso_639_2", length = 3, unique = true)
+ private String iso6392;
- @Column(name = "iso_639_3", length = 3, unique = true)
- private String iso6393;
+ @Column(name = "iso_639_3", length = 3, unique = true)
+ private String iso6393;
- @Column(name = "macro_language")
- private Boolean macroLanguage;
+ @Column(name = "macro_language")
+ private Boolean macroLanguage;
- @Field(index = Index.TOKENIZED, store = Store.NO)
- @Column(name = "native_name")
- private String nativeName;
+ @Field(index = Index.TOKENIZED, store = Store.NO)
+ @Column(name = "native_name")
+ private String nativeName;
- @Column(name = "native_name_locale")
- private String nativeNameLocale;
+ @Column(name = "native_name_locale")
+ private String nativeNameLocale;
- @Column(name = "native_name_modifier")
- private String nativeNameModifier;
+ @Column(name = "native_name_modifier")
+ private String nativeNameModifier;
- @Pattern(regex = "^[c=\\d?:%!<>&|() ]+$")
- @Column(name = "pluralization")
- @Length(max = 200)
- private String pluralization;
+ @Pattern(regex = "^[c=\\d?:%!<>&|() ]+$")
+ @Column(name = "pluralization")
+ @Length(max = 200)
+ private String pluralization;
- @Column(name = "rfc_3066", unique = true)
- private String rfc3066;
+ @Column(name = "rfc_3066", unique = true)
+ private String rfc3066;
- @Column(name = "scope", length = 1)
- private String scope;
+ @Column(name = "scope", length = 1)
+ private String scope;
- public I18nLanguage() {
- this(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null);
- }
+ public I18nLanguage() {
+ this(null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
+ null);
+ }
- // Only for tests
- public I18nLanguage(final Long id, final String englishName, final String nativeName, final String code) {
- this.id = id;
- this.englishName = englishName;
- this.nativeName = nativeName;
- this.code = code;
- }
+ // Only for tests
+ public I18nLanguage(final Long id, final String englishName, final String nativeName, final String code) {
+ this.id = id;
+ this.englishName = englishName;
+ this.nativeName = nativeName;
+ this.code = code;
+ }
- // code is iso6391 || iso6392 || rfc3306 (see DatabaseInicializer)
- public I18nLanguage(final Long id, final String code, final String direction, final String englishName,
- final String englishNameLocale, final String englishNameModifier, final String iso6391,
- final String iso6392, final String iso6393, final Boolean macroLanguage, final String nativeName,
- final String nativeNameLocale, final String nativeNameModifier, final String pluralization,
- final String rfc3066, final String scope, final String dateFormat) {
- this.id = id;
- this.iso6391 = iso6391;
- this.iso6392 = iso6392;
- this.iso6393 = iso6393;
- this.rfc3066 = rfc3066;
- this.englishName = englishName;
- this.englishNameLocale = englishNameLocale;
- this.englishNameModifier = englishNameModifier;
- this.nativeName = nativeName;
- this.nativeNameLocale = nativeNameLocale;
- this.nativeNameModifier = nativeNameModifier;
- this.macroLanguage = macroLanguage;
- this.direction = direction;
- this.pluralization = pluralization;
- this.scope = scope;
- this.code = code;
- this.dateFormat = dateFormat;
- }
+ // code is iso6391 || iso6392 || rfc3306 (see DatabaseInicializer)
+ public I18nLanguage(final Long id, final String code, final String direction,
+ final String englishName, final String englishNameLocale, final String englishNameModifier,
+ final String iso6391, final String iso6392, final String iso6393, final Boolean macroLanguage,
+ final String nativeName, final String nativeNameLocale, final String nativeNameModifier,
+ final String pluralization, final String rfc3066, final String scope, final String dateFormat) {
+ this.id = id;
+ this.iso6391 = iso6391;
+ this.iso6392 = iso6392;
+ this.iso6393 = iso6393;
+ this.rfc3066 = rfc3066;
+ this.englishName = englishName;
+ this.englishNameLocale = englishNameLocale;
+ this.englishNameModifier = englishNameModifier;
+ this.nativeName = nativeName;
+ this.nativeNameLocale = nativeNameLocale;
+ this.nativeNameModifier = nativeNameModifier;
+ this.macroLanguage = macroLanguage;
+ this.direction = direction;
+ this.pluralization = pluralization;
+ this.scope = scope;
+ this.code = code;
+ this.dateFormat = dateFormat;
+ }
- public String getCode() {
- return code;
- }
+ public String getCode() {
+ return code;
+ }
- public String getDateFormat() {
- return dateFormat;
- }
+ public String getDateFormat() {
+ return dateFormat;
+ }
- public String getDateFormatShort() {
- return dateFormatShort;
- }
+ public String getDateFormatShort() {
+ return dateFormatShort;
+ }
- public String getDirection() {
- return this.direction;
- }
+ public String getDirection() {
+ return this.direction;
+ }
- public String getEnglishName() {
- return this.englishName;
- }
+ public String getEnglishName() {
+ return this.englishName;
+ }
- public String getEnglishNameLocale() {
- return this.englishNameLocale;
- }
+ public String getEnglishNameLocale() {
+ return this.englishNameLocale;
+ }
- public String getEnglishNameModifier() {
- return this.englishNameModifier;
- }
+ public String getEnglishNameModifier() {
+ return this.englishNameModifier;
+ }
- @Override
- public Long getId() {
- return this.id;
- }
+ @Override
+ public Long getId() {
+ return this.id;
+ }
- public String getIso6391() {
- return this.iso6391;
- }
+ public String getIso6391() {
+ return this.iso6391;
+ }
- public String getIso6392() {
- return this.iso6392;
- }
+ public String getIso6392() {
+ return this.iso6392;
+ }
- public String getIso6393() {
- return this.iso6393;
- }
+ public String getIso6393() {
+ return this.iso6393;
+ }
- public Boolean getMacroLanguage() {
- return this.macroLanguage;
- }
+ public Boolean getMacroLanguage() {
+ return this.macroLanguage;
+ }
- public String getNativeName() {
- return this.nativeName;
- }
+ public String getNativeName() {
+ return this.nativeName;
+ }
- public String getNativeNameLocale() {
- return this.nativeNameLocale;
- }
+ public String getNativeNameLocale() {
+ return this.nativeNameLocale;
+ }
- public String getNativeNameModifier() {
- return this.nativeNameModifier;
- }
+ public String getNativeNameModifier() {
+ return this.nativeNameModifier;
+ }
- public String getPluralization() {
- return this.pluralization;
- }
+ public String getPluralization() {
+ return this.pluralization;
+ }
- public String getRfc3066() {
- return this.rfc3066;
- }
+ public String getRfc3066() {
+ return this.rfc3066;
+ }
- public String getScope() {
- return this.scope;
- }
+ public String getScope() {
+ return this.scope;
+ }
- @Column(unique = true)
- public void setCode(final String code) {
- this.code = code;
- }
+ @Column(unique = true)
+ public void setCode(final String code) {
+ this.code = code;
+ }
- public void setDateFormat(final String dateFormat) {
- this.dateFormat = dateFormat;
- }
+ public void setDateFormat(final String dateFormat) {
+ this.dateFormat = dateFormat;
+ }
- public void setDateFormatShort(final String dateFormatShort) {
- this.dateFormatShort = dateFormatShort;
- }
+ public void setDateFormatShort(final String dateFormatShort) {
+ this.dateFormatShort = dateFormatShort;
+ }
- public void setDirection(final String direction) {
- this.direction = direction;
- }
+ public void setDirection(final String direction) {
+ this.direction = direction;
+ }
- public void setEnglishName(final String englishName) {
- this.englishName = englishName;
- }
+ public void setEnglishName(final String englishName) {
+ this.englishName = englishName;
+ }
- public void setEnglishNameLocale(final String englishNameLocale) {
- this.englishNameLocale = englishNameLocale;
- }
+ public void setEnglishNameLocale(final String englishNameLocale) {
+ this.englishNameLocale = englishNameLocale;
+ }
- public void setEnglishNameModifier(final String englishNameModifier) {
- this.englishNameModifier = englishNameModifier;
- }
+ public void setEnglishNameModifier(final String englishNameModifier) {
+ this.englishNameModifier = englishNameModifier;
+ }
- @Override
- public void setId(final Long id) {
- this.id = id;
- }
+ @Override
+ public void setId(final Long id) {
+ this.id = id;
+ }
- public void setIso6391(final String iso6391) {
- this.iso6391 = iso6391;
- }
+ public void setIso6391(final String iso6391) {
+ this.iso6391 = iso6391;
+ }
- public void setIso6392(final String iso6392) {
- this.iso6392 = iso6392;
- }
+ public void setIso6392(final String iso6392) {
+ this.iso6392 = iso6392;
+ }
- public void setIso6393(final String iso6393) {
- this.iso6393 = iso6393;
- }
+ public void setIso6393(final String iso6393) {
+ this.iso6393 = iso6393;
+ }
- public void setMacroLanguage(final Boolean macroLanguage) {
- this.macroLanguage = macroLanguage;
- }
+ public void setMacroLanguage(final Boolean macroLanguage) {
+ this.macroLanguage = macroLanguage;
+ }
- public void setNativeName(final String nativeName) {
- this.nativeName = nativeName;
- }
+ public void setNativeName(final String nativeName) {
+ this.nativeName = nativeName;
+ }
- public void setNativeNameLocale(final String nativeNameLocale) {
- this.nativeNameLocale = nativeNameLocale;
- }
+ public void setNativeNameLocale(final String nativeNameLocale) {
+ this.nativeNameLocale = nativeNameLocale;
+ }
- public void setNativeNameModifier(final String nativeNameModifier) {
- this.nativeNameModifier = nativeNameModifier;
- }
+ public void setNativeNameModifier(final String nativeNameModifier) {
+ this.nativeNameModifier = nativeNameModifier;
+ }
- public void setPluralization(final String pluralization) {
- this.pluralization = pluralization;
- }
+ public void setPluralization(final String pluralization) {
+ this.pluralization = pluralization;
+ }
- public void setRfc3066(final String rfc3066) {
- this.rfc3066 = rfc3066;
- }
+ public void setRfc3066(final String rfc3066) {
+ this.rfc3066 = rfc3066;
+ }
- public void setScope(final String scope) {
- this.scope = scope;
- }
+ public void setScope(final String scope) {
+ this.scope = scope;
+ }
- @Override
- public String toString() {
- return "I18nLanguage[" + englishName + "]";
- }
+ @Override
+ public String toString() {
+ return "I18nLanguage[" + englishName + "]";
+ }
}
Modified: trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.java 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/java/cc/kune/gspace/client/GSpaceArmorImpl.java 2011-11-12 02:58:35 UTC (rev 1603)
@@ -263,13 +263,12 @@
@Override
public void setBackImage(final String url) {
final String bodyProp = "#FFFFFF url('" + url + "') fixed top left";
- // final String bodyProp = "#FFFFFF url('" + url +
- // "') fixed no-repeat top left";
DOM.setStyleAttribute(groupSpaceWrapper.getElement(), CSS.A.BACKGROUND, bodyProp);
}
@Override
public void setContentVisible(final boolean visible) {
+ // FIXME: remove this?
// NotifyUser.info("Visible: " + visible);
// docContainer.getElement().getStyle().setOpacity(visible ? 1d : .0d);
// docFooter.getElement().getStyle().setOpacity(visible ? 1d : .0d);
Modified: trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslatorPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslatorPanel.java 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/java/cc/kune/gspace/client/i18n/I18nTranslatorPanel.java 2011-11-12 02:58:35 UTC (rev 1603)
@@ -29,7 +29,7 @@
final I18nToTranslateGridPanel toTranslateGrid, final I18nTranslatedGridPanel translatedGrid,
final I18nTranslateRecomendPanel transRecommend, final CoreResources res) {
super(TRANSLATOR_PANEL_ID, "", false, false, images, TRANSLATOR_ERROR_ID, i18n.t("Close"), null,
- null, null, transGroup);
+ null, null, transGroup, i18n.getDirection());
setIcon(res.language());
this.lanSelectorPanel = lanSelectorPanel;
this.toTranslateGrid = toTranslateGrid;
Modified: trunk/src/main/java/cc/kune/gspace/client/options/GroupOptionsPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/GroupOptionsPanel.java 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/java/cc/kune/gspace/client/options/GroupOptionsPanel.java 2011-11-12 02:58:35 UTC (rev 1603)
@@ -39,7 +39,7 @@
public GroupOptionsPanel(final EntityHeader entityHeader, final I18nTranslationService i18n,
final NotifyLevelImages images, final GroupOptionsCollection entityOptionsGroup) {
super(GROUP_OP_PANEL_ID, "", false, false, images, GROUP_OPTIONS_ERROR_ID, i18n.t("Close"), null,
- null, null, entityOptionsGroup);
+ null, null, entityOptionsGroup, i18n.getDirection());
this.entityHeader = entityHeader;
super.setIconCls("k-options-icon");
super.setTitle(i18n.t(CoreMessages.GROUP_OPTIONS_DIALOG_TITLE));
Modified: trunk/src/main/java/cc/kune/gspace/client/options/UserOptionsPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/options/UserOptionsPanel.java 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/java/cc/kune/gspace/client/options/UserOptionsPanel.java 2011-11-12 02:58:35 UTC (rev 1603)
@@ -37,7 +37,7 @@
public UserOptionsPanel(final EntityHeader entityHeader, final I18nTranslationService i18n,
final NotifyLevelImages images, final UserOptionsCollection userOptionsGroup) {
super(USER_OP_PANEL_ID, "", false, images, USER_OPTIONS_ERROR_ID, i18n.t("Close"), null, null, null,
- userOptionsGroup);
+ userOptionsGroup, i18n.getDirection());
super.setIconCls("k-options-icon");
super.setTitle(i18n.t(CoreMessages.USER_OPTIONS_DIALOG_TITLE));
}
Modified: trunk/src/main/java/cc/kune/gspace/client/resources/gSpaceArmor.css
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/resources/gSpaceArmor.css 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/java/cc/kune/gspace/client/resources/gSpaceArmor.css 2011-11-12 02:58:35 UTC (rev 1603)
@@ -7,9 +7,6 @@
.mainPanel {
border-top: 2px solid white;
- /* border-bottom: 7px solid transparent;
- border-right: 17px solid transparent;
- border-left: 17px solid transparent; */
}
.k-spaces {
@@ -34,10 +31,6 @@
overflow: hidden;
background-color: #fff !important;
padding: 0px 5px;
- /*kfilter: alpha(opacity = 38) !important;
- -moz-opacity: 0.38 !important;
- -khtml-opacity: 0.38 !important;
- opacity: 0.38 !important; */
}
.entityCentralContainer {
@@ -55,7 +48,6 @@
-webkit-border-bottom-right-radius: 7px;
-moz-border-radius-bottomright: 7px;
border-bottom-right-radius: 7px;
- /* padding: 7px 10px 0px 17px; */
overflow: hidden;
}
@@ -165,15 +157,6 @@
border-top-right-radius: 7px;
}
-/* Fix wave scroll problem
-.docEditor div {
- overflow-y: visible;
-}
-
-div.docEditor div {
- position: static;
-}
-*/
.docFooter {
border-left: 1px solid #959595;
border-right: 1px solid #959595;
@@ -203,16 +186,14 @@
border-bottom-left-radius: 7px;
}
-.entityToolsNorth { /* margin: 10px; */
+.entityToolsNorth {
}
-.entityToolsNorth span { /* font-size: 20px;
- font-weight: bold; */
-
+.entityToolsNorth span {
}
-.entityToolsCenter { /* margin: 10px; */
+.entityToolsCenter {
overflow: visible !important;
padding-top: 10px;
clear: both;
Modified: trunk/src/main/java/cc/kune/gspace/client/resources/gSpaceArmorTheme.css
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/resources/gSpaceArmorTheme.css 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/java/cc/kune/gspace/client/resources/gSpaceArmorTheme.css 2011-11-12 02:58:35 UTC (rev 1603)
@@ -41,8 +41,7 @@
color: c2;
}
-.k-sn-3rd-panel { /* background-color: #a05a2c; */
-
+.k-sn-3rd-panel {
}
.entityToolsCenter span {
Modified: trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeSelectorPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeSelectorPanel.java 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/java/cc/kune/gspace/client/themes/GSpaceThemeSelectorPanel.java 2011-11-12 02:58:35 UTC (rev 1603)
@@ -22,14 +22,15 @@
import cc.kune.common.client.actions.ui.ActionExtensibleView;
import cc.kune.common.client.actions.ui.ActionFlowPanel;
import cc.kune.common.client.actions.ui.bind.GuiProvider;
+import cc.kune.core.shared.i18n.I18nTranslationService;
import com.google.inject.Inject;
public class GSpaceThemeSelectorPanel extends ActionFlowPanel implements ActionExtensibleView {
@Inject
- public GSpaceThemeSelectorPanel(final GuiProvider guiProvider) {
- super(guiProvider);
+ public GSpaceThemeSelectorPanel(final GuiProvider guiProvider, final I18nTranslationService i18n) {
+ super(guiProvider, i18n);
}
}
Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsTablePanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsTablePanel.java 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsTablePanel.java 2011-11-12 02:58:35 UTC (rev 1603)
@@ -85,7 +85,7 @@
final int rowCount = flex.getRowCount();
final FolderItemWidget itemWidget = new FolderItemWidget((ImageResource) item.getIcon(),
item.getText(), item.getStateToken());
- final ActionSimplePanel toolbar = new ActionSimplePanel(guiProvider);
+ final ActionSimplePanel toolbar = new ActionSimplePanel(guiProvider, i18n);
final long modifiedOn = item.getModififiedOn();
if (modifiedOn != FolderViewerView.NO_DATE) {
// String dateFormat = session.getCurrentLanguage().getDateFormatShort();
Modified: trunk/src/main/java/cc/kune/lists/client/actions/NewListAction.java
===================================================================
--- trunk/src/main/java/cc/kune/lists/client/actions/NewListAction.java 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/java/cc/kune/lists/client/actions/NewListAction.java 2011-11-12 02:58:35 UTC (rev 1603)
@@ -51,7 +51,8 @@
@Override
public void actionPerformed(final ActionEvent event) {
- final Builder builder = new PromptTopDialog.Builder(ID, "Name of the new list?", false, true);
+ final Builder builder = new PromptTopDialog.Builder(ID, i18n.t("Name of the new list?"), false,
+ true, i18n.getDirection());
builder.width("300px").height("50px").firstButtonTitle(i18n.t("Create")).sndButtonTitle(
i18n.t("Cancel")).firstButtonId(CREATE_ID).sndButtonId(CANCEL_ID).width(270);
builder.textboxId(TEXTBOX_ID);
Modified: trunk/src/main/java/cc/kune/lists/client/actions/NewListPostAction.java
===================================================================
--- trunk/src/main/java/cc/kune/lists/client/actions/NewListPostAction.java 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/java/cc/kune/lists/client/actions/NewListPostAction.java 2011-11-12 02:58:35 UTC (rev 1603)
@@ -57,7 +57,8 @@
@Override
public void actionPerformed(final ActionEvent event) {
if (session.isLogged()) {
- final Builder builder = new PromptTopDialog.Builder(ID, "Title of the new post?", false, true);
+ final Builder builder = new PromptTopDialog.Builder(ID, i18n.t("Title of the new post?"), false,
+ true, i18n.getDirection());
builder.width("300px").height("50px").firstButtonTitle(i18n.t("Post")).sndButtonTitle(
i18n.t("Cancel")).firstButtonId(CREATE_ID).sndButtonId(CANCEL_ID).width(270);
builder.textboxId(TEXTBOX_ID);
Modified: trunk/src/main/java/cc/kune/pspace/client/PSpacePanel.java
===================================================================
--- trunk/src/main/java/cc/kune/pspace/client/PSpacePanel.java 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/java/cc/kune/pspace/client/PSpacePanel.java 2011-11-12 02:58:35 UTC (rev 1603)
@@ -23,6 +23,7 @@
import cc.kune.common.client.actions.ui.IsActionExtensible;
import cc.kune.common.client.actions.ui.bind.GuiProvider;
import cc.kune.core.client.resources.CoreResources;
+import cc.kune.core.shared.i18n.I18nTranslationService;
import cc.kune.gspace.client.GSpaceArmor;
import cc.kune.pspace.client.PSpacePresenter.PSpaceView;
@@ -66,9 +67,9 @@
@Inject
public PSpacePanel(final GuiProvider guiProvider, final CoreResources res, final GSpaceArmor wsArmor,
- final PSpaceInDevelopment inDevelopment) {
+ final PSpaceInDevelopment inDevelopment, final I18nTranslationService i18n) {
widget = uiBinder.createAndBindUi(this);
- actionPanel = new ActionFlowPanel(guiProvider);
+ actionPanel = new ActionFlowPanel(guiProvider, i18n);
actionPanelContainer.add(actionPanel);
final Element layer = mainPanel.getWidgetContainerElement(messagePanel);
layer.addClassName("k-publicspace-msg");
Modified: trunk/src/main/webapp/ws.html
===================================================================
--- trunk/src/main/webapp/ws.html 2011-11-11 18:50:03 UTC (rev 1602)
+++ trunk/src/main/webapp/ws.html 2011-11-12 02:58:35 UTC (rev 1603)
@@ -3,7 +3,6 @@
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Kune</title>
-
<!-- Use this if you want to force some language as default
<meta name="gwt:property" content="locale=es" />
-->
Added: trunk/src/test/java/cc/kune/core/client/i18n/I18nUrlUtilsTest.java
===================================================================
--- trunk/src/test/java/cc/kune/core/client/i18n/I18nUrlUtilsTest.java (rev 0)
+++ trunk/src/test/java/cc/kune/core/client/i18n/I18nUrlUtilsTest.java 2011-11-12 02:58:35 UTC (rev 1603)
@@ -0,0 +1,38 @@
+package cc.kune.core.client.i18n;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+public class I18nUrlUtilsTest {
+
+ @Test
+ public void simpleLangChange() {
+ assertEquals("?locale=eu", I18nUrlUtils.changeLang("?locale=es", "eu"));
+ assertEquals("?locale=eu#", I18nUrlUtils.changeLang("?locale=es#", "eu"));
+ assertEquals("?locale=eu#hash", I18nUrlUtils.changeLang("?locale=es#hash", "eu"));
+ assertEquals("?locale=eu&some=value&someother=someothervalue#hash",
+ I18nUrlUtils.changeLang("?locale=es&some=value&someother=someothervalue#hash", "eu"));
+ assertEquals("?locale=eu&some=value&someother=someothervalue#",
+ I18nUrlUtils.changeLang("?locale=es&some=value&someother=someothervalue#", "eu"));
+ assertEquals("?locale=eu&log_level=INFO&gwt.codesvr=127.0.0.1:9997#inbox",
+ I18nUrlUtils.changeLang("?locale=pt-BR&log_level=INFO&gwt.codesvr=127.0.0.1:9997#inbox", "eu"));
+ assertEquals("?locale=eu&log_level=INFO&gwt.codesvr=127.0.0.1:9997#admin",
+ I18nUrlUtils.changeLang("?locale=es&log_level=INFO&gwt.codesvr=127.0.0.1:9997#admin", "eu"));
+ assertEquals("?locale=eu", I18nUrlUtils.changeLang("", "eu"));
+ assertEquals("?locale=eu#", I18nUrlUtils.changeLang("#", "eu"));
+ assertEquals("?locale=eu#hash", I18nUrlUtils.changeLang("#hash", "eu"));
+ assertEquals("?locale=eu&some=value&someother=someothervalue#hash",
+ I18nUrlUtils.changeLang("?some=value&someother=someothervalue#hash", "eu"));
+ assertEquals("?locale=eu&some=value&someother=someothervalue#",
+ I18nUrlUtils.changeLang("?some=value&someother=someothervalue#", "eu"));
+ assertEquals("?locale=eu&log_level=INFO&gwt.codesvr=127.0.0.1:9997#inbox",
+ I18nUrlUtils.changeLang("?locale=pt-BR&log_level=INFO&gwt.codesvr=127.0.0.1:9997#inbox", "eu"));
+ assertEquals("?locale=eu&log_level=INFO&gwt.codesvr=127.0.0.1:9997#admin",
+ I18nUrlUtils.changeLang("?log_level=INFO&gwt.codesvr=127.0.0.1:9997#admin", "eu"));
+ assertEquals("?locale=es&log_level=INFO&gwt.codesvr=127.0.0.1:9997#signin(admin)",
+ I18nUrlUtils.changeLang("?locale=ar&log_level=INFO&gwt.codesvr=127.0.0.1:9997"
+ + "#signin(admin)", "es"));
+ }
+
+}
1
0
Author: vjrj_
Date: 2011-11-11 19:50:03 +0100 (Fri, 11 Nov 2011)
New Revision: 1602
Added:
trunk/src/main/java/cc/kune/common/client/utils/MetaUtils.java
trunk/src/main/java/cc/kune/core/client/sn/SimpleContactManager.java
trunk/src/main/java/cc/kune/core/client/sn/actions/conditions/IsBuddieCondition.java
trunk/src/main/java/cc/kune/core/client/sn/actions/conditions/IsNotBuddieCondition.java
trunk/src/test/java/cc/kune/selenium/SeleniumConf.java
trunk/src/test/java/cc/kune/selenium/SeleniumConstants.java
Removed:
trunk/src/main/java/cc/kune/chat/client/actions/conditions/IsBuddieCondition.java
trunk/src/main/java/cc/kune/chat/client/actions/conditions/IsNotBuddieCondition.java
trunk/src/test/java/cc/kune/selenium/tools/SeleniumConstants.java
Modified:
trunk/CREDITS
trunk/INSTALL
trunk/TODO
trunk/src/main/java/cc/kune/chat/client/ChatClient.java
trunk/src/main/java/cc/kune/chat/client/ChatGinModule.java
trunk/src/main/java/cc/kune/chat/client/ChatParts.java
trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java
trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsPresenter.java
trunk/src/main/java/cc/kune/core/client/sn/actions/AddNewBuddiesAction.java
trunk/src/main/java/cc/kune/core/client/sn/actions/WriteToBuddyHeaderButton.java
trunk/src/main/java/cc/kune/core/client/sn/actions/registry/GroupSNAdminsMenuItemsRegistry.java
trunk/src/main/java/cc/kune/core/client/sn/actions/registry/GroupSNCollabsMenuItemsRegistry.java
trunk/src/main/java/cc/kune/core/client/sn/actions/registry/UserSNConfActions.java
trunk/src/main/java/cc/kune/core/client/sn/actions/registry/UserSNMenuItemsRegistry.java
trunk/src/main/java/cc/kune/core/server/manager/impl/I18nTranslationManagerDefault.java
trunk/src/main/java/cc/kune/core/server/rpc/ContentRPC.java
trunk/src/main/resources/kune.properties
trunk/src/test/java/cc/kune/selenium/KuneSeleniumDefaults.java
trunk/src/test/java/cc/kune/selenium/SeleniumModule.java
trunk/src/test/java/cc/kune/selenium/chat/ChatPageObject.java
trunk/src/test/java/cc/kune/selenium/general/EntityHeaderPageObject.java
trunk/src/test/java/cc/kune/selenium/login/AbstractLoginObject.java
trunk/src/test/java/cc/kune/selenium/login/LoginPageObject.java
trunk/src/test/java/cc/kune/selenium/login/RegisterPageObject.java
trunk/src/test/java/cc/kune/selenium/login/RegisterSeleniumTests.java
trunk/src/test/java/cc/kune/selenium/spaces/GroupSpacePageObject.java
trunk/src/test/java/cc/kune/selenium/spaces/SpacesPageObject.java
trunk/src/test/java/cc/kune/selenium/spaces/UserSpacePageObject.java
Log:
NEW - # 144: Resolve some i18n typos (sizes, no translated, etc)
http://kune.ourproject.org/issues/ticket/144
CLOSED - # 89: Include a way to invite/add someone to a group (again)
http://kune.ourproject.org/issues/ticket/89
Some dependencies removed. More work in tests...
Modified: trunk/CREDITS
===================================================================
--- trunk/CREDITS 2011-11-11 02:57:03 UTC (rev 1601)
+++ trunk/CREDITS 2011-11-11 18:50:03 UTC (rev 1602)
@@ -24,5 +24,6 @@
* Daniel Jiménez for the initial help and coordination
* Johnattan Rupire, William Austen Bradbury and Rana Hassan for their web contributions and
translations
+* Bastien Guerry for his French translation
* and <URL:http://ourproject.org> and again <URL:http://xsto.info> and
<URL:http://iepala.es> for sharing with us their resources
Modified: trunk/INSTALL
===================================================================
--- trunk/INSTALL 2011-11-11 02:57:03 UTC (rev 1601)
+++ trunk/INSTALL 2011-11-11 18:50:03 UTC (rev 1602)
@@ -271,6 +271,13 @@
After the section 'Run the server for the first time' you'll be able to use the password of the admin user of the kune instalation (specified in kune.properties), or other admin new users you want to register using kune and configure in the authorizedUsernames attribute.
+=== Configure your DNS for your XMPP service correctly ===
+
+You have to configure your DNS domain adding SRV records for your XMPP services. This permit that your XMPP server comunicates with other similar servers correctly. You should follow:
+http://jabberd.org/1.4/doc/adminguide#dnssrv
+and:
+http://www.google.com/support/a/bin/answer.py?answer=34143
+
==Appendix B: Apache configuration sample==
Enable this modules:
Modified: trunk/TODO
===================================================================
--- trunk/TODO 2011-11-11 02:57:03 UTC (rev 1601)
+++ trunk/TODO 2011-11-11 18:50:03 UTC (rev 1602)
@@ -13,7 +13,6 @@
* SHORT-TERM (URGENT)
** TODO multi uploader
-*** Some links
http://code.google.com/p/gwt-plupload/
http://www.plupload.com/example_all_runtimes.php
http://gxt-multiupload-demo.appspot.com/
@@ -369,6 +368,19 @@
To determine how much memory you can spare for Java, try this: stop your Java process; run free -m; subtract the 'used' value from the "-/+ cache" row from the total memory allocated to your server and then subtract another 'just in case' margin of about 10% of your total server memory. The number you come up with is a rough indicator of the largest -Xmx setting you can use on your server.
* MID-TERM
+** Try to reuse welcome message to anonymous users in GWave:
+Welcome to Google Wave
+
+You are looking at a wave that someone thought you'd be interested in. Google Wave helps you communicate and work together with richly formatted text, photos, videos and more. It lets you all stay on the same page.
+Quick tips
+
+ Move to the next unread blip. Try spacebar.
+ Edit any blip in the wave.Try ctrl-e.
+ Reply to any blip. Try shift-enter or double click text.
+ Reply to any blip. Hover over the bottom of a blip and click the blue bar.
+ Add someone else to this wave, using an email address or their Wave address.
+
+Sign in to Google Wave
** Study mozilla web apps:
https://apps.mozillalabs.com/
** Menubar submenus problem
Modified: trunk/src/main/java/cc/kune/chat/client/ChatClient.java
===================================================================
--- trunk/src/main/java/cc/kune/chat/client/ChatClient.java 2011-11-11 02:57:03 UTC (rev 1601)
+++ trunk/src/main/java/cc/kune/chat/client/ChatClient.java 2011-11-11 18:50:03 UTC (rev 1602)
@@ -19,22 +19,18 @@
*/
package cc.kune.chat.client;
+import cc.kune.core.client.sn.SimpleContactManager;
+
import com.calclab.emite.core.client.xmpp.stanzas.XmppURI;
import com.calclab.emite.xep.muc.client.Room;
-public interface ChatClient {
+public interface ChatClient extends SimpleContactManager {
public static final String CHAT_CLIENT_ICON_ID = "k-chat-icon-id";
- void addNewBuddy(String shortName);
-
- void chat(String shortName);
-
void chat(XmppURI jid);
void doLogin();
- boolean isBuddy(String shortName);
-
boolean isBuddy(XmppURI jid);
boolean isLoggedIn();
Modified: trunk/src/main/java/cc/kune/chat/client/ChatGinModule.java
===================================================================
--- trunk/src/main/java/cc/kune/chat/client/ChatGinModule.java 2011-11-11 02:57:03 UTC (rev 1601)
+++ trunk/src/main/java/cc/kune/chat/client/ChatGinModule.java 2011-11-11 18:50:03 UTC (rev 1602)
@@ -25,6 +25,7 @@
import cc.kune.common.client.ExtendedGinModule;
import cc.kune.core.client.avatar.MediumAvatarDecorator;
import cc.kune.core.client.avatar.SmallAvatarDecorator;
+import cc.kune.core.client.sn.SimpleContactManager;
public class ChatGinModule extends ExtendedGinModule {
/*
@@ -38,6 +39,7 @@
bind(SmallAvatarDecorator.class).to(SmallAvatarDecoratorImpl.class);
bind(MediumAvatarDecorator.class).to(MediumAvatarDecoratorImpl.class);
s(ChatClient.class, ChatClientDefault.class);
+ s(SimpleContactManager.class, ChatClient.class);
s(ChatOptions.class);
s(ChatSitebarActions.class);
s(AddAsBuddieHeaderButton.class);
Modified: trunk/src/main/java/cc/kune/chat/client/ChatParts.java
===================================================================
--- trunk/src/main/java/cc/kune/chat/client/ChatParts.java 2011-11-11 02:57:03 UTC (rev 1601)
+++ trunk/src/main/java/cc/kune/chat/client/ChatParts.java 2011-11-11 18:50:03 UTC (rev 1602)
@@ -28,8 +28,6 @@
import cc.kune.chat.client.actions.StartChatWithMemberAction;
import cc.kune.chat.client.actions.StartChatWithThisBuddyAction;
import cc.kune.chat.client.actions.StartChatWithThisPersonAction;
-import cc.kune.chat.client.actions.conditions.IsBuddieCondition;
-import cc.kune.chat.client.actions.conditions.IsNotBuddieCondition;
import cc.kune.chat.shared.ChatConstants;
import cc.kune.common.client.actions.AbstractAction;
import cc.kune.common.client.actions.PropertyChangeEvent;
@@ -38,10 +36,12 @@
import cc.kune.core.client.init.AppStartEvent;
import cc.kune.core.client.init.AppStartEvent.AppStartHandler;
import cc.kune.core.client.sn.GroupSNPresenter;
+import cc.kune.core.client.sn.actions.conditions.IsBuddieCondition;
import cc.kune.core.client.sn.actions.conditions.IsCurrentStateAGroupCondition;
import cc.kune.core.client.sn.actions.conditions.IsCurrentStateAdministrableCondition;
import cc.kune.core.client.sn.actions.conditions.IsCurrentStateEditableCondition;
import cc.kune.core.client.sn.actions.conditions.IsLoggedCondition;
+import cc.kune.core.client.sn.actions.conditions.IsNotBuddieCondition;
import cc.kune.core.client.sn.actions.conditions.IsNotMeCondition;
import cc.kune.core.client.sn.actions.conditions.IsPersonCondition;
import cc.kune.core.client.sn.actions.registry.GroupSNAdminsMenuItemsRegistry;
Deleted: trunk/src/main/java/cc/kune/chat/client/actions/conditions/IsBuddieCondition.java
===================================================================
--- trunk/src/main/java/cc/kune/chat/client/actions/conditions/IsBuddieCondition.java 2011-11-11 02:57:03 UTC (rev 1601)
+++ trunk/src/main/java/cc/kune/chat/client/actions/conditions/IsBuddieCondition.java 2011-11-11 18:50:03 UTC (rev 1602)
@@ -1,72 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package cc.kune.chat.client.actions.conditions;
-
-import cc.kune.chat.client.ChatClient;
-import cc.kune.common.client.actions.ui.descrip.GuiActionDescrip;
-import cc.kune.common.client.actions.ui.descrip.GuiAddCondition;
-import cc.kune.common.client.errors.UIException;
-import cc.kune.core.client.state.Session;
-import cc.kune.core.shared.dto.GroupDTO;
-import cc.kune.core.shared.dto.UserSimpleDTO;
-
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
-
-@Singleton
-public class IsBuddieCondition implements GuiAddCondition {
-
- private final ChatClient chatClient;
- private final Session session;
-
- @Inject
- public IsBuddieCondition(final Session session, final ChatClient chatClient) {
- this.chatClient = chatClient;
- this.session = session;
- }
-
- private boolean isBuddie(final String targetName) {
- return chatClient.isBuddy(targetName);
- }
-
- private boolean isThisGroupInRoster(final GuiActionDescrip descr) {
- final String targetName = ((GroupDTO) descr.getTarget()).getShortName();
- return isBuddie(targetName);
- }
-
- private boolean isThisPersonInRoster(final GuiActionDescrip descr) {
- final String targetName = ((UserSimpleDTO) descr.getTarget()).getShortName();
- return isBuddie(targetName);
- }
-
- @Override
- public boolean mustBeAdded(final GuiActionDescrip descr) {
- if (session.isNotLogged()) {
- return false;
- }
- if (descr.getTarget() instanceof UserSimpleDTO) {
- return isThisPersonInRoster(descr);
- } else if (descr.getTarget() instanceof GroupDTO) {
- return isThisGroupInRoster(descr);
- } else {
- throw new UIException("Unsupported target");
- }
- }
-}
Deleted: trunk/src/main/java/cc/kune/chat/client/actions/conditions/IsNotBuddieCondition.java
===================================================================
--- trunk/src/main/java/cc/kune/chat/client/actions/conditions/IsNotBuddieCondition.java 2011-11-11 02:57:03 UTC (rev 1601)
+++ trunk/src/main/java/cc/kune/chat/client/actions/conditions/IsNotBuddieCondition.java 2011-11-11 18:50:03 UTC (rev 1602)
@@ -1,42 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package cc.kune.chat.client.actions.conditions;
-
-import cc.kune.chat.client.ChatClient;
-import cc.kune.common.client.actions.ui.descrip.GuiActionDescrip;
-import cc.kune.core.client.state.Session;
-
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
-
-@Singleton
-public class IsNotBuddieCondition extends IsBuddieCondition {
-
- @Inject
- public IsNotBuddieCondition(final Session session, final ChatClient chatClient) {
- super(session, chatClient);
- }
-
- @Override
- public boolean mustBeAdded(final GuiActionDescrip descr) {
- return !super.mustBeAdded(descr);
- }
-
-}
Added: trunk/src/main/java/cc/kune/common/client/utils/MetaUtils.java
===================================================================
--- trunk/src/main/java/cc/kune/common/client/utils/MetaUtils.java (rev 0)
+++ trunk/src/main/java/cc/kune/common/client/utils/MetaUtils.java 2011-11-11 18:50:03 UTC (rev 1602)
@@ -0,0 +1,31 @@
+package cc.kune.common.client.utils;
+
+import com.google.gwt.dom.client.Document;
+import com.google.gwt.dom.client.Element;
+import com.google.gwt.dom.client.MetaElement;
+import com.google.gwt.dom.client.NodeList;
+
+public class MetaUtils {
+
+ /**
+ * Get the value of meta information writen in the html page. The meta
+ * information is a html tag with name of meta usually placed inside the the
+ * head section with two attributes: id and content. For example:
+ *
+ * <code><meta name="name" value="userName" /></code>
+ *
+ * @param id
+ * the 'id' value of the desired meta tag
+ * @return the value of the attribute 'content' or null if not found
+ */
+ public static String get(final String name) {
+ final NodeList<Element> tags = Document.get().getElementsByTagName("meta");
+ for (int i = 0; i < tags.getLength(); i++) {
+ final MetaElement metaTag = ((MetaElement) tags.getItem(i));
+ if (metaTag.getName().equals(name)) {
+ return metaTag.getContent();
+ }
+ }
+ return null;
+ }
+}
Modified: trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java 2011-11-11 02:57:03 UTC (rev 1601)
+++ trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java 2011-11-11 18:50:03 UTC (rev 1602)
@@ -28,6 +28,7 @@
import cc.kune.common.client.log.Log;
import cc.kune.common.client.utils.Location;
+import cc.kune.common.client.utils.MetaUtils;
import cc.kune.common.client.utils.Pair;
import cc.kune.common.client.utils.TextUtils;
import cc.kune.common.client.utils.WindowUtils;
@@ -38,7 +39,6 @@
import cc.kune.core.shared.dto.I18nLanguageDTO;
import cc.kune.core.shared.i18n.I18nTranslationService;
-import com.calclab.emite.browser.client.PageAssist;
import com.google.gwt.core.client.Scheduler;
import com.google.gwt.core.client.Scheduler.RepeatingCommand;
import com.google.gwt.event.shared.EventBus;
@@ -52,6 +52,7 @@
private String currentLanguageCode;
private final Set<Pair<String, String>> earlyTexts;
private final I18nServiceAsync i18nService;
+ private boolean isLangInProperties;
private final KuneConstants kuneConstants;
private HashMap<String, String> lexicon;
private final Session session;
@@ -69,10 +70,19 @@
Log.info("Workspace starting with language: " + currentLocale.getLocaleName() + ", isRTL: "
+ LocaleInfo.getCurrentLocale().isRTL() + ", translated langs: "
+ Arrays.toString(LocaleInfo.getAvailableLocaleNames()));
-
earlyTexts = new HashSet<Pair<String, String>>();
i18nService.getInitialLanguage(locale, new AsyncCallback<I18nLanguageDTO>() {
+
+ private boolean isInConstantProperties(final I18nLanguageDTO currentLang) {
+ for (final String lang : LocaleInfo.getAvailableLocaleNames()) {
+ if (lang.equals(currentLang.getCode())) {
+ return true;
+ }
+ }
+ return false;
+ }
+
@Override
public void onFailure(final Throwable caught) {
Log.error("Workspace adaptation to your language failed: " + caught.getMessage());
@@ -83,6 +93,7 @@
currentLang = result;
currentLanguageCode = currentLang.getCode();
session.setCurrentLanguage(currentLang);
+ isLangInProperties = isInConstantProperties(currentLang);
i18nService.getLexicon(currentLang.getCode(), new AsyncCallback<HashMap<String, String>>() {
@Override
public void onFailure(final Throwable caught) {
@@ -93,7 +104,8 @@
public void onSuccess(final HashMap<String, String> result) {
lexicon = result;
session.setCurrentLanguage(currentLang);
- Log.info("Workspace adaptation to language: " + currentLang.getEnglishName());
+ Log.info("Workspace adaptation to language: " + currentLang.getEnglishName() + ", isRTL: "
+ + currentLang.getDirection());
eventBus.fireEvent(new I18nReadyEvent());
}
});
@@ -114,6 +126,7 @@
}
});
}
+
});
}
@@ -141,6 +154,8 @@
* String value of the new locale to go to.
*/
private native void changeLocale(String newLocale)
+ // FIXME: this now does not works correctly with hosted mode (and also give
+ // some "Opss" in server side)
/*-{
// Uncomment the "debugger;" line to see how to set debug statements in JSNI code
// When in web mode, if your browser has a JavaScript debugger attached, it will
@@ -194,13 +209,39 @@
public String getSiteCommonName() {
if (siteCommonName == null) {
- // FIXME: remove this dependency with PageAssist (emite)
- final String meta = PageAssist.getMeta("kune.default.site.commonname");
+ final String meta = MetaUtils.get("kune.default.site.commonname");
siteCommonName = (meta == null ? t("this site") : t(meta));
}
return siteCommonName;
}
+ private String getTransFromBD(final String text, final String noteForTranslators,
+ final String encodeText) {
+ if (lexicon == null) {
+ Log.warn("i18n not initialized: " + text);
+ earlyTexts.add(Pair.create(text, noteForTranslators));
+ Log.warn("i18n pending translations: " + earlyTexts.size());
+ return text;
+ }
+ String translation = lexicon.get(encodeText);
+ if (lexicon.containsKey(encodeText)) {
+ if (translation == UNTRANSLATED_VALUE) {
+ // Not translated but in db, return text
+ translation = encodeText;
+ }
+ } else {
+ // Not translated and not in db, make a petition for translation
+ if (session.isLogged()) {
+ save(text, noteForTranslators);
+ lexicon.put(encodeText, UNTRANSLATED_VALUE);
+ } else {
+ earlyTexts.add(Pair.create(text, noteForTranslators));
+ }
+ translation = encodeText;
+ }
+ return decodeHtml(translation);
+ }
+
private void save(final String text, final String noteForTranslators) {
i18nService.getTranslation(session.getUserHash(), currentLanguageCode, text, noteForTranslators,
new AsyncCallback<String>() {
@@ -244,32 +285,17 @@
return text;
}
final String encodeText = TextUtils.escapeHtmlLight(text);
- try {
- return kuneConstants.getString(I18nUtils.convertMethodName(text + " " + noteForTranslators));
- } catch (final MissingResourceException e) {
- if (lexicon == null) {
- Log.warn("i18n not initialized: " + text);
- earlyTexts.add(Pair.create(text, noteForTranslators));
- Log.warn("i18n pending translations: " + earlyTexts.size());
- return text;
+
+ if (isLangInProperties) {
+ // The db translations now are in properties files (more stable)
+ try {
+ return kuneConstants.getString(I18nUtils.convertMethodName(text + " " + noteForTranslators));
+ } catch (final MissingResourceException e) {
+ // Ok this concrete translation is not jet available, we use DB
+ return getTransFromBD(text, noteForTranslators, encodeText);
}
- String translation = lexicon.get(encodeText);
- if (lexicon.containsKey(encodeText)) {
- if (translation == UNTRANSLATED_VALUE) {
- // Not translated but in db, return text
- translation = encodeText;
- }
- } else {
- // Not translated and not in db, make a petition for translation
- if (session.isLogged()) {
- save(text, noteForTranslators);
- lexicon.put(encodeText, UNTRANSLATED_VALUE);
- } else {
- earlyTexts.add(Pair.create(text, noteForTranslators));
- }
- translation = encodeText;
- }
- return decodeHtml(translation);
+ } else {
+ return getTransFromBD(text, noteForTranslators, encodeText);
}
}
}
Modified: trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsPresenter.java 2011-11-11 02:57:03 UTC (rev 1601)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/SitebarActionsPresenter.java 2011-11-11 18:50:03 UTC (rev 1602)
@@ -123,7 +123,7 @@
@ProxyEvent
public void onAppStart(final AppStartEvent event) {
- OPTIONS_MENU.putValue(Action.NAME, i18n.t("Options"));
+ OPTIONS_MENU.putValue(Action.NAME, i18n.t("More"));
OPTIONS_MENU.putValue(Action.SMALL_ICON, res.arrowdownsitebar());
OPTIONS_MENU.setStyles("k-no-backimage, k-btn-sitebar");
OPTIONS_MENU.putValue(AbstractGxtMenuGui.MENU_POSITION, AbstractGxtMenuGui.MenuPosition.bl);
Added: trunk/src/main/java/cc/kune/core/client/sn/SimpleContactManager.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/SimpleContactManager.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/sn/SimpleContactManager.java 2011-11-11 18:50:03 UTC (rev 1602)
@@ -0,0 +1,30 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package cc.kune.core.client.sn;
+
+public interface SimpleContactManager {
+
+ void addNewBuddy(String shortName);
+
+ void chat(String shortName);
+
+ boolean isBuddy(String shortName);
+
+}
Modified: trunk/src/main/java/cc/kune/core/client/sn/actions/AddNewBuddiesAction.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/actions/AddNewBuddiesAction.java 2011-11-11 02:57:03 UTC (rev 1601)
+++ trunk/src/main/java/cc/kune/core/client/sn/actions/AddNewBuddiesAction.java 2011-11-11 18:50:03 UTC (rev 1602)
@@ -19,7 +19,6 @@
*/
package cc.kune.core.client.sn.actions;
-import cc.kune.chat.client.ChatClient;
import cc.kune.common.client.actions.AbstractExtendedAction;
import cc.kune.common.client.actions.Action;
import cc.kune.common.client.actions.ActionEvent;
@@ -28,6 +27,7 @@
import cc.kune.core.client.resources.CoreResources;
import cc.kune.core.client.sitebar.search.EntitySearchPanel;
import cc.kune.core.client.sitebar.search.OnEntitySelectedInSearch;
+import cc.kune.core.client.sn.SimpleContactManager;
import cc.kune.core.shared.i18n.I18nTranslationService;
import com.google.inject.Inject;
@@ -38,7 +38,7 @@
@Inject
public AddNewBuddiesAction(final I18nTranslationService i18n, final CoreResources res,
- final AddBuddieSearchPanel searchPanel, final ChatClient chatClient) {
+ final AddBuddieSearchPanel searchPanel, final SimpleContactManager contactsManager) {
this.searchPanel = searchPanel;
putValue(Action.NAME, i18n.t("Add a new buddy"));
putValue(Action.SMALL_ICON, res.addGreen());
@@ -54,7 +54,7 @@
@Override
public void onSuccess() {
- chatClient.addNewBuddy(shortName);
+ contactsManager.addNewBuddy(shortName);
NotifyUser.info("Added as buddy in your contacts. If your buddie adds you also, it will be visible in your network");
}
});
Modified: trunk/src/main/java/cc/kune/core/client/sn/actions/WriteToBuddyHeaderButton.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/actions/WriteToBuddyHeaderButton.java 2011-11-11 02:57:03 UTC (rev 1601)
+++ trunk/src/main/java/cc/kune/core/client/sn/actions/WriteToBuddyHeaderButton.java 2011-11-11 18:50:03 UTC (rev 1602)
@@ -19,11 +19,11 @@
*/
package cc.kune.core.client.sn.actions;
-import cc.kune.chat.client.ChatClient;
import cc.kune.common.client.actions.AbstractAction;
import cc.kune.common.client.actions.PropertyChangeEvent;
import cc.kune.common.client.actions.PropertyChangeListener;
import cc.kune.common.client.actions.ui.descrip.ButtonDescriptor;
+import cc.kune.core.client.sn.SimpleContactManager;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.StateChangedEvent;
import cc.kune.core.client.state.StateChangedEvent.StateChangedHandler;
@@ -38,7 +38,8 @@
@Inject
public WriteToBuddyHeaderButton(final WriteToAction writeToAction, final EntityHeader entityHeader,
- final StateManager stateManager, final Session session, final ChatClient chatEngine) {
+ final StateManager stateManager, final Session session,
+ final SimpleContactManager simpleContactManager) {
final ButtonDescriptor button = new ButtonDescriptor(writeToAction);
// button.setVisible(false);
button.withText("Write to your buddy");
@@ -60,7 +61,7 @@
final GroupDTO group = state.getGroup();
final String groupName = group.getShortName();
final boolean imLogged = session.isLogged();
- final boolean isBuddie = chatEngine.isBuddy(groupName);
+ final boolean isBuddie = simpleContactManager.isBuddy(groupName);
if (imLogged && group.isPersonal() && isBuddie
&& !session.getCurrentUser().getShortName().equals(groupName)) {
button.setTarget(group);
Copied: trunk/src/main/java/cc/kune/core/client/sn/actions/conditions/IsBuddieCondition.java (from rev 1597, trunk/src/main/java/cc/kune/chat/client/actions/conditions/IsBuddieCondition.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/actions/conditions/IsBuddieCondition.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/sn/actions/conditions/IsBuddieCondition.java 2011-11-11 18:50:03 UTC (rev 1602)
@@ -0,0 +1,72 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package cc.kune.core.client.sn.actions.conditions;
+
+import cc.kune.common.client.actions.ui.descrip.GuiActionDescrip;
+import cc.kune.common.client.actions.ui.descrip.GuiAddCondition;
+import cc.kune.common.client.errors.UIException;
+import cc.kune.core.client.sn.SimpleContactManager;
+import cc.kune.core.client.state.Session;
+import cc.kune.core.shared.dto.GroupDTO;
+import cc.kune.core.shared.dto.UserSimpleDTO;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+
+@Singleton
+public class IsBuddieCondition implements GuiAddCondition {
+
+ private final Session session;
+ private final SimpleContactManager simpleContactManager;
+
+ @Inject
+ public IsBuddieCondition(final Session session, final SimpleContactManager simpleContactManager) {
+ this.simpleContactManager = simpleContactManager;
+ this.session = session;
+ }
+
+ private boolean isBuddie(final String targetName) {
+ return simpleContactManager.isBuddy(targetName);
+ }
+
+ private boolean isThisGroupInRoster(final GuiActionDescrip descr) {
+ final String targetName = ((GroupDTO) descr.getTarget()).getShortName();
+ return isBuddie(targetName);
+ }
+
+ private boolean isThisPersonInRoster(final GuiActionDescrip descr) {
+ final String targetName = ((UserSimpleDTO) descr.getTarget()).getShortName();
+ return isBuddie(targetName);
+ }
+
+ @Override
+ public boolean mustBeAdded(final GuiActionDescrip descr) {
+ if (session.isNotLogged()) {
+ return false;
+ }
+ if (descr.getTarget() instanceof UserSimpleDTO) {
+ return isThisPersonInRoster(descr);
+ } else if (descr.getTarget() instanceof GroupDTO) {
+ return isThisGroupInRoster(descr);
+ } else {
+ throw new UIException("Unsupported target");
+ }
+ }
+}
Copied: trunk/src/main/java/cc/kune/core/client/sn/actions/conditions/IsNotBuddieCondition.java (from rev 1597, trunk/src/main/java/cc/kune/chat/client/actions/conditions/IsNotBuddieCondition.java)
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/actions/conditions/IsNotBuddieCondition.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/sn/actions/conditions/IsNotBuddieCondition.java 2011-11-11 18:50:03 UTC (rev 1602)
@@ -0,0 +1,42 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package cc.kune.core.client.sn.actions.conditions;
+
+import cc.kune.common.client.actions.ui.descrip.GuiActionDescrip;
+import cc.kune.core.client.sn.SimpleContactManager;
+import cc.kune.core.client.state.Session;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+
+@Singleton
+public class IsNotBuddieCondition extends IsBuddieCondition {
+
+ @Inject
+ public IsNotBuddieCondition(final Session session, final SimpleContactManager contactManager) {
+ super(session, contactManager);
+ }
+
+ @Override
+ public boolean mustBeAdded(final GuiActionDescrip descr) {
+ return !super.mustBeAdded(descr);
+ }
+
+}
Modified: trunk/src/main/java/cc/kune/core/client/sn/actions/registry/GroupSNAdminsMenuItemsRegistry.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/actions/registry/GroupSNAdminsMenuItemsRegistry.java 2011-11-11 02:57:03 UTC (rev 1601)
+++ trunk/src/main/java/cc/kune/core/client/sn/actions/registry/GroupSNAdminsMenuItemsRegistry.java 2011-11-11 18:50:03 UTC (rev 1602)
@@ -19,7 +19,6 @@
*/
package cc.kune.core.client.sn.actions.registry;
-import cc.kune.chat.client.actions.conditions.IsBuddieCondition;
import cc.kune.common.client.actions.ui.descrip.MenuItemDescriptor;
import cc.kune.core.client.sn.actions.AcceptJoinGroupAction;
import cc.kune.core.client.sn.actions.ChangeToAdminAction;
@@ -30,6 +29,7 @@
import cc.kune.core.client.sn.actions.GotoYourHomePageAction;
import cc.kune.core.client.sn.actions.RemoveMemberAction;
import cc.kune.core.client.sn.actions.WriteToAction;
+import cc.kune.core.client.sn.actions.conditions.IsBuddieCondition;
import cc.kune.core.client.sn.actions.conditions.IsCurrentStateAdministrableCondition;
import cc.kune.core.client.sn.actions.conditions.IsGroupCondition;
import cc.kune.core.client.sn.actions.conditions.IsLoggedCondition;
Modified: trunk/src/main/java/cc/kune/core/client/sn/actions/registry/GroupSNCollabsMenuItemsRegistry.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/actions/registry/GroupSNCollabsMenuItemsRegistry.java 2011-11-11 02:57:03 UTC (rev 1601)
+++ trunk/src/main/java/cc/kune/core/client/sn/actions/registry/GroupSNCollabsMenuItemsRegistry.java 2011-11-11 18:50:03 UTC (rev 1602)
@@ -19,7 +19,6 @@
*/
package cc.kune.core.client.sn.actions.registry;
-import cc.kune.chat.client.actions.conditions.IsBuddieCondition;
import cc.kune.common.client.actions.ui.descrip.MenuItemDescriptor;
import cc.kune.core.client.sn.actions.AcceptJoinGroupAction;
import cc.kune.core.client.sn.actions.ChangeToAdminAction;
@@ -30,6 +29,7 @@
import cc.kune.core.client.sn.actions.GotoYourHomePageAction;
import cc.kune.core.client.sn.actions.RemoveMemberAction;
import cc.kune.core.client.sn.actions.WriteToAction;
+import cc.kune.core.client.sn.actions.conditions.IsBuddieCondition;
import cc.kune.core.client.sn.actions.conditions.IsCurrentStateAdministrableCondition;
import cc.kune.core.client.sn.actions.conditions.IsGroupCondition;
import cc.kune.core.client.sn.actions.conditions.IsLoggedCondition;
Modified: trunk/src/main/java/cc/kune/core/client/sn/actions/registry/UserSNConfActions.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/actions/registry/UserSNConfActions.java 2011-11-11 02:57:03 UTC (rev 1601)
+++ trunk/src/main/java/cc/kune/core/client/sn/actions/registry/UserSNConfActions.java 2011-11-11 18:50:03 UTC (rev 1602)
@@ -50,6 +50,7 @@
@SuppressWarnings("serial")
public class UserSNConfActions extends AbstractSNActionsRegistry {
+ public static final String ADD_BUDDIE_BTN = "user-sn-add-buddie-btn";
public static final MenuDescriptor OPTIONS_MENU = new MenuDescriptor();
public static final SubMenuDescriptor VISIBILITY_SUBMENU = new SubMenuDescriptor();
@@ -76,7 +77,7 @@
final ButtonDescriptor addBuddieBtn = new ButtonDescriptor(addNewBuddiesAction);
- addImpl(addBuddieBtn.withStyles("k-no-backimage"));
+ addImpl(addBuddieBtn.withStyles("k-no-backimage").withId(ADD_BUDDIE_BTN));
stateManager.onStateChanged(true, new StateChangedHandler() {
@Override
Modified: trunk/src/main/java/cc/kune/core/client/sn/actions/registry/UserSNMenuItemsRegistry.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/actions/registry/UserSNMenuItemsRegistry.java 2011-11-11 02:57:03 UTC (rev 1601)
+++ trunk/src/main/java/cc/kune/core/client/sn/actions/registry/UserSNMenuItemsRegistry.java 2011-11-11 18:50:03 UTC (rev 1602)
@@ -19,7 +19,6 @@
*/
package cc.kune.core.client.sn.actions.registry;
-import cc.kune.chat.client.actions.conditions.IsBuddieCondition;
import cc.kune.common.client.actions.ui.descrip.MenuItemDescriptor;
import cc.kune.core.client.sn.actions.AcceptJoinGroupAction;
import cc.kune.core.client.sn.actions.ChangeToAdminAction;
@@ -32,6 +31,7 @@
import cc.kune.core.client.sn.actions.UnJoinFromThisGroupAction;
import cc.kune.core.client.sn.actions.WriteToAction;
import cc.kune.core.client.sn.actions.conditions.ImPartOfGroupCondition;
+import cc.kune.core.client.sn.actions.conditions.IsBuddieCondition;
import cc.kune.core.client.sn.actions.conditions.IsCurrentStateAdministrableCondition;
import cc.kune.core.client.sn.actions.conditions.IsGroupCondition;
import cc.kune.core.client.sn.actions.conditions.IsLoggedCondition;
Modified: trunk/src/main/java/cc/kune/core/server/manager/impl/I18nTranslationManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/impl/I18nTranslationManagerDefault.java 2011-11-11 02:57:03 UTC (rev 1601)
+++ trunk/src/main/java/cc/kune/core/server/manager/impl/I18nTranslationManagerDefault.java 2011-11-11 18:50:03 UTC (rev 1602)
@@ -167,7 +167,6 @@
@Override
public String setTranslation(final Long id, final String translation) throws DefaultException {
-
final I18nTranslation trans = super.find(id);
if (trans != null) {
// Don't permit to translate the def language
Modified: trunk/src/main/java/cc/kune/core/server/rpc/ContentRPC.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/rpc/ContentRPC.java 2011-11-11 02:57:03 UTC (rev 1601)
+++ trunk/src/main/java/cc/kune/core/server/rpc/ContentRPC.java 2011-11-11 18:50:03 UTC (rev 1602)
@@ -240,7 +240,9 @@
} catch (final ToolNotFoundException e) {
throw new ContentNotFoundException();
} catch (final NoDefaultContentException e) {
- return mapper.map(stateService.createNoHome(user, token.getGroup()), StateNoContentDTO.class);
+ return mapper.map(
+ stateService.createNoHome(user, token.hasNothing() ? user.getShortName() : token.getGroup()),
+ StateNoContentDTO.class);
}
}
Modified: trunk/src/main/resources/kune.properties
===================================================================
--- trunk/src/main/resources/kune.properties 2011-11-11 02:57:03 UTC (rev 1601)
+++ trunk/src/main/resources/kune.properties 2011-11-11 18:50:03 UTC (rev 1602)
@@ -50,7 +50,7 @@
# Translation
# Currently, we only manage the translations of the proper kune sofware from our demo, so in other kune sites we disable the translator
-kune.ui-translator.enabled = false
+kune.ui-translator.enabled = true
### Other params
Modified: trunk/src/test/java/cc/kune/selenium/KuneSeleniumDefaults.java
===================================================================
--- trunk/src/test/java/cc/kune/selenium/KuneSeleniumDefaults.java 2011-11-11 02:57:03 UTC (rev 1601)
+++ trunk/src/test/java/cc/kune/selenium/KuneSeleniumDefaults.java 2011-11-11 18:50:03 UTC (rev 1602)
@@ -24,6 +24,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.openqa.selenium.Alert;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
@@ -48,7 +49,6 @@
import cc.kune.selenium.spaces.HomeSpacePageObject;
import cc.kune.selenium.spaces.SpacesPageObject;
import cc.kune.selenium.spaces.UserSpacePageObject;
-import cc.kune.selenium.tools.SeleniumConstants;
import com.google.inject.Guice;
import com.google.inject.Injector;
@@ -58,8 +58,8 @@
public static final Injector INJECTOR = Guice.createInjector(new SeleniumModule());
private static final Log LOG = LogFactory.getLog(KuneSeleniumDefaults.class);
- public static boolean mustCloseFinally = true;
- private final String baseUrl;
+ public static boolean mustCloseFinally = false;
+ private String baseUrl;
protected final ChatPageObject chat;
protected final EntityHeaderPageObject entityHeader;
protected final GroupSpacePageObject groupSpace;
@@ -73,10 +73,23 @@
private final WebDriver webdriver;
public KuneSeleniumDefaults() {
- // baseUrl = "http://kune.beta.iepala.es/?locale=en#";
- // baseUrl =
- // "http://127.0.0.1:8888/?locale=es&log_level=INFO&gwt.codesvr=127.0.0.1:9997#";
- baseUrl = "http://beta.eurosur.org/#";
+ final String localeParam = "?locale=" + SeleniumConf.LANG;
+ switch (SeleniumConf.SITE) {
+ case demo:
+ baseUrl = "http://kune.beta.iepala.es/" + localeParam + "#";
+ break;
+ case localhost:
+ baseUrl = "http://127.0.0.1:8888/" + localeParam + "&log_level=INFO&gwt.codesvr=127.0.0.1:9997#";
+ break;
+ case eurosur:
+ baseUrl = "http://beta.eurosur.org/" + localeParam + "#";
+ break;
+ case kunecc:
+ baseUrl = "http://kune.cc/" + localeParam + "#";
+ break;
+ default:
+ break;
+ }
injector = INJECTOR;
webdriver = injector.getInstance(WebDriver.class);
login = injector.getInstance(LoginPageObject.class);
@@ -99,6 +112,12 @@
PageFactory.initElements(locator, groupSpace);
}
+ public void answerOnNextPrompt(final String answer) {
+ final Alert alert = webdriver.switchTo().alert();
+ alert.sendKeys(answer);
+ alert.accept();
+ }
+
@BeforeMethod
public void beforeMethods(final ITestContext context) {
}
Added: trunk/src/test/java/cc/kune/selenium/SeleniumConf.java
===================================================================
--- trunk/src/test/java/cc/kune/selenium/SeleniumConf.java (rev 0)
+++ trunk/src/test/java/cc/kune/selenium/SeleniumConf.java 2011-11-11 18:50:03 UTC (rev 1602)
@@ -0,0 +1,45 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package cc.kune.selenium;
+
+public final class SeleniumConf {
+
+ public enum Driver {
+ chrome, firefox
+ }
+
+ public enum Lang {
+ en, es
+ }
+
+ public enum Site {
+ demo, eurosur, kunecc, localhost
+ }
+
+ public static final Driver DRIVER = Driver.firefox;
+ /* Configure this for use other lang, site, or driver */
+ public static final Lang LANG = Lang.en;
+ public static final Site SITE = Site.localhost;
+ public static final int TIMEOUT = 25;
+
+ SeleniumConf() {
+ // Final class
+ }
+}
Copied: trunk/src/test/java/cc/kune/selenium/SeleniumConstants.java (from rev 1597, trunk/src/test/java/cc/kune/selenium/tools/SeleniumConstants.java)
===================================================================
--- trunk/src/test/java/cc/kune/selenium/SeleniumConstants.java (rev 0)
+++ trunk/src/test/java/cc/kune/selenium/SeleniumConstants.java 2011-11-11 18:50:03 UTC (rev 1602)
@@ -0,0 +1,37 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package cc.kune.selenium;
+
+public final class SeleniumConstants {
+
+ public static final String FIREFOX_PROFILE_NAME = "selenium";
+ public static final String GWTDEV = "gwt-debug-";
+
+ public static final String INPUT = "-input";
+ /* Configure this for use other lang, site, or driver */
+ public static final String USER_EMAIL = "admin(a)example.org";
+ public static final String USER_LONGNAME = "Administrator";
+ public static final String USER_PASSWD = "easyeasy";
+ public static final String USER_SHORNAME = "admin";
+
+ SeleniumConstants() {
+ // Final class
+ }
+}
Modified: trunk/src/test/java/cc/kune/selenium/SeleniumModule.java
===================================================================
--- trunk/src/test/java/cc/kune/selenium/SeleniumModule.java 2011-11-11 02:57:03 UTC (rev 1601)
+++ trunk/src/test/java/cc/kune/selenium/SeleniumModule.java 2011-11-11 18:50:03 UTC (rev 1602)
@@ -39,7 +39,6 @@
import cc.kune.selenium.login.LoginPageObject;
import cc.kune.selenium.login.RegisterPageObject;
import cc.kune.selenium.spaces.SpacesPageObject;
-import cc.kune.selenium.tools.SeleniumConstants;
import com.google.inject.Singleton;
@@ -47,15 +46,23 @@
@Override
protected void configure() {
- // final RemoteWebDriver driver = createChromeDriver();
- final WebDriver driver = creatFirefoxDriver();
+ WebDriver driver;
+ switch (SeleniumConf.DRIVER) {
+ case chrome:
+ driver = createChromeDriver();
+ break;
+ case firefox:
+ default:
+ driver = creatFirefoxDriver();
+ break;
+ }
final EventFiringWebDriver wrap = new EventFiringWebDriver(driver);
wrap.register(new CustomWebDriverEventListener());
bind(WebDriver.class).toInstance(wrap);
bind(ElementLocatorFactory.class).toInstance(
- new AjaxElementLocatorFactory(wrap, SeleniumConstants.TIMEOUT));
+ new AjaxElementLocatorFactory(wrap, SeleniumConf.TIMEOUT));
// Page Objects here!
bind(LoginPageObject.class).in(Singleton.class);
@@ -67,10 +74,18 @@
final ResourceBundle english = ResourceBundle.getBundle("TestConstants", Locale.ENGLISH);
final ResourceBundle spanish = ResourceBundle.getBundle("TestConstants", new Locale("es"));
Locale.setDefault(Locale.ENGLISH);
- bind(ResourceBundle.class).toInstance(spanish);
+ switch (SeleniumConf.LANG) {
+ case es:
+ bind(ResourceBundle.class).toInstance(spanish);
+ break;
+ case en:
+ default:
+ bind(ResourceBundle.class).toInstance(english);
+ break;
+ }
+
}
- @SuppressWarnings("unused")
private RemoteWebDriver createChromeDriver() {
// http://code.google.com/p/selenium/wiki/ChromeDriver
System.setProperty("webdriver.chrome.driver", "/usr/bin/chromedriver");
Modified: trunk/src/test/java/cc/kune/selenium/chat/ChatPageObject.java
===================================================================
--- trunk/src/test/java/cc/kune/selenium/chat/ChatPageObject.java 2011-11-11 02:57:03 UTC (rev 1601)
+++ trunk/src/test/java/cc/kune/selenium/chat/ChatPageObject.java 2011-11-11 18:50:03 UTC (rev 1602)
@@ -25,7 +25,7 @@
import cc.kune.chat.client.ChatClient;
import cc.kune.selenium.PageObject;
-import cc.kune.selenium.tools.SeleniumConstants;
+import cc.kune.selenium.SeleniumConstants;
import com.calclab.emite.core.client.xmpp.stanzas.XmppURI;
import com.calclab.hablar.core.client.Idify;
Modified: trunk/src/test/java/cc/kune/selenium/general/EntityHeaderPageObject.java
===================================================================
--- trunk/src/test/java/cc/kune/selenium/general/EntityHeaderPageObject.java 2011-11-11 02:57:03 UTC (rev 1601)
+++ trunk/src/test/java/cc/kune/selenium/general/EntityHeaderPageObject.java 2011-11-11 18:50:03 UTC (rev 1602)
@@ -24,7 +24,7 @@
import cc.kune.core.client.ws.entheader.EntityTextLogo;
import cc.kune.selenium.PageObject;
-import cc.kune.selenium.tools.SeleniumConstants;
+import cc.kune.selenium.SeleniumConstants;
public class EntityHeaderPageObject extends PageObject {
Modified: trunk/src/test/java/cc/kune/selenium/login/AbstractLoginObject.java
===================================================================
--- trunk/src/test/java/cc/kune/selenium/login/AbstractLoginObject.java 2011-11-11 02:57:03 UTC (rev 1601)
+++ trunk/src/test/java/cc/kune/selenium/login/AbstractLoginObject.java 2011-11-11 18:50:03 UTC (rev 1602)
@@ -7,7 +7,7 @@
import cc.kune.core.client.sitebar.SitebarSignInLink;
import cc.kune.core.client.sitebar.SitebarSignOutLink;
import cc.kune.selenium.PageObject;
-import cc.kune.selenium.tools.SeleniumConstants;
+import cc.kune.selenium.SeleniumConstants;
public class AbstractLoginObject extends PageObject {
@FindBy(id = SeleniumConstants.GWTDEV + SitebarSignInLink.SITE_SIGN_IN)
Modified: trunk/src/test/java/cc/kune/selenium/login/LoginPageObject.java
===================================================================
--- trunk/src/test/java/cc/kune/selenium/login/LoginPageObject.java 2011-11-11 02:57:03 UTC (rev 1601)
+++ trunk/src/test/java/cc/kune/selenium/login/LoginPageObject.java 2011-11-11 18:50:03 UTC (rev 1602)
@@ -26,7 +26,7 @@
import cc.kune.core.client.auth.AnonUsersManager;
import cc.kune.core.client.auth.SignInForm;
import cc.kune.core.client.auth.SignInPanel;
-import cc.kune.selenium.tools.SeleniumConstants;
+import cc.kune.selenium.SeleniumConstants;
public class LoginPageObject extends AbstractLoginObject {
Modified: trunk/src/test/java/cc/kune/selenium/login/RegisterPageObject.java
===================================================================
--- trunk/src/test/java/cc/kune/selenium/login/RegisterPageObject.java 2011-11-11 02:57:03 UTC (rev 1601)
+++ trunk/src/test/java/cc/kune/selenium/login/RegisterPageObject.java 2011-11-11 18:50:03 UTC (rev 1602)
@@ -26,7 +26,7 @@
import cc.kune.core.client.auth.Register;
import cc.kune.core.client.auth.RegisterForm;
import cc.kune.core.client.auth.RegisterPanel;
-import cc.kune.selenium.tools.SeleniumConstants;
+import cc.kune.selenium.SeleniumConstants;
public class RegisterPageObject extends AbstractLoginObject {
Modified: trunk/src/test/java/cc/kune/selenium/login/RegisterSeleniumTests.java
===================================================================
--- trunk/src/test/java/cc/kune/selenium/login/RegisterSeleniumTests.java 2011-11-11 02:57:03 UTC (rev 1601)
+++ trunk/src/test/java/cc/kune/selenium/login/RegisterSeleniumTests.java 2011-11-11 18:50:03 UTC (rev 1602)
@@ -24,8 +24,8 @@
import cc.kune.core.client.state.SiteTokens;
import cc.kune.selenium.KuneSeleniumTest;
+import cc.kune.selenium.SeleniumConstants;
import cc.kune.selenium.SeleniumUtils;
-import cc.kune.selenium.tools.SeleniumConstants;
import com.calclab.emite.core.client.xmpp.stanzas.XmppURI;
@@ -47,36 +47,52 @@
login.assertIsConnectedAs(prefix);
entityHeader.waitForEntityTitle(longName + prefix);
register.getWelcomeMsg().click();
- // home space
- showTitleSlide(t("Home space (your welcome page)"),
- t("Here you can see a summary of your activity in this site"));
- spaces.homeBtn().click();
+
+ // // home space
+ // showTitleSlide(t("Home space (your welcome page)"),
+ // t("Here you can see a summary of your activity in this site"));
+ // spaces.homeBtn().click();
+ // sleep(2000);
+ // homeSpace.getSndStats().click();
+ // sleep(2000);
+ // homeSpace.getTrdStats().click();
+ // sleep(2000);
+ //
+ // // user space
+ // showTitleSlide(t("User space (your Inbox)"),
+ // t("contents in which you participate"));
+ // showTooltip(spaces.userBtn());
+ // spaces.userBtn().click();
+ // showMsg(t("You can see this like an advanced email system..."));
+ // userSpace.getFirstWave().click();
+ // sleep(2000);
+ // userSpace.getNewWave().click();
+ // showMsg(t("where you can compose personal messages..."));
+ // showMsg(t("but also create contents to publish later"));
+ // userSpace.rootBlipText().sendKeys(t("Congratulations for your report\n\n"));
+ // sleep(1000);
+ // userSpace.getCursive().click();
+ // userSpace.rootBlipText().sendKeys(
+ // t("Hi there, Just to say that I like") +
+ // t("a lot your last report\n\n"));
+ // sleep(1000);
+ // userSpace.getCursive().click();
+ // userSpace.rootBlipText().sendKeys(t("Best\n\nJane"));
+ // sleep(3000);
+ // userSpace.getRootEdit().click();
+ // userSpace.getAddParcipant().click();
+ // answerOnNextPrompt("admin");
+ // sleep(5000);
+
+ // group space
+ showTitleSlide(t("Your personal public space"), t("here you can have your blog, etc"));
+ spaces.groupBtn().click();
+ groupSpace.addBuddieBtn().click();
+ groupSpace.searchEntitiesTextBox().sendKeys("admin\n");
+ groupSpace.searchEntitiesOk().click();
+ groupSpace.firstAvatarOfGroup().click();
sleep(2000);
- homeSpace.getSndStats().click();
- sleep(2000);
- homeSpace.getTrdStats().click();
- sleep(2000);
- // user space
- showTitleSlide(t("User space (your Inbox)"), t("contents in which you participate"));
- showTooltip(spaces.userBtn());
- spaces.userBtn().click();
- showMsg(t("You can see this like an advanced email system..."));
- userSpace.getFirstWave().click();
- sleep(2000);
- userSpace.getNewWave().click();
- showMsg(t("where you can compose personal messages..."));
- showMsg(t("but also create contents to publish later"));
- userSpace.rootBlipText().sendKeys(t("Congratulations for your report\n\n"));
- sleep(1000);
- userSpace.getCursive().click();
- userSpace.rootBlipText().sendKeys(
- t("Hi there, Just to say that I like") + t("a lot your last report\n\n"));
- sleep(1000);
- userSpace.getCursive().click();
- userSpace.rootBlipText().sendKeys(t("Best\n\nJane"));
- sleep(3000);
- userSpace.getRootEdit().click();
// chat
showTitleSlide(t("Chat with your buddies"), t("compatible with gmail and similars"),
SiteTokens.WAVEINBOX);
Modified: trunk/src/test/java/cc/kune/selenium/spaces/GroupSpacePageObject.java
===================================================================
--- trunk/src/test/java/cc/kune/selenium/spaces/GroupSpacePageObject.java 2011-11-11 02:57:03 UTC (rev 1601)
+++ trunk/src/test/java/cc/kune/selenium/spaces/GroupSpacePageObject.java 2011-11-11 18:50:03 UTC (rev 1602)
@@ -22,10 +22,15 @@
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.FindBy;
+import cc.kune.core.client.sitebar.search.EntitySearchPanel;
+import cc.kune.core.client.sn.actions.registry.UserSNConfActions;
import cc.kune.selenium.PageObject;
+import cc.kune.selenium.SeleniumConstants;
public class GroupSpacePageObject extends PageObject {
+ @FindBy(id = SeleniumConstants.GWTDEV + UserSNConfActions.ADD_BUDDIE_BTN)
+ private WebElement addBuddieBtn;
@FindBy(xpath = "//div[2]/div/div[3]/div/span")
private WebElement blogTool;
@FindBy(xpath = "//div[2]/div/div[4]/div/span")
@@ -38,6 +43,10 @@
private WebElement firstAvatarOfGroup;
@FindBy(xpath = "//div[2]/div/div[5]/div/span")
private WebElement listTool;
+ @FindBy(id = SeleniumConstants.GWTDEV + EntitySearchPanel.OK_ID)
+ private WebElement searchEntitiesOk;
+ @FindBy(id = SeleniumConstants.GWTDEV + EntitySearchPanel.ENTITY_SEARCH_TEXTBOX)
+ private WebElement searchEntitiesTextBox;
@FindBy(xpath = "//div[3]/div/button")
private WebElement socialNetOptions;
@FindBy(xpath = "//div[2]/div/div[7]/div/span")
@@ -45,39 +54,51 @@
@FindBy(xpath = "//div[2]/div/div[7]/div/span")
private WebElement wikiTool;
- public WebElement getBlogTool() {
+ public WebElement addBuddieBtn() {
+ return addBuddieBtn;
+ }
+
+ public WebElement blogTool() {
return blogTool;
}
- public WebElement getChatTool() {
+ public WebElement chatTool() {
return chatTool;
}
- public WebElement getDocTool() {
+ public WebElement docTool() {
return docTool;
}
- public WebElement getEventTool() {
+ public WebElement eventTool() {
return eventTool;
}
- public WebElement getFirstAvatarOfGroup() {
+ public WebElement firstAvatarOfGroup() {
return firstAvatarOfGroup;
}
- public WebElement getListTool() {
+ public WebElement listTool() {
return listTool;
}
- public WebElement getSocialNetOptions() {
+ public WebElement searchEntitiesOk() {
+ return searchEntitiesOk;
+ }
+
+ public WebElement searchEntitiesTextBox() {
+ return searchEntitiesTextBox;
+ }
+
+ public WebElement socialNetOptions() {
return socialNetOptions;
}
- public WebElement getTaskTool() {
+ public WebElement taskTool() {
return taskTool;
}
- public WebElement getWikiTool() {
+ public WebElement wikiTool() {
return wikiTool;
}
Modified: trunk/src/test/java/cc/kune/selenium/spaces/SpacesPageObject.java
===================================================================
--- trunk/src/test/java/cc/kune/selenium/spaces/SpacesPageObject.java 2011-11-11 02:57:03 UTC (rev 1601)
+++ trunk/src/test/java/cc/kune/selenium/spaces/SpacesPageObject.java 2011-11-11 18:50:03 UTC (rev 1602)
@@ -24,7 +24,7 @@
import cc.kune.core.client.sitebar.spaces.SpaceSelectorPresenter.SpaceSelectorView;
import cc.kune.selenium.PageObject;
-import cc.kune.selenium.tools.SeleniumConstants;
+import cc.kune.selenium.SeleniumConstants;
public class SpacesPageObject extends PageObject {
Modified: trunk/src/test/java/cc/kune/selenium/spaces/UserSpacePageObject.java
===================================================================
--- trunk/src/test/java/cc/kune/selenium/spaces/UserSpacePageObject.java 2011-11-11 02:57:03 UTC (rev 1601)
+++ trunk/src/test/java/cc/kune/selenium/spaces/UserSpacePageObject.java 2011-11-11 18:50:03 UTC (rev 1602)
@@ -27,6 +27,9 @@
public class UserSpacePageObject extends PageObject {
+ @FindBy(xpath = "//span[2]/span")
+ private WebElement addParticipant;
+
@FindBy(xpath = "//div[2]/div/div[2]/div[3]/div[4]")
private WebElement cursive;
@@ -54,6 +57,10 @@
public UserSpacePageObject() {
}
+ public WebElement getAddParcipant() {
+ return addParticipant;
+ }
+
public WebElement getCursive() {
return cursive;
}
Deleted: trunk/src/test/java/cc/kune/selenium/tools/SeleniumConstants.java
===================================================================
--- trunk/src/test/java/cc/kune/selenium/tools/SeleniumConstants.java 2011-11-11 02:57:03 UTC (rev 1601)
+++ trunk/src/test/java/cc/kune/selenium/tools/SeleniumConstants.java 2011-11-11 18:50:03 UTC (rev 1602)
@@ -1,35 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package cc.kune.selenium.tools;
-
-public final class SeleniumConstants {
- public static final String FIREFOX_PROFILE_NAME = "selenium";
- public static final String GWTDEV = "gwt-debug-";
- public static final String INPUT = "-input";
- public static final int TIMEOUT = 25;
- public static final String USER_EMAIL = "admin(a)example.org";
- public static final String USER_LONGNAME = "Administrator";
- public static final String USER_PASSWD = "easyeasy";
- public static final String USER_SHORNAME = "admin";
-
- SeleniumConstants() {
- // Final class
- }
-}
1
0
Author: vjrj_
Date: 2011-11-11 03:57:03 +0100 (Fri, 11 Nov 2011)
New Revision: 1601
Modified:
trunk/src/main/webapp/others/js/fake-selenium-pointer.js
Log:
pointer improved
Modified: trunk/src/main/webapp/others/js/fake-selenium-pointer.js
===================================================================
--- trunk/src/main/webapp/others/js/fake-selenium-pointer.js 2011-11-10 21:26:37 UTC (rev 1600)
+++ trunk/src/main/webapp/others/js/fake-selenium-pointer.js 2011-11-11 02:57:03 UTC (rev 1601)
@@ -13,7 +13,7 @@
}
function kmoveit() {
- for (inc = 0; inc <= 1; inc = inc + 0.01) {
+ for (inc = 0; inc <= 1 && !(k_cur_x == newx && k_cur_y == newy); inc = inc + 0.01) {
k_cur_x = Math.round(k_cur_x * (1 - inc) + newx * inc);
k_cur_y = Math.round(k_cur_y * (1 - inc) + newy * inc);
window.setTimeout('ksetCursorPos(' + k_cur_x + ", " + k_cur_y + ')',
1
0
Author: vjrj_
Date: 2011-11-10 22:26:37 +0100 (Thu, 10 Nov 2011)
New Revision: 1600
Modified:
trunk/src/main/webapp/others/js/fake-selenium-pointer.js
Log:
Minor change in selenium tests
Modified: trunk/src/main/webapp/others/js/fake-selenium-pointer.js
===================================================================
--- trunk/src/main/webapp/others/js/fake-selenium-pointer.js 2011-11-10 21:22:37 UTC (rev 1599)
+++ trunk/src/main/webapp/others/js/fake-selenium-pointer.js 2011-11-10 21:26:37 UTC (rev 1600)
@@ -27,8 +27,8 @@
}
function ksetCursorPos(x, y) {
- document.getElementById('kcursor').style.top = x + 'px';
- document.getElementById('kcursor').style.left = y + 'px';
+ document.getElementById('kcursor').style.left = x + 'px';
+ document.getElementById('kcursor').style.top = y + 'px';
}
function khideCursor() {
1
0
r1599 - in trunk/src/main: java/cc/kune/core/client/actions/xml java/cc/kune/gspace/client/viewers webapp webapp/others webapp/others/js
by Vicente J. Ruiz Jurado 10 Nov '11
by Vicente J. Ruiz Jurado 10 Nov '11
10 Nov '11
Author: vjrj_
Date: 2011-11-10 22:22:37 +0100 (Thu, 10 Nov 2011)
New Revision: 1599
Added:
trunk/src/main/webapp/others/js/
trunk/src/main/webapp/others/js/fake-selenium-pointer.js
Modified:
trunk/src/main/java/cc/kune/core/client/actions/xml/AddGadgetAction.java
trunk/src/main/java/cc/kune/core/client/actions/xml/NewGadgetAction.java
trunk/src/main/java/cc/kune/core/client/actions/xml/XMLActionsParser.java
trunk/src/main/java/cc/kune/gspace/client/viewers/AbstractFolderViewerPanel.java
trunk/src/main/java/cc/kune/gspace/client/viewers/ContentViewerPanel.java
trunk/src/main/webapp/ws.html
Log:
Modified: trunk/src/main/java/cc/kune/core/client/actions/xml/AddGadgetAction.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/actions/xml/AddGadgetAction.java 2011-11-10 01:10:27 UTC (rev 1598)
+++ trunk/src/main/java/cc/kune/core/client/actions/xml/AddGadgetAction.java 2011-11-10 21:22:37 UTC (rev 1599)
@@ -25,34 +25,22 @@
import cc.kune.core.client.rpcservices.AsyncCallbackSimple;
import cc.kune.core.client.rpcservices.ContentServiceAsync;
import cc.kune.core.client.state.Session;
-import cc.kune.core.client.state.StateManager;
import cc.kune.core.shared.dto.AccessRolDTO;
-import cc.kune.core.shared.i18n.I18nTranslationService;
-import cc.kune.gspace.client.viewers.ContentViewerPresenter;
import com.google.inject.Provider;
public class AddGadgetAction extends RolAction {
private final Provider<ContentServiceAsync> contentService;
- private final ContentViewerPresenter contentViewer;
private final String gadgetName;
- private final I18nTranslationService i18n;
private final Session session;
- private final StateManager stateManager;
- public AddGadgetAction(final Provider<ContentServiceAsync> contentService,
- final ContentViewerPresenter contentViewerPresenter, final StateManager stateManager,
- final Session session, final I18nTranslationService i18n, final AccessRolDTO rol,
- final boolean authNeeded, final String gadgetName, final String iconUrl) {
+ public AddGadgetAction(final Provider<ContentServiceAsync> contentService, final Session session,
+ final AccessRolDTO rol, final boolean authNeeded, final String gadgetName, final String iconUrl) {
super(rol, authNeeded);
this.contentService = contentService;
- this.contentViewer = contentViewerPresenter;
- this.stateManager = stateManager;
- this.i18n = i18n;
this.gadgetName = gadgetName;
this.session = session;
-
putValue(Action.SMALL_ICON, iconUrl);
}
@@ -62,9 +50,6 @@
gadgetName, new AsyncCallbackSimple<Void>() {
@Override
public void onSuccess(final Void result) {
- // NotifyUser.info(i18n.t("[%s] created succesfully", title));
- // stateManager.setRetrievedStateAndGo(result);
- // contentViewer.blinkTitle();
}
});
}
Modified: trunk/src/main/java/cc/kune/core/client/actions/xml/NewGadgetAction.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/actions/xml/NewGadgetAction.java 2011-11-10 01:10:27 UTC (rev 1598)
+++ trunk/src/main/java/cc/kune/core/client/actions/xml/NewGadgetAction.java 2011-11-10 21:22:37 UTC (rev 1599)
@@ -66,8 +66,8 @@
@Override
public void actionPerformed(final ActionEvent event) {
- contentService.get().addNewContentWithGadget(session.getUserHash(), session.getCurrentStateToken(), gadgetName,
- typeId, i18n.t(title), i18n.t(body), new AsyncCallbackSimple<StateContentDTO>() {
+ contentService.get().addNewContentWithGadget(session.getUserHash(), session.getCurrentStateToken(),
+ gadgetName, typeId, i18n.t(title), i18n.t(body), new AsyncCallbackSimple<StateContentDTO>() {
@Override
public void onSuccess(final StateContentDTO result) {
NotifyUser.info(i18n.t("[%s] created succesfully", title));
Modified: trunk/src/main/java/cc/kune/core/client/actions/xml/XMLActionsParser.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/actions/xml/XMLActionsParser.java 2011-11-10 01:10:27 UTC (rev 1598)
+++ trunk/src/main/java/cc/kune/core/client/actions/xml/XMLActionsParser.java 2011-11-10 21:22:37 UTC (rev 1599)
@@ -171,7 +171,7 @@
if (origTypeId.equals(destTypeId)) {
// We are adding a gadget in a doc (nor creating a gadget in a
// container)
- action = new AddGadgetAction(contentService, contentViewer, stateManager, session, i18n,
+ action = new AddGadgetAction(contentService, session,
descrip.getRol().getRolRequired(), descrip.getRol().isAuthNeed(),
extension.getExtName(), extension.getIconUrl());
} else {
Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/AbstractFolderViewerPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/viewers/AbstractFolderViewerPanel.java 2011-11-10 01:10:27 UTC (rev 1598)
+++ trunk/src/main/java/cc/kune/gspace/client/viewers/AbstractFolderViewerPanel.java 2011-11-10 21:22:37 UTC (rev 1599)
@@ -82,6 +82,7 @@
@Override
public void clear() {
gsArmor.getSubheaderToolbar().clear();
+ gsArmor.getDocFooterToolbar().clear();
UiUtils.clear(gsArmor.getDocContainer());
UiUtils.clear(gsArmor.getDocHeader());
}
Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/ContentViewerPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/viewers/ContentViewerPanel.java 2011-11-10 01:10:27 UTC (rev 1598)
+++ trunk/src/main/java/cc/kune/gspace/client/viewers/ContentViewerPanel.java 2011-11-10 21:22:37 UTC (rev 1599)
@@ -132,6 +132,7 @@
public void clear() {
onlyViewPanel.setHTML("");
gsArmor.getSubheaderToolbar().clear();
+ gsArmor.getDocFooterToolbar().clear();
UiUtils.clear(gsArmor.getDocContainer());
UiUtils.clear(gsArmor.getDocHeader());
waveClear();
Added: trunk/src/main/webapp/others/js/fake-selenium-pointer.js
===================================================================
--- trunk/src/main/webapp/others/js/fake-selenium-pointer.js (rev 0)
+++ trunk/src/main/webapp/others/js/fake-selenium-pointer.js 2011-11-10 21:22:37 UTC (rev 1599)
@@ -0,0 +1,41 @@
+// This is only used for selenium tests (remove in production)
+var newx;
+var newy;
+var k_cur_x;
+var k_cur_y;
+
+function kmove(x, y) {
+ // We adjust a litte bit to put the pointer close to the ui object but not
+ // very close
+ newx = x + 2;
+ newy = y + 10;
+ kmoveit();
+}
+
+function kmoveit() {
+ for (inc = 0; inc <= 1; inc = inc + 0.01) {
+ k_cur_x = Math.round(k_cur_x * (1 - inc) + newx * inc);
+ k_cur_y = Math.round(k_cur_y * (1 - inc) + newy * inc);
+ window.setTimeout('ksetCursorPos(' + k_cur_x + ", " + k_cur_y + ')',
+ 2000 * inc);
+ }
+}
+
+function ksetCursor(x, y) {
+ k_cur_x = x;
+ k_cur_y = y;
+}
+
+function ksetCursorPos(x, y) {
+ document.getElementById('kcursor').style.top = x + 'px';
+ document.getElementById('kcursor').style.left = y + 'px';
+}
+
+function khideCursor() {
+ document.getElementById('kcursor').style.visibility = 'hidden';
+}
+
+function kshowCursor() {
+ document.getElementById('kcursor').style.visibility = 'visible';
+}
+ksetCursor(0, 0);
\ No newline at end of file
Modified: trunk/src/main/webapp/ws.html
===================================================================
--- trunk/src/main/webapp/ws.html 2011-11-10 01:10:27 UTC (rev 1598)
+++ trunk/src/main/webapp/ws.html 2011-11-10 21:22:37 UTC (rev 1599)
@@ -279,85 +279,14 @@
<![endif]-->
</head>
<body>
+ <!-- // This is only used for selenium tests (comment/remove in production) -->
<div id="kcursor"
style="visibility: hidden; position: absolute; z-Index: 100001; height: 0; width: 0">
<img src="/others/cursor-orange.png">
</div>
- <script type="text/javascript">
- <!-- // This is only used for tests (comment/remove in production)
- var newx;
- var newy;
- var k_cur_x;
- var k_cur_y;
- var xGreat;
- var x_inc;
- var y_inc;
- var diff_x;
- var diff_y;
- function kmove(x, y) {
- newx = x - 18 + 20;
- newy = y - 7 + 17;
- kmoveit();
- }
+ <script src="others/js/fake-selenium-pointer.js"></script>
+ <!-- // End : This is only used for selenium tests (comment/remove in production) -->
- function recheck() {
- if (newx >= k_cur_x) {
- x_inc = 1;
- } else {
- x_inc = -1;
- }
- if (newy >= k_cur_y) {
- y_inc = 1;
- } else {
- y_inc = -1;
- }
- diff_x = newx - k_cur_x * x_inc;
- diff_y = newy - k_cur_y * y_inc;
- xGreat = diff_x > diff_y;
- }
-
- function kmoveit() {
- recheck();
- if (k_cur_x != newx)
- if (xGreat) {
- k_cur_x = k_cur_x + 3 * x_inc;
- } else {
- k_cur_x = Math.round(k_cur_y * newx / newy);
- }
- if (k_cur_y != newy)
- if (xGreat) {
- k_cur_y = Math.round(k_cur_x * newy / newx);
- } else {
- k_cur_y = k_cur_y + 3 * y_inc;
- }
-
- ksetCursorPos(k_cur_x, k_cur_y);
-
- if ((diff_x > 3) || (diff_y > 3)) {
- window.setTimeout('kmoveit()', 1);
- }
- }
-
- function ksetCursorPos(x, y) {
- document.getElementById('kcursor').style.top = k_cur_y + 'px';
- document.getElementById('kcursor').style.left = k_cur_x + 'px';
- }
- function ksetCursor(x, y) {
- k_cur_x = x;
- k_cur_y = y;
- ksetCursorPos(x, y);
- }
-
- function khideCursor() {
- document.getElementById('kcursor').style.visibility = 'hidden';
- }
-
- function kshowCursor() {
- document.getElementById('kcursor').style.visibility = 'visible';
- }
- ksetCursor(0, 0);
- //-->
- </script>
<!-- Banner for wave errors -->
<div class="banner" id="banner"></div>
<!-- Autocomplete user/pass -->
@@ -419,7 +348,7 @@
<div id="k-home-summary-right">
<div id="k-home-ini">
Welcome! This site is a Kune node. Kune, which means
- "together" in esperanto, it's a network of interconnected
+ "together" in esperanto, is a network of interconnected
sites like this one, where you can <strong>communicate,
share, collaborate with others and create your web
spaces easily</strong>. <a href="#signin">Join!</a>
1
0
Author: vjrj_
Date: 2011-11-10 02:10:27 +0100 (Thu, 10 Nov 2011)
New Revision: 1598
Added:
trunk/src/main/java/cc/kune/core/client/sitebar/search/EntitySearchPanel.java
trunk/src/main/java/cc/kune/core/client/sitebar/search/OnEntitySelectedInSearch.java
trunk/src/main/java/cc/kune/core/client/sitebar/search/OnExactMatch.java
trunk/src/main/java/cc/kune/core/client/sitebar/search/SearchBoxFactory.java
trunk/src/main/java/cc/kune/core/client/sn/actions/AddBuddieSearchPanel.java
trunk/src/main/java/cc/kune/core/client/sn/actions/AddEntityToThisGroupAction.java
trunk/src/main/java/cc/kune/core/client/sn/actions/AddMemberSearchPanel.java
Modified:
trunk/
trunk/src/main/java/cc/kune/chat/client/ChatClientTool.java
trunk/src/main/java/cc/kune/chat/client/actions/StartAssemblyWithMembersAction.java
trunk/src/main/java/cc/kune/core/client/CoreGinModule.java
trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants.java
trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants.properties
trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants_es.properties
trunk/src/main/java/cc/kune/core/client/sitebar/search/MultivalueSuggestBox.java
trunk/src/main/java/cc/kune/core/client/sitebar/search/SitebarSearchPanel.java
trunk/src/main/java/cc/kune/core/client/sn/actions/AddNewBuddiesAction.java
trunk/src/main/java/cc/kune/core/client/sn/actions/UnJoinFromThisGroupAction.java
trunk/src/main/java/cc/kune/core/client/sn/actions/registry/GroupSNConfActions.java
trunk/src/main/java/cc/kune/core/server/manager/impl/I18nTranslationManagerDefault.java
trunk/src/main/java/cc/kune/core/shared/SearcherConstants.java
trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsTablePanel.java
trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerPresenter.java
trunk/src/main/java/cc/kune/wiki/client/WikiClientTool.java
Log:
CLOSED - # 114: Explain properly the tools
http://kune.ourproject.org/issues/ticket/114
CLOSED - # 89: Include a way to invite/add someone to a group (again)
http://kune.ourproject.org/issues/ticket/89
Property changes on: trunk
___________________________________________________________________
Name: svn:ignore
- pmd-eclipse.log
.pmd
www-test
screenlog.0
client
public
target
target-local
Main-compile
.settings
.gwt-cache
repository
derby.log
star-yellow-grey.png
run.sh
tomcat
gwt-out
synccss.sh
.externalToolBuilders
.wtpmodules
www
testRepository
kune-OLD-jcr
KuneApp.launch
KuneApp NOSERVER.launch
old_src
org.ourproject.kune.app.Kune
org.ourproject.kune.iml
org.ourproject.kune.ipr
org.ourproject.kune.iws
nbproject
hibernate.reveng.xml
.gwt-tmp
target-eclipse
.checkstyle
.classpath-bien
pom.xml.*
.gwt
.jdee_sources
.jdee_classpath
prj.el
.factorypath
.apt_generated
target.old
_accounts
_certificates
_deltas
logs
test-output
.recommenders
_sessions
chromedriver.log
+ pmd-eclipse.log
.pmd
www-test
screenlog.0
client
public
target
target-local
Main-compile
.settings
.gwt-cache
repository
derby.log
star-yellow-grey.png
run.sh
tomcat
gwt-out
synccss.sh
.externalToolBuilders
.wtpmodules
www
testRepository
kune-OLD-jcr
KuneApp.launch
KuneApp NOSERVER.launch
old_src
org.ourproject.kune.app.Kune
org.ourproject.kune.iml
org.ourproject.kune.ipr
org.ourproject.kune.iws
nbproject
hibernate.reveng.xml
.gwt-tmp
target-eclipse
.checkstyle
.classpath-bien
pom.xml.*
.gwt
.jdee_sources
.jdee_classpath
prj.el
.factorypath
.apt_generated
target.old
_accounts
_certificates
_deltas
logs
test-output
.recommenders
_sessions
chromedriver.log
kune-screencast*
Modified: trunk/src/main/java/cc/kune/chat/client/ChatClientTool.java
===================================================================
--- trunk/src/main/java/cc/kune/chat/client/ChatClientTool.java 2011-11-09 15:19:34 UTC (rev 1597)
+++ trunk/src/main/java/cc/kune/chat/client/ChatClientTool.java 2011-11-10 01:10:27 UTC (rev 1598)
@@ -23,9 +23,9 @@
import static cc.kune.chat.shared.ChatConstants.TYPE_ROOM;
import cc.kune.chat.client.resources.ChatResources;
import cc.kune.common.client.utils.TextUtils;
+import cc.kune.core.client.i18n.I18nUITranslationService;
import cc.kune.core.client.registry.ContentCapabilitiesRegistry;
import cc.kune.core.client.resources.nav.NavResources;
-import cc.kune.core.shared.i18n.I18nTranslationService;
import cc.kune.gspace.client.tool.FoldableAbstractClientTool;
import cc.kune.gspace.client.tool.selector.ToolSelector;
@@ -36,15 +36,16 @@
private final ChatResources res;
@Inject
- public ChatClientTool(final I18nTranslationService i18n, final ToolSelector toolSelector,
+ public ChatClientTool(final I18nUITranslationService i18n, final ToolSelector toolSelector,
final ContentCapabilitiesRegistry cntCapRegistry, final NavResources navResources,
final ChatResources res) {
// FIXME: change this in ChatConstants and in db via migration
super(
NAME,
i18n.t("chatrooms"),
- i18n.t("A 'room' where you can have a group-chat with many users at once. Rooms can be public or private. Users can be from this site or other sites (compatible with gmail chat)"),
- toolSelector, cntCapRegistry, i18n, navResources);
+ i18n.t(
+ "A 'room' where you can have a group-chat with many users at once. Rooms can be public or private. Users can be from [%s] or other sites (compatible with gmail chat)",
+ i18n.getSiteCommonName()), toolSelector, cntCapRegistry, i18n, navResources);
this.res = res;
registerIcons();
}
Modified: trunk/src/main/java/cc/kune/chat/client/actions/StartAssemblyWithMembersAction.java
===================================================================
--- trunk/src/main/java/cc/kune/chat/client/actions/StartAssemblyWithMembersAction.java 2011-11-09 15:19:34 UTC (rev 1597)
+++ trunk/src/main/java/cc/kune/chat/client/actions/StartAssemblyWithMembersAction.java 2011-11-10 01:10:27 UTC (rev 1598)
@@ -36,7 +36,8 @@
@Override
public void actionPerformed(final ActionEvent event) {
NotifyUser.askConfirmation(i18n.t("Please confirm"),
- i18n.t("Start a collaborative document for the meeting minutes?"), new SimpleResponseCallback() {
+ i18n.t("Do you want to collaboratively edit your meeting minutes in a new document?"),
+ new SimpleResponseCallback() {
@Override
public void onCancel() {
}
@@ -49,7 +50,7 @@
false,
i18n.t("Meeting minutes of [%s] on [%s]", session.getCurrentGroupShortName(),
DateTimeFormat.getFormat(PredefinedFormat.DATE_LONG).format(new Date())),
- i18n.t("You can collaboratively edit this document with the meeting minutes."),
+ i18n.t("You can collaboratively edit the meeting minutes, shown in this document."),
new AsyncCallbackSimple<String>() {
@Override
public void onSuccess(final String url) {
Modified: trunk/src/main/java/cc/kune/core/client/CoreGinModule.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/CoreGinModule.java 2011-11-09 15:19:34 UTC (rev 1597)
+++ trunk/src/main/java/cc/kune/core/client/CoreGinModule.java 2011-11-10 01:10:27 UTC (rev 1598)
@@ -84,6 +84,8 @@
import cc.kune.core.client.sn.GroupSNPresenter;
import cc.kune.core.client.sn.UserSNPanel;
import cc.kune.core.client.sn.UserSNPresenter;
+import cc.kune.core.client.sn.actions.AddBuddieSearchPanel;
+import cc.kune.core.client.sn.actions.AddMemberSearchPanel;
import cc.kune.core.client.sn.actions.registry.GroupSNAdminsMenuItemsRegistry;
import cc.kune.core.client.sn.actions.registry.GroupSNCollabsMenuItemsRegistry;
import cc.kune.core.client.sn.actions.registry.GroupSNConfActions;
@@ -177,8 +179,8 @@
RegisterPresenter.RegisterProxy.class);
bindPresenter(UserConfirmPresenter.class, UserConfirmPresenter.UserConfirmView.class,
UserConfirmPanel.class, UserConfirmPresenter.UserConfirmProxy.class);
- bindPresenter(SubtitlesManager.class, SubtitlesManager.SubtitlesView.class,
- SubtitlesWidget.class, SubtitlesManager.SubtitlesProxy.class);
+ bindPresenter(SubtitlesManager.class, SubtitlesManager.SubtitlesView.class, SubtitlesWidget.class,
+ SubtitlesManager.SubtitlesProxy.class);
bind(UserPassAutocompleteManager.class).to(UserPassAutocompleteManagerImpl.class).in(Singleton.class);
bind(SignIn.class).to(SignInPresenter.class).in(Singleton.class);
@@ -225,6 +227,8 @@
s(UserSNMenuItemsRegistry.class);
s(GroupSNConfActions.class);
s(UserSNConfActions.class);
+ s(AddBuddieSearchPanel.class);
+ s(AddMemberSearchPanel.class);
s(SiteUserOptionsPresenter.class);
s(SiteUserOptions.class, SiteUserOptionsPresenter.class);
Modified: trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants.java 2011-11-09 15:19:34 UTC (rev 1597)
+++ trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants.java 2011-11-10 01:10:27 UTC (rev 1598)
@@ -1,8 +1,5 @@
package cc.kune.core.client.i18n;
-/**
- * Autogenerated by trunk/bin/i18n-db2gwt.sh, please not edit directly
- */
import com.google.gwt.i18n.client.ConstantsWithLookup;
/**
@@ -15,10 +12,14 @@
String aboutParam();
+ String aCalendarToScheduleActivitiesAndEvents();
+
String acceptThisMember();
String aClosedGroupIsAPrivateProjectWhichContentsAreOnlyAccessibleToItsMembersByDefault();
+ String aCollaborativeToDoListForTheGroupAnyGroupMemberCanParticipateInAnyProposedTaskAddOthersToATaskCommen();
+
String aCommunityIsAGroupOfUsersWithSharedInterestsForInstanceTheEnvironmentalCommunityOrTheLgbtCommunityIt();
String aContentWithTheSameNameAlreadyExistPleaseRenameIt();
@@ -31,6 +32,8 @@
String addGadget();
+ String aDecentralizedWayToOfferOrAskForServicesAndGoodsToYourGroupsOrToAnyoneBarteringMeansTheExchangeOfGoo();
+
String administrators();
String allowAnyUsesOfYourWorkIncludingCommercial();
@@ -57,6 +60,8 @@
String areYouSureYouWantThisItWillBeDeletedWithAllItsContents();
+ String aRoomWhereYouCanHaveAGroupChatWithManyUsersAtOnceRoomsCanBePublicOrPrivateUsersCanBeFromParamOrOther();
+
String aShortTermTaskSample();
String autoAcceptRequestToJoin();
@@ -79,6 +84,8 @@
String blogSample();
+ String blogsAreAChronologicalListOfPostsOrderedByDateAboutASpecificTopicEachPostCanBeCommentedByTheVisitors();
+
String blueAThemeName();
String buddies();
@@ -237,6 +244,8 @@
String error();
+ String errorSettingTheLogo();
+
String errorsInfo();
String eurosurAThemeName();
@@ -275,6 +284,8 @@
String helpWithTheTranslation();
+ String hereYouCanCreateOrUploadYourPersonalGroupOrPublicDocumentsTheseDocumentsCanBeEditedAndCommentedColla();
+
String hereYouCanSelectTheToolsUsed();
String highcontrastAThemeName();
@@ -311,6 +322,8 @@
String lists();
+ String listsBehaveLikeAMailingListOrAForumYouCanSubscribeAndDiscussAboutSpecificTopics();
+
String loading();
String longName();
@@ -323,6 +336,8 @@
String markAsDone();
+ String markAsNotDone();
+
String media();
String meetingMinutesOfParamOnParam();
@@ -345,6 +360,8 @@
String moderateRequestToJoin();
+ String more();
+
String moving();
String name();
@@ -429,6 +446,8 @@
String onlyAdministrators();
+ String onlyForAuthorizedTranslators();
+
String onlyMembers();
String onlyToAuthorizedTranslators();
@@ -683,6 +702,8 @@
String thisUserHasNotWrittenItsBiographyYet();
+ String thisUserIsAlreadyAGroupMember();
+
String thisUserSBuddies();
String thisUserSGroupsAndBuddies();
@@ -761,6 +782,8 @@
String wikiPageSample();
+ String wikiPagesAreDocumentsThatCanBeEditedByAnyVisitorInParamInsteadOfOnlyByTheGroupThisAcceleratesUpdatin();
+
String withACreativeCommonsLicenseYouKeepYourCopyrightButAllowPeopleToCopyAndDistributeYourWorkProvidedThey();
String writeToTheAdministratorsOfThisGroup();
@@ -787,6 +810,8 @@
String youCannotDisableThisToolBecauseItSWhereYourHomePageIsLocatedToDoThatYouHaveToSelectOtherContentAsThe();
+ String youDidNotSignInSoYouCanJustSeeSomePublicContentsInParamButNotEditOrCollaborateWithOthersPleaseParamO();
+
String yourGroups();
String yourHomepage();
Modified: trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants.properties
===================================================================
--- trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants.properties 2011-11-09 15:19:34 UTC (rev 1597)
+++ trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants.properties 2011-11-10 01:10:27 UTC (rev 1598)
@@ -396,4 +396,18 @@
addGadget = Add Gadget
theSocialNetworkOfThisUserIsNotPublic = The social network of this user is not public
newDoc = New doc
-clickToGoHereOrDropContentsHereToMoveThem = Click to go here or drop contents here to move them
\ No newline at end of file
+clickToGoHereOrDropContentsHereToMoveThem = Click to go here or drop contents here to move them
+thisUserIsAlreadyAGroupMember = This user is already a group member
+markAsNotDone = Mark as not done
+more = More
+youDidNotSignInSoYouCanJustSeeSomePublicContentsInParamButNotEditOrCollaborateWithOthersPleaseParamO = You did not sign-in, so you can just see some public contents in [%s], but not edit or collaborate with others. Please [%s] or [%s] in order to get full access to [%s] tools and contents
+onlyForAuthorizedTranslators = Only for authorized translators
+hereYouCanCreateOrUploadYourPersonalGroupOrPublicDocumentsTheseDocumentsCanBeEditedAndCommentedColla = Here you can create or upload your personal, group or public documents. These documents can be edited and commented collaboratively and simultaneously. These docs can be static pages in your web page if you publish them
+blogsAreAChronologicalListOfPostsOrderedByDateAboutASpecificTopicEachPostCanBeCommentedByTheVisitors = Blogs are a chronological list of posts (ordered by date) about a specific topic. Each post can be commented by the visitors
+aDecentralizedWayToOfferOrAskForServicesAndGoodsToYourGroupsOrToAnyoneBarteringMeansTheExchangeOfGoo = A decentralized way to offer (or ask for) services and goods to your groups or to anyone. Bartering means the exchange of goods by the agreement of two people
+listsBehaveLikeAMailingListOrAForumYouCanSubscribeAndDiscussAboutSpecificTopics = Lists behave like a mailing list or a forum. You can subscribe and discuss about specific topics
+aCollaborativeToDoListForTheGroupAnyGroupMemberCanParticipateInAnyProposedTaskAddOthersToATaskCommen = A collaborative TO-DO list for the group. Any group-member can participate in any proposed task, add others to a task, comment them, add info, etc
+aCalendarToScheduleActivitiesAndEvents = A calendar to schedule activities and events
+aRoomWhereYouCanHaveAGroupChatWithManyUsersAtOnceRoomsCanBePublicOrPrivateUsersCanBeFromParamOrOther = A 'room' where you can have a group-chat with many users at once. Rooms can be public or private. Users can be from [%s] or other sites (compatible with gmail chat)
+wikiPagesAreDocumentsThatCanBeEditedByAnyVisitorInParamInsteadOfOnlyByTheGroupThisAcceleratesUpdatin = Wiki-pages are Documents that can be edited by any visitor (in [%s]), instead of only by the group. This accelerates updating and construction
+errorSettingTheLogo = Error setting the logo
\ No newline at end of file
Modified: trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants_es.properties
===================================================================
--- trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants_es.properties 2011-11-09 15:19:34 UTC (rev 1597)
+++ trunk/src/main/java/cc/kune/core/client/i18n/KuneConstants_es.properties 2011-11-10 01:10:27 UTC (rev 1598)
@@ -188,7 +188,7 @@
thisUserHasNoBuddiesYet = Estæ usuaria/o no tiene todavía colegas
newTask = Nueva tarea
createANewTask = Crea una nueva tarea
-doubleClickToOpen = Pulsa dos veces para editar
+doubleClickToOpen = Pulsa dos veces para abrir
createANewFolder = Crear una nueva carpeta
newTaskFolder = Nueva carpeta de tareas
open = Abrir
@@ -392,8 +392,23 @@
membersJoiningPolicyChanged = Política de adhesión de miembros cambiada
moving = Moviendo
aContentWithTheSameNameAlreadyExistPleaseRenameIt = Ya existe un contenido con el mismo nombre. Por favor renómbralo.
+
removedAsMember = Eliminado como miembro
addGadget = Añade un Gadget
theSocialNetworkOfThisUserIsNotPublic = La red social de este/a usuario/a no es público
newDoc = Nuevo doc
-clickToGoHereOrDropContentsHereToMoveThem = Pulsa para ir aquí o arrastra aquí contenidos para moverlos
\ No newline at end of file
+clickToGoHereOrDropContentsHereToMoveThem = Pulsa para ir aquí o arrastra aquí contenidos para moverlos
+thisUserIsAlreadyAGroupMember = Este usuario ya es miembro del grupo
+markAsNotDone = Marcar como no completada
+more = Más
+youDidNotSignInSoYouCanJustSeeSomePublicContentsInParamButNotEditOrCollaborateWithOthersPleaseParamO = No te has registrado o autenticado, así que solo podrás ver ciertos contenidos públicos de [%s], pero no podrás editar ni colaborar con otras personas. Por favor [%s] o [%s] para tener acceso total a las herramientas y contenidos de [%s]
+onlyForAuthorizedTranslators = Solo para traductores autorizados
+hereYouCanCreateOrUploadYourPersonalGroupOrPublicDocumentsTheseDocumentsCanBeEditedAndCommentedColla = Aquí puedes crear o subir tus documentos personales, grupales o públicos. Esos documentos pueden ser editados y comentados simultáneamente por otras personas. Esos documentos pueden ser páginas estáticas en vuestra web si los publicáis
+blogsAreAChronologicalListOfPostsOrderedByDateAboutASpecificTopicEachPostCanBeCommentedByTheVisitors = Los Blogs son una lista cronológica de mensajes publicados (ordenados por la fecha) sobre un tema específico. Cada mensaje publicado puede ser comentado por los lectores
+aDecentralizedWayToOfferOrAskForServicesAndGoodsToYourGroupsOrToAnyoneBarteringMeansTheExchangeOfGoo = Una forma descentralizada de ofrecer (y solicitar) servicios y bienes a tus grupos o a cualquiera. El trueque es el intercambio de bienes a través del acuerdo de dos personas
+listsBehaveLikeAMailingListOrAForumYouCanSubscribeAndDiscussAboutSpecificTopics = Las listas se comportan como una lista de distribución o un foro. Puedes suscribirte y debatir sobre un tema específico
+aCollaborativeToDoListForTheGroupAnyGroupMemberCanParticipateInAnyProposedTaskAddOthersToATaskCommen = Una lista colaborativa de tareas por hacer por el grupo. Cualquier miembro del grupo puede participar en las tareas propuestas, comentarlas, añadir información, etc
+aCalendarToScheduleActivitiesAndEvents = Un calendario para programar actividades y eventos
+aRoomWhereYouCanHaveAGroupChatWithManyUsersAtOnceRoomsCanBePublicOrPrivateUsersCanBeFromParamOrOther = Una 'sala' donde puedes tener una conversación en grupo con muchos/as usuarios/as al mismo tiempo. Las salas pueden ser privadas o públicas. Los/as usuarios/as pueden ser de [%s] o de otros sitios (es compatible con el chat de gmail).
+wikiPagesAreDocumentsThatCanBeEditedByAnyVisitorInParamInsteadOfOnlyByTheGroupThisAcceleratesUpdatin = Las páginas Wiki son documentos que pueden ser editados por cualquier usuario/a (de [%s]) en vez de solo por el grupo. Este acelera su actualización y construcción
+errorSettingTheLogo = Error configurando el logo
\ No newline at end of file
Added: trunk/src/main/java/cc/kune/core/client/sitebar/search/EntitySearchPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/search/EntitySearchPanel.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/search/EntitySearchPanel.java 2011-11-10 01:10:27 UTC (rev 1598)
@@ -0,0 +1,120 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ \*/
+package cc.kune.core.client.sitebar.search;
+
+import cc.kune.common.client.ui.dialogs.BasicTopDialog;
+import cc.kune.core.client.i18n.I18nUITranslationService;
+import cc.kune.core.client.resources.CoreResources;
+
+import com.google.gwt.event.dom.client.ClickEvent;
+import com.google.gwt.event.dom.client.ClickHandler;
+import com.google.gwt.event.dom.client.HasAllFocusHandlers;
+import com.google.gwt.user.client.ui.HasText;
+import com.google.gwt.user.client.ui.SuggestBox;
+import com.google.gwt.user.client.ui.TextBoxBase;
+
+/**
+ * This panel is used to search for users to add as a buddies or to add to
+ * groups as collaborators
+ *
+ */
+public abstract class EntitySearchPanel {
+
+ public static final String DIALOG_ID = "entity-search-panel-diag";
+ public static final String ENTITY_SEARCH_TEXTBOX = "kune-ssp-tbox";
+ public static final String OK_ID = "entity-search-panel-ok-id";
+ private static final int SEARCH_TEXT_HEIGHT = 13;
+ private static final int SEARCH_TEXT_WIDTH_BIG = 160;
+ private static final int SEARCH_TEXT_WIDTH_SMALL = 120;
+ private OnEntitySelectedInSearch callback;
+ private final BasicTopDialog dialog;
+ private final I18nUITranslationService i18n;
+ private boolean searchOnlyUsers;
+ private TextBoxBase searchTextBox;
+ private SuggestBox suggestBox;
+
+ public EntitySearchPanel(final CoreResources img, final I18nUITranslationService i18n) {
+ this.i18n = i18n;
+ dialog = new BasicTopDialog.Builder(DIALOG_ID, false, true).autoscroll(false).firstButtonId(OK_ID).tabIndexStart(
+ 1).build();
+ dialog.setFirstBtnText(i18n.t("Close"));
+ dialog.setSecondBtnVisible(false);
+ dialog.getFirstBtn().addClickHandler(new ClickHandler() {
+ @Override
+ public void onClick(final ClickEvent event) {
+ dialog.hide();
+ }
+ });
+ }
+
+ public void clearSearchText() {
+ searchTextBox.setValue("");
+ }
+
+ private void create() {
+ dialog.getTitleText().setText(
+ i18n.t(searchOnlyUsers ? "Type the name of the user and select him/her:"
+ : "Type the name of the user or group and select it:"));
+ final MultivalueSuggestBox multivalueSBox = SearchBoxFactory.create(i18n, searchOnlyUsers, callback);
+ suggestBox = multivalueSBox.getSuggestBox();
+ searchTextBox = suggestBox.getTextBox();
+ searchTextBox.ensureDebugId(ENTITY_SEARCH_TEXTBOX);
+ dialog.getInnerPanel().add(multivalueSBox);
+ setTextSearchSmallImpl();
+ }
+
+ public void focus() {
+ searchTextBox.setFocus(true);
+ }
+
+ public HasAllFocusHandlers getFocus() {
+ return searchTextBox;
+ }
+
+ public HasText getTextBox() {
+ return searchTextBox;
+ }
+
+ public void init(final OnEntitySelectedInSearch callback, final boolean searchOnlyUsers) {
+ this.callback = callback;
+ this.searchOnlyUsers = searchOnlyUsers;
+ create();
+ }
+
+ public void selectSearchText() {
+ searchTextBox.selectAll();
+ }
+
+ public void setTextSearch(final String text) {
+ suggestBox.setValue(text, false);
+ }
+
+ public void setTextSearchBig() {
+ searchTextBox.setPixelSize(SEARCH_TEXT_WIDTH_BIG, SEARCH_TEXT_HEIGHT);
+ }
+
+ private void setTextSearchSmallImpl() {
+ searchTextBox.setPixelSize(SEARCH_TEXT_WIDTH_SMALL, SEARCH_TEXT_HEIGHT);
+ }
+
+ public void show() {
+ dialog.showCentered();
+ }
+}
Modified: trunk/src/main/java/cc/kune/core/client/sitebar/search/MultivalueSuggestBox.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/search/MultivalueSuggestBox.java 2011-11-09 15:19:34 UTC (rev 1597)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/search/MultivalueSuggestBox.java 2011-11-10 01:10:27 UTC (rev 1598)
@@ -42,7 +42,6 @@
import java.util.Map;
import cc.kune.common.client.log.Log;
-import cc.kune.core.client.sitebar.search.SitebarSearchPanel.OnExactMatch;
import cc.kune.core.shared.SearcherConstants;
import com.google.gwt.event.dom.client.KeyUpEvent;
Added: trunk/src/main/java/cc/kune/core/client/sitebar/search/OnEntitySelectedInSearch.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/search/OnEntitySelectedInSearch.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/search/OnEntitySelectedInSearch.java 2011-11-10 01:10:27 UTC (rev 1598)
@@ -0,0 +1,7 @@
+package cc.kune.core.client.sitebar.search;
+
+public interface OnEntitySelectedInSearch {
+
+ void onSeleted(String shortName);
+
+}
Added: trunk/src/main/java/cc/kune/core/client/sitebar/search/OnExactMatch.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/search/OnExactMatch.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/search/OnExactMatch.java 2011-11-10 01:10:27 UTC (rev 1598)
@@ -0,0 +1,5 @@
+package cc.kune.core.client.sitebar.search;
+
+public interface OnExactMatch {
+ void onExactMatch(String march);
+}
\ No newline at end of file
Added: trunk/src/main/java/cc/kune/core/client/sitebar/search/SearchBoxFactory.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/search/SearchBoxFactory.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/search/SearchBoxFactory.java 2011-11-10 01:10:27 UTC (rev 1598)
@@ -0,0 +1,49 @@
+package cc.kune.core.client.sitebar.search;
+
+import cc.kune.common.client.tooltip.Tooltip;
+import cc.kune.core.client.i18n.I18nUITranslationService;
+import cc.kune.core.shared.SearcherConstants;
+
+import com.google.gwt.user.client.ui.SuggestBox;
+import com.google.gwt.user.client.ui.SuggestOracle.Suggestion;
+
+public class SearchBoxFactory {
+
+ public static MultivalueSuggestBox create(final I18nUITranslationService i18n,
+ final boolean searchOnlyUsers, final OnEntitySelectedInSearch callback) {
+ final MultivalueSuggestBox multivalueSBox = new MultivalueSuggestBox(
+ searchOnlyUsers ? SearcherConstants.USER_DATA_PROXY_URL : SearcherConstants.GROUP_DATA_PROXY_URL,
+ false, new OnExactMatch() {
+
+ @Override
+ public void onExactMatch(final String match) {
+ // NotifyUser.info(match);
+ }
+ }) {
+
+ @Override
+ public void onSelection(
+ final com.google.gwt.event.logical.shared.SelectionEvent<com.google.gwt.user.client.ui.SuggestOracle.Suggestion> event) {
+ super.onSelection(event);
+ final Suggestion suggestion = event.getSelectedItem();
+ if (suggestion instanceof OptionSuggestion) {
+ final OptionSuggestion osugg = (OptionSuggestion) suggestion;
+ final String value = osugg.getValue();
+ if (!OptionSuggestion.NEXT_VALUE.equals(value)
+ && !OptionSuggestion.PREVIOUS_VALUE.equals(value)) {
+ callback.onSeleted(value);
+ this.getSuggestBox().setValue("", false);
+ }
+ }
+ };
+ };
+ final String siteCommonName = i18n.getSiteCommonName();
+ final SuggestBox suggestBox = multivalueSBox.getSuggestBox();
+ Tooltip.to(
+ suggestBox,
+ searchOnlyUsers ? i18n.t("Type something to search for users in [%s]", siteCommonName) : i18n.t(
+ "Type something to search for users and groups in [%s]", siteCommonName));
+ return multivalueSBox;
+ }
+
+}
Modified: trunk/src/main/java/cc/kune/core/client/sitebar/search/SitebarSearchPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sitebar/search/SitebarSearchPanel.java 2011-11-09 15:19:34 UTC (rev 1597)
+++ trunk/src/main/java/cc/kune/core/client/sitebar/search/SitebarSearchPanel.java 2011-11-10 01:10:27 UTC (rev 1598)
@@ -19,14 +19,11 @@
\*/
package cc.kune.core.client.sitebar.search;
-import cc.kune.common.client.notify.NotifyUser;
-import cc.kune.common.client.tooltip.Tooltip;
import cc.kune.core.client.i18n.I18nUITranslationService;
import cc.kune.core.client.resources.CoreResources;
import cc.kune.core.client.sitebar.search.SitebarSearchPresenter.SitebarSearchView;
import cc.kune.core.client.state.Session;
import cc.kune.core.client.state.StateManager;
-import cc.kune.core.shared.SearcherConstants;
import cc.kune.gspace.client.GSpaceArmor;
import com.google.gwt.event.dom.client.HasAllFocusHandlers;
@@ -35,16 +32,13 @@
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.PushButton;
import com.google.gwt.user.client.ui.SuggestBox;
-import com.google.gwt.user.client.ui.SuggestOracle.Suggestion;
import com.google.gwt.user.client.ui.TextBoxBase;
import com.google.gwt.user.client.ui.Widget;
import com.google.inject.Inject;
import com.gwtplatform.mvp.client.ViewImpl;
public class SitebarSearchPanel extends ViewImpl implements SitebarSearchView {
- protected interface OnExactMatch {
- void onExactMatch(String march);
- }
+
private static final int SEARCH_TEXT_HEIGHT = 13;
private static final int SEARCH_TEXT_WIDTH_BIG = 160;
private static final int SEARCH_TEXT_WIDTH_SMALL = 120;
@@ -60,35 +54,14 @@
final StateManager stateManager, final I18nUITranslationService i18n) {
searchButton = new PushButton(new Image(img.kuneSearchIco()), new Image(img.kuneSearchIcoPush()));
searchButton.ensureDebugId(SITE_SEARCH_BUTTON);
- final MultivalueSuggestBox multivalueSBox = new MultivalueSuggestBox(
- SearcherConstants.GROUP_DATA_PROXY_URL, false, new OnExactMatch() {
-
+ final MultivalueSuggestBox multivalueSBox = SearchBoxFactory.create(i18n, false,
+ new OnEntitySelectedInSearch() {
@Override
- public void onExactMatch(final String match) {
- NotifyUser.info(match);
+ public void onSeleted(final String shortName) {
+ stateManager.gotoHistoryToken(shortName);
}
- }) {
-
- @Override
- public void onSelection(
- final com.google.gwt.event.logical.shared.SelectionEvent<com.google.gwt.user.client.ui.SuggestOracle.Suggestion> event) {
- super.onSelection(event);
- final Suggestion suggestion = event.getSelectedItem();
- if (suggestion instanceof OptionSuggestion) {
- final OptionSuggestion osugg = (OptionSuggestion) suggestion;
- final String value = osugg.getValue();
- if (!OptionSuggestion.NEXT_VALUE.equals(value)
- && !OptionSuggestion.PREVIOUS_VALUE.equals(value)) {
- stateManager.gotoHistoryToken(value);
- setTextSearch("");
- }
- }
- };
- };
- final String siteCommonName = i18n.getSiteCommonName();
+ });
suggestBox = multivalueSBox.getSuggestBox();
- Tooltip.to(suggestBox,
- i18n.t("Type something to search for users and groups in [%s]", siteCommonName));
searchTextBox = suggestBox.getTextBox();
searchTextBox.ensureDebugId(SITE_SEARCH_TEXTBOX);
searchTextBox.addStyleName("k-fr");
Added: trunk/src/main/java/cc/kune/core/client/sn/actions/AddBuddieSearchPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/actions/AddBuddieSearchPanel.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/sn/actions/AddBuddieSearchPanel.java 2011-11-10 01:10:27 UTC (rev 1598)
@@ -0,0 +1,18 @@
+package cc.kune.core.client.sn.actions;
+
+import cc.kune.core.client.i18n.I18nUITranslationService;
+import cc.kune.core.client.resources.CoreResources;
+import cc.kune.core.client.sitebar.search.EntitySearchPanel;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+
+@Singleton
+public class AddBuddieSearchPanel extends EntitySearchPanel {
+
+ @Inject
+ public AddBuddieSearchPanel(final CoreResources img, final I18nUITranslationService i18n) {
+ super(img, i18n);
+ }
+
+}
Added: trunk/src/main/java/cc/kune/core/client/sn/actions/AddEntityToThisGroupAction.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/actions/AddEntityToThisGroupAction.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/sn/actions/AddEntityToThisGroupAction.java 2011-11-10 01:10:27 UTC (rev 1598)
@@ -0,0 +1,95 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package cc.kune.core.client.sn.actions;
+
+import cc.kune.common.client.actions.Action;
+import cc.kune.common.client.actions.ActionEvent;
+import cc.kune.common.client.notify.NotifyUser;
+import cc.kune.common.client.utils.SimpleResponseCallback;
+import cc.kune.core.client.resources.CoreResources;
+import cc.kune.core.client.rpcservices.AsyncCallbackSimple;
+import cc.kune.core.client.rpcservices.SocialNetworkServiceAsync;
+import cc.kune.core.client.sitebar.search.OnEntitySelectedInSearch;
+import cc.kune.core.client.state.AccessRightsClientManager;
+import cc.kune.core.client.state.Session;
+import cc.kune.core.client.state.StateManager;
+import cc.kune.core.shared.dto.AccessRolDTO;
+import cc.kune.core.shared.dto.SocialNetworkDataDTO;
+import cc.kune.core.shared.i18n.I18nTranslationService;
+
+import com.google.inject.Inject;
+import com.google.inject.Provider;
+
+public class AddEntityToThisGroupAction extends SNRolAction {
+
+ private final AddMemberSearchPanel searchPanel;
+
+ @Inject
+ public AddEntityToThisGroupAction(final StateManager stateManager, final Session session,
+ final I18nTranslationService i18n, final CoreResources res,
+ final Provider<SocialNetworkServiceAsync> snServiceProvider,
+ final AddMemberSearchPanel searchPanel, final AccessRightsClientManager rightsClientManager) {
+ super(stateManager, session, i18n, res, snServiceProvider, rightsClientManager,
+ AccessRolDTO.Administrator, true, false, true);
+ this.searchPanel = searchPanel;
+ putValue(NAME, i18n.t("Add new member"));
+ putValue(Action.SMALL_ICON, res.add());
+ putValue(Action.STYLES, "k-sn-join");
+ searchPanel.init(new OnEntitySelectedInSearch() {
+ @Override
+ public void onSeleted(final String shortName) {
+ NotifyUser.askConfirmation(
+ i18n.t("Are you sure?"),
+ i18n.t("Do you want to add '[%s]' as a member of '[%s]'?", shortName,
+ session.getCurrentGroupShortName()), new SimpleResponseCallback() {
+ @Override
+ public void onCancel() {
+ }
+
+ @Override
+ public void onSuccess() {
+ NotifyUser.showProgress();
+ snServiceProvider.get().addCollabMember(session.getUserHash(),
+ session.getCurrentStateToken(), shortName,
+ new AsyncCallbackSimple<SocialNetworkDataDTO>() {
+ @Override
+ public void onSuccess(final SocialNetworkDataDTO result) {
+ NotifyUser.hideProgress();
+ NotifyUser.info(i18n.t("Member added as collaborator"));
+ stateManager.setSocialNetwork(result);
+ }
+ });
+ }
+ });
+ }
+
+ },
+ // In the future, with this to false, we'll be add groups to groups!
+ true);
+
+ }
+
+ @Override
+ public void actionPerformed(final ActionEvent event) {
+ searchPanel.show();
+ searchPanel.focus();
+ }
+
+}
\ No newline at end of file
Added: trunk/src/main/java/cc/kune/core/client/sn/actions/AddMemberSearchPanel.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/actions/AddMemberSearchPanel.java (rev 0)
+++ trunk/src/main/java/cc/kune/core/client/sn/actions/AddMemberSearchPanel.java 2011-11-10 01:10:27 UTC (rev 1598)
@@ -0,0 +1,18 @@
+package cc.kune.core.client.sn.actions;
+
+import cc.kune.core.client.i18n.I18nUITranslationService;
+import cc.kune.core.client.resources.CoreResources;
+import cc.kune.core.client.sitebar.search.EntitySearchPanel;
+
+import com.google.inject.Inject;
+import com.google.inject.Singleton;
+
+@Singleton
+public class AddMemberSearchPanel extends EntitySearchPanel {
+
+ @Inject
+ public AddMemberSearchPanel(final CoreResources img, final I18nUITranslationService i18n) {
+ super(img, i18n);
+ }
+
+}
Modified: trunk/src/main/java/cc/kune/core/client/sn/actions/AddNewBuddiesAction.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/actions/AddNewBuddiesAction.java 2011-11-09 15:19:34 UTC (rev 1597)
+++ trunk/src/main/java/cc/kune/core/client/sn/actions/AddNewBuddiesAction.java 2011-11-10 01:10:27 UTC (rev 1598)
@@ -19,37 +19,53 @@
*/
package cc.kune.core.client.sn.actions;
+import cc.kune.chat.client.ChatClient;
import cc.kune.common.client.actions.AbstractExtendedAction;
import cc.kune.common.client.actions.Action;
import cc.kune.common.client.actions.ActionEvent;
import cc.kune.common.client.notify.NotifyUser;
-import cc.kune.core.client.resources.CoreMessages;
+import cc.kune.common.client.utils.SimpleResponseCallback;
import cc.kune.core.client.resources.CoreResources;
-import cc.kune.core.client.sitebar.search.SitebarSearchPresenter;
+import cc.kune.core.client.sitebar.search.EntitySearchPanel;
+import cc.kune.core.client.sitebar.search.OnEntitySelectedInSearch;
import cc.kune.core.shared.i18n.I18nTranslationService;
import com.google.inject.Inject;
-import com.google.inject.Provider;
public class AddNewBuddiesAction extends AbstractExtendedAction {
- private final I18nTranslationService i18n;
- private final Provider<SitebarSearchPresenter> searcher;
+ private final EntitySearchPanel searchPanel;
@Inject
public AddNewBuddiesAction(final I18nTranslationService i18n, final CoreResources res,
- final Provider<SitebarSearchPresenter> searcher) {
- this.i18n = i18n;
- this.searcher = searcher;
+ final AddBuddieSearchPanel searchPanel, final ChatClient chatClient) {
+ this.searchPanel = searchPanel;
putValue(Action.NAME, i18n.t("Add a new buddy"));
putValue(Action.SMALL_ICON, res.addGreen());
+ searchPanel.init(new OnEntitySelectedInSearch() {
+ @Override
+ public void onSeleted(final String shortName) {
+ NotifyUser.askConfirmation(i18n.t("Are you sure?"),
+ i18n.t("Do you want to add '[%s]' to your contacts?", shortName),
+ new SimpleResponseCallback() {
+ @Override
+ public void onCancel() {
+ }
+
+ @Override
+ public void onSuccess() {
+ chatClient.addNewBuddy(shortName);
+ NotifyUser.info("Added as buddy in your contacts. If your buddie adds you also, it will be visible in your network");
+ }
+ });
+ }
+ }, true);
}
@Override
public void actionPerformed(final ActionEvent event) {
- NotifyUser.info(i18n.t("Search the user you want to add and in his/her homepage click '"
- + CoreMessages.ADD_AS_A_BUDDY + "'"));
- searcher.get().focus();
+ searchPanel.show();
+ searchPanel.focus();
}
}
Modified: trunk/src/main/java/cc/kune/core/client/sn/actions/UnJoinFromThisGroupAction.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/actions/UnJoinFromThisGroupAction.java 2011-11-09 15:19:34 UTC (rev 1597)
+++ trunk/src/main/java/cc/kune/core/client/sn/actions/UnJoinFromThisGroupAction.java 2011-11-10 01:10:27 UTC (rev 1598)
@@ -37,6 +37,11 @@
import com.google.inject.Inject;
import com.google.inject.Provider;
+/**
+ * This action is similar to @link {@link UnJoinFromCurrentGroupAction} but is
+ * used when you are not in this group (for instace you can leave a group from
+ * your home page)
+ */
public class UnJoinFromThisGroupAction extends RolAction {
private final I18nTranslationService i18n;
Modified: trunk/src/main/java/cc/kune/core/client/sn/actions/registry/GroupSNConfActions.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/sn/actions/registry/GroupSNConfActions.java 2011-11-09 15:19:34 UTC (rev 1597)
+++ trunk/src/main/java/cc/kune/core/client/sn/actions/registry/GroupSNConfActions.java 2011-11-10 01:10:27 UTC (rev 1598)
@@ -22,11 +22,13 @@
import cc.kune.common.client.actions.ui.descrip.ButtonDescriptor;
import cc.kune.common.client.actions.ui.descrip.GuiActionDescrip;
import cc.kune.common.client.actions.ui.descrip.MenuDescriptor;
+import cc.kune.common.client.actions.ui.descrip.MenuItemDescriptor;
import cc.kune.common.client.actions.ui.descrip.MenuRadioItemDescriptor;
import cc.kune.common.client.actions.ui.descrip.MenuTitleItemDescriptor;
import cc.kune.common.client.actions.ui.descrip.SubMenuDescriptor;
import cc.kune.core.client.resources.CoreResources;
import cc.kune.core.client.sn.GroupSNPresenter;
+import cc.kune.core.client.sn.actions.AddEntityToThisGroupAction;
import cc.kune.core.client.sn.actions.JoinGroupAction;
import cc.kune.core.client.sn.actions.MembersModerationMenuItem;
import cc.kune.core.client.sn.actions.MembersVisibilityMenuItem;
@@ -69,7 +71,8 @@
final Provider<MembersModerationMenuItem> membersModeration, final CoreResources res,
final IsLoggedCondition isLoggedCondition, final JoinGroupAction joinGroupAction,
final WriteToMembers writeToMembers, final WriteToAdmins writeToAdmins,
- final IsGroupCondition isGroupCondition, final UnJoinFromCurrentGroupAction unJoinGroupAction) {
+ final IsGroupCondition isGroupCondition, final UnJoinFromCurrentGroupAction unJoinGroupAction,
+ final AddEntityToThisGroupAction addEntityToThisGroupAction) {
OPTIONS_MENU.withToolTip(i18n.t("Options")).withIcon(res.arrowdownsitebar()).withStyles(
OPTIONS_STYLES);
final MenuRadioItemDescriptor anyoneItem = membersVisibility.get().withVisibility(
@@ -86,6 +89,8 @@
addImpl(OPTIONS_MENU);
new MenuTitleItemDescriptor(i18n.t("Options")).withParent(OPTIONS_MENU);
+ new MenuItemDescriptor(addEntityToThisGroupAction).withParent(OPTIONS_MENU).setPosition(0);
+ new MenuItemDescriptor(unJoinGroupAction).withParent(OPTIONS_MENU).setPosition(1);
VISIBILITY_SUBMENU.withText(i18n.t("Users who can view this member list")).withParent(OPTIONS_MENU);
MODERATION_SUBMENU.withText(i18n.t("New members policy")).withParent(OPTIONS_MENU);
@@ -97,10 +102,15 @@
closedItem.withParent(MODERATION_SUBMENU).withText(i18n.t("closed for new members"));
final ButtonDescriptor joinBtn = new ButtonDescriptor(joinGroupAction);
- final ButtonDescriptor unJoinBtn = new ButtonDescriptor(unJoinGroupAction);
+ // final ButtonDescriptor unJoinBtn = new
+ // ButtonDescriptor(unJoinGroupAction);
+ // final ButtonDescriptor addMemberBtn = new
+ // ButtonDescriptor(addEntityToThisGroupAction);
// unJoinBtn.add(isLoggedCondition);
addImpl(joinBtn); // .withStyles("k-no-backimage, k-noborder, k-nobackcolor"));
- addImpl(unJoinBtn); // .withStyles("k-no-backimage, k-noborder, k-nobackcolor"));
+ // addImpl(unJoinBtn); //
+ // .withStyles("k-no-backimage, k-noborder, k-nobackcolor"));
+ // addImpl(addMemberBtn);
stateManager.onStateChanged(true, new StateChangedHandler() {
@Override
Modified: trunk/src/main/java/cc/kune/core/server/manager/impl/I18nTranslationManagerDefault.java
===================================================================
--- trunk/src/main/java/cc/kune/core/server/manager/impl/I18nTranslationManagerDefault.java 2011-11-09 15:19:34 UTC (rev 1597)
+++ trunk/src/main/java/cc/kune/core/server/manager/impl/I18nTranslationManagerDefault.java 2011-11-10 01:10:27 UTC (rev 1598)
@@ -176,8 +176,7 @@
final String escapedTranslation = TextUtils.escapeHtmlLight(translation);
trans.setText(escapedTranslation);
persist(trans);
- // reset cache for this lang
- langCache.remove(lang);
+ langCache.clear();
return escapedTranslation;
} else {
throw new DefaultException("Trying to translate a unknown item");
Modified: trunk/src/main/java/cc/kune/core/shared/SearcherConstants.java
===================================================================
--- trunk/src/main/java/cc/kune/core/shared/SearcherConstants.java 2011-11-09 15:19:34 UTC (rev 1597)
+++ trunk/src/main/java/cc/kune/core/shared/SearcherConstants.java 2011-11-10 01:10:27 UTC (rev 1598)
@@ -31,13 +31,14 @@
// public final static String I18N_JSON_SERVICE =
// "/ws/json/I18nTranslationJSONService/search";
public final static String GROUP_PARAM = "group";
+ public final static String LIMIT_PARAM = "limit";
- public final static String LIMIT_PARAM = "limit";
public final static String MIMETYPE_PARAM = "mimetype";
public final static String MIMETYPE2_PARAM = "mimetype2";
public final static String QUERY_PARAM = "query";
+ public final static String START_PARAM = "start";
- public final static String START_PARAM = "start";
+ public final static String USER_DATA_PROXY_URL = "/ws/json/UserJSONService/search";
// public final static String I18N_JSON_SERVICE_TRANSLATED =
// "/ws/json/I18nTranslationJSONService/searchtranslated";
// public final static String USER_DATA_PROXY_URL =
Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsTablePanel.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsTablePanel.java 2011-11-09 15:19:34 UTC (rev 1597)
+++ trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerAsTablePanel.java 2011-11-10 01:10:27 UTC (rev 1598)
@@ -26,6 +26,7 @@
import cc.kune.common.client.actions.ui.descrip.GuiActionDescCollection;
import cc.kune.common.client.actions.ui.descrip.GuiActionDescrip;
import cc.kune.common.client.actions.ui.descrip.MenuDescriptor;
+import cc.kune.common.client.tooltip.Tooltip;
import cc.kune.core.client.dnd.FolderViewerDropController;
import cc.kune.core.client.dnd.KuneDragController;
import cc.kune.core.client.registry.ContentCapabilitiesRegistry;
@@ -91,7 +92,7 @@
itemWidget.setModifiedText(DateUtils.getInstance().formatPastDate(modifiedOn));
}
itemWidget.setMenu(toolbar);
- // Tooltip.to(itemWidget, item.getTooltip());
+ Tooltip.to(itemWidget, item.getTooltip());
// FIXME make this under demand
itemWidget.getRowClick().addClickHandler(new ClickHandler() {
@Override
Modified: trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerPresenter.java
===================================================================
--- trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerPresenter.java 2011-11-09 15:19:34 UTC (rev 1597)
+++ trunk/src/main/java/cc/kune/gspace/client/viewers/FolderViewerPresenter.java 2011-11-10 01:10:27 UTC (rev 1598)
@@ -140,7 +140,7 @@
final String name = content.getName();
final Object icon = mimeType != null ? getIcon(stateToken, typeId, mimeType) : getIcon(stateToken,
typeId, status);
- final String tooltip = getTooltip(stateToken, mimeType);
+ final String tooltip = getTooltip(stateToken, mimeType, capabilitiesRegistry.isDragable(typeId) && rights.isAdministrable());
if (status.equals(ContentStatus.inTheDustbin)
&& (!capabilitiesRegistry.showDeleted(typeId) && !session.getShowDeletedContent())) {
// Don't show
@@ -240,12 +240,14 @@
return iconsRegistry.getContentTypeIcon(typeId, status);
}
- private String getTooltip(final StateToken token, final BasicMimeTypeDTO mimeType) {
+ private String getTooltip(final StateToken token, final BasicMimeTypeDTO mimeType,
+ final boolean draggable) {
if (mimeType != null && (mimeType.isImage() || mimeType.isPdf())) {
// Used for previews
return null;
} else {
- return i18n.t("Double click to open");
+ return draggable ? i18n.t("Double click to open. Drag and drop to move this to another place")
+ : i18n.t("Double click to open");
}
}
Modified: trunk/src/main/java/cc/kune/wiki/client/WikiClientTool.java
===================================================================
--- trunk/src/main/java/cc/kune/wiki/client/WikiClientTool.java 2011-11-09 15:19:34 UTC (rev 1597)
+++ trunk/src/main/java/cc/kune/wiki/client/WikiClientTool.java 2011-11-10 01:10:27 UTC (rev 1598)
@@ -24,9 +24,9 @@
import static cc.kune.wiki.shared.WikiConstants.TYPE_ROOT;
import static cc.kune.wiki.shared.WikiConstants.TYPE_UPLOADEDFILE;
import static cc.kune.wiki.shared.WikiConstants.TYPE_WIKIPAGE;
+import cc.kune.core.client.i18n.I18nUITranslationService;
import cc.kune.core.client.registry.ContentCapabilitiesRegistry;
import cc.kune.core.client.resources.nav.NavResources;
-import cc.kune.core.shared.i18n.I18nTranslationService;
import cc.kune.gspace.client.tool.FoldableAbstractClientTool;
import cc.kune.gspace.client.tool.selector.ToolSelector;
@@ -35,13 +35,14 @@
public class WikiClientTool extends FoldableAbstractClientTool {
@Inject
- public WikiClientTool(final I18nTranslationService i18n, final ToolSelector toolSelector,
+ public WikiClientTool(final I18nUITranslationService i18n, final ToolSelector toolSelector,
final ContentCapabilitiesRegistry cntCapRegistry, final NavResources navResources) {
super(
NAME,
i18n.t("wiki"),
- i18n.t("Wiki-pages are Documents that can be edited by any visitor (in this site), instead of only by the group. This accelerates updating and construction"),
- toolSelector, cntCapRegistry, i18n, navResources);
+ i18n.t(
+ "Wiki-pages are Documents that can be edited by any visitor (in [%s]), instead of only by the group. This accelerates updating and construction",
+ i18n.getSiteCommonName()), toolSelector, cntCapRegistry, i18n, navResources);
registerAuthorableTypes(TYPE_WIKIPAGE, TYPE_UPLOADEDFILE);
registerDragableTypes(TYPE_WIKIPAGE, TYPE_FOLDER, TYPE_UPLOADEDFILE);
1
0
r1597 - in trunk/src/main: java/cc/kune/barters/client java/cc/kune/blogs/client java/cc/kune/chat/client java/cc/kune/docs/client java/cc/kune/events/client java/cc/kune/lists/client java/cc/kune/tasks/client java/cc/kune/wiki/client resources
by Vicente J. Ruiz Jurado 09 Nov '11
by Vicente J. Ruiz Jurado 09 Nov '11
09 Nov '11
Author: vjrj_
Date: 2011-11-09 16:19:34 +0100 (Wed, 09 Nov 2011)
New Revision: 1597
Modified:
trunk/src/main/java/cc/kune/barters/client/BartersClientTool.java
trunk/src/main/java/cc/kune/blogs/client/BlogsClientTool.java
trunk/src/main/java/cc/kune/chat/client/ChatClientTool.java
trunk/src/main/java/cc/kune/docs/client/DocsClientTool.java
trunk/src/main/java/cc/kune/events/client/EventsClientTool.java
trunk/src/main/java/cc/kune/lists/client/ListsClientTool.java
trunk/src/main/java/cc/kune/tasks/client/TasksClientTool.java
trunk/src/main/java/cc/kune/wiki/client/WikiClientTool.java
trunk/src/main/resources/TestConstants_es.properties
Log:
CLOSED - # 114: Explain properly the tools
http://kune.ourproject.org/issues/ticket/114
NEW - # 127: Generate some screencast while doing automate testing
http://kune.ourproject.org/issues/ticket/127
Modified: trunk/src/main/java/cc/kune/barters/client/BartersClientTool.java
===================================================================
--- trunk/src/main/java/cc/kune/barters/client/BartersClientTool.java 2011-11-09 02:39:48 UTC (rev 1596)
+++ trunk/src/main/java/cc/kune/barters/client/BartersClientTool.java 2011-11-09 15:19:34 UTC (rev 1597)
@@ -36,7 +36,11 @@
@Inject
public BartersClientTool(final I18nTranslationService i18n, final ToolSelector toolSelector,
final ContentCapabilitiesRegistry cntCapRegistry, final NavResources navResources) {
- super(NAME, i18n.t("barters"), i18n.t(""), toolSelector, cntCapRegistry, i18n, navResources);
+ super(
+ NAME,
+ i18n.t("barters"),
+ i18n.t("A decentralized way to offer (or ask for) services and goods to your groups or to anyone. Bartering means the exchange of goods by the agreement of two people"),
+ toolSelector, cntCapRegistry, i18n, navResources);
// registerAclEditableTypes(TYPE_DOCUMENT, TYPE_UPLOADEDFILE);
registerAuthorableTypes(TYPE_BARTER);
Modified: trunk/src/main/java/cc/kune/blogs/client/BlogsClientTool.java
===================================================================
--- trunk/src/main/java/cc/kune/blogs/client/BlogsClientTool.java 2011-11-09 02:39:48 UTC (rev 1596)
+++ trunk/src/main/java/cc/kune/blogs/client/BlogsClientTool.java 2011-11-09 15:19:34 UTC (rev 1597)
@@ -38,8 +38,11 @@
@Inject
public BlogsClientTool(final I18nTranslationService i18n, final ToolSelector toolSelector,
final ContentCapabilitiesRegistry cntCapRegistry, final NavResources navResources) {
- super(NAME, i18n.t(BlogsConstants.ROOT_NAME), i18n.t(""), toolSelector, cntCapRegistry, i18n,
- navResources);
+ super(
+ NAME,
+ i18n.t(BlogsConstants.ROOT_NAME),
+ i18n.t("Blogs are a chronological list of posts (ordered by date) about a specific topic. Each post can be commented by the visitors"),
+ toolSelector, cntCapRegistry, i18n, navResources);
// registerAclEditableTypes();
registerAuthorableTypes(TYPE_POST, TYPE_UPLOADEDFILE);
Modified: trunk/src/main/java/cc/kune/chat/client/ChatClientTool.java
===================================================================
--- trunk/src/main/java/cc/kune/chat/client/ChatClientTool.java 2011-11-09 02:39:48 UTC (rev 1596)
+++ trunk/src/main/java/cc/kune/chat/client/ChatClientTool.java 2011-11-09 15:19:34 UTC (rev 1597)
@@ -40,7 +40,11 @@
final ContentCapabilitiesRegistry cntCapRegistry, final NavResources navResources,
final ChatResources res) {
// FIXME: change this in ChatConstants and in db via migration
- super(NAME, i18n.t("chatrooms"), i18n.t(""), toolSelector, cntCapRegistry, i18n, navResources);
+ super(
+ NAME,
+ i18n.t("chatrooms"),
+ i18n.t("A 'room' where you can have a group-chat with many users at once. Rooms can be public or private. Users can be from this site or other sites (compatible with gmail chat)"),
+ toolSelector, cntCapRegistry, i18n, navResources);
this.res = res;
registerIcons();
}
Modified: trunk/src/main/java/cc/kune/docs/client/DocsClientTool.java
===================================================================
--- trunk/src/main/java/cc/kune/docs/client/DocsClientTool.java 2011-11-09 02:39:48 UTC (rev 1596)
+++ trunk/src/main/java/cc/kune/docs/client/DocsClientTool.java 2011-11-09 15:19:34 UTC (rev 1597)
@@ -38,8 +38,11 @@
@Inject
public DocsClientTool(final I18nTranslationService i18n, final ToolSelector toolSelector,
final ContentCapabilitiesRegistry cntCapRegistry, final NavResources navResources) {
- super(NAME, i18n.t(DocsConstants.ROOT_NAME), i18n.t(""), toolSelector, cntCapRegistry, i18n,
- navResources);
+ super(
+ NAME,
+ i18n.t(DocsConstants.ROOT_NAME),
+ i18n.t("Here you can create or upload your personal, group or public documents. These documents can be edited and commented collaboratively and simultaneously. These docs can be static pages in your web page if you publish them"),
+ toolSelector, cntCapRegistry, i18n, navResources);
// registerAclEditableTypes(TYPE_DOCUMENT, TYPE_UPLOADEDFILE);
registerAuthorableTypes(TYPE_DOCUMENT, TYPE_UPLOADEDFILE);
Modified: trunk/src/main/java/cc/kune/events/client/EventsClientTool.java
===================================================================
--- trunk/src/main/java/cc/kune/events/client/EventsClientTool.java 2011-11-09 02:39:48 UTC (rev 1596)
+++ trunk/src/main/java/cc/kune/events/client/EventsClientTool.java 2011-11-09 15:19:34 UTC (rev 1597)
@@ -36,7 +36,8 @@
@Inject
public EventsClientTool(final I18nTranslationService i18n, final ToolSelector toolSelector,
final ContentCapabilitiesRegistry cntCapRegistry, final NavResources navResources) {
- super(NAME, i18n.t(ROOT_NAME), i18n.t(""), toolSelector, cntCapRegistry, i18n, navResources);
+ super(NAME, i18n.t(ROOT_NAME), i18n.t("A calendar to schedule activities and events"), toolSelector,
+ cntCapRegistry, i18n, navResources);
// registerAclEditableTypes(TYPE_DOCUMENT, TYPE_UPLOADEDFILE);
registerAuthorableTypes(TYPE_MEETING);
Modified: trunk/src/main/java/cc/kune/lists/client/ListsClientTool.java
===================================================================
--- trunk/src/main/java/cc/kune/lists/client/ListsClientTool.java 2011-11-09 02:39:48 UTC (rev 1596)
+++ trunk/src/main/java/cc/kune/lists/client/ListsClientTool.java 2011-11-09 15:19:34 UTC (rev 1597)
@@ -37,7 +37,11 @@
@Inject
public ListsClientTool(final I18nTranslationService i18n, final ToolSelector toolSelector,
final ContentCapabilitiesRegistry cntCapRegistry, final NavResources navResources) {
- super(NAME, i18n.t(ROOT_NAME), i18n.t(""), toolSelector, cntCapRegistry, i18n, navResources);
+ super(
+ NAME,
+ i18n.t(ROOT_NAME),
+ i18n.t("Lists behave like a mailing list or a forum. You can subscribe and discuss about specific topics"),
+ toolSelector, cntCapRegistry, i18n, navResources);
// registerAclEditableTypes();
registerAuthorableTypes(TYPE_POST);
Modified: trunk/src/main/java/cc/kune/tasks/client/TasksClientTool.java
===================================================================
--- trunk/src/main/java/cc/kune/tasks/client/TasksClientTool.java 2011-11-09 02:39:48 UTC (rev 1596)
+++ trunk/src/main/java/cc/kune/tasks/client/TasksClientTool.java 2011-11-09 15:19:34 UTC (rev 1597)
@@ -38,7 +38,11 @@
@Inject
public TasksClientTool(final I18nTranslationService i18n, final ToolSelector toolSelector,
final ContentCapabilitiesRegistry cntCapRegistry, final NavResources navResources) {
- super(NAME, i18n.t(ROOT_NAME), i18n.t(""), toolSelector, cntCapRegistry, i18n, navResources);
+ super(
+ NAME,
+ i18n.t(ROOT_NAME),
+ i18n.t("A collaborative TO-DO list for the group. Any group-member can participate in any proposed task, add others to a task, comment them, add info, etc"),
+ toolSelector, cntCapRegistry, i18n, navResources);
// registerAclEditableTypes();
registerAuthorableTypes(TYPE_TASK);
Modified: trunk/src/main/java/cc/kune/wiki/client/WikiClientTool.java
===================================================================
--- trunk/src/main/java/cc/kune/wiki/client/WikiClientTool.java 2011-11-09 02:39:48 UTC (rev 1596)
+++ trunk/src/main/java/cc/kune/wiki/client/WikiClientTool.java 2011-11-09 15:19:34 UTC (rev 1597)
@@ -37,7 +37,11 @@
@Inject
public WikiClientTool(final I18nTranslationService i18n, final ToolSelector toolSelector,
final ContentCapabilitiesRegistry cntCapRegistry, final NavResources navResources) {
- super(NAME, i18n.t("wiki"), i18n.t(""), toolSelector, cntCapRegistry, i18n, navResources);
+ super(
+ NAME,
+ i18n.t("wiki"),
+ i18n.t("Wiki-pages are Documents that can be edited by any visitor (in this site), instead of only by the group. This accelerates updating and construction"),
+ toolSelector, cntCapRegistry, i18n, navResources);
registerAuthorableTypes(TYPE_WIKIPAGE, TYPE_UPLOADEDFILE);
registerDragableTypes(TYPE_WIKIPAGE, TYPE_FOLDER, TYPE_UPLOADEDFILE);
Modified: trunk/src/main/resources/TestConstants_es.properties
===================================================================
--- trunk/src/main/resources/TestConstants_es.properties 2011-11-09 02:39:48 UTC (rev 1596)
+++ trunk/src/main/resources/TestConstants_es.properties 2011-11-09 15:19:34 UTC (rev 1597)
@@ -30,4 +30,4 @@
janeDoe = Ruth Mengana
janeexampleOrg = ruth(a)example.org
thankYou = Gracias
-andYesFeedbackWelcome = y s�, feedback bienvenido
\ No newline at end of file
+andYesFeedbackWelcome = y s�, tu feedback es muy bienvenido
\ No newline at end of file
1
0
r1596 - in trunk/src: main/java/cc/kune/core/client/i18n main/resources test/java/cc/kune/selenium test/java/cc/kune/selenium/chat test/java/cc/kune/selenium/general test/java/cc/kune/selenium/login test/java/cc/kune/selenium/spaces
by Vicente J. Ruiz Jurado 09 Nov '11
by Vicente J. Ruiz Jurado 09 Nov '11
09 Nov '11
Author: vjrj_
Date: 2011-11-09 03:39:48 +0100 (Wed, 09 Nov 2011)
New Revision: 1596
Added:
trunk/src/test/java/cc/kune/selenium/spaces/
trunk/src/test/java/cc/kune/selenium/spaces/GroupSpacePageObject.java
trunk/src/test/java/cc/kune/selenium/spaces/HomeSpacePageObject.java
trunk/src/test/java/cc/kune/selenium/spaces/SpacesPageObject.java
Removed:
trunk/src/test/java/cc/kune/selenium/general/SpacesPageObject.java
trunk/src/test/java/cc/kune/selenium/userspace/
Modified:
trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java
trunk/src/main/resources/TestConstants_en.properties
trunk/src/main/resources/TestConstants_es.properties
trunk/src/test/java/cc/kune/selenium/KuneSeleniumDefaults.java
trunk/src/test/java/cc/kune/selenium/SeleniumModule.java
trunk/src/test/java/cc/kune/selenium/chat/ChatPageObject.java
trunk/src/test/java/cc/kune/selenium/login/RegisterSeleniumTests.java
trunk/src/test/java/cc/kune/selenium/spaces/UserSpacePageObject.java
Log:
NEW - # 127: Generate some screencast while doing automate testing
http://kune.ourproject.org/issues/ticket/127
Modified: trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java
===================================================================
--- trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java 2011-11-08 15:03:19 UTC (rev 1595)
+++ trunk/src/main/java/cc/kune/core/client/i18n/I18nUITranslationService.java 2011-11-09 02:39:48 UTC (rev 1596)
@@ -19,11 +19,12 @@
*/
package cc.kune.core.client.i18n;
-import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.MissingResourceException;
+import java.util.Set;
import cc.kune.common.client.log.Log;
import cc.kune.common.client.utils.Location;
@@ -32,6 +33,8 @@
import cc.kune.common.client.utils.WindowUtils;
import cc.kune.core.client.rpcservices.I18nServiceAsync;
import cc.kune.core.client.state.Session;
+import cc.kune.core.client.state.UserSignInEvent;
+import cc.kune.core.client.state.UserSignInEvent.UserSignInHandler;
import cc.kune.core.shared.dto.I18nLanguageDTO;
import cc.kune.core.shared.i18n.I18nTranslationService;
@@ -47,7 +50,7 @@
public class I18nUITranslationService extends I18nTranslationService {
private I18nLanguageDTO currentLang;
private String currentLanguageCode;
- private final ArrayList<Pair<String, String>> earlyTexts;
+ private final Set<Pair<String, String>> earlyTexts;
private final I18nServiceAsync i18nService;
private final KuneConstants kuneConstants;
private HashMap<String, String> lexicon;
@@ -67,7 +70,7 @@
+ LocaleInfo.getCurrentLocale().isRTL() + ", translated langs: "
+ Arrays.toString(LocaleInfo.getAvailableLocaleNames()));
- earlyTexts = new ArrayList<Pair<String, String>>();
+ earlyTexts = new HashSet<Pair<String, String>>();
i18nService.getInitialLanguage(locale, new AsyncCallback<I18nLanguageDTO>() {
@Override
@@ -92,14 +95,18 @@
session.setCurrentLanguage(currentLang);
Log.info("Workspace adaptation to language: " + currentLang.getEnglishName());
eventBus.fireEvent(new I18nReadyEvent());
+ }
+ });
+ session.onUserSignIn(true, new UserSignInHandler() {
+ @Override
+ public void onUserSignIn(final UserSignInEvent event) {
Scheduler.get().scheduleIncremental(new RepeatingCommand() {
-
@Override
public boolean execute() {
if (!earlyTexts.isEmpty()) {
- final Pair<String, String> pair = earlyTexts.get(0);
+ final Pair<String, String> pair = earlyTexts.iterator().next();
save(pair.getLeft(), pair.getRight());
- earlyTexts.remove(0);
+ earlyTexts.remove(pair);
}
return !earlyTexts.isEmpty();
}
@@ -243,6 +250,7 @@
if (lexicon == null) {
Log.warn("i18n not initialized: " + text);
earlyTexts.add(Pair.create(text, noteForTranslators));
+ Log.warn("i18n pending translations: " + earlyTexts.size());
return text;
}
String translation = lexicon.get(encodeText);
@@ -255,8 +263,9 @@
// Not translated and not in db, make a petition for translation
if (session.isLogged()) {
save(text, noteForTranslators);
-
lexicon.put(encodeText, UNTRANSLATED_VALUE);
+ } else {
+ earlyTexts.add(Pair.create(text, noteForTranslators));
}
translation = encodeText;
}
Modified: trunk/src/main/resources/TestConstants_en.properties
===================================================================
--- trunk/src/main/resources/TestConstants_en.properties 2011-11-08 15:03:19 UTC (rev 1595)
+++ trunk/src/main/resources/TestConstants_en.properties 2011-11-09 02:39:48 UTC (rev 1596)
@@ -19,4 +19,21 @@
iMJustTesting = I'm just testing
youCanSeeThisLikeAnAdvancedEmailSystem = You can see this like an advanced email system...
whereYouCanComposePersonalMessages = where you can compose personal messages...
-butAlsoCreateContentsToPublishLater = but also create contents to publish later
\ No newline at end of file
+butAlsoCreateContentsToPublishLater = but also create contents to publish later
+homeSpaceYourWelcomePage = Home space (your welcome page)
+hereYouCanSeeASummaryOfYourActivityInThisSite = Here you can see a summary of the activity in this site
+congratulationsForYourReport = Congratulations for your report\n\n
+hiThereJustToSayThatILike = Hi there, Just to say that I like
+aLotYourLastReport = a lot your last report\n\n
+bestJane = Best\n\nJane\n
+andYouCanChatEventWhileGoingBackForwardWithYourBrowser = And you can chat event while going back/forward with your browser
+laLaLa = la la la
+browserHistoryBack = Browser history back
+iCanContinueChatSmoothly = I can continue chat smoothly ;)
+browserHistoryForward = Browser history forward
+goodbye = goodbye!
+jane = jane
+janeDoe = Jane Doe
+janeexampleOrg = jane(a)example.org
+thankYou = Thank you
+andYesFeedbackWelcome = and yes, feedback welcome
\ No newline at end of file
Modified: trunk/src/main/resources/TestConstants_es.properties
===================================================================
--- trunk/src/main/resources/TestConstants_es.properties 2011-11-08 15:03:19 UTC (rev 1595)
+++ trunk/src/main/resources/TestConstants_es.properties 2011-11-09 02:39:48 UTC (rev 1596)
@@ -13,4 +13,21 @@
iMJustTesting = Solo estoy probando
youCanSeeThisLikeAnAdvancedEmailSystem = Puedes ver esto como un sistema avanzado de correo...
whereYouCanComposePersonalMessages = donde puedes escribir mensajes personales...
-butAlsoCreateContentsToPublishLater = pero tambi�n crear contenidos para publicarlos luego
\ No newline at end of file
+butAlsoCreateContentsToPublishLater = pero tambi�n crear contenidos para publicarlos luego
+homeSpaceYourWelcomePage = Espacio Inicial (tu p�gina de bienvenida)
+hereYouCanSeeASummaryOfYourActivityInThisSite = Aqu� puedes ver un resumen de la actividad en este sitio
+congratulationsForYourReport = Enhorabuena por tu informe\n\n
+hiThereJustToSayThatILike = Muy buenas,\n\nSolo quer�a decir que me gust�
+aLotYourLastReport = \smucho tu informe\n\n
+bestJane = Atentamente\n\nRuth\n
+andYouCanChatEventWhileGoingBackForwardWithYourBrowser = Y puedes chatear mientras le das atr�s y adelante al historial tu navegador
+laLaLa = la la la
+browserHistoryBack = Voy con el navegador hacia atr�s
+iCanContinueChatSmoothly = puedo continuar chateando sin problemas ;)
+browserHistoryForward = Voy con el navegador hacia delante
+goodbye = �adios!
+jane = ruth
+janeDoe = Ruth Mengana
+janeexampleOrg = ruth(a)example.org
+thankYou = Gracias
+andYesFeedbackWelcome = y s�, feedback bienvenido
\ No newline at end of file
Modified: trunk/src/test/java/cc/kune/selenium/KuneSeleniumDefaults.java
===================================================================
--- trunk/src/test/java/cc/kune/selenium/KuneSeleniumDefaults.java 2011-11-08 15:03:19 UTC (rev 1595)
+++ trunk/src/test/java/cc/kune/selenium/KuneSeleniumDefaults.java 2011-11-09 02:39:48 UTC (rev 1596)
@@ -42,11 +42,13 @@
import cc.kune.core.shared.domain.utils.StateToken;
import cc.kune.selenium.chat.ChatPageObject;
import cc.kune.selenium.general.EntityHeaderPageObject;
-import cc.kune.selenium.general.SpacesPageObject;
import cc.kune.selenium.login.LoginPageObject;
import cc.kune.selenium.login.RegisterPageObject;
+import cc.kune.selenium.spaces.GroupSpacePageObject;
+import cc.kune.selenium.spaces.HomeSpacePageObject;
+import cc.kune.selenium.spaces.SpacesPageObject;
+import cc.kune.selenium.spaces.UserSpacePageObject;
import cc.kune.selenium.tools.SeleniumConstants;
-import cc.kune.selenium.userspace.UserSpacePageObject;
import com.google.inject.Guice;
import com.google.inject.Injector;
@@ -60,6 +62,8 @@
private final String baseUrl;
protected final ChatPageObject chat;
protected final EntityHeaderPageObject entityHeader;
+ protected final GroupSpacePageObject groupSpace;
+ protected final HomeSpacePageObject homeSpace;
private final Injector injector;
protected LoginPageObject login;
private final ResourceBundle messages;
@@ -80,7 +84,9 @@
entityHeader = injector.getInstance(EntityHeaderPageObject.class);
spaces = injector.getInstance(SpacesPageObject.class);
chat = injector.getInstance(ChatPageObject.class);
+ homeSpace = injector.getInstance(HomeSpacePageObject.class);
userSpace = injector.getInstance(UserSpacePageObject.class);
+ groupSpace = injector.getInstance(GroupSpacePageObject.class);
messages = injector.getInstance(ResourceBundle.class);
final ElementLocatorFactory locator = injector.getInstance(ElementLocatorFactory.class);
PageFactory.initElements(locator, login);
@@ -88,7 +94,9 @@
PageFactory.initElements(locator, entityHeader);
PageFactory.initElements(locator, spaces);
PageFactory.initElements(locator, chat);
+ PageFactory.initElements(locator, homeSpace);
PageFactory.initElements(locator, userSpace);
+ PageFactory.initElements(locator, groupSpace);
}
@BeforeMethod
@@ -101,9 +109,19 @@
resize();
SeleniumUtils.initCursor(webdriver);
SeleniumUtils.showCursor(webdriver);
+ SeleniumUtils.showCursor(webdriver, login.getAnonMsg());
+ sleep(1000);
login.getAnonMsg().click();
}
+ public void browserBack() {
+ webdriver.navigate().back();
+ }
+
+ public void browserForward() {
+ webdriver.navigate().forward();
+ }
+
public void close() {
webdriver.close();
}
@@ -125,7 +143,7 @@
@DataProvider(name = "correctregister")
public Object[][] createCorrectRegister() {
// The default correct user/password used in tests
- return new Object[][] { { "jane", "Jane Doe", SeleniumConstants.USER_PASSWD, "jane(a)example.com" } };
+ return new Object[][] { { "jane", "Jane Doe", SeleniumConstants.USER_PASSWD, "jane(a)example.org" } };
}
@DataProvider(name = "incorrectlogin")
Modified: trunk/src/test/java/cc/kune/selenium/SeleniumModule.java
===================================================================
--- trunk/src/test/java/cc/kune/selenium/SeleniumModule.java 2011-11-08 15:03:19 UTC (rev 1595)
+++ trunk/src/test/java/cc/kune/selenium/SeleniumModule.java 2011-11-09 02:39:48 UTC (rev 1596)
@@ -36,9 +36,9 @@
import cc.kune.selenium.chat.ChatPageObject;
import cc.kune.selenium.general.EntityHeaderPageObject;
-import cc.kune.selenium.general.SpacesPageObject;
import cc.kune.selenium.login.LoginPageObject;
import cc.kune.selenium.login.RegisterPageObject;
+import cc.kune.selenium.spaces.SpacesPageObject;
import cc.kune.selenium.tools.SeleniumConstants;
import com.google.inject.Singleton;
Modified: trunk/src/test/java/cc/kune/selenium/chat/ChatPageObject.java
===================================================================
--- trunk/src/test/java/cc/kune/selenium/chat/ChatPageObject.java 2011-11-08 15:03:19 UTC (rev 1595)
+++ trunk/src/test/java/cc/kune/selenium/chat/ChatPageObject.java 2011-11-09 02:39:48 UTC (rev 1596)
@@ -37,6 +37,8 @@
private WebElement addToRoster;
@FindBy(id = SeleniumConstants.GWTDEV + ChatClient.CHAT_CLIENT_ICON_ID)
private WebElement chatIcon;
+ @FindBy(xpath = "//div[14]/div/div/div/div/div/table/tbody/tr/td[2]/div")
+ private WebElement closeChat;
@FindBy(id = SeleniumConstants.GWTDEV + "OpenChatWidget-jabberId")
private WebElement jid;
@FindBy(id = SeleniumConstants.GWTDEV + "HablarOpenChat-openAction")
@@ -44,6 +46,10 @@
@FindBy(id = SeleniumConstants.GWTDEV + "OpenChatWidget-open")
private WebElement openChatBtn;
+ public void close() {
+ closeChat.click();
+ }
+
// Duplicate in Hablar (we need a common PageObject)
public WebElement getHeader(final String uri) {
final String pageId = Idify.uriId(uri);
@@ -80,17 +86,16 @@
}
public void openChat(final XmppURI uri) {
- hightlight(openChat);
+ // hightlight(openChat);
openChat.click();
jid.sendKeys(uri.toString());
- hightlight(addToRoster);
+ // hightlight(addToRoster);
addToRoster.click();
- hightlight(openChatBtn);
+ // hightlight(openChatBtn);
openChatBtn.click();
}
public void show() {
- hightlight(chatIcon);
chatIcon.click();
}
Deleted: trunk/src/test/java/cc/kune/selenium/general/SpacesPageObject.java
===================================================================
--- trunk/src/test/java/cc/kune/selenium/general/SpacesPageObject.java 2011-11-08 15:03:19 UTC (rev 1595)
+++ trunk/src/test/java/cc/kune/selenium/general/SpacesPageObject.java 2011-11-09 02:39:48 UTC (rev 1596)
@@ -1,59 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package cc.kune.selenium.general;
-
-import org.openqa.selenium.WebElement;
-import org.openqa.selenium.support.FindBy;
-
-import cc.kune.core.client.sitebar.spaces.SpaceSelectorPresenter.SpaceSelectorView;
-import cc.kune.selenium.PageObject;
-import cc.kune.selenium.tools.SeleniumConstants;
-
-public class SpacesPageObject extends PageObject {
-
- @FindBy(id = SeleniumConstants.GWTDEV + SpaceSelectorView.GROUP_SPACE_ID)
- protected WebElement groupSpaceBtn;
- @FindBy(id = SeleniumConstants.GWTDEV + SpaceSelectorView.HOME_SPACE_ID)
- protected WebElement homeSpaceBtn;
- @FindBy(id = SeleniumConstants.GWTDEV + SpaceSelectorView.PUBLIC_SPACE_ID)
- protected WebElement publicSpaceBtn;
- @FindBy(id = SeleniumConstants.GWTDEV + SpaceSelectorView.USER_SPACE_ID)
- protected WebElement userSpaceBtn;
-
- public SpacesPageObject() {
- }
-
- public WebElement groupBtn() {
- return groupSpaceBtn;
- }
-
- public WebElement homeBtn() {
- return homeSpaceBtn;
- }
-
- public WebElement publicBtn() {
- return publicSpaceBtn;
- }
-
- public WebElement userBtn() {
- return userSpaceBtn;
- }
-
-}
Modified: trunk/src/test/java/cc/kune/selenium/login/RegisterSeleniumTests.java
===================================================================
--- trunk/src/test/java/cc/kune/selenium/login/RegisterSeleniumTests.java 2011-11-08 15:03:19 UTC (rev 1595)
+++ trunk/src/test/java/cc/kune/selenium/login/RegisterSeleniumTests.java 2011-11-09 02:39:48 UTC (rev 1596)
@@ -19,6 +19,7 @@
*/
package cc.kune.selenium.login;
+import org.openqa.selenium.Keys;
import org.testng.annotations.Test;
import cc.kune.core.client.state.SiteTokens;
@@ -31,18 +32,30 @@
public class RegisterSeleniumTests extends KuneSeleniumTest {
@Test(dataProvider = "correctregister")
- public void basicRegister(final String shortName, final String longName, final String passwd,
- final String email) {
+ public void basicRegister(final String shortNameUntrans, final String longNameUntrans,
+ final String passwd, final String emailUntrans) {
+ final String shortName = t(shortNameUntrans);
+ final String longName = t(longNameUntrans);
+ final String email = t(emailUntrans);
SeleniumUtils.fastSpeed(false);
// 15 chars, the limit, so we don't use shortName
final String prefix = getTempString();
showTitleSlide(t("User registration"), t("to get full access to this site tools/contents"));
login.createOne();
register.fillRegisterForm(shortName + prefix, longName + prefix, passwd, prefix + email, false);
+ sleep(1000);
login.assertIsConnectedAs(prefix);
- sleep(1000);
entityHeader.waitForEntityTitle(longName + prefix);
register.getWelcomeMsg().click();
+ // home space
+ showTitleSlide(t("Home space (your welcome page)"),
+ t("Here you can see a summary of your activity in this site"));
+ spaces.homeBtn().click();
+ sleep(2000);
+ homeSpace.getSndStats().click();
+ sleep(2000);
+ homeSpace.getTrdStats().click();
+ sleep(2000);
// user space
showTitleSlide(t("User space (your Inbox)"), t("contents in which you participate"));
@@ -54,12 +67,20 @@
userSpace.getNewWave().click();
showMsg(t("where you can compose personal messages..."));
showMsg(t("but also create contents to publish later"));
+ userSpace.rootBlipText().sendKeys(t("Congratulations for your report\n\n"));
+ sleep(1000);
+ userSpace.getCursive().click();
+ userSpace.rootBlipText().sendKeys(
+ t("Hi there, Just to say that I like") + t("a lot your last report\n\n"));
+ sleep(1000);
+ userSpace.getCursive().click();
+ userSpace.rootBlipText().sendKeys(t("Best\n\nJane"));
sleep(3000);
-
+ userSpace.getRootEdit().click();
// chat
showTitleSlide(t("Chat with your buddies"), t("compatible with gmail and similars"),
SiteTokens.WAVEINBOX);
- showTooltip(chat.icon());
+ // showTooltip(chat.icon());
chat.show();
sleep(3000);
@@ -74,7 +95,29 @@
chat.getTalkBox(jids).sendKeys(t("I'm just testing"));
chat.getSend(jids).click();
+ showMsg(t("And you can chat event while going back/forward with your browser"));
+ spaces.homeBtn().click();
+ sleep(2000);
+ chat.getTalkBox(jids).sendKeys(t("la la la"));
+ chat.getSend(jids).click();
+ showMsg(t("Browser history back"));
+ browserBack();
+ sleep(2000);
+ chat.getTalkBox(jids).sendKeys(t("I can continue chat smoothly ;)"));
+ chat.getSend(jids).click();
+ sleep(2000);
+ showMsg(t("Browser history forward"));
+ browserForward();
+ chat.getTalkBox(jids).sendKeys(t("goodbye!"));
+ chat.getSend(jids).click();
+ sleep(1000);
+ chat.getTalkBox(jids).sendKeys(Keys.chord(Keys.ALT, "C"));
+ // chat.close();
+
login.logout();
+
+ showTitleSlide(t("Thank you"), t("and yes, feedback welcome"));
+
}
}
Copied: trunk/src/test/java/cc/kune/selenium/spaces (from rev 1594, trunk/src/test/java/cc/kune/selenium/userspace)
Added: trunk/src/test/java/cc/kune/selenium/spaces/GroupSpacePageObject.java
===================================================================
--- trunk/src/test/java/cc/kune/selenium/spaces/GroupSpacePageObject.java (rev 0)
+++ trunk/src/test/java/cc/kune/selenium/spaces/GroupSpacePageObject.java 2011-11-09 02:39:48 UTC (rev 1596)
@@ -0,0 +1,84 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package cc.kune.selenium.spaces;
+
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.support.FindBy;
+
+import cc.kune.selenium.PageObject;
+
+public class GroupSpacePageObject extends PageObject {
+
+ @FindBy(xpath = "//div[2]/div/div[3]/div/span")
+ private WebElement blogTool;
+ @FindBy(xpath = "//div[2]/div/div[4]/div/span")
+ private WebElement chatTool;
+ @FindBy(xpath = "//div[3]/div/div[2]/div/div/div/span")
+ private WebElement docTool;
+ @FindBy(xpath = "//div[2]/div/div[6]/div/span")
+ private WebElement eventTool;
+ @FindBy(xpath = "//td/img")
+ private WebElement firstAvatarOfGroup;
+ @FindBy(xpath = "//div[2]/div/div[5]/div/span")
+ private WebElement listTool;
+ @FindBy(xpath = "//div[3]/div/button")
+ private WebElement socialNetOptions;
+ @FindBy(xpath = "//div[2]/div/div[7]/div/span")
+ private WebElement taskTool;
+ @FindBy(xpath = "//div[2]/div/div[7]/div/span")
+ private WebElement wikiTool;
+
+ public WebElement getBlogTool() {
+ return blogTool;
+ }
+
+ public WebElement getChatTool() {
+ return chatTool;
+ }
+
+ public WebElement getDocTool() {
+ return docTool;
+ }
+
+ public WebElement getEventTool() {
+ return eventTool;
+ }
+
+ public WebElement getFirstAvatarOfGroup() {
+ return firstAvatarOfGroup;
+ }
+
+ public WebElement getListTool() {
+ return listTool;
+ }
+
+ public WebElement getSocialNetOptions() {
+ return socialNetOptions;
+ }
+
+ public WebElement getTaskTool() {
+ return taskTool;
+ }
+
+ public WebElement getWikiTool() {
+ return wikiTool;
+ }
+
+}
Added: trunk/src/test/java/cc/kune/selenium/spaces/HomeSpacePageObject.java
===================================================================
--- trunk/src/test/java/cc/kune/selenium/spaces/HomeSpacePageObject.java (rev 0)
+++ trunk/src/test/java/cc/kune/selenium/spaces/HomeSpacePageObject.java 2011-11-09 02:39:48 UTC (rev 1596)
@@ -0,0 +1,51 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package cc.kune.selenium.spaces;
+
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.support.FindBy;
+
+import cc.kune.selenium.PageObject;
+
+public class HomeSpacePageObject extends PageObject {
+
+ @FindBy(xpath = "//div[@id='k-home-group-stats']/div/div[2]/div/div/div/img")
+ private WebElement fstStats;
+ @FindBy(xpath = "//div[@id='k-home-group-stats']/div/div[2]/div/div[2]/div/img")
+ private WebElement sndStats;
+ @FindBy(xpath = "//div[@id='k-home-group-stats']/div/div[2]/div/div[3]/div/img")
+ private WebElement trdStats;
+
+ public HomeSpacePageObject() {
+ }
+
+ public WebElement getFstStats() {
+ return fstStats;
+ }
+
+ public WebElement getSndStats() {
+ return sndStats;
+ }
+
+ public WebElement getTrdStats() {
+ return trdStats;
+ }
+
+}
Copied: trunk/src/test/java/cc/kune/selenium/spaces/SpacesPageObject.java (from rev 1556, trunk/src/test/java/cc/kune/selenium/general/SpacesPageObject.java)
===================================================================
--- trunk/src/test/java/cc/kune/selenium/spaces/SpacesPageObject.java (rev 0)
+++ trunk/src/test/java/cc/kune/selenium/spaces/SpacesPageObject.java 2011-11-09 02:39:48 UTC (rev 1596)
@@ -0,0 +1,59 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package cc.kune.selenium.spaces;
+
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.support.FindBy;
+
+import cc.kune.core.client.sitebar.spaces.SpaceSelectorPresenter.SpaceSelectorView;
+import cc.kune.selenium.PageObject;
+import cc.kune.selenium.tools.SeleniumConstants;
+
+public class SpacesPageObject extends PageObject {
+
+ @FindBy(id = SeleniumConstants.GWTDEV + SpaceSelectorView.GROUP_SPACE_ID)
+ protected WebElement groupSpaceBtn;
+ @FindBy(id = SeleniumConstants.GWTDEV + SpaceSelectorView.HOME_SPACE_ID)
+ protected WebElement homeSpaceBtn;
+ @FindBy(id = SeleniumConstants.GWTDEV + SpaceSelectorView.PUBLIC_SPACE_ID)
+ protected WebElement publicSpaceBtn;
+ @FindBy(id = SeleniumConstants.GWTDEV + SpaceSelectorView.USER_SPACE_ID)
+ protected WebElement userSpaceBtn;
+
+ public SpacesPageObject() {
+ }
+
+ public WebElement groupBtn() {
+ return groupSpaceBtn;
+ }
+
+ public WebElement homeBtn() {
+ return homeSpaceBtn;
+ }
+
+ public WebElement publicBtn() {
+ return publicSpaceBtn;
+ }
+
+ public WebElement userBtn() {
+ return userSpaceBtn;
+ }
+
+}
Modified: trunk/src/test/java/cc/kune/selenium/spaces/UserSpacePageObject.java
===================================================================
--- trunk/src/test/java/cc/kune/selenium/userspace/UserSpacePageObject.java 2011-11-08 14:16:07 UTC (rev 1594)
+++ trunk/src/test/java/cc/kune/selenium/spaces/UserSpacePageObject.java 2011-11-09 02:39:48 UTC (rev 1596)
@@ -17,7 +17,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
-package cc.kune.selenium.userspace;
+package cc.kune.selenium.spaces;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
@@ -27,16 +27,41 @@
public class UserSpacePageObject extends PageObject {
+ @FindBy(xpath = "//div[2]/div/div[2]/div[3]/div[4]")
+ private WebElement cursive;
+
+ @FindBy(xpath = "//div[3]/div/div/div[2]/div/div/div[3]")
+ private WebElement firstReplyTitlebar;
+
@FindBy(xpath = "//div[3]/div/div/span[2]")
private WebElement firstWave;
+
@FindBy(xpath = "//div[2]/div[2]/div[4]")
private WebElement newWave;
- @FindBy(xpath = "")
- private WebElement wavePanel;
+ @FindBy(xpath = "//div[10]/div/div/div/div[3]/div/div[2]")
+ private WebElement replyRootBlip;
+
+ @FindBy(xpath = "//div[10]/div/div/div/div[3]/div/div/div/div/div/div[3]")
+ private WebElement rootBlip;
+
+ @FindBy(xpath = "//ul/div")
+ private WebElement rootBlipText;
+ @FindBy(xpath = "//div[3]/div/div/div/div/div/div/span")
+ // this works but with click coords 5,5
+ private WebElement rootEdit;
+
public UserSpacePageObject() {
}
+ public WebElement getCursive() {
+ return cursive;
+ }
+
+ public WebElement getFirstReplyTitlebar() {
+ return firstReplyTitlebar;
+ }
+
public WebElement getFirstWave() {
return findElement(By.xpath("//div[3]/div[4]/div"));
}
@@ -45,7 +70,24 @@
return findElement(By.xpath("//div[2]/div[2]/div[4]"));
}
- public WebElement getWavePanel() {
- return wavePanel;
+ public WebElement getReplyRootBlip() {
+ return replyRootBlip;
}
+
+ public WebElement getRootBlip() {
+ return rootBlip;
+ }
+
+ public WebElement getRootBlipText() {
+ return rootBlipText;
+ }
+
+ public WebElement getRootEdit() {
+ return rootEdit;
+ }
+
+ public WebElement rootBlipText() {
+ return rootBlipText;
+ }
+
}
1
0
r1595 - in trunk: script src/main/resources src/test/java/cc/kune/selenium src/test/java/cc/kune/selenium/login
by Vicente J. Ruiz Jurado 08 Nov '11
by Vicente J. Ruiz Jurado 08 Nov '11
08 Nov '11
Author: vjrj_
Date: 2011-11-08 16:03:19 +0100 (Tue, 08 Nov 2011)
New Revision: 1595
Modified:
trunk/script/recordScreenCast.sh
trunk/src/main/resources/TestConstants_en.properties
trunk/src/main/resources/TestConstants_es.properties
trunk/src/test/java/cc/kune/selenium/KuneSeleniumDefaults.java
trunk/src/test/java/cc/kune/selenium/login/RegisterSeleniumTests.java
Log:
NEW - # 127: Generate some screencast while doing automate testing
http://kune.ourproject.org/issues/ticket/127
Modified: trunk/script/recordScreenCast.sh
===================================================================
--- trunk/script/recordScreenCast.sh 2011-11-08 14:16:07 UTC (rev 1594)
+++ trunk/script/recordScreenCast.sh 2011-11-08 15:03:19 UTC (rev 1595)
@@ -2,7 +2,7 @@
WIDTH=806
HEIGHT=707
# TODO: calculate better this to allow other windows sizes
-RWIDTH=805
+RWIDTH=802
RHEIGHT=649
#SEARCH=Eurosur
#SEARCH=Jane
Modified: trunk/src/main/resources/TestConstants_en.properties
===================================================================
--- trunk/src/main/resources/TestConstants_en.properties 2011-11-08 14:16:07 UTC (rev 1594)
+++ trunk/src/main/resources/TestConstants_en.properties 2011-11-08 15:03:19 UTC (rev 1595)
@@ -16,4 +16,7 @@
compatibleWithGmailAndSimilars = compatible with gmail and similars
weNeedToAddBuddiesContactsBeforeChatWithThem = We need to add buddies (contacts) before chat with them
helloo = Helloo... ;)
-iMJustTesting = I'm just testing
\ No newline at end of file
+iMJustTesting = I'm just testing
+youCanSeeThisLikeAnAdvancedEmailSystem = You can see this like an advanced email system...
+whereYouCanComposePersonalMessages = where you can compose personal messages...
+butAlsoCreateContentsToPublishLater = but also create contents to publish later
\ No newline at end of file
Modified: trunk/src/main/resources/TestConstants_es.properties
===================================================================
--- trunk/src/main/resources/TestConstants_es.properties 2011-11-08 14:16:07 UTC (rev 1594)
+++ trunk/src/main/resources/TestConstants_es.properties 2011-11-08 15:03:19 UTC (rev 1595)
@@ -10,4 +10,7 @@
compatibleWithGmailAndSimilars = compatible con gmail y similares
weNeedToAddBuddiesContactsBeforeChatWithThem = Necesitamos a�adir colegas (contactos) antes de chatear con ellos
helloo = Hoolaaaaa... ;)
-iMJustTesting = Solo estoy probando
\ No newline at end of file
+iMJustTesting = Solo estoy probando
+youCanSeeThisLikeAnAdvancedEmailSystem = Puedes ver esto como un sistema avanzado de correo...
+whereYouCanComposePersonalMessages = donde puedes escribir mensajes personales...
+butAlsoCreateContentsToPublishLater = pero tambi�n crear contenidos para publicarlos luego
\ No newline at end of file
Modified: trunk/src/test/java/cc/kune/selenium/KuneSeleniumDefaults.java
===================================================================
--- trunk/src/test/java/cc/kune/selenium/KuneSeleniumDefaults.java 2011-11-08 14:16:07 UTC (rev 1594)
+++ trunk/src/test/java/cc/kune/selenium/KuneSeleniumDefaults.java 2011-11-08 15:03:19 UTC (rev 1595)
@@ -70,8 +70,9 @@
public KuneSeleniumDefaults() {
// baseUrl = "http://kune.beta.iepala.es/?locale=en#";
- baseUrl = "http://127.0.0.1:8888/?locale=es&log_level=INFO&gwt.codesvr=127.0.0.1:9997#";
- // baseUrl = "http://beta.eurosur.org/#";
+ // baseUrl =
+ // "http://127.0.0.1:8888/?locale=es&log_level=INFO&gwt.codesvr=127.0.0.1:9997#";
+ baseUrl = "http://beta.eurosur.org/#";
injector = INJECTOR;
webdriver = injector.getInstance(WebDriver.class);
login = injector.getInstance(LoginPageObject.class);
@@ -96,7 +97,6 @@
@BeforeSuite
public void beforeSuite() {
- LOG.info("Going home");
home();
resize();
SeleniumUtils.initCursor(webdriver);
Modified: trunk/src/test/java/cc/kune/selenium/login/RegisterSeleniumTests.java
===================================================================
--- trunk/src/test/java/cc/kune/selenium/login/RegisterSeleniumTests.java 2011-11-08 14:16:07 UTC (rev 1594)
+++ trunk/src/test/java/cc/kune/selenium/login/RegisterSeleniumTests.java 2011-11-08 15:03:19 UTC (rev 1595)
@@ -48,12 +48,12 @@
showTitleSlide(t("User space (your Inbox)"), t("contents in which you participate"));
showTooltip(spaces.userBtn());
spaces.userBtn().click();
- showMsg(t("You can see this like an advanced email system"));
+ showMsg(t("You can see this like an advanced email system..."));
userSpace.getFirstWave().click();
sleep(2000);
userSpace.getNewWave().click();
- showMsg(t("You can compose personal messages"));
- showMsg(t("But aslo create contents to publish later"));
+ showMsg(t("where you can compose personal messages..."));
+ showMsg(t("but also create contents to publish later"));
sleep(3000);
// chat
1
0
r1594 - in trunk: . src/main/webapp src/test/java/cc/kune/selenium src/test/java/cc/kune/selenium/login src/test/java/cc/kune/selenium/userspace
by Vicente J. Ruiz Jurado 08 Nov '11
by Vicente J. Ruiz Jurado 08 Nov '11
08 Nov '11
Author: vjrj_
Date: 2011-11-08 15:16:07 +0100 (Tue, 08 Nov 2011)
New Revision: 1594
Added:
trunk/src/test/java/cc/kune/selenium/userspace/
trunk/src/test/java/cc/kune/selenium/userspace/UserSpacePageObject.java
Modified:
trunk/TODO
trunk/src/main/webapp/ws.html
trunk/src/test/java/cc/kune/selenium/CustomWebDriverEventListener.java
trunk/src/test/java/cc/kune/selenium/KuneSeleniumDefaults.java
trunk/src/test/java/cc/kune/selenium/PageObject.java
trunk/src/test/java/cc/kune/selenium/SeleniumModule.java
trunk/src/test/java/cc/kune/selenium/SeleniumUtils.java
trunk/src/test/java/cc/kune/selenium/login/LoginPageObject.java
trunk/src/test/java/cc/kune/selenium/login/LoginSeleniumTests.java
trunk/src/test/java/cc/kune/selenium/login/RegisterSeleniumTests.java
Log:
NEW - # 127: Generate some screencast while doing automate testing
http://kune.ourproject.org/issues/ticket/127
Modified: trunk/TODO
===================================================================
--- trunk/TODO 2011-11-08 04:15:12 UTC (rev 1593)
+++ trunk/TODO 2011-11-08 14:16:07 UTC (rev 1594)
@@ -19,6 +19,8 @@
http://gxt-multiupload-demo.appspot.com/
http://code.google.com/p/gxt-multi-upload/
http://code.google.com/p/gwtupload/
+** TODO improve session timeouts
+http://stackoverflow.com/questions/1406287/jspservlethow-do-i-set-session-timeout-of-greater-than-30-minutes
** TODO workaround websocket issues
*** compatibilities
| jetty M2 | new wesocket | socketio |
Modified: trunk/src/main/webapp/ws.html
===================================================================
--- trunk/src/main/webapp/ws.html 2011-11-08 04:15:12 UTC (rev 1593)
+++ trunk/src/main/webapp/ws.html 2011-11-08 14:16:07 UTC (rev 1594)
@@ -280,7 +280,7 @@
</head>
<body>
<div id="kcursor"
- style="visibility: hidden; position: absolute; z-Index: 100001'; height: 0; width: 0">
+ style="visibility: hidden; position: absolute; z-Index: 100001; height: 0; width: 0">
<img src="/others/cursor-orange.png">
</div>
<script type="text/javascript">
@@ -295,8 +295,8 @@
var diff_x;
var diff_y;
function kmove(x, y) {
- newx = x - 18 + 15;
- newy = y - 7 + 15;
+ newx = x - 18 + 20;
+ newy = y - 7 + 17;
kmoveit();
}
Modified: trunk/src/test/java/cc/kune/selenium/CustomWebDriverEventListener.java
===================================================================
--- trunk/src/test/java/cc/kune/selenium/CustomWebDriverEventListener.java 2011-11-08 04:15:12 UTC (rev 1593)
+++ trunk/src/test/java/cc/kune/selenium/CustomWebDriverEventListener.java 2011-11-08 14:16:07 UTC (rev 1594)
@@ -10,11 +10,13 @@
@Override
public void afterChangeValueOf(final WebElement element, final WebDriver driver) {
+ // SeleniumUtils.showCursor(driver);
sleep(600);
}
@Override
public void afterClickOn(final WebElement element, final WebDriver driver) {
+ // SeleniumUtils.showCursor(driver);
slow();
}
@@ -45,12 +47,14 @@
public void beforeChangeValueOf(final WebElement element, final WebDriver driver) {
SeleniumUtils.hightlight(element, driver);
sleep(300);
+ // SeleniumUtils.hideCursor(driver);
}
@Override
public void beforeClickOn(final WebElement element, final WebDriver driver) {
SeleniumUtils.hightlight(element, driver);
slow();
+ // SeleniumUtils.hideCursor(driver);
}
@Override
Modified: trunk/src/test/java/cc/kune/selenium/KuneSeleniumDefaults.java
===================================================================
--- trunk/src/test/java/cc/kune/selenium/KuneSeleniumDefaults.java 2011-11-08 04:15:12 UTC (rev 1593)
+++ trunk/src/test/java/cc/kune/selenium/KuneSeleniumDefaults.java 2011-11-08 14:16:07 UTC (rev 1594)
@@ -46,6 +46,7 @@
import cc.kune.selenium.login.LoginPageObject;
import cc.kune.selenium.login.RegisterPageObject;
import cc.kune.selenium.tools.SeleniumConstants;
+import cc.kune.selenium.userspace.UserSpacePageObject;
import com.google.inject.Guice;
import com.google.inject.Injector;
@@ -55,7 +56,7 @@
public static final Injector INJECTOR = Guice.createInjector(new SeleniumModule());
private static final Log LOG = LogFactory.getLog(KuneSeleniumDefaults.class);
- public static boolean mustCloseFinally = false;
+ public static boolean mustCloseFinally = true;
private final String baseUrl;
protected final ChatPageObject chat;
protected final EntityHeaderPageObject entityHeader;
@@ -64,13 +65,13 @@
private final ResourceBundle messages;
protected RegisterPageObject register;
protected final SpacesPageObject spaces;
+ protected UserSpacePageObject userSpace;
private final WebDriver webdriver;
public KuneSeleniumDefaults() {
// baseUrl = "http://kune.beta.iepala.es/?locale=en#";
- // baseUrl =
- // "http://127.0.0.1:8888/?locale=es&log_level=INFO&gwt.codesvr=127.0.0.1:9997#";
- baseUrl = "http://beta.eurosur.org/#";
+ baseUrl = "http://127.0.0.1:8888/?locale=es&log_level=INFO&gwt.codesvr=127.0.0.1:9997#";
+ // baseUrl = "http://beta.eurosur.org/#";
injector = INJECTOR;
webdriver = injector.getInstance(WebDriver.class);
login = injector.getInstance(LoginPageObject.class);
@@ -78,6 +79,7 @@
entityHeader = injector.getInstance(EntityHeaderPageObject.class);
spaces = injector.getInstance(SpacesPageObject.class);
chat = injector.getInstance(ChatPageObject.class);
+ userSpace = injector.getInstance(UserSpacePageObject.class);
messages = injector.getInstance(ResourceBundle.class);
final ElementLocatorFactory locator = injector.getInstance(ElementLocatorFactory.class);
PageFactory.initElements(locator, login);
@@ -85,6 +87,7 @@
PageFactory.initElements(locator, entityHeader);
PageFactory.initElements(locator, spaces);
PageFactory.initElements(locator, chat);
+ PageFactory.initElements(locator, userSpace);
}
@BeforeMethod
Modified: trunk/src/test/java/cc/kune/selenium/PageObject.java
===================================================================
--- trunk/src/test/java/cc/kune/selenium/PageObject.java 2011-11-08 04:15:12 UTC (rev 1593)
+++ trunk/src/test/java/cc/kune/selenium/PageObject.java 2011-11-08 14:16:07 UTC (rev 1594)
@@ -198,7 +198,7 @@
public void waitFor(final WebElement element) {
final String id = element.getAttribute("id");
- LOG.info("WAIT FOR: " + id);
+ // LOG.info("WAIT FOR: " + id);
waitFor(id, new Runnable() {
@Override
public void run() {
@@ -208,19 +208,19 @@
}
protected void waitFor(final WebElement element, final String text) {
- LOG.info("WAIT FOR: " + text);
+ // LOG.info("WAIT FOR: " + text);
waitFor(text, new Runnable() {
@Override
public void run() {
final String elText = element.getText();
- LOG.info("Element text: " + elText);
+ // LOG.info("Element text: " + elText);
Assert.assertTrue(elText.contains(text));
}
});
}
protected void waitForId(final String id) {
- LOG.info("WAIT FOR: " + id);
+ // LOG.info("WAIT FOR: " + id);
waitFor(id, new Runnable() {
@Override
public void run() {
@@ -230,12 +230,12 @@
}
protected void waitForValue(final WebElement element, final String text) {
- LOG.info("WAIT FOR: " + text);
+ // LOG.info("WAIT FOR: " + text);
waitFor(text, new Runnable() {
@Override
public void run() {
final String elValue = element.getText();
- LOG.info("Element value: " + elValue);
+ // LOG.info("Element value: " + elValue);
Assert.assertTrue(elValue.contains(text));
}
});
Modified: trunk/src/test/java/cc/kune/selenium/SeleniumModule.java
===================================================================
--- trunk/src/test/java/cc/kune/selenium/SeleniumModule.java 2011-11-08 04:15:12 UTC (rev 1593)
+++ trunk/src/test/java/cc/kune/selenium/SeleniumModule.java 2011-11-08 14:16:07 UTC (rev 1594)
@@ -47,8 +47,8 @@
@Override
protected void configure() {
- final RemoteWebDriver driver = createChromeDriver();
- // final WebDriver driver = creatFirefoxDriver();
+ // final RemoteWebDriver driver = createChromeDriver();
+ final WebDriver driver = creatFirefoxDriver();
final EventFiringWebDriver wrap = new EventFiringWebDriver(driver);
wrap.register(new CustomWebDriverEventListener());
Modified: trunk/src/test/java/cc/kune/selenium/SeleniumUtils.java
===================================================================
--- trunk/src/test/java/cc/kune/selenium/SeleniumUtils.java 2011-11-08 04:15:12 UTC (rev 1593)
+++ trunk/src/test/java/cc/kune/selenium/SeleniumUtils.java 2011-11-08 14:16:07 UTC (rev 1594)
@@ -13,22 +13,28 @@
public class SeleniumUtils {
+ private static boolean fastSpeed = true;
private static final Log LOG = LogFactory.getLog(SeleniumUtils.class);
+ public static void fastSpeed(final boolean fastSpeed) {
+ SeleniumUtils.fastSpeed = fastSpeed;
+ }
+
public static void hideCursor(final WebDriver webdriver) {
jsExec(webdriver).executeScript("khideCursor();");
}
public static void hightlight(final WebElement element, final WebDriver webdriver) {
- showCursor(webdriver, element);
+ SeleniumUtils.showCursor(webdriver, element);
sleep(300);
- final String script = "window.jQuery('#" + element.getAttribute("id") + "').addClass('k-outline');"
- + "setTimeout('window.jQuery(\"#" + element.getAttribute("id")
- + "\").removeClass(\"k-outline\")', 1200);";
- // Antes 700
- // LOG.info("High: " + script);
- jsExec(webdriver).executeScript(script);
-
+ if (TextUtils.notEmpty(element.getAttribute("id"))) {
+ final String script = "window.jQuery('#" + element.getAttribute("id")
+ + "').addClass('k-outline');" + "setTimeout('window.jQuery(\"#" + element.getAttribute("id")
+ + "\").removeClass(\"k-outline\")', 1200);";
+ // Antes 700
+ // LOG.info("High: " + script);
+ jsExec(webdriver).executeScript(script);
+ }
}
public static void initCursor(final WebDriver webdriver) {
@@ -50,7 +56,7 @@
}
public static void showCursor(final WebDriver webdriver, final int x, final int y) {
- LOG.info("Mover cursor to x: " + x + ", y: " + y);
+ // LOG.info("Mover cursor to x: " + x + ", y: " + y);
jsExec(webdriver).executeScript("kmove(" + x + "," + y + ");");
}
@@ -74,7 +80,7 @@
public static void sleep(final int milliseconds) {
try {
- Thread.sleep(milliseconds);
+ Thread.sleep(fastSpeed ? milliseconds / 10 : milliseconds);
} catch (final InterruptedException e) {
Assert.fail("Exception in sleep method", e);
}
Modified: trunk/src/test/java/cc/kune/selenium/login/LoginPageObject.java
===================================================================
--- trunk/src/test/java/cc/kune/selenium/login/LoginPageObject.java 2011-11-08 04:15:12 UTC (rev 1593)
+++ trunk/src/test/java/cc/kune/selenium/login/LoginPageObject.java 2011-11-08 14:16:07 UTC (rev 1594)
@@ -42,7 +42,6 @@
private WebElement user;
public LoginPageObject() {
- // i18n = new I18nHelper(LoginMessages.class);
}
public void createOne() {
Modified: trunk/src/test/java/cc/kune/selenium/login/LoginSeleniumTests.java
===================================================================
--- trunk/src/test/java/cc/kune/selenium/login/LoginSeleniumTests.java 2011-11-08 04:15:12 UTC (rev 1593)
+++ trunk/src/test/java/cc/kune/selenium/login/LoginSeleniumTests.java 2011-11-08 14:16:07 UTC (rev 1594)
@@ -25,6 +25,17 @@
public class LoginSeleniumTests extends KuneSeleniumTest {
+ @Test(dataProvider = "correctlogin")
+ public void basicSignIn(final String user, final String passwd) {
+ login.assertIsDisconnected();
+ showTitleSlide("User sign in", "to get full access to this site");
+ login.signIn(user, passwd);
+ login.assertIsConnectedAs(user);
+ // userSpace.getWavePanel().click();
+ login.logout();
+ login.assertIsDisconnected();
+ }
+
@Test
public void high() {
login.high();
@@ -44,16 +55,6 @@
login.assertIsDisconnected();
}
- @Test(dataProvider = "correctlogin")
- public void basicSignIn(final String user, final String passwd) {
- login.assertIsDisconnected();
- showTitleSlide("User sign in", "to get full access to this site");
- login.signIn(user, passwd);
- login.assertIsConnectedAs(user);
- login.logout();
- login.assertIsDisconnected();
- }
-
@Test
public void signInIncorrectPasswd() {
login.assertIsDisconnected();
Modified: trunk/src/test/java/cc/kune/selenium/login/RegisterSeleniumTests.java
===================================================================
--- trunk/src/test/java/cc/kune/selenium/login/RegisterSeleniumTests.java 2011-11-08 04:15:12 UTC (rev 1593)
+++ trunk/src/test/java/cc/kune/selenium/login/RegisterSeleniumTests.java 2011-11-08 14:16:07 UTC (rev 1594)
@@ -23,6 +23,7 @@
import cc.kune.core.client.state.SiteTokens;
import cc.kune.selenium.KuneSeleniumTest;
+import cc.kune.selenium.SeleniumUtils;
import cc.kune.selenium.tools.SeleniumConstants;
import com.calclab.emite.core.client.xmpp.stanzas.XmppURI;
@@ -32,6 +33,7 @@
@Test(dataProvider = "correctregister")
public void basicRegister(final String shortName, final String longName, final String passwd,
final String email) {
+ SeleniumUtils.fastSpeed(false);
// 15 chars, the limit, so we don't use shortName
final String prefix = getTempString();
showTitleSlide(t("User registration"), t("to get full access to this site tools/contents"));
@@ -46,6 +48,13 @@
showTitleSlide(t("User space (your Inbox)"), t("contents in which you participate"));
showTooltip(spaces.userBtn());
spaces.userBtn().click();
+ showMsg(t("You can see this like an advanced email system"));
+ userSpace.getFirstWave().click();
+ sleep(2000);
+ userSpace.getNewWave().click();
+ showMsg(t("You can compose personal messages"));
+ showMsg(t("But aslo create contents to publish later"));
+ sleep(3000);
// chat
showTitleSlide(t("Chat with your buddies"), t("compatible with gmail and similars"),
Added: trunk/src/test/java/cc/kune/selenium/userspace/UserSpacePageObject.java
===================================================================
--- trunk/src/test/java/cc/kune/selenium/userspace/UserSpacePageObject.java (rev 0)
+++ trunk/src/test/java/cc/kune/selenium/userspace/UserSpacePageObject.java 2011-11-08 14:16:07 UTC (rev 1594)
@@ -0,0 +1,51 @@
+/*
+ *
+ * Copyright (C) 2007-2011 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package cc.kune.selenium.userspace;
+
+import org.openqa.selenium.By;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.support.FindBy;
+
+import cc.kune.selenium.PageObject;
+
+public class UserSpacePageObject extends PageObject {
+
+ @FindBy(xpath = "//div[3]/div/div/span[2]")
+ private WebElement firstWave;
+ @FindBy(xpath = "//div[2]/div[2]/div[4]")
+ private WebElement newWave;
+ @FindBy(xpath = "")
+ private WebElement wavePanel;
+
+ public UserSpacePageObject() {
+ }
+
+ public WebElement getFirstWave() {
+ return findElement(By.xpath("//div[3]/div[4]/div"));
+ }
+
+ public WebElement getNewWave() {
+ return findElement(By.xpath("//div[2]/div[2]/div[4]"));
+ }
+
+ public WebElement getWavePanel() {
+ return wavePanel;
+ }
+}
1
0